Pytorch Neural Network Practical Study Notes_23 Estructura de red neuronal recurrente: estructura LSTM + estructura RNN bidireccional

1 Construcción de redes neuronales recurrentes profundas

En la estructura de red profunda, el modelo RNN simple se transformará desde dos perspectivas, como sigue.

  1. El uso de una estructura más compleja como unidad básica del modelo RNN le permite extraer mejores características memorizadas en una red de una sola capa.
  2. Combine múltiples unidades básicas para formar diferentes estructuras (RNN multicapa, RNN bidireccional, etc.). A veces, también se combina con varias estructuras de modelos, como redes totalmente conectadas y redes convolucionales, para formar un modelo de red con una mayor capacidad de ajuste. Entre ellos, la unidad básica del modelo RNN se denomina Célula, que es la base de todo el RNN.

2 Estructura celular común: LSTM

La unidad de Memoria a Largo Corto Plazo (LSTM) es una unidad RNN que utiliza una estructura similar a un puente. Puede aprender información de secuencias a largo plazo y es una de las celdas más utilizadas en las redes RNN.

2.1 Comprender la estructura LSTM

2.1.1 Redes neuronales recurrentes (RNN)

Al operar continuamente el circuito de información para garantizar que la información persista, resuelve el problema que no se puede combinar con la experiencia para comprender el problema actual.

Se puede ver en la figura que A permite que la información circule continuamente internamente, lo que puede garantizar que cada paso del cálculo pueda guardar la información anterior.

2.1.1 Desventajas de las redes neuronales recurrentes (RNN) en secuencias largas

La expansión de la estructura de bucle propio de las RNN se puede considerar como la misma red replicada varias veces y conectada en una línea, que transmite su propia información al siguiente yo en el momento siguiente.

Esta estructura similar a una cadena revela que los RNN están estrechamente relacionados con los datos de tipo secuencia y lista. Como si hubieran nacido para manejar datos de tipo secuencia.

Sin embargo, cuando se trata de problemas de dependencia larga, aunque las RNN son teóricamente factibles, se encuentra que las RNN no se pueden implementar en la práctica.

2.1.3 Estructura LSTM de celda en red neuronal recurrente

Existe una estructura de red especial en las RNN denominada LSTM, cuyo nombre completo es redes de memoria a largo y corto plazo, que se puede traducir a redes neuronales de memoria a largo y a corto plazo. La intención original de esta red es resolver el problema a largo plazo. problema de dependencia.

Todas las redes neuronales recurrentes tienen la forma de una cadena de módulos repetidos de la red neuronal.

La estructura de los LSTM es la siguiente:

 Tiene cuatro capas de red en el interior, que es diferente de la unidad de una sola capa de red en la red RNN estándar.

  • Capa de red neuronal: funcionamiento de la función de activación
  • Operación Pointwise: operación de punto
  • Transferencia de vectores: flujo de datos
  • Concatenar: representa la operación de fusión (concat) de vectores
  • Copiar: una copia del vector

En el corazón de los LSTM se encuentra el estado de la celda, representado por una línea horizontal a través de la celda. El estado de la celda es como una cinta transportadora, recorre toda la celda pero tiene solo unas pocas ramificaciones, lo que garantiza que la información fluya a través de todos los RNN sin cambios. El estado de la celda se muestra en la siguiente figura:

2.3 Estructura de puerta de la estructura LSTM

La red LSTM puede eliminar o agregar información al estado de la celda a través de una estructura llamada puerta.

Gates puede decidir selectivamente qué información dejar pasar. La estructura de la puerta es una combinación de una capa sigmoidea y una operación de producto escalar:

2.3.1 Puerta de olvido

La puerta de olvido determina qué información descarta el modelo del estado de la celda. La puerta de olvido lee la salida del modelo de secuencia anterior y la entrada del modelo actual para controlar si se retiene cada número en el estado de la celda .

Por ejemplo, en un ejemplo de modelo de lenguaje, se supone que el estado de la celda contendrá el género del sujeto actual, de modo que se pueda seleccionar el pronombre correcto en función de este estado. Cuando vemos un nuevo tema, el nuevo tema debe actualizarse en la memoria. La función del olvido] es ir a la memoria para encontrar el sujeto anterior, sin realizar realmente la operación de olvido, solo encontrándolo.

En la figura, representa la salida de la puerta de olvido, σ representa la función de activación, representa el peso de la puerta de olvido, representa la entrada del modelo actual, representa la salida del modelo de secuencia anterior y representa el sesgo de la olvida la puerta.  

2.3.2 Puerta de entrada

La puerta de entrada en realidad se puede dividir en dos partes, una parte es para encontrar los estados de celda que deben actualizarse y la otra parte es para actualizar la información que debe actualizarse en el estado de celda.

1. En la Figura 1 a continuación, representa el estado de la celda que se actualizará, σ representa la función de activación, representa la entrada del modelo actual, representa la salida del modelo de secuencia anterior, representa el peso calculado , representa el desplazamiento de calcularlo y representa el uso de tanh Nuevos estados de celda creados, que representan pesos calculados, que representan sesgos calculados.     Después de que la puerta de olvido encuentra la información que necesita ser olvidada, la multiplica con el estado anterior y descarta la información que necesita ser descartada. Luego agregue x al resultado para obtener nueva información sobre el estado de la celda. Esto completa la actualización del estado de la celda, como se muestra en la figura.

 2. Actualización de la puerta de entrada En la figura a continuación, representa el estado de celda actualizado, el resultado de salida de la puerta de olvido, el estado de celda del modelo de secuencia anterior, el estado de celda que se actualizará y el nuevo estado de celda creado usando tanh.

