Principios del aprendizaje profundo ----- Red neuronal recurrente (RNN, LSTM)

Directorio de artículos de la serie

Principios de aprendizaje profundo ----- regresión lineal + método de descenso de gradiente Principios
de aprendizaje profundo ----- algoritmo de regresión logística
Principios de aprendizaje profundo ----- red neuronal completamente conectada Principios
de aprendizaje profundo ----- convolucional
profundidad de la red neuronal Principio de aprendizaje-----pronóstico de serie temporal de red neuronal recurrente (RNN, LSTM)
-----basado en BP, LSTM, algoritmo de red neuronal CNN-LSTM,
pronóstico de serie temporal de pronóstico de carga de electricidad de función única (múltiples -características)-- ---Pronóstico de carga de electricidad de múltiples funciones basado en el algoritmo de red neuronal BP, LSTM, CNN-LSTM


Serie de videos didácticos

Introducción rápida al aprendizaje profundo y al combate real
[enseñanza práctica] basada en la previsión de carga de electricidad de función única de la red neuronal BP
[enseñanza práctica] basada en RNN, previsión de carga de electricidad de función única de la red neuronal LSTM
[enseñanza práctica] basado en la red neuronal CNN-LSTM Consumo de electricidad de función única Pronóstico de carga
[Previsión de múltiples funciones] Pronóstico de carga eléctrica de múltiples funciones basado en la red neuronal BP
[Previsión de múltiples funciones] Pronóstico de carga de energía de múltiples funciones basado en RNN y LSTM [Multi -pronóstico de funciones
] Pronóstico de carga de energía de funciones múltiples basado en la red CNN-LSTM



prefacio

  En comparación con datos como las imágenes que tienen ciertas características en el espacio, hay otro tipo de datos que tienen ciertas características en el tiempo, este tipo de datos se denominan datos de series temporales. Por definición, es una cadena de datos indexados por dimensión de tiempo. Por ejemplo, el lenguaje natural es una serie de datos de tiempo muy típica.Cada carácter o palabra se emite continuamente de acuerdo con la dimensión de tiempo, con una secuencia de tiempo sólida. Además de los datos de lenguaje natural, los datos como los datos meteorológicos, los datos de flujo de tráfico y los datos de carga eléctrica son datos de series temporales, y este tipo de datos está indexado por la dimensión temporal.
  Una de las características más importantes de los datos de series de tiempo es que los datos del período de tiempo anterior tienen una gran influencia en los datos del período de tiempo siguiente, como el lenguaje natural. Existe una oración como: "He vivido en China durante muchos años, así que diré __ con fluidez. Obviamente, los espacios en blanco aquí deben llenarse con palabras relacionadas con el chino como "chino", "chino", "chino mandarín". Si completa "japonés", "inglés" y otros idiomas en los espacios en blanco en este momento, la oración anterior fácilmente causará ambigüedad, porque el anterior "He vivido en China durante muchos años", este párrafo El las palabras tienen una gran influencia en estos últimos.
  Por ejemplo, datos meteorológicos, una pieza de datos meteorológicos contiene características meteorológicas como la temperatura diaria, la humedad, la presión del aire, la velocidad del viento y si está lloviendo. Todos son cambios cíclicos leves, con cambios periódicos y estacionales obvios.
  Para tales datos de series temporales, ni la red neuronal completamente conectada ni la red neuronal convolucional pueden considerar bien la relación serial entre los datos de series temporales. Debido a que tanto la red neuronal totalmente conectada como la red neuronal convolucional son redes de avance, el resultado final del modelo no está relacionado con el modelo en sí. La salida final del modelo de red neuronal cíclica en el momento anterior se puede utilizar como entrada del momento siguiente para aprender la información del momento anterior, por lo que la red neuronal cíclica puede aprender muy bien la relación de secuencia en los datos de series temporales, para procesar los datos de series de tiempo a menudo tienen buenos resultados.


