ARQUITECTURAS DE DEEP LEARNING

Cómo funciona un Transformer.

Del embedding al siguiente token. Sigue lo que ocurre dentro de un bloque y comprueba cómo la posición, la máscara causal y las cabezas de atención cambian la representación de una palabra.

Probar la atención Ir a la guía

LABORATORIO INTERACTIVO

¿A qué tokens presta atención una posición?

Selecciona banco y cambia de frase. Con la máscara causal, ambas consultas tienen disponible el mismo prefijo. Si abres el acceso a toda la frase, aparecerán pistas diferentes. Después cambia de cabeza y observa cómo cambian las puntuaciones.

Consulta de banco (1 · 0)Mezcla resultante (0,11 · 0,11)
Cálculo de la atención para una posición
TokenClave KValor VPuntuaciónPeso
El(0 · 0)(0 · 0)043 %
banco(0,4 · 0,4)(0,2 · 0,2)0,2857 %
del(0 · 0)(0 · 0)−∞0 %
parque(2 · 0)(1 · 0)−∞0 %
cerró(0,6 · 0,2)(0,3 · 0,1)−∞0 %

El peso se calcula con softmax entre las posiciones permitidas. La mezcla es la suma de los valores V multiplicados por sus pesos. El ejemplo usa cinco tokens y omite el punto final. Los vectores y las proyecciones se han construido para hacer visible el cálculo. En un modelo entrenado, las proyecciones se aprenden y las cabezas no llevan asignados estos temas.

Attention Is All You Need (§ 3.2)
DEL EMBEDDING A LOS LOGITS

El Transformer por dentro

01 / Qué es un Transformer

Una arquitectura para transformar secuencias

En el artículo anterior seguimos la elección de un token. Quedaba por explicar de dónde salían sus puntuaciones. Un Transformer resuelve parte de ese problema convirtiendo una secuencia de entrada en otra secuencia de vectores. En cada bloque, la atención permite que una posición incorpore información de otras y una red pequeña transforma el resultado. El modelo acumula esas operaciones a lo largo de varias capas.

Vaswani y sus colaboradores presentaron la arquitectura en 2017 para traducción. Su modelo tenía un encoder que procesaba la frase de origen y un decoder que producía la traducción. La familia incluye configuraciones distintas. En esta guía seguiremos principalmente un decoder causal, la variante que conecta con la generación token a token.

Tres formas de organizar la arquitectura
ConfiguraciónFlujo de informaciónEjemplo de tarea
EncoderCada posición puede consultar ambos lados del texto.Clasificar un documento.
Encoder–decoderEl decoder consulta el texto fuente codificado y el prefijo de salida.Traducir una frase.
Decoder causalCada posición consulta el prefijo hasta ella misma.Continuar un texto.
La tarea determina qué contexto debe estar disponible. En traducción se conoce la frase de origen completa antes de generar la salida.
02 / Embeddings y posición

El significado de una pieza depende de dónde aparece

El tokenizador devuelve identificadores. Una tabla aprendida convierte cada identificador en un vector inicial, o embedding. Dos apariciones del mismo token pueden empezar con el mismo embedding. El orden y el contexto permiten que esas representaciones evolucionen de manera distinta.

El orden necesita una representación explícita. En el Transformer original, se sumaba al embedding un vector de senos y cosenos que dependía de la posición. Otra familia de métodos, como RoPE, gira pares de coordenadas de Q y K según su posición. Al calcular su producto escalar, parte de la puntuación queda ligada al desplazamiento relativo entre ambos tokens.

Prueba una rotación posicional

Rotación de Q en la posición 0 y K en la posición 2
Q · posición 0K · posición 2Producto escalar de los vectores unitarios · 0,5

Los dos vectores parten de la misma dirección. Cada posición añade 30° en este ejemplo. Si se desplazan ambos tokens a la vez, las líneas giran juntas y el producto escalar se conserva. Al cambiar la distancia, cambia el ángulo entre ellas. Las líneas se dibujan con longitudes distintas para distinguirlas.

El ejercicio usa una sola frecuencia para que el giro se pueda inspeccionar. En RoPE se aplican distintas frecuencias a pares de coordenadas. El producto escalar también depende de los vectores iniciales. Así, el modelo puede combinar contenido y posición en la misma puntuación.

03 / Consultas, claves y valores

Cómo calcula la atención qué información mezclar

Supongamos que una capa recibe un vector por cada token. Para una cabeza de autoatención, tres proyecciones aprendidas producen Q, K y V. La consulta Q pertenece a la posición que se está actualizando. Las claves K sirven para puntuar las posiciones que puede consultar. Los valores V contienen los vectores que se mezclarán según esas puntuaciones.

Q = XW_Q · K = XW_K · V = XW_V
Atención = softmax(QKᵀ / √dₖ + M) V

En esa fórmula, dₖ es la dimensión de cada clave y M es la máscara. El producto QKᵀ compara consultas y claves. Dividir por √dₖ modera la escala del producto cuando crece la dimensión. Softmax se aplica por fila para que los pesos de cada consulta sumen uno. Finalmente, cada peso multiplica el valor de su posición.

