3 votos

Necesidad de un vector de valores en los transformadores

Estoy leyendo el artículo "La atención es todo lo que necesitas" ( https://arxiv.org/abs/1706.03762 ). En la arquitectura del transformador, tenemos 3 vectores (clave, valor y consulta) para cada palabra. No entiendo la necesidad del vector valor. ¿Por qué no basta con el producto punto del vector consulta y el vector clave? El producto de puntos del vector consulta y el vector clave nos daría el grado de relación entre las palabras, que es exactamente lo que necesitamos en la capa de autoatención. ¿Qué necesidad hay de escalar este valor con el vector de valores?

Gracias.

4voto

mclaughlinj Puntos 1099

El producto punto de la consulta y el vector clave nos daría la cercanía de los palabras relacionadas entre sí, que es exactamente lo que necesitamos en capa de autoatención.

Bien, queremos que la capa produzca algo más que una puntuación escalar. Queremos que dé salida a un vector de "características". Por ejemplo, si escribo una consulta en un motor de búsqueda y me dice que la puntuación de la página web que mejor coincide es de 0,94... pues eso no sirve de nada, quiero el contenido real de la página web.

Hay mecanismos de atención que combinan la clave y el vector de valores en uno solo, pero siguen dando salida a un vector.

1voto

Plarsen Puntos 121

El resultado de la Consulta <-> Clave se acerca a una coincidencia/no coincidencia binaria entre un token y otro y luego el valor es una forma de devolver alguna información útil del token coincidente.

La explicación de Jay Alammar en El transformador ilustrado es uno de los mejores en mi opinión, especialmente el paso 1-6 del capítulo La autoatención en detalle : http://jalammar.github.io/illustrated-transformer/

La mayoría de la documentación tiende a adentrarse rápidamente en perspectivas abstractas y fórmulas en papel, pero si eres como yo, necesitas al menos un ejemplo sencillo, sin fórmulas, para entender lo básico, y a partir de ahí la documentación tiene más sentido. Hace un tiempo creé un simple documento ilustrativo en Excel con fórmulas (no descriptivas, sino prácticas) simulando la parte del codificador de una capa de codificación. No funciona exactamente como se sugiere en " La atención es todo lo que necesitas "pero algo similar. Es extremadamente pequeño y prácticamente inútil (es Excel después de todo): longitud de la secuencia: 9, sólo 3 dimensiones för Q,K,V, la codificación posicional es de 2 dims, 4 cabezas de atención. El vocabulario es sólo las 9 palabras/tokens del ejemplo y todos los pesos que se supone que se entrenan en el modelo son sólo números aleatorios generados sobre la marcha. El documento carece de cualquier funcionalidad de entrenamiento. Ah, y no utiliza softmax, así que supongo que el resultado Consulta <-> Clave está lejos de ser binario. Tampoco usé el producto punto ya que 3 de las 4 cabezas de atención sólo consultan una sola dimensión.

De todos modos, los ejemplos reales (hasta el último detalle) pueden funcionar a veces como un "rompehielos" para la comprensión.

Documento Excel: https://artificial.se/AttentionDemo.xlsx

Captura de pantalla: Visualizing the Attention Heads and the Value matrix multiplication

(Si alguien mejora el documento de Excel, lo termina con el decodificador o la función de entrenamiento -supongo que eso requerirá habilitarlo con macros- o cualquier otra cosa, entonces por favor comparta su versión con el resto de nosotros que necesitamos ejemplos prácticos y fáciles de usar para jugar).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X