1. Red neuronal RNN

  La red neuronal más clásica y básica en la red neuronal cíclica es la red neuronal RNN. Esta red básicamente explica el principio de funcionamiento de la red neuronal cíclica. Por lo tanto, si desea comprender otras redes neuronales mejoradas en la red neuronal cíclica como LSTM y GRU, primero debe comprender la red neuronal RNN. inserte la descripción de la imagen aquí  Como se muestra en la figura anterior, es la estructura básica de la red neuronal RNN. Para ser honesto, estaba confundido cuando vi esta estructura por primera vez. Las redes neuronales integradas son mucho más difíciles de entender. La razón por la que es difícil de entender es porque este diagrama parece demasiado simple y parece difícil de entender la red neuronal cíclica del diagrama.La siguiente es una explicación de este diagrama.
   Xt X_tXtPara los datos de serie temporal de entrada, los datos de entrada se introducen según el tiempo, es decir, la entrada de datos es secuencial.
   ht \mathrm{h}_thtLa salida de la capa oculta calculada por la red neuronal para los datos en cada momento, por lo que A es la capa oculta de la red neuronal RNN, y esta salida se agregará a la entrada de datos en el siguiente momento y luego se enviará a la red neuronal como una nueva entrada Realice el cálculo de la red neuronal;
  finalmente emita, y repita el proceso anterior continuamente hasta que se complete el cálculo de datos de entrada en el último momento. Dado que la red neuronal RNN calcula continuamente los datos de entrada, la velocidad de cálculo de la red neuronal RNN es relativamente lenta.
  Parece que el proceso de operación de la red neuronal RNN mencionada anteriormente no es tan intuitivo, por lo que debería ser más fácil de entender que el gráfico mencionado anteriormente se puede expandir en la siguiente forma. Aquí hay un recordatorio especial: es mejor no mirar esta imagen desde una perspectiva global, lo que lo llevará fácilmente a un malentendido de comprensión, sino que debe mirarla de izquierda a derecha, una unidad de computación a la vez. Solo de esta manera podemos entender mejor que la red neuronal RNN se calcula momento a momento, por lo que el momento anterior tiene un impacto en la salida del momento posterior. inserte la descripción de la imagen aquí  Como se muestra en la figura anterior, los datos de entrada contienen características de datos desde el momento 0 hasta el momento t.
  Primero ingrese las características de los datos en el tiempo 0 para calcular la red neuronal para obtener la salida de la capa oculta h 0 \mathrm{h}_0h0, genera esta capa oculta h 0 \mathrm{h}_0h0y entrada X 1 X_1 en el tiempo 1X1Lleve a cabo la suma ponderada. En este momento, la entrada en el momento 1 ya contiene la información de datos en el momento 0;
  y luego ingrese los datos ponderados y sumados mencionados anteriormente en la red neuronal para el cálculo para obtener la salida de capa oculta h 1 \ en tiempo 1 matemáticas{h}_1h1, y luego h 1 \mathrm{h}_1h1y X 2 X_2X2Realice la suma ponderada. En este momento, la entrada en el momento 2 ya contiene la información de 0 y 1.
  Luego, realice el cálculo de la red neuronal en los datos después de la suma ponderada y obtenga la salida de la capa oculta h 2 \mathrm{h} _2 en el tiempo 2h2, repita continuamente el proceso anterior hasta el final del tiempo t, y obtenga la salida de la capa oculta ht \mathrm{h}_t en el tiempo tht;
  teóricamente esto ht \mathrm{h}_thtLa salida está determinada por la salida en el momento 0 a t-1 y la entrada en el momento t, por lo que la red neuronal RNN tiene una función de memoria, y la memoria de los datos de entrada en el momento anterior afecta la salida en el momento siguiente.
  Entendamos la red neuronal RNN a partir de la expresión de datos específicos de la red neuronal RNN. La siguiente fórmula muestra la expresión matemática de la red neuronal RNN. O t = gramo ( V ⋅ ht ) ht = F ( U ⋅ X t + W ⋅ ht − 1 ) \begin{reunidos} O_t=g\left(V \cdot h_t\right) \\ h_t=f\left( U \cdot X_t+W \cdot h_{t-1}\right) \end{reunidos}Ot=gramo( Vht)ht=F( Xt+Wht 1)  Entre ellos, X t X_tXtson los datos de características de entrada en el tiempo t, UUU es el peso del parámetro correspondiente,ht − 1 h_{t-1}ht 1es la salida de la capa oculta en el momento anterior, WWW es el peso del parámetro correspondiente;ht \mathrm{h}_thtes la salida de la capa oculta en el momento actual, VVV es el parámetro de peso correspondiente;O t O_tOtes la salida de la capa de salida en el tiempo actual t. Por lo tanto, dibujar los pesos en el gráfico se puede obtener como se muestra en la siguiente figura:
inserte la descripción de la imagen aquí
  Esta figura tiene más capas de salida que la unidad de red neuronal RNN al principio, si eliminamos la W de la derecha en este momento, entonces la unidad de red neuronal RNN red en este momento se convierte en la red neuronal totalmente conectada, la figura específica se muestra a continuación.
inserte la descripción de la imagen aquí
  Por supuesto, la red neuronal completamente conectada mencionada anteriormente se ve un poco retorcida, porque el diagrama de la red neuronal completamente conectada que veo a menudo se muestra en la figura a continuación.
inserte la descripción de la imagen aquí
  Por lo tanto, agregue la salida de capa oculta mencionada anteriormente y su peso correspondiente al gráfico de red neuronal completamente conectado mencionado anteriormente, y luego se convierte en el gráfico que se muestra en la figura: debe ser muy claro de acuerdo con la siguiente correspondencia
inserte la descripción de la imagen aquí
  . dos figuras se corresponden entre sí.
inserte la descripción de la imagen aquí
  El cuadro de comparación anterior debería ayudarnos a comprender la red neuronal RNN más fácilmente. Cuando los principiantes aprenden RNN, es fácil para los principiantes comprender que la capa intermedia en la red neuronal RNN tiene solo un nodo neuronal, porque muchas personas pueden dibujar para resaltar el Las características del bucle ignoran que su entrada es un vector de características, es decir, el vector de características contiene uno o más valores de entrada, y una o más neuronas también se pueden configurar en la capa oculta, lo que es fácil de causar dificultades de comprensión.

1.1 Peso compartido

  El concepto de peso compartido se usa en redes neuronales cíclicas. En aprendizaje profundo, el concepto de peso compartido también se usa en redes neuronales convolucionales. En la red neuronal convolucional, el kernel de convolución de la capa de convolución es su peso. El kernel de convolución se desliza en el mapa de características y calcula continuamente con los valores en el mapa de características. Por lo tanto, un mapa de características comparte un conjunto de pesos en lugar de Al igual que una red neuronal completamente conectada, cada característica de datos de entrada tiene su propio parámetro de peso, lo que aumentará en gran medida la cantidad de cálculo de la computadora, y también es más fácil sobreajustar el modelo de red, por lo que la generalización del modelo no es fuerte. .
