La primera vez que leí acerca de la alineación suave fue probablemente en el famoso artículo de Bahdanau en el que un modelo de codificador-decodificador utiliza un mecanismo de atención para la traducción automática neural.
Acerca de la alineación suave: un ejemplo de traducción automática neural
En este contexto, la alineación de la atención es bastante intuitiva. En cada paso de decodificación, es decir, al predecir una nueva salida, observamos la secuencia de entrada y determinamos cuál es la más importante. Esta opción es, de hecho, una matriz ponderada que brinda una probabilidad de atención entre cada token fuente y el paso de decodificación.
- ¿Puede el aprendizaje automático ayudar en la detección de malware? ¿Cuáles son los cuellos de botella en tal implementación de ML?
- ¿Por qué el embolsado es más preciso que solo mirar todo el conjunto de datos y tomar el promedio?
- Cómo comenzar con la visión por computadora
- ¿Hay alguna forma de llamar a las funciones de Python desde mi aplicación NodeJS para aprovechar el poder del aprendizaje automático en una aplicación Node?
- Cómo obtener colores 'visualmente distinguibles' de las imágenes
Una alineación dura sería como:
poner atención en el tercer token
y de hecho sería un vector con identificación de token para cada paso de decodificación.
Una matriz de alineación suave es más como:
presta un 10% de atención a la primera ficha, un 5% a la segunda, un 25% a la tercera, un 50% a la cuarta, … (con suma = 100% de c)
Y es una matriz, que es interesante visualizar:
(fuente: Bahdanau 2014)
Es una matriz de alineación suave de atención en una traducción inglés-francés. Vemos que logra capturar propiedades interesantes sobre la traducción en-fr. Por ejemplo, el orden de las palabras es ligeramente diferente en esos idiomas:
Consideremos las siguientes traducciones: (fr -> en)
- área = zona
- económico = economía
- europeo = européenne
pero “área económica europea” = “zona económica europea”, es decir, se invierte el orden. Es por eso que hay un patrón diagonal en la dirección opuesta alrededor de esas palabras.
Además, puede ver una especie de cuadrado que traduce “fue firmado” (pretetit) a “a été signé” (passé composé), que es una buena traducción.
Alineación suave para resumen
Lo mismo se aplica para el resumen automático de texto, donde el objetivo no es cambiar el idioma, sino generar una versión más pequeña. Intuitivamente tiene sentido usar la atención también, ¿verdad?
(fuente: Rush et al (2014): https://arxiv.org/pdf/1409.0473.pdf))
Tenga en cuenta que también se conoce explícitamente como “alineación suave”.
Otro ejemplo: interruptor suave
Aún más en general, cuando lees en voz baja, piensa que estamos hablando de mapear algo con probabilidades. Lo mismo se aplica con el llamado interruptor suave: en lugar de considerar el interruptor binario 0–1, da una probabilidad en [0, 1]. Encontré esto generalmente cuando hablamos de la red de generador de punteros , por ejemplo, en See (2017) – Sección 2.2: