La arquitectura transformer es un diseño de red neuronal construido alrededor de la autoatención. En lugar de depender principalmente de un procesamiento paso a paso, permite que cada token reúna información de otros tokens relevantes de la secuencia.

Por eso los transformers funcionan bien en lenguaje y otras tareas de secuencias. Si una palabra depende de otra palabra que está muy lejos, la atención le da al modelo un camino directo entre ambas.

Qué significa la arquitectura transformer

Un bloque transformer hace más que aplicar una sola fórmula, pero la autoatención es la idea central. En la autoatención, cada token produce tres vectores:

  • una consulta, que representa lo que este token está buscando
  • una clave, que representa lo que este token ofrece para la coincidencia
  • un valor, que es la información que puede transmitirse

Si las representaciones de los tokens se organizan en una matriz XX, una cabeza de atención suele formar

Q=XWQ,K=XWK,V=XWVQ = XW_Q, \qquad K = XW_K, \qquad V = XW_V

donde WQW_Q, WKW_K y WVW_V son matrices aprendidas.

La fórmula estándar de atención por producto punto escalado es

Attention(Q,K,V)=softmax ⁣(QKTdk)V\operatorname{Attention}(Q, K, V) = \operatorname{softmax}\!\left(\frac{QK^T}{\sqrt{d_k}}\right)V

Aquí dkd_k es la dimensión de las claves. El escalado por dk\sqrt{d_k} ayuda a evitar que las puntuaciones brutas del producto punto se vuelvan demasiado grandes a medida que crece la dimensión.

La softmax se aplica fila por fila. Cada fila responde a la pregunta de un token: "¿Cuánta atención debo prestar a los otros tokens?"

Cómo funciona la autoatención en lenguaje sencillo

La autoatención no suele elegir un token e ignorar el resto. Construye un promedio ponderado de vectores de valor.

Si un token coincide fuertemente con la clave de otro token, ese token recibe un peso mayor. Si la coincidencia es débil, el peso es menor. Por tanto, la salida de un token es una mezcla de información de la secuencia que tiene en cuenta el contexto.

Esto ayuda con la concordancia entre sujeto y verbo, la referencia de pronombres y otras relaciones de largo alcance. El modelo no necesita que la información pase por muchos pasos intermedios antes de estar disponible.

Ejemplo resuelto de autoatención

Toma una consulta y dos tokens candidatos en una sola cabeza de atención. Para mantener la aritmética simple, usa dk=1d_k = 1.

Supón que el token actual tiene la consulta

q=[2]q = [2]

y que los dos tokens candidatos tienen

k1=[2],k2=[1]k_1 = [2], \qquad k_2 = [1]

con valores

v1=[10],v2=[4].v_1 = [10], \qquad v_2 = [4].

Las puntuaciones brutas de atención son los productos punto:

qk1T=4,qk2T=2.qk_1^T = 4, \qquad qk_2^T = 2.

Como dk=1d_k = 1, el factor de escala es 1=1\sqrt{1} = 1, así que las puntuaciones escaladas siguen siendo 44 y 22.

Ahora aplica softmax a esas dos puntuaciones:

α1=e4e4+e20.881,α2=e2e4+e20.119.\alpha_1 = \frac{e^4}{e^4 + e^2} \approx 0.881, \qquad \alpha_2 = \frac{e^2}{e^4 + e^2} \approx 0.119.

La salida de atención es la combinación ponderada

α1v1+α2v2=0.881(10)+0.119(4)9.29.\alpha_1 v_1 + \alpha_2 v_2 = 0.881(10) + 0.119(4) \approx 9.29.

La idea clave es simple: la salida queda más cerca de v1v_1 porque la consulta coincidió con k1k_1 más fuertemente que con k2k_2.

Este es el patrón básico dentro de un modelo mucho más grande. Los transformers reales hacen esto en dimensiones más altas y sobre muchos tokens a la vez, pero la idea aritmética es la misma.

Qué más hay dentro de un bloque transformer

Un transformer es más que una fórmula de atención. Un bloque estándar suele contener:

  • atención multi-cabeza, para que el modelo pueda aprender varios tipos de relaciones a la vez
  • una red feedforward por posición, que transforma cada representación de token después de la atención
  • conexiones residuales, que ayudan a conservar y refinar la información a través de las capas
  • normalización de capa, que ayuda a estabilizar el entrenamiento

En la arquitectura transformer original para tareas de secuencia a secuencia, el modelo tenía una pila de codificador y una pila de decodificador.

  • El codificador usa autoatención sobre la secuencia de entrada.
  • El decodificador usa autoatención enmascarada para que una posición no pueda mirar hacia tokens futuros de salida.
  • El decodificador también puede usar atención cruzada, donde las consultas vienen del decodificador y las claves y valores vienen de la salida del codificador.

Muchos modelos de lenguaje modernos usan solo el lado del decodificador. La idea central de atención sigue ahí, pero la arquitectura general está especializada para la predicción del siguiente token.

Por qué los transformers necesitan información posicional

La atención por sí sola es equivariante a las permutaciones con respecto a los tokens de entrada. En lenguaje sencillo, si solo aplicas atención al mismo conjunto de vectores de tokens sin añadir posición, el modelo no sabe de forma inherente qué token apareció primero.

Por eso los transformers añaden información posicional, como embeddings de posición aprendidos o codificaciones posicionales. Sin esa señal extra, tareas sensibles al orden como el lenguaje serían mucho más difíciles de modelar correctamente.

Errores comunes sobre la arquitectura transformer

Pensar que la atención es todo el transformer

Es la idea central, pero la arquitectura también depende de capas feedforward, caminos residuales, normalización e información posicional.

Confundir autoatención con atención cruzada

En la autoatención, QQ, KK y VV provienen de la misma secuencia. En la atención cruzada, no todos provienen de la misma fuente.

Olvidar el papel del enmascaramiento

Los modelos de lenguaje de solo decodificador necesitan enmascaramiento causal durante el entrenamiento y la inferencia para que un token no pueda atender a tokens futuros.

Tratar los pesos de atención como una explicación completa

Los pesos de atención pueden ser informativos, pero no son una prueba completa del razonamiento del modelo. El comportamiento final también depende de los vectores de valor, las capas posteriores y las transformaciones no lineales.

Cuándo se usan los modelos transformer

Los transformers se usan ampliamente en modelado del lenguaje, traducción, resumen, generación de código, voz y muchas tareas de visión. Funcionan especialmente bien cuando las relaciones dentro de una secuencia o conjunto importan más que los patrones puramente locales.

No son mágicos para cualquier situación. Para conjuntos de datos muy pequeños, restricciones estrictas de tiempo real o problemas donde la estructura inductiva local es lo más importante, otra arquitectura puede seguir siendo una mejor opción.

Prueba un problema parecido

Toma una frase de tres palabras y céntrate en una de ellas. Decide cuáles de las otras palabras deberían recibir un peso de atención alto y por qué, y luego esboza un pequeño ejemplo de consulta-clave-valor que coincida con esa intuición.

Si quieres ir un paso más allá, calcula a mano una pequeña salida de atención. Suele ser la ruta más rápida para pasar de "conozco la fórmula" a "entiendo lo que está haciendo la arquitectura".

¿Necesitas ayuda con un problema?

Sube tu pregunta y obtén una solución verificada, paso a paso, en segundos.

Abrir GPAI Solver →