inserte la descripción de la imagen aquí
  Observe cuidadosamente el diagrama del modelo de la red neuronal cíclica (como se muestra en la figura anterior), y encontrará que los pesos calculados W, V y U de la red neuronal en diferentes momentos son los mismos, lo que significa que estos pesos son compartida en cada momento. Tal configuración permite que la salida de la red neuronal RNN tenga una longitud variable, y los datos de entrada se ingresan continuamente en la red neuronal en series de tiempo para obtener la salida correspondiente. Por lo tanto, los parámetros de red de la red neuronal cíclica son menos que los de la red neuronal totalmente conectada Mucho, por lo que el cálculo de la actualización de parámetros de la red neuronal es mucho menor, lo que reduce en gran medida el cálculo de la computadora.

1.2 Caso

  Usemos un caso para consolidar los puntos de conocimiento de la red neuronal RNN.
  Suponga que ahora existe una estructura de red de una red neuronal RNN que consta de una capa de entrada, una capa oculta y una capa de salida. Los datos de entrada contienen 3 pasos de tiempo, y cada paso de tiempo contiene 2 características de datos, por lo que la capa de entrada de la red neuronal RNN contiene 2 neuronas, y la capa oculta contiene 2 neuronas, y la capa de salida de la red neuronal tiene dos salidas, por lo que la capa de salida contiene dos neuronas, como se muestra en la siguiente figura:
inserte la descripción de la imagen aquí
  los datos de salida de la red neuronal son los siguientes: [ 1 1 ] [ 1 1 ] [ 2 2 ] \left[\begin{array}{l} 1 \\ 1 \end{matriz}\right]\left[\begin{matriz}{l} 1 \\ 1 \end{matriz}\right]\left[\begin{matriz}{l} 2 \\ 2 \ end{matriz}\right][11][11][22]   Para facilitar el cálculo y reflejar las características de la red neuronal RNN, todos los pesos de la red neuronal se establecen en 1 y no hay sesgo, y las funciones de activación también son funciones de activación lineal. Al mismo tiempo, al calcular la entrada del primer paso de tiempo, no hay ningún valor de salida de la capa oculta en el momento anterior como entrada, por lo que el valor de salida de la capa oculta en este momento se establece en [0,0]. . En este momento, el cálculo del primer paso de tiempo se muestra en la siguiente figura:
inserte la descripción de la imagen aquí
  Según la fórmula de cálculo de la red neuronal RNN, los valores de las dos neuronas en la capa oculta son:
  la primera neurona:1 × 1 + 1 × 1 + 0 × 1 + 0 × 1 = 2 1 \times 1+1 \times 1+0 \times 1+0 \times 1=21×1+1×1+0×1+0×1=2   La segunda neurona:1 × 1 + 1 × 1 + 0 × 1 + 0 × 1 = 2 1 \times 1+1 \times 1+0 \times 1+0 \times 1=21×1+1×1+0×1+0×1=2   La primera salida de la capa de salida:2 × 1 + 2 × 1 = 4 2 \times 1+2 \times 1=42×1+2×1=4   La segunda salida de la capa de salida:2 × 1 + 2 × 1 = 4 2 \times 1+2 \times 1=42×1+2×1=4   En este momento, el valor de la capa oculta de la red neuronal RNN se actualiza a [2,2], y se ingresan los datos en el segundo paso de tiempo. El cálculo específico se muestra en la siguiente figura: porque el valor deinserte la descripción de la imagen aquí
  peso en cada momento se comparte, por lo que en este momento Los pesos de son constantes y son todos 1. Por lo tanto, los valores de las dos neuronas en la capa oculta son:
  la primera neurona:1 × 1 + 1 × 1 + 2 × 1 + 2 × 1 = 6 1 \times 1+1 \times 1+2 \times 1 +2 \veces 1=61×1+1×1+2×1+2×1=6   La segunda neurona:1 × 1 + 1 × 1 + 2 × 1 + 2 × 1 = 6 1 \times 1+1 \times 1+2 \times 1+2 \times 1=61×1+1×1+2×1+2×1=6   La primera salida de la capa de salida:6 × 1 + 6 × 1 = 12 6 \times 1+6 \times 1=126×1+6×1=12   La segunda salida de la capa de salida:6 × 1 + 6 × 1 = 12 6 \times 1+6 \times 1=126×1+6×1=12   En este momento, el valor de la capa oculta de la red neuronal RNN se actualiza a [6,6], y se ingresan los datos en el tercer paso de tiempo. El cálculo específico se muestra en la siguiente figura: los valores de las dos neuronas en la capa oculta soninserte la descripción de la imagen aquí
  :
  1ra neuronas:2 × 1 + 2 × 1 + 6 × 1 + 6 × 1 = 16 2 \times 1+2 \times 1+6 \times 1+6 \times 1= dieciséis2×1+2×1+6×1+6×1=16   La segunda neurona:2 × 1 + 2 × 1 + 6 × 1 + 6 × 1 = 16 2 \times 1+2 \times 1+6 \times 1+6 \times 1=162×1+2×1+6×1+6×1=  La primera salida de la capa de 16 salidas: 16 × 1 + 16 × 1 = 32 16 \times 1+16 \times 1=32dieciséis×1+dieciséis×1=  La segunda salida de la capa de salida 32 : 16 × 1 + 16 × 1 = 32 16 \times 1+16 \times 1=32dieciséis×1+dieciséis×1=32   Finalmente, el valor de salida de cada momento es:[ 4 4 ] [ 12 12 ] [ 32 32 ] \left[\begin{array}{l} 4 \\ 4 \end{array}\right]\left[\ begin{matriz}{l} 12 \\ 12 \end{matriz}\right]\left[\begin{matriz}{l} 32 \\ 32 \end{matriz}\right][44][1212][3232]   Hasta ahora, hemos experimentado una estructura RNN completa. Hemos notado que la salida en cada momento tiene una relación muy grande con la entrada en el momento anterior. Diferente. Si cambiamos el orden de la secuencia de entrada, los resultados que obtendremos serán completamente diferentes, esta es la característica de RNN, que puede procesar datos de secuencias y también es sensible a las secuencias.

