Clase 10: Mecanismos de Atención
Los datos de texto corresponden a un caso particular de datos secuenciales. En este caso, dependiendo del idioma, las dependencias pueden venir tanto del pasado como del futuro. Consideramos texto libre como una secuencia de Strings, el cuál es inteligible para seres humanos pero no necesariamente para un computador.
Es probablemente el tipo de dato más abundante, aunque también uno de los más sensible al ruido (variabilidad, idioma, tono, formalidad, etc.).
El problema
Los computadores, y por ende los modelos, no pueden entender strings. El computador sólo puede entender datos numéricos.
Para poder manipular texto dentro de un modelo será necesario un pre-procesamiento que permita transformar el texto en datos numéricos que un modelo pueda entender.
La disciplina encargada de desarrollar modelos asociado a lenguaje/texto es conocida como Procesamiento de Lenguaje Natural (NLP en inglés).
Tokenización
El proceso de Tokenización permite transformar texto en datos numéricos. Cada dato numérico se mapea con un “trozo de texto”. Normalmente los modelos van asociados a la tokenización con la que fueron entrenados. Cambiar la tokenización puede generar gran degradación.
Embedding
Corresponde el proceso en el que los Tokens se transforman en vectores densos en las cuales la distancia entre ellos representa una noción de similaridad.
¿Por qué es tan importante el uso de Embeddings?
A pesar de las habilidades de las RNN, estas no son suficientes para distintas tareas de NLP.
Las RNN inicialmente toman cada elemento de una secuencia y generan un output para cada entrada. Esto potencialmente genera ciertas limitantes. Una de ellas es el proceso llamado Machine Translation.
Este es un ejemplo de Modelamiento seq2seq en el que se utiliza una secuencia de entrada pero se espera también una secuencia de salida.
Supongamos que necesitamos hacer la siguiente traducción:
Hi, my name is Alfonso
Hola, mi nombre es Alfonso
Este tipo de traducción es uno a uno. Cada input puede tener asociado una salida de manera directa puede realizarse de manera directa con una RNN.
Would you help me prepare something for tomorrow?
¿Me ayudarías a preparar algo para mañana?
Problemas
Una potencial solución se puede dar por medio de Redes Convolucionales de 1D. En este caso las redes convolucionales tienen la ventaja de poder mirar tanto al pasado como al futuro de manera móvil.
Ventajas
Desventajas
Este tipo de arquitecturas son quizás las más populares hoy en día y tienen aplicaciones en distintos dominios.
Una arquitectura Encoder-Decoder convolucional permite devolver una imagen como salida. Este ejemplo se conoce como Segmentación Semántica.
Una arquitectura recurrente permite devolver una secuencia como salida. La cual puede utilizarse para generación o traducción de texto.
Ventajas
Desventajas
Ojo
El último Hidden State del Encoder se utilizará como Hidden State inicial del Decoder.
Arquitectura
<eos>
(end of sentence) que separa el input del output.Entrenamiento
Al momento de entrenarse, las salidas \(y1\) e \(y2\) pueden ser distintas al valor esperado y deben ir ajustándose epoch a epoch.
Predicción
<eos>
(otros modelos pueden utilizar otros tokens especiales).<eos>
.Problema
\[c_i = \sum_{t=1}^T a_{i,t} \cdot h_t\]
Donde \(c_i\) corresponde al contexto para la predicción del output \(i\) y \(a_{i,t}\) (que van entre 0 y 1) corresponden a cuánta atención le presta el output \(i\) al token \(t\).
Ojo
En el paper original, se interpreta \(a_{i,t}\) como cuánto se “alínea” o se parece el estado \(h_t\) con \(S_{t-1}\).
\[a_{i,t} = align(h_t, S_{i-1})\]
\[[a_{i,1},...,a_{i,T}] = Softmax([\tilde{a_{i,1}},...\tilde{a_{i,T}}])\]
1. Proyecciones Lineales
\[k_t = W_k \cdot h_t\] \[q_{i-1} = W_q \cdot S_{i-1}\]
2. Similaridad: Producto Punto es equivalente al Cosine Similarity
\[\tilde{a}_{i,t} = k_t^T \cdot q_{i-1}\]
3. Normalización:
\[[a_{i,1},...,a_{i,T}] = Softmax([\tilde{a}_{i,1},...\tilde{a}_{i,T}])\]
Detalles