En el laboratorio, elige banco, activa el acceso bidireccional y selecciona la pista de lugar en la frase del parque. La consulta vale (1, 0) y la clave de parque, (2, 0). Su puntuación es 2/√2, aproximadamente 1,41. El peso final depende también de las puntuaciones de las otras posiciones. Al cerrar la máscara causal, esa misma posición recibe peso cero.

Una cabeza calcula una mezcla, aunque varias posiciones aporten información. El vector resultante tiene la dimensión de los valores. Las probabilidades que aquí suman uno distribuyen atención entre posiciones del contexto. Las probabilidades de generación se calculan más tarde y distribuyen opciones entre tokens del vocabulario.

04 / Máscara causal y cabezas

Qué información está disponible y qué busca cada cabeza

Las frases del laboratorio empiezan por El · banco. Si se selecciona banco con máscara causal, ambas producen la misma mezcla dentro de una misma cabeza. Hasta esa posición tienen exactamente los mismos tokens. En modo bidireccional, parque o crédito pueden contribuir. En un modelo generativo, consultar una posición futura durante el entrenamiento filtraría información que luego no estaría disponible al generar.

La máscara se aplica antes de softmax. En las celdas bloqueadas se usa una puntuación efectiva de −∞, que se convierte en peso cero. La diagonal permanece abierta porque una posición conoce su propio token. En un modelo causal entrenado para predecir el siguiente token, la salida de esa posición se compara con el token posterior.

Un bloque puede ejecutar varias cabezas en paralelo. Cada una tiene sus propias proyecciones en la formulación clásica. Después se concatenan sus resultados y una proyección de salida vuelve a mezclarlos. En el laboratorio puedes inspeccionar las cabezas de una en una. Sus nombres describen los vectores didácticos que se han elegido. Una cabeza real puede participar en varios patrones y sus pesos por sí solos tienen un alcance explicativo limitado.

  1. Mismo estado de entradaUn vector por posición.
  2. Proyecciones por cabezaCada cabeza calcula su propia mezcla.
  3. ConcatenaciónSe reúnen los resultados de todas las cabezas.
  4. Proyección de salidaSe vuelve a la anchura del estado del bloque.
Las cabezas actúan en paralelo sobre la misma secuencia. El bloque integra sus resultados antes de pasar a la siguiente operación.
05 / Anatomía de un bloque

Atención, red feed-forward y conexiones residuales

La atención es la parte del bloque que permite mezclar información entre posiciones. Después, una red feed-forward o MLP transforma por separado el vector de cada posición. En la formulación original, la red expande el vector a una dimensión intermedia, aplica una no linealidad y vuelve a su anchura inicial. Las mismas operaciones se aplican a todas las posiciones.

Una conexión residual suma el resultado de una subcapa al estado que entró en ella. Para que esa suma sea posible, ambos vectores tienen la misma anchura. La normalización controla la escala de las activaciones y puede colocarse antes o después de cada subcapa. El esquema muestra una variante con normalización previa. El trabajo original utilizó normalización después de la suma.

  1. Entrada del bloquex
  2. Atención y primera sumau = x + Atención(Norm(x))
  3. MLP y segunda sumay = u + MLP(Norm(u))
  4. Salida del bloqueUn vector actualizado por posición.
Un bloque con normalización previa. La posición del token se conserva mientras el contenido de su vector se va actualizando.

Los bloques sucesivos operan sobre estados que ya contienen las mezclas anteriores. Al final, el modelo proyecta el estado de salida al vocabulario para obtener logits. Como vimos en el artículo de LoRA, las matrices de proyección dentro de estos bloques también son lugares donde se pueden insertar adaptadores.

06 / Entrenamiento e inferencia

Por qué se puede entrenar en paralelo y generar por pasos

Durante el entrenamiento causal se conocen los tokens de la secuencia. El modelo puede calcular en paralelo una predicción en cada posición. La máscara limita lo que ve cada una. Para El · banco · del · parque, la salida de banco se evalúa frente a del, mientras la salida de del se evalúa frente a parque. La pérdida reúne esos errores y la retropropagación ajusta los parámetros.

Durante la generación, el token siguiente todavía debe elegirse. La primera pasada procesa el prompt y las siguientes incorporan los tokens generados. Con una caché KV, cada capa conserva las claves y los valores del prefijo. El nuevo token puede consultarlos sin volver a proyectar todas las posiciones anteriores. Los estados previos de un decoder causal permanecen válidos al añadir texto al final.

La caché reduce trabajo repetido a cambio de memoria. En atención densa, al procesar una secuencia larga aumenta el número de pares de posiciones que pueden compararse. Al generar con caché, una nueva consulta todavía necesita atender al contexto permitido. El coste real depende de cómo se implementen el patrón de atención y la gestión de la ventana.

En el laboratorio puedes comprobar la idea que permite reutilizar el prefijo. Selecciona banco, mantén la máscara causal y alterna entre las dos frases. Luego consulta la última posición. Ahora las mezclas pueden diferir porque ya disponen de los tokens que distinguen las frases.