1.3 Hay problemas en la red neuronal RNN

  Aunque, en teoría, la red neuronal RNN puede aprender información útil en cualquier momento, es propensa al problema de la explosión del gradiente y la desaparición del gradiente cuando los parámetros de la red neuronal se actualizan mediante retropropagación, lo que da como resultado valores de gradiente demasiado grandes o demasiado pequeños. tiempo, es posible que el parámetro no se actualice.
  Para comprender la causa de este problema con más detalle, es necesario explicar el gradiente de los parámetros de la red neuronal RNN. Primero, la fórmula del modelo matemático de la red neuronal RNN es la siguiente: O t = g ( V ⋅ ht ) ht = f ( U ⋅ X t + W ⋅ ht − 1 ) \begin{reunidos} O_t=g\left(V \cdot h_t\right) \\ h_t=f\left(U \cdot X_t+W \cdot h_{ t-1}\ derecha) \end{reunidos}Ot=gramo( Vht)ht=F( Xt+Wht 1)  Ahora use el parámetro W para explicar las razones de la explosión del gradiente y la desaparición del gradiente de la red neuronal RNN.
  Supongamos que hay un error ∂ L t \parcial L_t∂L _tEncuentre la derivada del error con respecto al parámetro W. El algoritmo de retropropagación en la red neuronal RNN utiliza el algoritmo de retropropagación de tiempo (BPTT).Después de resolver el gradiente de todos los pasos de tiempo, el gradiente obtenido mediante el uso de la regla de derivación de cadena multivariable es el siguiente: ∂ L t ∂ w = ∑ yo = 0 yo = t ∂ L t ∂ 0 t ∂ 0 t ∂ ht ∂ ht ∂ hola ∂ hola ∂ w \frac{\parcial L_t}{\parcial w}=\sum_{i=0}^ {i=t } \frac{\parcial L_t}{\parcial 0_t} \frac{\parcial 0_t}{\parcial h_t} \frac{\parcial h_t}{\parcial h_i} \frac{\parcial h_i}{\ parcial w}w∂L _t=yo = 0yo = t0t∂L _thorat0thorayohoratwhorayo  donde excepto ∂ ht ∂ hi \frac{\partial h_t}{\partial h_i}horayohoratOtras derivadas parciales son relativamente fáciles de calcular, usando la regla de derivación en cadena para ∂ ht ∂ hi \frac{\partial h_t}{\partial h_i}horayohorat进行展开求导得到如下式所示:∂ ht ∂ hola = ∂ ht ∂ ht − 1 ⋅ ∂ ht − 1 ∂ ht − 2 ⋯ ∂ hola + 1 ∂ hola = ∏ k = ik = t − 1 ∂ hk + 1 ∂ hk \frac{\parcial h_t}{\parcial h_i}=\frac{\parcial h_t}{\parcial h_{t-1}} \cdot \frac{\parcial h_{t-1}}{\parcial h_ {t-2}} \cdots \frac{\parcial h_{i+1}}{\parcial h_i}=\prod_{k=i}^{k=t-1} \frac{\parcial h_{k+ 1}}{\h_k parcial}horayohorat=horat 1horathorat 2horat 1horayohorayo + 1=k = yok = t 1horakhorak + 1  Supongamos ahora que ya sabemos: ∂ hk ∂ hk − 1 = f ′ ⋅ w \frac{\partial h_k}{\partial h_{k-1}}=f^{\prime} \cdot whorak - 1horak=Fw   dondef ′ f^{\prime}F es la derivada de la función de activación, asumiendo sigmoide como ejemplo,f ∈ ( 0 , 1 ) f \in(0,1)F( 0 ,1 ) , entonces su derivada esf ′ = f ( 1 − f ) ∈ ( 0 , 1 4 ) f^{\prime}=f(1-f) \in\left(0, \frac{1}{4 }\bien)F=f ( 1f )( 0 ,41) , entonces cuando W<4,∂ hk ∂ hk − 1 < 1 \frac{\partial h_k}{\partial h_{k-1}}<1horak - 1horak<1 , después de múltiples multiplicaciones,∂ L t ∂ w \frac{\parcial L_t}{\parcial w}w∂L _tAcercándose gradualmente a 0, el gradiente desaparece en este momento. Entonces cuando W>4, ∂ hk ∂ hk − 1 > 1 \frac{\partial h_k}{\partial h_{k-1}}>1horak - 1horak>1 , después de múltiples multiplicaciones,∂ L t ∂ w \frac{\parcial L_t}{\parcial w}w∂L _tgradualmente se hace más grande y en este momento se produce una explosión de gradiente.
  Cabe señalar aquí que la derivada del error al parámetro es acumulativa, ∂ L t ∂ w = ∑ i = 0 i = t ∂ L t ∂ 0 t ∂ 0 t ∂ ht ∂ ht ∂ hi ∂ hi ∂ w \ frac{\ parcial L_t}{\parcial w}=\sum_{i=0}^{i=t} \frac{\parcial L_t}{\parcial 0_t} \frac{\parcial 0_t}{\parcial h_t} \ frac{\ h_t parcial}{\h_i parcial} \frac{\h_i parcial}{\w parcial}w∂L _t=yo = 0yo = t0t∂L _thorat0thorayohoratwhorayo, lo que significa que el gradiente total de todo el error al parámetro no desaparecerá, por lo que siempre existe el gradiente relativamente cercano, cuando domina, el modelo no puede establecer dependencia a larga distancia.


