Autoatención
En la frase «Ana dejó el libro porque era pesado», la palabra «era» por sí sola explica poco. Hay que relacionarla con los fragmentos anteriores. Un modelo que procesa texto necesita una forma de que la descripción de un lugar incorpore información de otros lugares del mismo texto.
Self-attention crea esa descripción mezclando de forma ponderada la información de los tokens disponibles, es decir, fragmentos de texto. Para cada posición, el modelo prepara tres listas de números: query para buscar relaciones, key para comparar y value con la información que transmitir. Son representaciones aprendidas, no preguntas literales ni entradas de un diccionario.
Para la posición «era», su query se compara con los key de otros fragmentos, como «Ana» y «el libro». Los resultados determinan las contribuciones de la información transmitida desde sus value. Si el fragmento sobre el libro recibe más peso, su descripción influirá más en la nueva descripción de «era». «Self» significa que los tres tipos de datos proceden de la misma secuencia.
El ejemplo de la frase muestra la necesidad del contexto, pero no garantiza que un cálculo concreto reconozca correctamente la referencia del pronombre. Causal Masking puede limitar además las posiciones disponibles. Los pesos de attention no evalúan la veracidad de la respuesta completa.
Mecanismo y detalles
La consulta de una posición se compara con las claves de las posiciones disponibles. Los pesos obtenidos determinan la contribución de sus valores al resultado. En un Transformer, este cálculo se realiza, entre otras formas, mediante la atención por producto escalar escalado. Descripción e implementación: Dive into Deep Learning, §11.6.1.
Qué limita el acceso a otras posiciones
Tomemos tres posiciones de una secuencia. Sin máscara, la representación de la segunda puede utilizar las tres, incluida ella misma. Con una máscara causal, la tercera posición no está disponible para ella. Sigue siendo autoatención: ha cambiado el alcance del acceso, no la fuente de las consultas, claves y valores.
Así se distinguieron el codificador y el decodificador en el artículo original, §3.2.3. Por tanto, la palabra «self» no implica acceso a tokens futuros.
En la variante completa, el número de pares comparados crece de forma cuadrática con la longitud de la secuencia. Para 100 posiciones hay 10 000 pares, y para 200, 40 000. Es una ilustración del número de pares, no una medición del tiempo de una implementación concreta. Comparación del coste: §11.6.2.