2.3.4 Puerta de salida

Como se muestra en la Figura 7-34, en la salida, se usa una capa de función de activación (en realidad se usa la función de activación sigmoidea) para determinar qué parte de la información se emitirá, y luego el estado de la celda se procesa a través de tah (para obtener una función de activación en -1~ 1), y multiplíquelo con la salida de la puerta sigmoidea para obtener la parte que desea generar al final. Por ejemplo, en el modelo de lenguaje, asumiendo que se ha ingresado un pronombre, calculará la necesidad de generar un pronombre relacionado.

Como se muestra en la figura, la puerta de salida está en la Figura 7-34 y representa la información que se va a emitir, σ representa la función de activación, representa el peso calculado, representa el sesgo calculado, representa el estado de celda actualizado y representa el resultado de salida del modelo de secuencia actual.

2.3 Unidad Recurrente Cerrada (GRU)

La unidad recurrente cerrada (GRU) es otra estructura de red de uso común con casi la misma función que LSTM. Combina la puerta de olvido y la puerta de entrada en una única puerta de actualización, mientras mezcla el estado de celda y el estado oculto, y algunos otros cambios. . El modelo final es más simple que el modelo LSTM estándar.

Por supuesto, hay más de una variante de GRU basada en LSTM Después de las pruebas, se encuentra que casi no hay diferencia en el rendimiento y la precisión de estas celdas de derivación, pero hay ligeras diferencias en algunos negocios específicos.

Dado que GRU tiene una salida de estado menos que LSTM, pero el efecto es casi el mismo que LSTM, usar GRU al codificar puede simplificar un poco el código.

2.4 Unidad LSTM (JANET) con solo puerta de olvido

    La unidad JANET (Just Another NETwork) también es una variante de la unidad LSTM y se lanzó en 2018. Los experimentos muestran que el rendimiento de solo la red de puerta olvidada es en realidad mejor que la unidad LSTM estándar. Además, este método de optimización se puede utilizar en GRU.

3 unidades de circulación independientes

La unidad recurrente independiente es una nueva estructura de unidad de red neuronal recurrente, que es mejor que la unidad LSTM en efecto y velocidad

La unidad IndRNN no solo puede resolver eficazmente los problemas de desaparición de gradiente y "explosión" de gradiente que existen en el modelo RNN tradicional, sino también aprender mejor las dependencias a largo plazo en las muestras.

Al construir el modelo:

  • Las unidades IndRNN se pueden usar en formas de apilamiento, residuales y totalmente conectadas para construir estructuras de red más profundas:
  • El uso de unidades IndRNN con funciones de activación no saturadas como RLU hará que el modelo muestre una mayor robustez.

3.1 Estructura del modelo RNN original

3.2 Estructura de la unidad indRNN

 4 Estructura RNN bidireccional

    La RNN bidireccional, también conocida como Bi-RNN, es un modelo de RNN que utiliza dos direcciones.
    El modelo RNN es bueno para procesar datos continuos, ya que son datos continuos, el modelo no solo puede aprender sus características directas, sino también sus características inversas. Esta estructura que combina avance y retroceso tendrá un mayor grado de ajuste que una red recurrente unidireccional. Por ejemplo, predecir las palabras que faltan en una oración requiere hacer predicciones basadas en el contexto.

El proceso de procesamiento del RNN bidireccional consiste en realizar una retropropagación sobre la base de la propagación directa. Tanto la propagación directa como la retropropagación están conectadas a una capa de salida. Esta estructura proporciona a la capa de salida información contextual pasada y futura completa para cada dos puntos en la secuencia de entrada. La figura muestra una red neuronal recurrente bidireccional desplegada a lo largo del tiempo.

    RNN bidireccional tendrá una capa oculta más que RNN unidireccional, se reutilizan 6 pesos únicos en cada paso de tiempo, y los 6 pesos corresponden a: entrada a capas ocultas hacia adelante y hacia atrás, capa oculta a capa oculta La capa contenedora en sí, hacia adelante y hacia atrás la capa oculta a la capa de salida.
    La secuencia del RNN bidireccional en la red neuronal se muestra en la Figura 7-37.
    Después de la operación directa de acuerdo con la serie temporal, la red opera en la dirección inversa desde el último elemento de tiempo, es decir, la entrada en el tiempo se genera con el valor predeterminado 0 o el 0u3 inverso, y el ou3 inverso se considera como la entrada en el tiempo 2 y el momento original se ingresa para generar el Qu2 inverso, y así sucesivamente, hasta que los datos de la primera serie de tiempo

Una red neuronal recurrente bidireccional tiene dos salidas: una es la salida directa y la otra es la salida inversa. Finalmente, los resultados de salida se conectarán en paralelo a través de concat y luego se entregarán a las capas posteriores para su procesamiento.

Suponiendo que la forma de la salida de la red neuronal recurrente unidireccional es [seq,batch,nhidden], la forma de la salida de la red neuronal recurrente bidireccional será [seq,batch,nhidden×2]

En la mayoría de las aplicaciones, basadas en series de tiempo y preguntas relacionadas con el contexto, como la respuesta automática en NLP, el LSTM bidireccional generalmente se usa con la expansión horizontal LSTM o RNN, y el efecto es muy bueno.

Supongo que te gusta

Origin blog.csdn.net/qq_39237205/article/details/123533686
Recomendado
Clasificación