2. Red neuronal LSTM

  Dado que la red neuronal RNN es propensa a la desaparición o explosión del gradiente cuando se actualizan los parámetros de la red neuronal, esto hará que la red neuronal no aprenda bien la información en secuencias más largas, por lo que la red neuronal RNN solo tiene memoria a corto plazo. Afortunadamente, gracias a los esfuerzos de los académicos, se mejoró la red neuronal RNN y se inventó la red neuronal LSTM. LSTM puede aliviar el problema de la desaparición del gradiente hasta cierto punto y, al mismo tiempo, tiene una mejor secuencia a largo plazo. aprendizaje que la red neuronal RNN. Por lo tanto, en la actualidad, siempre que se mencione la red neuronal cíclica, generalmente se refiere a la red neuronal LSTM. Sin embargo, el nervio RNN es la base de LSTM. Antes de aprender la red neuronal LSTM, debe comprender la RNN. De lo contrario, será más difícil de entender al aprender la red LSTM. En comparación con la RNN, la red neuronal LSTM solo tiene algunas puertas de control más en la unidad de red neuronal Cálculo, siempre que el cálculo de estas puertas de control se descubra sobre la base de la red neuronal RNN, la red neuronal LSTM se puede entender. Para probar que la transición de RNN a LSTM es una operación relativamente compleja de algunas puertas de control en la unidad de red neuronal. Podemos transformar el diagrama de red neuronal RNN anterior como se muestra en la siguiente figura: inserte la descripción de la imagen aquí
  y el diagrama estructural de la red neuronal LSTM mejorada de la red neuronal RNN se puede mostrar en la siguiente figura: inserte la descripción de la imagen aquí
  De la comparación entre el diagrama estructural de la red neuronal RNN y En el diagrama estructural de la red neuronal LSTM, se puede encontrar que, excepto que el cálculo de la unidad de red neuronal es un poco más complicado, los demás son básicamente iguales a RNN. Por lo tanto, solo descubra la unidad de red de la red neuronal LSTM y luego realice la propagación hacia adelante y hacia atrás en los datos de entrada y la salida de la red neuronal final de acuerdo con el modo de operación de la red neuronal RNN. Por lo tanto, quiero reiterar aquí nuevamente que antes de aprender a comprender la red neuronal LSTM, debe comprender el principio y todo el funcionamiento de la red neuronal RNN. Primero, se presenta el modelo matemático de la red neuronal LSTM, como se muestra en la siguiente fórmula:pies = σ ( W F ⋅ [ ht − 1 , X t ] + bf ) eso = σ ( W yo ⋅ [ ht − 1 , X t ] + bi ) C ~ t = tanh ⁡ ( WC ⋅ [ ht − 1 , X t ] + segundo C ) C t = pies ∗ C t − 1 + eso ∗ C ~ tot = σ ( W o [ ht − 1 , X t ] + bo ) ht = ot ∗ ​​tanh ⁡ ( C t ) \begin {reunidos} f_t=\sigma\left(W_f \cdot\left[h_{t-1}, X_t\right]+b_f\right) \\ i_t=\sigma\left(W_i \cdot\left[h_{t -1}, X_t\right]+b_i\right) \\ \tilde{C}_t=\tanh \left(W_C \cdot\left[h_{t-1}, X_t\right]+b_C\right) \ \ C_t=f_t * C_{t-1}+i_t * \tilde{C}_t \\ o_t=\sigma\left(W_o\left[h_{t-1}, X_t\right]+b_o\right) \ \ h_t=o_t * \tanh \left(C_t\right) \end{reunidos}Ft=pag( Wf[ ht 1,Xt]+bf)it=pag( Wyo[ ht 1,Xt]+byo)C~t=sospechoso( Wc[ ht 1,Xt]+bc)Ct=FtCt 1+itC~tot=pag( Wo[ ht 1,Xt]+bo)ht=otsospechoso( Ct)  Se puede ver en la fórmula que, de hecho, es mucho más complicado que la red neuronal RNN, pero no se asuste, de hecho, todo es un tigre de papel. Si lo analiza detenidamente, encontrará que no es tan complicado como parece.El siguiente es un análisis específico de la unidad de red neuronal LSTM. inserte la descripción de la imagen aquí
  La estructura unitaria de la red neuronal LSTM se muestra en la figura anterior. La función de activación sigmoide representada por σ en la figura anterior, sigmoid mapea el valor entre 0 y 1, tal configuración ayuda a actualizar u olvidar información. tanh es la función de activación de tanh.
  Debido a que cualquier número multiplicado por 0 es 0, esta parte de la información será eliminada, del mismo modo, cualquier número multiplicado por 1 se obtendrá solo, y esta parte de la información se conservará perfectamente. Es equivalente a recordar si es 1, olvidarlo si es 0, o recordar el dato de forma selectiva si es un número entre 0-1. Por tanto, el principio de la red neuronal LSTM es: debido a la limitada capacidad de memoria, recordar lo importante y olvidar lo irrelevante.
  Además, para los íconos de los diversos elementos utilizados en el diagrama, cada línea negra lleva un vector completo desde la salida de un nodo hasta la entrada de otros nodos. El círculo rosa representa operaciones puntuales, como la suma de vectores, y la matriz amarilla es la capa de red neuronal aprendida. Las líneas que se unen indican que los vectores están conectados y las líneas que se separan indican que el contenido se copia y luego se distribuye a diferentes ubicaciones.
