HeadlinesBriefing favicon HeadlinesBriefing.com

Por qué Transformers necesitan codificación posicional

Towards Data Science •
×

Mientras profundizaba en los modelos fundacionales para series temporales, me di cuenta de que no podía entenderlos realmente sin entender primero los transformers. No quería usar estos modelos como cajas negras, así que comencé a rastrear las ideas hacia atrás, desde los modelos fundacionales hasta los transformers, y desde los transformers hasta la autoatención. Lo que hizo interesante la transición es que, aunque los transformers se construyeron originalmente para el lenguaje, la idea central se traslada naturalmente a las series temporales. Las dos modalidades son muy diferentes, pero comparten algo fundamental: ambas son secuencias, y en ambos casos, el orden cambia el significado. En el lenguaje, perro muerde a hombre es muy diferente de hombre muerde a perro. Las series temporales no son diferentes. Una temperatura de 30° ayer y 20° hoy cuenta una historia diferente de 20° ayer y 30° hoy. Los valores pueden ser los mismos, pero su orden cambia el significado de la secuencia. La pregunta es que si la autoatención mira todas las observaciones a la vez, ¿cómo sabe un transformer qué observación vino primero, cuál vino después o qué tan separadas están dos observaciones? Esa pregunta me llevó a la codificación posicional. Lo que más me sorprendió fue cómo una idea matemática tan simple podía darle a un Transformer un sentido del orden. Las técnicas exactas han evolucionado considerablemente desde entonces, pero el problema subyacente sigue siendo el mismo. Este artículo es mi intento de construir esa intuición desde cero, comenzando con una serie temporal simple y siguiendo el camino desde las observaciones brutas hasta la autoatención y finalmente hasta la codificación posicional.

De observaciones escalares a representaciones vectoriales Considere una serie temporal simple que contiene la temperatura registrada durante cinco días laborables: Ejemplo de serie temporal: historial de temperatura de 5 días Cada observación x_t es solo un escalar. Un transformer, sin embargo, opera en vectores de dimensionalidad d_model. Las observaciones escalares, por lo tanto, necesitan ser mapeadas primero a ese espacio de representación. Una forma simple de hacer esto es a través de una proyección lineal aprendida, es decir, embedding: e_t = W_e x_t + b_e dándonos una secuencia de representaciones vectoriales: e_1, e_2, e_3, e_4, e_5 Un embedding es una representación profunda y abstracta de la serie en forma de un vector numérico multidimensional que codifica sus características y que el modelo entiende. Cada token de serie temporal está representado por un embedding aprendido. Cada e_t captura información sobre el valor observado en ese paso de tiempo, pero en este punto, es solo una representación de la observación. La palabra importante aquí es aprendido. Al modelo no se le da una representación vectorial predefinida para una temperatura como 18°. Los parámetros W_e y b_e se aprenden durante el entrenamiento para que las representaciones resultantes sean útiles para la tarea. En este punto, e_t representa lo que se observó. Todavía no le dice al modelo dónde ocurrió esa observación en la secuencia.

¿Cómo construye contexto la autoatención? La autoatención permite que cada observación use información del resto de la secuencia. Supongamos que queremos actualizar la representación del viernes. El modelo primero crea tres proyecciones aprendidas de cada e_t: q_t = W_Q e_t, k_t = W_K e_t, v_t = W_V e_t Los vectores de consulta, clave y valor se aprenden en el bloque de autoatención. Las matrices W_Q, W_K y W_V también se aprenden durante el entrenamiento. No se le dice de antemano al modelo cómo debería verse una consulta, clave o valor útil. Para el viernes, su consulta q_5 se compara con las claves de todas las observaciones: k_1, k_2, k_3, k_4, k_5. Cada comparación produce un...