¿Cómo funciona el modelo de atención con LSTM?

Desarrollemos la comprensión de manera gradual. Además, basaremos nuestra discusión en aplicaciones de procesamiento del lenguaje natural (PNL) y asumiremos el conocimiento básico de las capas de memoria a corto plazo (LSTM) y las redes neuronales.

¿Cómo se usan las capas LSTM en PNL?

Los LSTM tienen un vector de salida para cada palabra en la secuencia. La forma más común de usar LSTM es tomar el vector de salida de la última palabra en la secuencia como la representación de toda la secuencia. Esto tiene sentido porque:

Crédito de la foto: WildML

  • Simplemente tomar el vector de la última palabra proporciona una manera simple de convertir una secuencia de longitud variable en un vector de longitud fija. Fácil de usar con capas densas para clasificación, etc.
  • Se supone que las redes neuronales recurrentes hacen que el vector de salida de la palabra actual dependa de las palabras anteriores de la secuencia. Se supone que los LSTM extienden esta capacidad a secuencias muy largas. Entonces (al menos en teoría) el vector de salida de la última palabra codifica información de toda la secuencia.

¿Por qué es un problema usar el vector de salida de la última palabra?

  • En la práctica, incluso los LSTM no pueden preservar la dependencia durante más de unos pocos pasos.
  • Codificar la información de una secuencia completa en un solo vector no es razonable. Estamos tratando de comprimir demasiada información en un espacio limitado.

¿Cuál es la solución?

En lugar de usar el vector de salida de la última palabra, use los vectores de salida de todas las palabras . Sin embargo, esto se vuelve complicado porque ahora, en lugar de un vector de longitud fija, estamos tratando con una matriz de dimensión variable, es decir, tenemos un vector para cada palabra de la secuencia.

Entonces, el mejor enfoque sería agregar los vectores de palabras en un vector de longitud fija basado en algún contexto . Veamos el ejemplo de Neural Machine Translation para comprender mejor este punto.

Crédito de la foto: https://arxiv.org/pdf/1409.0473.pdf

En la imagen de arriba, la palabra traducida en la posición t depende de la agregación de todos los vectores de salida de la secuencia de entrada. De esta manera, la red puede elegir qué palabras son importantes y usar información solo de esas palabras para construir el vector de longitud fija.

Finalmente, hablemos del modelo de atención

El modelo de atención es solo una forma de hacer la agregación mencionada anteriormente. Proporciona una receta para agregar los vectores de salida de cada palabra en un solo vector basado en algún contexto. En la imagen de arriba, ese contexto es el vector de estado LSTM de la palabra traducida en la posición t-1.

Permítanme presentarles la receta básica para este proceso, pero primero algunas anotaciones:

  • El vector de salida LSTM para la palabra en la posición i es [math] h_i [/ ​​math]
  • El contexto se representa usando un vector [math] c_j [/ math].
  • Hay n palabras en la secuencia.

Paso 1: Mezcle el vector de salida LSTM con el vector de contexto y emita un estado intermedio.

[matemáticas] e_ {ij} = f (h_i, c_j) [/ matemáticas]

En general, [math] f [/ math] es una red de alimentación simple con 1 o 2 capas densas. Tenga en cuenta que para cada contexto [matemática] c_j [/ matemática] tendremos n estados intermedios uno para cada palabra.

Paso 2: Calcule el peso de cada palabra vector [math] h_i [/ ​​math]

[matemáticas] \ alpha_i = \ frac {\ exp (e_ {ij})} {\ sum_ {i = 1} ^ {i = n} \ exp (e_ {ij})} [/ matemáticas]

Tenga en cuenta que esto es solo softmax sobre los estados intermedios. Softmax tiene sentido porque genera pesos para cada vector de palabras y el peso total se suma a 1.

Paso 3: Calcular el vector final de longitud fija

[matemáticas] v = \ sum_ {i = 1} ^ {i = n} \ alpha_ih_i [/ ​​matemáticas]

Ahora, algunas cosas a tener en cuenta sobre esta receta

  1. Los pesos de los diferentes vectores de salida se APRENDEN como parte de la capacitación. Este cálculo se convierte en parte del gráfico de cálculo de red. Los parámetros a aprender son los parámetros de la función [matemáticas] f. [/ Matemáticas]
  2. La atención es cara. Tenga en cuenta que en esta receta estamos calculando la atención para cada contexto [math] c_j. [/ Math] ¡¡Esto es operaciones cuadráticas !!.

Algunos ejemplos de posibles vectores de contexto:

  • En Neural Machine Translation, son los vectores de estado de la palabra traducida previamente. https://arxiv.org/pdf/1409.0473.pdf
  • En la clasificación, se utilizan las atenciones personales. Básicamente, tiene vectores globales que representan la pregunta “¿Cuáles son las palabras importantes”. Un ejemplo es este artículo. https://www.cs.cmu.edu/~diyiy/do…
  • En las tareas de preguntas y respuestas, el contexto es el vector para la secuencia de preguntas y se utiliza para atender el documento fuente (documento que tiene la respuesta).

Los modelos de atención plantean una pregunta importante: “¿Qué importancia tienen los RNN en el procesamiento del lenguaje natural”?

Piénselo, está agregando el vector de salida en todo momento. ¿No suena como lo que hacen las redes neuronales de convolución? Además, para tareas como las clasificaciones, ¿realmente necesitamos RNN? ¿Podemos atender a la matriz de incrustación? Estas preguntas conducen a algunos documentos nuevos.

  • Uso de CNN en la traducción automática. Un enfoque novedoso para la traducción automática neuronal
  • Papeles que solo intentan usar Atención. https://arxiv.org/pdf/1706.03762…

Espero que esto sea útil 🙂

Esta imagen se explica por sí misma. Lea también. Mecanismo de atención neuronal