inserte la descripción de la imagen aquí
  El diseño más importante de LSTM es la correa de transmisión, como se muestra en la siguiente figura:
inserte la descripción de la imagen aquí
  LSTM se basa en esta correa de transmisión para guardar la información útil que se ha filtrado antes, y utiliza esta información para participar en la operación actual, de modo que la salida en el momento actual se obtiene de la proyección anterior.La información combinada y la información de entrada actual afectan la salida. En comparación con la red neuronal RNN, tiene una mejora esencial al tomar toda la información anterior como entrada.
  LSTM tiene tres tipos de estructuras de puerta: puerta de olvido, puerta de entrada y puerta de salida para proteger y controlar el estado de C (celda). A continuación, presentamos estas tres puertas.

2.1 Puerta olvidada

  El primer paso en LSTM es decidir qué información descartaremos del estado de la celda. Esta decisión se toma a través de una estructura conocida como la "puerta del olvido". La puerta de olvido leerá la salida anterior y la entrada actual, hará un mapeo no lineal sigmoide y luego generará un vector (el valor de cada dimensión del vector está entre 0 y 1, 1 significa completamente reservado, 0 significa completamente descartado, lo cual equivale a recordar las importantes y olvidar las irrelevantes), este vector se multiplica por el estado de la celda, y se retiene la información útil en el estado de la celda, y se descarta la información inútil.
inserte la descripción de la imagen aquí
  La parte de cálculo de la puerta de olvido en la estructura de la unidad de red neuronal LSTM se muestra en la figura. La fórmula de cálculo específica es la siguiente: ft = σ ( W f ⋅ [ ht − 1 , X t ] + bf ) f_t=\sigma\left(W_f \cdot\left[h_{t-1}, X_t\right] +b_f\derecha)Ft=pag( Wf[ ht 1,Xt]+bf)   Si la fórmula anterior no es fácil de entender, puede explicar mejor el proceso de cálculo de la puerta de olvido a través de la siguiente figura.
inserte la descripción de la imagen aquí
  Primero el vectorht − 1 h_{t-1}ht 1y X t X_tXtRealice una operación de conexión para obtener un nuevo vector y luego calcule la matriz de parámetros W f W_fWfY el producto del nuevo vector después de la conexión, y luego el resultado de este producto y el desplazamiento bf b_fbfSume y luego realice el mapeo de funciones a través de la función de activación sigmoidea para obtener el vector ft f_tFt, este vector ft f_tFtCada elemento de está entre 0-1. Obviamente el parámetro W f W_f aquíWfNecesita aprender de los datos de entrenamiento a través de la retropropagación.

2.2 Puerta de entrada

  Hay dos pasos de cálculo en la puerta de entrada.La fórmula de cálculo de estos dos pasos es la siguiente, y el proceso de cálculo del vector i_t es muy similar a la puerta de olvido. inserte la descripción de la imagen aquí
eso = σ ( W yo ⋅ [ ht − 1 , X t ] + bi ) C ~ t = tanh ⁡ ( WC ⋅ [ ht − 1 , X t ] + segundo C ) \begin{alineado} i_t &=\sigma\ izquierda(W_i \cdot\left[h_{t-1}, X_t\right]+b_i\right) \\ \tilde{C}_t &=\tanh \left(W_C \cdot\left[h_{t-1 }, X_t\derecha]+b_C\derecha) \end{alineado}itC~t=pag( Wyo[ ht 1,Xt]+byo)=sospechoso( Wc[ ht 1,Xt]+bc)  eso esoitEl proceso de cálculo específico de puede expresarse mediante la siguiente figura:
inserte la descripción de la imagen aquí
  Primero, el vector ht − 1 h_{t-1}ht 1y X t X_tXtRealice una operación de conexión para obtener un nuevo vector y luego calcule la matriz de parámetros W i W_iWyoY el producto del nuevo vector después de la conexión, y luego el resultado de este producto y el sesgo bi b_ibyoSumando, después de la exploración, se realiza el mapeo de funciones a través de la función de activación sigmoidea, y se obtiene el vector que i_tit, este vector es i_titCada elemento de está entre 0-1. Obviamente el parámetro W i W_i aquíWyoNecesita aprender de los datos de entrenamiento a través de la retropropagación. Se puede ver que esta operación es casi la misma que la puerta de entrada, pero la matriz de parámetros es diferente.
  C ~ t \tilde{C}_tC~tEl proceso de cálculo de puede expresarse mediante la siguiente figura:
inserte la descripción de la imagen aquí
  Primero, el vector ht − 1 h_{t-1}ht 1y X t X_tXtRealice una operación de conexión para obtener un nuevo vector y luego calcule la matriz de parámetros WC W_CWcY el producto del nuevo vector después de la conexión, y luego el resultado de este producto se activa por mapeo no lineal a través de la función de activación tanh, y se obtiene el vector C ~ t \tilde{ C}_tC~t, donde el vector C ~ t \tilde{C}_tC~tCada elemento de está entre [-1, 1]. Obviamente el parámetro WC W_C aquíWcNecesita aprender de los datos de entrenamiento a través de la retropropagación. La diferencia con la puerta de olvido aquí es que se utiliza la función de activación tanh.

