En este artículo, aprenderá cómo un transformador convierte tokens de entrada en representaciones contextuales y, en última instancia, en probabilidades del siguiente token.
Los temas que cubriremos incluyen:
Cómo la tokenización, las incrustaciones y la información posicional preparan las entradas Qué aportan las redes de atención y retroalimentación dentro de cada capa Cómo la proyección final y el softmax producen las probabilidades del siguiente token
Comencemos nuestro viaje.
El viaje de una ficha: lo que realmente sucede dentro de un transformador (haga clic para ampliar)
Imagen del editor
El viaje comienza
Los modelos de lenguaje grande (LLM) se basan en la arquitectura transformadora, una red neuronal profunda y compleja cuya entrada es una secuencia de incrustaciones de tokens. Después de un proceso profundo, que parece un desfile de numerosas transformaciones acumuladas de atención y retroalimentación, genera una distribución de probabilidad que indica qué token debe generarse a continuación como parte de la respuesta del modelo. Pero, ¿cómo se puede explicar este viaje desde las entradas hasta las salidas para un solo token en la secuencia de entradas?
En este artículo, aprenderá qué sucede dentro de un modelo de transformador (la arquitectura detrás de los LLM) a nivel de token. En otras palabras, veremos cómo los tokens de entrada o partes de una secuencia de texto de entrada se convierten en salidas de texto generadas, y la razón detrás de los cambios y transformaciones que tienen lugar dentro del transformador.
La descripción de este viaje a través de un modelo de transformador se guiará por el diagrama anterior que muestra una arquitectura de transformador genérica y cómo la información fluye y evoluciona a través de ella.
Ingresando al transformador: del texto de entrada sin formato a la incrustación de entrada
Antes de entrar en las profundidades del modelo del transformador, ya se producen algunas transformaciones en la entrada de texto, principalmente para que se represente en una forma que sea completamente comprensible para las capas internas del transformador.
Tokenización
El tokenizador es un componente algorítmico que normalmente funciona en simbiosis con el modelo transformador del LLM. Toma la secuencia de texto sin formato, por ejemplo, el mensaje de usuario, y la divide en tokens discretos (a menudo unidades de subpalabras o bytes, a veces palabras completas), y cada token en el idioma de origen se asigna a un identificador i.
Incrustaciones de tokens
Hay una tabla de empotramiento aprendida E con forma |V| × d (tamaño del vocabulario por dimensión de incrustación). Al buscar los identificadores de una secuencia de longitud n se obtiene una matriz de incrustación X con forma n × d. Es decir, cada identificador de token se asigna a un vector de incrustación d-dimensional que forma una fila de X. Dos vectores de incrustación serán similares entre sí si están asociados con tokens que tienen significados similares, por ejemplo, rey y emperador, o viceversa. Es importante destacar que, en esta etapa, cada token incorporado contiene información semántica y léxica para ese token único, sin incorporar información sobre el resto de la secuencia (al menos no todavía).
Codificación posicional
Antes de ingresar completamente a las partes centrales del transformador, es necesario inyectar dentro de cada vector de incrustación de token, es decir, dentro de cada fila de la matriz de incrustación X, información sobre la posición de ese token en la secuencia. A esto también se le llama inyectar información posicional y normalmente se hace con funciones trigonométricas como el seno y el coseno, aunque también existen técnicas basadas en incorporaciones posicionales aprendidas. Un componente casi residual se suma al vector de incrustación anterior e_t asociado con un token, de la siguiente manera:
\[
x_t^{(0)} = e_t + p_{\text{pos}}
siendo p_pos
¡Ahora es el momento de adentrarse en las profundidades del transformador y ver qué sucede en su interior!
En lo más profundo del transformador: desde la incorporación de entradas hasta las probabilidades de salida
Expliquemos qué sucede con cada vector de incrustación de un solo token “enriquecido” a medida que pasa por una capa de transformador, y luego alejemos el zoom para describir lo que sucede en toda la pila de capas.
la formula
\[
h_t^{(0)} = x_t^{(0)}
\]
se usa para denotar la representación de un token en la capa 0 (la primera capa), mientras que de manera más genérica usaremos ht(l) para denotar la representación incrustada del token en la capa l.
Atención multidireccional
El primer componente importante dentro de cada capa replicada del transformador es la atención de múltiples cabezas. Este es posiblemente el componente más influyente en toda la arquitectura cuando se trata de identificar e incorporar en la representación de cada token una gran cantidad de información significativa sobre su papel en toda la secuencia y sus relaciones con otros tokens en el texto, ya sea sintáctica, semántica o cualquier otro tipo de relación lingüística. Múltiples cabezas en este llamado mecanismo de atención están especializadas en capturar diferentes aspectos y patrones lingüísticos en la ficha y en toda la secuencia a la que pertenece simultáneamente.
El resultado de tener una representación de token ht(l) (con información posicional inyectada a priori, ¡no lo olvides!) viajando a través de esta atención de múltiples cabezas dentro de una capa es una representación de token enriquecida o consciente del contexto. Al utilizar conexiones residuales y normalizaciones de capas en la capa del transformador, los vectores recién generados se convierten en mezclas estabilizadas de sus propias representaciones anteriores y la salida de atención de múltiples cabezas. Esto ayuda a mejorar la coherencia durante todo el proceso, que se aplica repetidamente en todas las capas.
Red neuronal de retroalimentación
Luego viene algo relativamente menos complejo: algunas capas de red neuronal de retroalimentación (FFN). Por ejemplo, pueden ser perceptrones multicapa (MLP) por token cuyo objetivo es transformar y refinar aún más las características del token que se están aprendiendo gradualmente.
La principal diferencia entre la etapa de atención y esta es que la atención mezcla e incorpora, en cada representación de token, información contextual de todos los tokens, pero el paso FFN se aplica de forma independiente en cada token, refinando los patrones contextuales ya integrados para generar “conocimiento” útil a partir de ellos. Estas capas también se complementan con conexiones residuales y normalizaciones de capa y, como resultado de este proceso, tenemos al final de una capa de transformador una representación actualizada ht(l+1) que se convertirá en la entrada a la siguiente capa de transformador, ingresando así a otro bloque de atención de múltiples cabezas.
Todo el proceso se repite tantas veces como el número de capas apiladas definidas en nuestra arquitectura, enriqueciendo así progresivamente la incrustación del token con cada vez más información lingüística de alto nivel, abstracta y de largo alcance detrás de esos números aparentemente indescifrables.
Destino final
Entonces, ¿qué pasa al final? En la parte superior de la pila, después de pasar por la última capa de transformador replicada, obtenemos una representación de token final ht*(L) (donde t* denota la posición de predicción actual) que se proyecta a través de una capa de salida lineal seguida de un softmax.
La capa lineal produce puntuaciones no normalizadas llamadas logits, y softmax convierte estos logits en probabilidades del siguiente token.
Cálculo de logits:
\[
\text{logits}_j = W_{\text{vocab}, j} \cdot h_{t^*}^{(L)} + b_j
\]
Aplicando softmax para calcular probabilidades normalizadas:
\[
\text{softmax}(\text{logits})_j = \frac{\exp(\text{logits}_j)}{\sum_{k} \exp(\text{logits}_k)}
\]
Usando salidas softmax como probabilidades del siguiente token:
\[
P(\text{token} = j) = \text{softmax}(\text{logits})_j
\]
Estas probabilidades se calculan para todos los tokens posibles en el vocabulario. Luego se selecciona el siguiente token que generará el LLM, a menudo el que tiene la mayor probabilidad, aunque las estrategias de decodificación basadas en muestreo también son comunes.
El fin del viaje
Este artículo realizó un viaje, con un suave nivel de detalle técnico, a través de la arquitectura transformadora para brindar una comprensión general de lo que sucede con el texto que se proporciona a un LLM (el modelo más destacado basado en una arquitectura transformadora) y cómo este texto se procesa y transforma dentro del modelo a nivel de token para finalmente convertirse en la salida de un modelo: la siguiente palabra a generar.
Esperamos que haya disfrutado de nuestros viajes juntos y esperamos tener la oportunidad de embarcarnos en otro en un futuro cercano.