2.3 Actualizar estado de celda

  En este punto se han calculado ft , it , C ~ t f_t , i_t, \tilde{C}_tFtyo _tC~t, estos vectores de matriz se pueden usar para mapear el estado de celda C t − 1 C_{t-1} en la cinta transportadoraCt 1Se ha realizado una actualización.
inserte la descripción de la imagen aquí
  La fórmula de cálculo específica es la siguiente: Cabe señalar que aquí se usa la multiplicación de los elementos correspondientes de la matriz, y se usa el símbolo "*", mientras que la puerta de olvido anterior y la puerta de entrada usan la multiplicación de matriz. C t = pie ∗ C t − 1 + eso ∗ C ~ t C_t=f_t * C_{t-1}+i_t * \tilde{C}_tCt=FtCt 1+itC~t  El proceso de cálculo específico se puede representar mediante el siguiente diagrama:
inserte la descripción de la imagen aquí
  Primero, use el vector f_t y el vector C t − 1 C_{t-1}Ct 1Multiplique los elementos correspondientes, los elementos en el vector f_t calculados por la puerta de olvido están todos entre 0-1, por lo que puede olvidar selectivamente el vector C t − 1 C_{t-1}Ct 1Los elementos ingresan para obtener un nuevo vector; luego use el vector i_{t} calculado por la puerta de entradaity C t C_{t}CtMultiplique los elementos correspondientes y obtenga un nuevo vector. En este momento, los dos nuevos vectores se suman, de modo que el estado de celda C t C_{t} en la cinta transportadora se actualiza .Ct, este estado de celda contiene información previa filtrada e información del momento actual.

2.4, puerta de salida

  Después de completar la actualización del estado de la celda, es el último paso para calcular la entrada del LSTM, que se calcula a partir de la salida.
inserte la descripción de la imagen aquí
  La fórmula de cálculo específica de la puerta de salida se muestra en la siguiente figura, que obviamente consta de dos partes: ot = σ ( W o [ ht − 1 , X t ] + bo ) ht = ot ∗ ​​​​tanh ⁡ ( C t ) \begin{alineado} &o_t=\sigma\left(W_o\left[h_{t-1}, X_t\right]+b_o\right) \\ &h_t=o_t * \tanh \left(C_t\right) \end {alineado}ot=pag( Wo[ ht 1,Xt]+bo)ht=otsospechoso( Ct)  La primera parte necesita calcular el vector o_t, el proceso de cálculo de o_t se puede mostrar en la figura: como se puede ver en la figura, el vector O t O_t
inserte la descripción de la imagen aquí
  aquíOtEl cálculo y el vector de puerta de olvido anterior ft f_tFt, vector de puerta de entrada it i_titBásicamente lo mismo, pero la matriz de parámetros es diferente. Primero el vector h ( t − 1 ) h_(t-1)h(t1 ) yX t X_tXtRealice una operación de conexión para obtener un nuevo vector y luego calcule la matriz de parámetros W o W_oWoy el producto del nuevo vector conectado, y luego el resultado de este producto se somete a un mapeo de funciones a través de la función de activación sigmoidea para obtener el vector ot o_tot, este vector ot o_totCada elemento de está entre 0-1. Aquí el parámetro W o W_oWoNecesita aprender de los datos de entrenamiento a través de la retropropagación.
  El proceso de cálculo específico se puede representar mediante la siguiente figura: el último paso es calcular la salida ht h_t
inserte la descripción de la imagen aquí
  de LSTMht, primero el vector de estado de celda C t C_tCtDespués de activar la función de activación tanh, se obtiene un nuevo vector y todos los elementos del vector se asignan a [-1,1]. Entonces el vector ot o_totMultiplique con los elementos correspondientes del nuevo vector para obtener el vector de salida ht h_t del LSTMht. Pero como se puede ver en la figura, aquí ht h_thtHay dos direcciones de salida, una es la salida de LSTM y la otra es la entrada del siguiente momento.
  Hasta aquí la estructura de la red neuronal LSTM está terminada, mediante el análisis anterior podemos saber que LSTM tiene un total de 4 matrices de parámetros, los cuales son W f W_fWfW i W_iWyoWC W_CWcW o W_oWo, estas matrices de parámetros se pueden actualizar utilizando el método de descenso de gradiente para actualizar los parámetros y, finalmente, obtener un modelo LSTM que nos ayude a completar las tareas en la escena correspondiente.

2.5 ¿Cómo alivia la red neuronal LSTM el problema de la desaparición del gradiente RNN?

  En la red neuronal RNN, la razón de la desaparición del gradiente es ∏ k = ik = t − 1 ∂ hk + 1 ∂ hk \prod_{k=i}^{k=t-1} \frac{\partial h_ {k+ 1}}{\h_k parcial}k = yok = t 1horakhorak + 1Cuando cada elemento de esta fórmula es menor que 0, la multiplicación del gradiente finalmente se acerca a 0 y el gradiente desaparece. Por lo tanto, la recursividad es la razón principal por la que desaparece el gradiente. Como una versión mejorada de la red neuronal RNN, la red neuronal STM alivia la desaparición gradual de la red neuronal RNN.
  En el modelo matemático del modelo de red neuronal LSTM, aparece C t C_tCtC ( t − 1 ) C_(t-1)C(t1 ) Este fenómeno recursivo, en este momento preguntamos por∂ C t ∂ C t − 1 \frac{\partial C_t}{\partial C_{t-1}}∂C _t 1∂C _tderivada parcial de . Nota aquí ft f_tFteso esitC ~ t \tilde{C}_tC~tAmbos son C ( t − 1 ) C_(t-1)C(t+ ∂ C t eso ∂ eso ∂ ht - 1 ∂ ht - 1 ∂ C t - 1 + ∂ C t ∂ C ~ t ∂ C ~ t ∂ ht - 1 ∂ ht - 1 ∂ C t - 1 + ∂ C t ∂ C t - 1 \ comenzar{alineado} \frac{\parcial C_t}{\parcial C_{t-1}} &=\frac{\parcial C_t}{\parcial f_t} \frac{\parcial f_t}{\parcial h_{t-1 }} \frac{\parcial h_{t-1}}{\parcial C_{t-1}}+\frac{\parcial C_t}{\parcial i_t} \frac{\parcial i_t}{\parcial h_{t -1}} \frac{\parcial h_{t-1}}{\parcial C_{t-1}} \\ &+\frac{\parcial C_t}{\parcial \tilde{C}_t} \frac{ \tilde{C}_t}{\h_{t-1}} parcial \frac{\h_{t-1} parcial}{\C_{t-1}}+parcial{\C_t}{parcial \parcial C_{t-1}} \end{alineado}∂C _t 1∂C _t=ft∂C _thorat 1ft∂C _t 1horat 1+yot∂C _thorat 1yot∂C _t 1horat 1+C~t∂C _thorat 1C~t∂C _t 1horat 1+∂C _t 1∂C _t  ( _ ⋅ ) W yo ∗ ot − 1 tanh ⁡ ′ ( C t − 1 ) + it tanh ⁡ ′ ( ⋅ ) WC ∗ ot − 1 tanh ⁡ ′ ( C t − 1 ) + ft \begin{aligned} \frac{\ parcial C_t}{\parcial C_{t-1}} &=C_{t-1} \sigma^{\prime}(\cdot) W_f * o_{t-1} \tanh ^{\prime}\left( C_{t-1}\right) \\ &+\tilde{C}_t \sigma^{\prime}(\cdot) W_i * o_{t-1} \tanh ^{\prime}\left(C_{ t-1}\right) \\ &+i_t \tanh ^{\prime}(\cdot) W_C * o_{t-1} \tanh ^{\prime}\left(C_{t-1}\right) \\ &+f_t \end{alineado}∂C _t 1∂C _t=Ct 1pag ()Wfot 1sospechoso( Ct 1)+C~tpag ()Wyoot 1sospechoso( Ct 1)+itsospechoso ()Wcot 1sospechoso( Ct 1)+Ft  Se puede ver un resultado a partir del resultado de la derivación, es decir, ∂ C t ∂ C t − 1 \frac{\partial C_t}{\partial C_{t-1}}∂C _t 1∂C _tEl resultado derivado de es un estado de suma, y ​​uno de ellos es f_t, que es el valor de salida de la puerta de olvido.Cuando la compuerta de olvido está completamente reservada, el valor es 1, y cuando se descarta por completo, el valor es 0 . Obviamente cuando ft f_tFtCuando está cerca de 1 ∂ C t ∂ C t − 1 \frac{\partial C_t}{\partial C_{t-1}}∂C _t 1∂C _tk = ik = t − 1 ∂ hk + 1 ∂ hk \prod_{k=i}^{k=t-1} \frac{\parcial h_{k+1}}{\parcial h_k}k = yok = t 1horakhorak + 1No estará cerca de 0, por lo que se alivia el problema de la desaparición del gradiente. De hecho, la red neuronal LSTM no resuelve fundamentalmente el problema de la desaparición del gradiente, sino solo en C t C_tCta C ( t − 1 ) C_(t-1)C(t1 ) Esta carretera resuelve el problema de la desaparición de la pendiente, y otras carreteras todavía tienen el problema de la desaparición de la pendiente.
  Lo que debe enfatizarse aquí es que LSTM no permite que se disipen todos los valores de gradiente de larga distancia, sino que solo permite que los gradientes con posiciones de información clave de tiempo se transmitan todo el tiempo. Si nuestra tarea depende relativamente de la información histórica, estará cerca de 1, y la información del gradiente histórico no es fácil de desaparecer en este momento; si está muy cerca de 0, significa que nuestra tarea no depende de la información histórica. información No importa si el gradiente desaparece.


Resumir

  Este artículo explica desde la unidad básica de la red neuronal RNN hasta la explicación de la red neuronal LSTM Desde la perspectiva del modelo, la mayor diferencia entre la red neuronal RNN y la red neuronal LSTM es que la red neuronal LSTM tiene varios más unidades de puerta y una cinta transportadora para controlar el aprendizaje.La importancia de la información de series temporales, para retener la información útil y eliminar la información inútil.Al mismo tiempo, la red neuronal LSTM también alivia el problema de desaparición de gradiente de la red neuronal RNN red hasta cierto punto. Pero la red neuronal RNN sigue siendo la base. Desde la perspectiva del funcionamiento del modelo, el funcionamiento de la red neuronal RNN y la red neuronal LSTM son casi exactamente iguales. Por lo tanto, es necesario aprender la red neuronal LSTM sobre la base de aprender y comprender la red neuronal RNN.

Supongo que te gusta

Origin blog.csdn.net/didiaopao/article/details/126483407
Recomendado
Clasificación