La arquitectura Linear Transformer (Transformers are RNNs) es una evolución de los modelos Transformer que introduce una formulación matemática de la autoatención capaz de reducir su complejidad computacional de cuadrática a lineal respecto a la longitud de una secuencia.
Su principal innovación consiste en utilizar funciones kernel para transformar las consultas y claves del mecanismo de atención, permitiendo reorganizar las operaciones matriciales mediante la propiedad asociativa de la multiplicación.
Esta transformación evita construir explícitamente la matriz cuadrática de atención utilizada por los Transformers convencionales.
Sin embargo, la aportación de Linear Transformer va más allá de la reducción del coste computacional.
Los investigadores demostraron que un Transformer con atención lineal causal puede expresarse como una red neuronal recurrente, mediante estados internos que se actualizan progresivamente conforme llegan nuevos tokens.
Esta relación permite utilizar dos formas complementarias de procesamiento: una formulación paralela para entrenar sobre secuencias y una formulación recurrente para generar tokens de forma incremental.
Linear Transformer fue presentada en 2020 por Angelos Katharopoulos, Apoorv Vyas, Nikolaos Pappas y François Fleuret en el artículo científico Transformers are RNNs: Fast Autoregressive Transformers with Linear Attention, publicado en la conferencia International Conference on Machine Learning (ICML 2020).
El trabajo demostró que era posible desarrollar mecanismos de atención eficientes utilizando representaciones basadas en kernels y estados acumulativos.
En las evaluaciones originales, los investigadores comunicaron resultados competitivos respecto a determinados Transformers convencionales y aceleraciones de hasta 4.000 veces en escenarios específicos de predicción autorregresiva sobre secuencias muy largas.
Estas cifras corresponden a configuraciones experimentales históricas y no representan una mejora universal frente a los modelos actuales.
En esta guía exploraremos qué es Linear Transformer, cómo funciona la atención lineal, qué papel desempeñan las funciones kernel, cómo se relaciona con las redes neuronales recurrentes y cuáles son sus diferencias respecto a Performer, Linformer y otras arquitecturas eficientes.
También incluiremos ejemplos prácticos en Python y explicaremos sus aplicaciones en procesamiento del lenguaje natural, generación de texto y análisis de secuencias.
¿Qué es la arquitectura Linear Transformer?
Linear Transformer es una arquitectura basada en Transformers que utiliza funciones de características para reformular el cálculo de la atención.
Su objetivo es evitar que el coste computacional aumente cuadráticamente cuando crece la longitud de la entrada.
El modelo fue presentado por investigadores del Idiap Research Institute, la École Polytechnique Fédérale de Lausanne y la University of Washington.
La propuesta parte de una observación matemática.
En el Transformer convencional, la atención utiliza una matriz que relaciona todas las consultas con todas las claves.
Sin embargo, si la función de similitud puede expresarse como un producto de características transformadas, es posible cambiar el orden de las multiplicaciones matriciales.
Esta reorganización permite calcular primero una representación agregada de las claves y valores.
Posteriormente, las consultas utilizan esa representación agregada para producir las salidas.
El resultado es un mecanismo donde el coste de atención crece linealmente con la longitud de secuencia cuando las dimensiones de representación permanecen constantes.
Además, el modelo puede mantener estados acumulativos durante el procesamiento autorregresivo.
Estos estados funcionan como una representación compacta de la información previamente procesada.
Esta propiedad permite expresar una capa Transformer causal como un sistema recurrente.
La idea fundamental puede resumirse así:
La atención lineal permite sustituir la comparación explícita entre todas las parejas de tokens por operaciones sobre representaciones acumuladas y actualizables.
Origen y evolución de Linear Transformer
La arquitectura Transformer original fue presentada en 2017 mediante el artículo Attention Is All You Need.
Su mecanismo de autoatención permitió aprender relaciones entre tokens sin utilizar necesariamente los mecanismos recurrentes tradicionales.
Esta innovación produjo avances importantes en traducción automática y procesamiento del lenguaje natural.
Posteriormente, modelos como BERT y GPT demostraron el potencial de los Transformers en tareas de comprensión y generación de texto.
Sin embargo, la autoatención completa presenta un problema de escalabilidad.
Cuando la secuencia contiene (N) tokens, el número de relaciones de atención puede crecer como (N^2).
Este comportamiento limita el procesamiento eficiente de secuencias largas.
Los investigadores comenzaron entonces a explorar mecanismos alternativos.
Transformer-XL introdujo memoria recurrente entre segmentos.
Longformer desarrolló atención local y global.
BigBird utilizó conexiones locales, aleatorias y globales.
Reformer incorporó Locality-Sensitive Hashing.
Linformer propuso proyecciones de baja dimensión.
Linear Transformer estudió una estrategia diferente: utilizar funciones kernel para obtener una expresión de atención que pueda reorganizarse matemáticamente.
La principal aportación del trabajo de Katharopoulos y colaboradores consistió en demostrar que esta formulación también permite interpretar un Transformer causal como una red neuronal recurrente.
Esta conexión resultó importante para comprender las relaciones entre dos familias históricamente diferentes de arquitecturas neuronales.
El problema de la atención cuadrática
En un Transformer convencional, cada token produce tres representaciones principales:
- Query (Q): consulta.
- Key (K): clave.
- Value (V): valor.
Estas representaciones permiten calcular cuánto debe influir cada posición sobre las demás.
La atención escalada convencional se expresa mediante:
[
\operatorname{Attention}(Q,K,V)=
\operatorname{softmax}
\left(
\frac{QK^T}{\sqrt{d_k}}
\right)V
]
Donde (d_k) representa la dimensión de las claves.
Si una secuencia contiene (N) tokens, las matrices Q y K incluyen una representación por cada posición.
El producto:
[
QK^T
]
produce una matriz de tamaño:
[
N\times N
]
Por tanto, el número de puntuaciones de atención crece cuadráticamente.
Por ejemplo:
| Longitud de secuencia | Pares de atención completa |
|---|---|
| 512 tokens | 262.144 |
| 1.024 tokens | 1.048.576 |
| 2.048 tokens | 4.194.304 |
| 4.096 tokens | 16.777.216 |
| 8.192 tokens | 67.108.864 |
| 16.384 tokens | 268.435.456 |
Estas cifras muestran el número conceptual de relaciones de atención, no el número total de operaciones del modelo.
La dificultad principal es que el crecimiento cuadrático puede convertirse en un cuello de botella cuando se procesan documentos extensos.
Linear Transformer propone una forma de calcular atención que evita construir explícitamente esa matriz.
¿Qué es Kernel-Based Attention?
Kernel-Based Attention, o atención basada en kernels, es una familia de mecanismos que utilizan funciones de características para calcular relaciones entre consultas y claves.
En lugar de aplicar necesariamente la función softmax convencional, se utiliza una función kernel que puede expresarse mediante un producto interno.
Supongamos que tenemos dos vectores:
[
q \quad \text{y} \quad k
]
Una función kernel mide su relación:
[
K(q,k)
]
En Linear Transformer se utiliza una transformación:
[
\phi:\mathbb{R}^{d}\rightarrow\mathbb{R}^{m}
]
que permite expresar la similitud como:
[
K(q,k)=\phi(q)^T\phi(k)
]
Donde (\phi) representa una función de características.
Esta formulación permite calcular las relaciones entre consultas y claves mediante productos de sus representaciones transformadas.
La ventaja fundamental es que las multiplicaciones pueden reorganizarse.
No es necesario construir inicialmente una matriz completa de relaciones entre todas las posiciones.
Sin embargo, existe una diferencia importante respecto a la atención softmax.
El kernel definido por una transformación arbitraria no necesariamente reproduce exactamente la función softmax.
Por tanto, Linear Transformer modifica el mecanismo de atención mediante una función de características concreta.
La función ELU + 1
En los experimentos originales, los investigadores utilizaron una función de características sencilla:
[
\phi(x)=\operatorname{ELU}(x)+1
]
La función ELU, o Exponential Linear Unit, se define como:
[
\operatorname{ELU}(x)=
\begin{cases}
x, & x>0\
e^x-1, & x\leq0
\end{cases}
]
Por tanto:
[
\phi(x)=
\begin{cases}
x+1, & x>0\
e^x, & x\leq0
\end{cases}
]
Esta transformación se aplica elemento a elemento.
Su principal característica es que produce valores positivos.
La positividad resulta útil para calcular las estadísticas de normalización del mecanismo de atención.
Además, ELU + 1 es relativamente sencilla de implementar y no necesita proyecciones aleatorias.
Es importante señalar que esta función no constituye una aproximación exacta universal del kernel exponencial de softmax.
Define un mecanismo diferente de atención basado en una función de características positiva.
Esta distinción permite comprender la diferencia entre Linear Transformer y FAVOR+, utilizado posteriormente por Performer.
¿Cómo funciona Linear Transformer?
El funcionamiento de Linear Transformer puede dividirse en varias etapas.
1. Tokenización
El texto se convierte en una secuencia de tokens.
Por ejemplo:
«Los modelos de inteligencia artificial aprenden relaciones contextuales».
Cada token se transforma en un identificador numérico.
2. Creación de embeddings
Los tokens se convierten en representaciones vectoriales.
Estas representaciones contienen información que posteriormente procesan las capas Transformer.
3. Generación de Query, Key y Value
Las representaciones de entrada se transforman mediante matrices aprendidas.
El resultado son las matrices Q, K y V.
4. Transformación mediante funciones kernel
Las consultas y claves se transforman utilizando una función de características.
Por ejemplo:
[
Q’=\phi(Q)
]
[
K’=\phi(K)
]
5. Cálculo de estadísticas agregadas
En lugar de calcular todas las relaciones entre consultas y claves, el modelo combina las claves transformadas con los valores.
6. Reorganización de las operaciones
Gracias a la asociatividad de la multiplicación matricial, el resultado agregado puede calcularse antes de aplicar las consultas.
7. Normalización
Las salidas se normalizan para producir combinaciones ponderadas de valores.
8. Generación de representaciones contextualizadas
El modelo produce una representación por cada posición procesada.
En configuraciones causales, las estadísticas agregadas se actualizan progresivamente y solamente contienen información disponible hasta el token actual.
Formulación matemática de la atención lineal
Consideremos las matrices:
- (Q): consultas.
- (K): claves.
- (V): valores.
Después de aplicar la función de características, obtenemos:
[
Q’=\phi(Q)
]
[
K’=\phi(K)
]
La atención basada en kernel puede expresarse como:
[
\operatorname{LinearAttention}(Q,K,V)=
\frac{
Q'(K’^TV)
}{
Q'(K’^T\mathbf{1})
}
]
La división se realiza por posición.
El vector (\mathbf{1}) permite calcular los factores de normalización.
La principal diferencia respecto a la atención convencional está en el orden de las operaciones.
En lugar de calcular primero:
[
Q’K’^T
]
y obtener una matriz cuadrática, Linear Transformer calcula primero:
[
K’^TV
]
Esta matriz tiene dimensiones relacionadas con la cantidad de características y la dimensión de los valores.
Posteriormente, las consultas transformadas utilizan ese resultado agregado.
De esta manera, no es necesario construir explícitamente una matriz de atención de dimensiones (N\times N).
¿Por qué la atención lineal tiene complejidad O(N)?
Supongamos que:
- (N) representa la longitud de la secuencia.
- (m) representa la dimensión de las características transformadas.
- (d_v) representa la dimensión de los valores.
La operación principal:
[
K’^TV
]
puede calcularse con un coste aproximado de:
[
O(Nmd_v)
]
Posteriormente, las consultas transformadas utilizan la matriz agregada.
Si (m) y (d_v) permanecen constantes, el coste respecto a (N) es lineal:
[
O(N)
]
Esta es la propiedad fundamental de Linear Transformer.
Sin embargo, el resultado no significa que todas las operaciones del modelo tengan un coste independiente de la dimensión oculta.
Las proyecciones de embeddings, las redes feed-forward y otros componentes también requieren recursos.
La complejidad lineal describe principalmente cómo escala el mecanismo de atención respecto a la longitud de la secuencia.
Linear Transformer como red neuronal recurrente
La contribución más interesante del artículo original es la demostración de que la atención lineal causal puede expresarse mediante actualizaciones recurrentes.
En un Transformer autorregresivo, la predicción de un token solamente puede utilizar información de posiciones anteriores y de la posición actual.
En lugar de calcular repetidamente la atención sobre toda la secuencia histórica, podemos mantener estados acumulados.
Los investigadores definieron dos estados principales.
El primero contiene información agregada sobre las claves y valores.
El segundo contiene información acumulada utilizada para normalizar las salidas.
Estos estados se actualizan cuando llega cada token.
De esta manera, el mecanismo puede interpretarse como una red recurrente que recibe una entrada, actualiza su memoria y produce una salida.
Esta formulación revela una relación matemática entre los Transformers causales con atención lineal y las RNN.
Sin embargo, no significa que todos los Transformers convencionales sean equivalentes en coste y comportamiento a una RNN clásica.
La equivalencia corresponde a una formulación específica de atención, y sus propiedades dependen de la función kernel y de las condiciones del procesamiento.
La formulación recurrente paso a paso
Consideremos una secuencia de tokens:
[
x_1,x_2,\ldots,x_N
]
Para cada posición generamos:
[
q_t,\quad k_t,\quad v_t
]
Después, transformamos consultas y claves mediante la función (\phi).
Linear Transformer define dos estados acumulativos.
Estado de memoria de atención
El primer estado es una matriz:
[
S_t=
\sum_{j=1}^{t}
\phi(k_j)v_j^T
]
Esta matriz contiene información acumulada sobre las claves y valores procesados.
Puede actualizarse mediante:
[
S_t=S_{t-1}+\phi(k_t)v_t^T
]
Estado de normalización
El segundo estado es un vector:
[
z_t=
\sum_{j=1}^{t}
\phi(k_j)
]
Su actualización es:
[
z_t=z_{t-1}+\phi(k_t)
]
Cálculo de la salida
La representación contextual de la posición actual se calcula mediante:
[
o_t=
\frac{
\phi(q_t)^TS_t
}{
\phi(q_t)^Tz_t
}
]
La división corresponde a un denominador escalar para la posición actual.
Estas ecuaciones muestran una propiedad fundamental.
Para procesar el siguiente token no necesitamos reconstruir explícitamente todas las parejas históricas de atención.
Solamente actualizamos los estados (S_t) y (z_t).
Esto proporciona una implementación recurrente eficiente.
¿Qué significa que Transformers are RNNs?
El título del artículo original, Transformers are RNNs, puede interpretarse como «Los Transformers son redes neuronales recurrentes».
Sin embargo, su significado técnico requiere precisión.
Los investigadores demostraron que una capa Transformer con atención lineal causal puede reformularse como un sistema recurrente.
En este sistema, la memoria se representa mediante estados acumulativos.
Cada nuevo token actualiza esos estados y produce una salida.
Esto permite que el procesamiento de una secuencia se realice incrementalmente.
La relación no implica que las arquitecturas Transformer y RNN tradicionales sean idénticas.
Las RNN clásicas, como LSTM y GRU, utilizan mecanismos de actualización de estados diferentes.
Linear Transformer utiliza acumulaciones de productos entre características de claves y vectores de valores.
Su comportamiento depende de una función de características y de la normalización de la atención.
La aportación conceptual consiste en demostrar que ciertas formas de atención pueden interpretarse como operaciones recurrentes.
Esto conecta dos enfoques que históricamente se estudiaban como familias arquitectónicas separadas.
Procesamiento paralelo frente a procesamiento recurrente
Una característica importante de Linear Transformer es que permite distintas estrategias de ejecución.
Procesamiento paralelo
Durante el entrenamiento, pueden utilizarse operaciones vectorizadas y algoritmos de suma prefija para calcular estadísticas acumuladas.
Esta estrategia permite aprovechar el paralelismo disponible en GPU.
Procesamiento recurrente
Durante la generación autorregresiva, los tokens se producen uno tras otro.
En este escenario, resulta conveniente mantener estados acumulados.
Cada nuevo token actualiza la memoria sin necesitar una matriz completa de atención sobre todo el historial.
La combinación es interesante porque permite aprovechar diferentes propiedades computacionales según la etapa del modelo.
Sin embargo, la generación autorregresiva continúa siendo secuencial a nivel de tokens.
Linear Transformer reduce el coste de atención de cada actualización, pero no elimina la dependencia entre tokens generados consecutivamente.
¿La memoria recurrente es ilimitada?
No.
La formulación recurrente mantiene estados cuya dimensión no crece necesariamente con la longitud de la secuencia.
Esta característica puede reducir significativamente el consumo de memoria durante inferencia.
Sin embargo, un estado de tamaño fijo no puede garantizar que todos los detalles históricos sean recuperables.
Conforme llegan nuevos tokens, sus contribuciones se combinan en las mismas estadísticas acumuladas.
Esto puede provocar interferencias o dificultades para recuperar relaciones específicas.
En particular, algunas tareas requieren identificar una posición exacta del historial.
La atención completa puede acceder directamente a representaciones individuales de tokens anteriores.
La atención lineal recurrente utiliza una representación agregada.
Por tanto, existe un compromiso entre eficiencia de memoria y capacidad de recuperación detallada.
Esta limitación es relevante para comprender por qué la atención lineal no ha sustituido universalmente a todas las formas de atención completa.
Linear Transformer frente a una RNN tradicional
Aunque ambas arquitecturas pueden utilizar estados recurrentes, existen diferencias importantes.
| Característica | RNN tradicional | Linear Transformer |
|---|---|---|
| Procesamiento recurrente | Sí | Sí, en modo causal |
| Estado interno | Vector recurrente | Matriz y vector acumulativos |
| Atención explícita | No necesariamente | Sí, mediante kernel |
| Procesamiento paralelo | Limitado por dependencias temporales | Posible mediante formulación vectorizada |
| Actualización de memoria | Funciones recurrentes aprendidas | Acumulación de características y valores |
| Complejidad respecto a longitud | Habitualmente lineal | Lineal con dimensiones fijas |
| Generación incremental | Sí | Sí |
| Relación contextual | Mediante estados ocultos | Mediante atención basada en kernel |
La diferencia más importante está en la representación del estado.
Una RNN convencional aprende cómo transformar un estado recurrente mediante funciones neuronales.
Linear Transformer mantiene estadísticas acumuladas que permiten calcular una atención normalizada.
Esta estructura proporciona una conexión directa entre atención y recurrencia.
Linear Transformer frente a Transformer-XL
Transformer-XL también utiliza mecanismos relacionados con memoria.
Sin embargo, su funcionamiento es diferente.
Transformer-XL conserva estados ocultos de segmentos anteriores.
Estos estados se reutilizan como contexto cuando el modelo procesa segmentos nuevos.
Linear Transformer mantiene estadísticas acumuladas de atención.
En lugar de almacenar necesariamente las representaciones individuales de los últimos tokens, puede mantener una matriz de productos clave-valor y un vector de normalización.
| Característica | Transformer-XL | Linear Transformer |
|---|---|---|
| Estrategia | Memoria entre segmentos | Atención basada en kernel |
| Memoria principal | Estados ocultos anteriores | Estadísticas acumuladas |
| Atención convencional | Puede mantener atención softmax | Función kernel |
| Recurrencia | Entre segmentos | Por token en modo causal |
| Tamaño de memoria | Depende de longitud retenida | Puede mantenerse fijo por capa |
| Objetivo de eficiencia | Contexto reutilizable | Cálculo lineal de atención |
Ambas arquitecturas contribuyeron al estudio del procesamiento de secuencias largas.
Sin embargo, representan estrategias diferentes para conservar y reutilizar información.
Linear Transformer frente a Performer
Performer, estudiada en la Entrada 111, está estrechamente relacionada con Linear Transformer.
Ambas arquitecturas utilizan funciones de características y reorganización de operaciones matriciales para reducir el coste de atención.
La diferencia principal se encuentra en el mecanismo de representación del kernel.
Linear Transformer utiliza funciones de características positivas como ELU + 1.
Performer utiliza FAVOR+, un método basado en características aleatorias positivas y proyecciones ortogonales.
| Característica | Linear Transformer | Performer |
|---|---|---|
| Publicación principal | ICML 2020 | ICLR 2021 |
| Estrategia | Atención mediante kernel | FAVOR+ |
| Características aleatorias | No necesarias | Sí |
| Función de ejemplo | ELU + 1 | Características aleatorias positivas |
| Aproximación de softmax | No reproduce necesariamente softmax | Diseñada para aproximar su kernel |
| Atención causal | Sí | Sí |
| Formulación recurrente | Sí | Sí, mediante acumulación |
| Complejidad respecto a longitud | Lineal | Lineal con dimensiones fijas |
La diferencia es especialmente importante desde el punto de vista matemático.
En Linear Transformer, elegir ELU + 1 define un kernel diferente del kernel exponencial de softmax.
En Performer, FAVOR+ está diseñado para aproximar el kernel asociado con softmax.
Ambas técnicas permiten obtener cálculos lineales mediante reorganización algebraica, pero no producen necesariamente la misma función de atención.
Linear Transformer frente a Linformer y Reformer
También resulta útil comparar Linear Transformer con otras arquitecturas eficientes.
Linformer utiliza proyecciones aprendidas para comprimir las matrices de claves y valores sobre el eje de secuencia.
Reformer utiliza Locality-Sensitive Hashing para agrupar representaciones similares.
Linear Transformer transforma consultas y claves mediante funciones kernel para evitar construir la matriz completa de atención.
| Arquitectura | Técnica principal | Complejidad característica |
|---|---|---|
| Transformer convencional | Atención completa | (O(N^2)) |
| Reformer | LSH Attention | (O(N\log N)) |
| Linformer | Proyecciones de baja dimensión | (O(Nk)) |
| Linear Transformer | Atención mediante kernel | (O(N)) con dimensiones fijas |
| Performer | FAVOR+ | (O(N)) con dimensiones fijas |
Estas arquitecturas muestran que existen distintas maneras de optimizar la atención.
Algunas reducen las conexiones directas.
Otras comprimen representaciones.
Linear Transformer modifica el cálculo matemático de la similitud y aprovecha estadísticas agregadas.
Resultados experimentales de Linear Transformer
Los investigadores evaluaron Linear Transformer mediante pruebas sintéticas y aplicaciones de aprendizaje profundo.
Entre ellas se encontraban generación autorregresiva de imágenes y reconocimiento automático del habla.
Tareas sintéticas
Los experimentos incluyeron problemas diseñados para estudiar la capacidad de aprender relaciones en secuencias.
Estas pruebas permitieron comparar el comportamiento de la atención lineal con otros mecanismos.
Generación de imágenes
El trabajo original utilizó modelos autorregresivos que representaban imágenes mediante secuencias.
En este escenario, el modelo debía generar elementos progresivamente.
La formulación recurrente permitió reducir el coste de predicción incremental.
Reconocimiento de voz
También se evaluó el mecanismo en tareas de reconocimiento automático del habla.
Los resultados mostraron que la atención lineal podía utilizarse en aplicaciones distintas del procesamiento de texto.
Velocidad de generación
Uno de los resultados más conocidos del artículo original fue la aceleración de hasta 4.000 veces en determinadas pruebas de generación autorregresiva sobre secuencias extensas.
La mejora se relacionaba con la reducción del coste de volver a calcular atención sobre el historial.
Sin embargo, esta cifra dependía de condiciones experimentales específicas.
No significa que Linear Transformer sea 4.000 veces más rápido que cualquier Transformer moderno.
Las implementaciones contemporáneas pueden utilizar cachés de claves y valores, kernels optimizados y otras técnicas de eficiencia.
Por tanto, los resultados originales deben interpretarse dentro de su contexto histórico.
Aplicaciones prácticas de Linear Transformer
1. Generación autorregresiva de texto
La formulación recurrente permite procesar secuencias progresivamente.
Esto puede resultar útil para investigar modelos generativos eficientes.
2. Procesamiento de documentos extensos
La atención lineal puede utilizarse como componente de modelos destinados a analizar textos largos.
Su utilidad depende de la calidad de las representaciones y de la tarea concreta.
3. Reconocimiento automático de voz
El procesamiento secuencial eficiente resulta relevante para aplicaciones que trabajan con señales temporales.
4. Modelado de series temporales
Los mecanismos de acumulación pueden adaptarse a secuencias de datos temporales.
Estas aplicaciones requieren modelos entrenados y evaluados para el dominio.
5. Generación de imágenes como secuencias
La investigación original estudió modelos autorregresivos sobre representaciones secuenciales de imágenes.
6. Investigación sobre memoria neuronal
Los estados acumulativos proporcionan una forma de estudiar memoria compacta dentro de redes basadas en atención.
7. Modelos con memoria limitada
Mantener estadísticas de tamaño fijo puede reducir determinadas necesidades de almacenamiento durante la generación.
8. Sistemas de procesamiento continuo
Los principios recurrentes pueden resultar útiles en aplicaciones donde nuevos datos llegan progresivamente.
Sin embargo, es necesario evaluar cómo se comporta la memoria acumulativa ante secuencias muy largas.
Ejemplo práctico: implementar atención lineal con Python
Podemos comprender el mecanismo utilizando una implementación educativa en PyTorch.
El siguiente ejemplo calcula atención lineal no causal mediante una función de características ELU + 1.
Primero, instalamos las dependencias:
pip install torch
Después, ejecutamos:
import torchimport torch.nn.functional as Fdef linear_attention(q, k, v, eps=1e-6): # Aplicar función de características positiva q_features = F.elu(q) + 1.0 k_features = F.elu(k) + 1.0 # Agregar claves transformadas y valores kv = torch.matmul( k_features.transpose(-2, -1), v ) # Estadística de normalización k_sum = k_features.sum( dim=-2 ) # Numerador numerator = torch.matmul( q_features, kv ) # Denominador denominator = torch.matmul( q_features, k_sum.unsqueeze(-1) ) return numerator / denominator.clamp_min(eps)torch.manual_seed(42)batch_size = 2sequence_length = 512head_dim = 64q = torch.randn( batch_size, sequence_length, head_dim)k = torch.randn( batch_size, sequence_length, head_dim)v = torch.randn( batch_size, sequence_length, head_dim)output = linear_attention(q, k, v)print("Input shape:", q.shape)print("Output shape:", output.shape)
El programa crea representaciones de consultas, claves y valores.
Posteriormente, aplica ELU + 1 a consultas y claves.
Después, calcula la estadística agregada de claves y valores.
Finalmente, obtiene las salidas normalizadas.
La ventaja es que no necesita construir una matriz cuadrática de atención.
Este ejemplo implementa únicamente el mecanismo básico de una cabeza de atención.
No constituye un Transformer completo.
Para construir un modelo funcional sería necesario incorporar proyecciones aprendidas, múltiples cabezas, normalización, conexiones residuales, redes feed-forward y entrenamiento.
Ejemplo de atención lineal recurrente con Python
La característica más interesante de Linear Transformer es su formulación recurrente.
Podemos implementarla manteniendo los estados (S_t) y (z_t).
import torchimport torch.nn.functional as Fdef recurrent_linear_attention(q, k, v, eps=1e-6): batch_size, sequence_length, feature_dim = q.shape value_dim = v.shape[-1] # Estado acumulativo de atención S = torch.zeros( batch_size, feature_dim, value_dim, dtype=q.dtype, device=q.device ) # Estado acumulativo de normalización z = torch.zeros( batch_size, feature_dim, dtype=q.dtype, device=q.device ) outputs = [] for t in range(sequence_length): q_t = F.elu(q[:, t]) + 1.0 k_t = F.elu(k[:, t]) + 1.0 v_t = v[:, t] # Actualizar memoria S = S + torch.einsum( "bd,be->bde", k_t, v_t ) z = z + k_t # Obtener salida para posición actual numerator = torch.einsum( "bd,bde->be", q_t, S ) denominator = torch.sum( q_t * z, dim=-1, keepdim=True ) output_t = ( numerator / denominator.clamp_min(eps) ) outputs.append(output_t) return torch.stack(outputs, dim=1)torch.manual_seed(42)q = torch.randn(1, 128, 32)k = torch.randn(1, 128, 32)v = torch.randn(1, 128, 32)output = recurrent_linear_attention(q, k, v)print("Output shape:", output.shape)
Este programa procesa los tokens uno por uno.
En cada iteración, actualiza la memoria de atención y la estadística de normalización.
Posteriormente, calcula la salida utilizando únicamente el estado acumulado.
La característica principal es que no necesita almacenar explícitamente todos los pares históricos de atención.
El ejemplo permite observar cómo la atención lineal causal puede expresarse mediante un procedimiento recurrente.
No obstante, un bucle Python no representa necesariamente la implementación más rápida para entrenar sobre secuencias completas.
En producción pueden utilizarse kernels especializados y operaciones vectorizadas para mejorar el rendimiento.
Comprobar la equivalencia entre cálculo recurrente y cálculo causal vectorizado
También podemos verificar que la formulación recurrente produce el mismo resultado que una versión causal basada en sumas acumuladas, siempre que ambas utilicen la misma función kernel y condiciones numéricas.
import torchimport torch.nn.functional as Fdef causal_linear_attention(q, k, v, eps=1e-6): qf = F.elu(q) + 1.0 kf = F.elu(k) + 1.0 # Productos exteriores por token kv = torch.einsum( "bnd,bne->bnde", kf, v ) # Estadísticas acumuladas S = kv.cumsum(dim=1) z = kf.cumsum(dim=1) numerator = torch.einsum( "bnd,bnde->bne", qf, S ) denominator = torch.sum( qf * z, dim=-1, keepdim=True ) return numerator / denominator.clamp_min(eps)torch.manual_seed(7)q = torch.randn(1, 64, 16)k = torch.randn(1, 64, 16)v = torch.randn(1, 64, 16)parallel_output = causal_linear_attention(q, k, v)recurrent_output = recurrent_linear_attention(q, k, v)print( "Maximum absolute difference:", (parallel_output - recurrent_output).abs().max().item())
La diferencia debería ser pequeña, dentro de las tolerancias de precisión numérica.
Este resultado demuestra que ambas formulaciones calculan la misma atención causal basada en ELU + 1.
Sin embargo, ninguna de las dos representa necesariamente la misma operación que softmax convencional.
Esta distinción es fundamental: la equivalencia se produce entre las dos formas de calcular el mismo mecanismo kernel.
¿Cómo se implementa Linear Transformer en proyectos reales?
Los autores originales publicaron una biblioteca de investigación denominada Fast Transformers.
Esta biblioteca incluye implementaciones de distintos mecanismos eficientes de atención.
Entre ellas se encuentran atención lineal y atención lineal causal.
El proyecto está disponible en:
También cuenta con documentación en:
La biblioteca fue diseñada principalmente para investigación y contiene componentes desarrollados en PyTorch y extensiones especializadas.
Antes de utilizarla en un proyecto moderno es recomendable verificar su compatibilidad con las versiones actuales de Python, PyTorch y CUDA.
No debe suponerse que todas las versiones actuales de bibliotecas de Transformers incluyan directamente la misma implementación del artículo original.
Para estudiar los conceptos, los ejemplos educativos anteriores permiten reproducir la formulación matemática básica sin depender de extensiones externas.
Ventajas de Linear Transformer
Complejidad lineal respecto a la longitud
La principal ventaja es que la atención puede calcularse con un coste lineal en la longitud de secuencia cuando las dimensiones internas permanecen constantes.
Menor memoria de atención
El mecanismo evita construir explícitamente matrices cuadráticas de relaciones entre tokens.
Formulación recurrente
La atención causal puede expresarse mediante actualizaciones de estados acumulativos.
Inferencia incremental
El modelo puede procesar nuevos tokens utilizando estados previamente calculados.
Procesamiento paralelo
Durante el entrenamiento, pueden utilizarse operaciones vectorizadas y técnicas especializadas para calcular sumas acumuladas.
Flexibilidad de kernels
La formulación permite utilizar diferentes funciones de características.
Relación con las RNN
Proporciona una conexión matemática entre los mecanismos de atención y el procesamiento recurrente.
Limitaciones de Linear Transformer
La primera limitación es que la función de atención utilizada puede diferir significativamente de softmax convencional.
Por ejemplo, ELU + 1 define un kernel diferente del kernel exponencial de softmax.
Esto puede modificar las relaciones que aprende el modelo.
Otra limitación está relacionada con la compresión del historial.
La formulación recurrente almacena estadísticas agregadas, pero no conserva necesariamente las representaciones individuales de todos los tokens anteriores.
Esto puede dificultar tareas que requieren recuperar información exacta de posiciones distantes.
También existen desafíos relacionados con estabilidad numérica.
Las estadísticas acumuladas pueden crecer durante el procesamiento de secuencias extensas.
Las implementaciones deben utilizar técnicas apropiadas de normalización y control de precisión.
Además, la ventaja teórica no garantiza menor latencia en todas las condiciones.
Para secuencias cortas, las implementaciones de atención completa pueden resultar muy eficientes gracias a kernels optimizados.
Finalmente, la calidad de la atención lineal depende del mecanismo elegido, del entrenamiento y de la tarea concreta.
Linear Transformer y el procesamiento del lenguaje en español
La arquitectura Linear Transformer no depende de un idioma específico.
Puede utilizarse para construir modelos que procesen textos en español, inglés u otras lenguas.
Sin embargo, el mecanismo de atención no proporciona por sí mismo conocimientos lingüísticos.
Se necesita un tokenizador adecuado y un modelo entrenado con datos representativos.
Por ejemplo, un proyecto de análisis documental en español podría investigar la utilización de atención lineal para procesar textos extensos.
También podría utilizarse como componente de un modelo generativo especializado.
No obstante, entrenar una arquitectura desde cero puede resultar costoso.
Para aplicaciones empresariales, conviene comparar el rendimiento con modelos preentrenados ya disponibles.
La elección debe considerar precisión, latencia, memoria y coste de mantenimiento.
Linear Transformer y la inteligencia artificial generativa
La formulación recurrente de Linear Transformer resulta especialmente interesante para los modelos autorregresivos.
Durante la generación de texto, cada nuevo token depende del contexto disponible.
En una implementación de atención lineal causal, el sistema puede actualizar sus estados internos de forma incremental.
Esto permite evitar la construcción repetida de matrices de atención sobre todo el historial.
Sin embargo, la memoria acumulativa no equivale a conservar un registro perfecto de todos los tokens anteriores.
Esta limitación puede influir en tareas que requieren recuperación precisa de detalles.
La investigación posterior sobre modelos eficientes ha explorado diferentes estrategias para mejorar el equilibrio entre memoria, expresividad y coste computacional.
Entre ellas se encuentran mecanismos de atención lineal con compuertas, modelos de espacio de estados y arquitecturas híbridas.
Estas tecnologías no son necesariamente equivalentes a Linear Transformer, pero comparten el objetivo general de procesar secuencias largas de manera eficiente.
Importancia de Linear Transformer en la evolución de los modelos de lenguaje
La principal contribución de Linear Transformer consiste en demostrar que determinados mecanismos de atención pueden reformularse mediante operaciones basadas en kernels y estados recurrentes.
Esta investigación ayudó a conectar dos líneas fundamentales del aprendizaje profundo.
La primera es la familia de los Transformers, basada en mecanismos de atención.
La segunda es la familia de las redes neuronales recurrentes, basada en actualizaciones de estados.
El trabajo mostró que ambas perspectivas pueden estar relacionadas mediante formulaciones matemáticas específicas.
Además, proporcionó una alternativa importante para reducir la complejidad de atención.
Mientras arquitecturas como Longformer y BigBird seleccionan conexiones dispersas, y Linformer comprime la dimensión secuencial, Linear Transformer utiliza funciones kernel y propiedades algebraicas para reorganizar el cálculo.
Esta idea contribuyó al desarrollo posterior de la investigación sobre atención lineal.
Su relevancia continúa siendo importante para comprender modelos eficientes, generación incremental y mecanismos de memoria compacta.
Preguntas frecuentes sobre Linear Transformer
¿Qué es Linear Transformer?
Linear Transformer es una arquitectura basada en Transformers que utiliza funciones kernel para calcular atención con complejidad lineal respecto a la longitud de la secuencia.
¿Quién desarrolló Linear Transformer?
Fue presentada en 2020 por Angelos Katharopoulos, Apoorv Vyas, Nikolaos Pappas y François Fleuret.
¿Qué significa Transformers are RNNs?
Hace referencia a que una capa Transformer con atención lineal causal puede reformularse como un sistema recurrente que mantiene y actualiza estados internos.
¿Qué es Kernel-Based Attention?
Es un mecanismo de atención que utiliza funciones de características para representar relaciones entre consultas y claves mediante productos internos.
¿Por qué Linear Transformer tiene complejidad lineal?
Porque reorganiza las multiplicaciones matriciales y utiliza estadísticas agregadas, evitando construir explícitamente una matriz cuadrática de atención.
¿Qué función kernel utiliza el modelo original?
Los investigadores utilizaron una transformación de características basada en ELU + 1 durante sus experimentos.
¿Linear Transformer reproduce exactamente softmax?
No necesariamente. La transformación ELU + 1 define un kernel diferente del kernel exponencial utilizado en softmax.
¿Qué es el estado S en Linear Transformer?
Es una matriz acumulativa que combina las características transformadas de las claves con los vectores de valores.
¿Qué es el estado z?
Es un vector acumulativo utilizado para normalizar las salidas de atención.
¿Linear Transformer es una RNN?
Su formulación causal puede expresarse como una red recurrente, pero no es idéntica a una RNN convencional como LSTM o GRU.
¿Qué diferencia existe entre Linear Transformer y Performer?
Linear Transformer utiliza funciones de características como ELU + 1. Performer utiliza FAVOR+ para aproximar el kernel softmax mediante características aleatorias positivas.
¿Qué diferencia existe entre Linear Transformer y Transformer-XL?
Transformer-XL reutiliza estados ocultos de segmentos anteriores. Linear Transformer utiliza estadísticas acumuladas para calcular atención de manera recurrente.
¿Linear Transformer puede utilizar atención causal?
Sí. Su formulación recurrente está diseñada para procesar secuencias sin acceder a tokens futuros.
¿Linear Transformer puede procesar secuencias largas?
Sí, su mecanismo reduce el coste de atención respecto a la longitud. Sin embargo, las restricciones reales dependen del modelo y de los recursos disponibles.
¿Linear Transformer puede utilizarse con Python?
Sí. Puede implementarse mediante PyTorch y existen bibliotecas de investigación como Fast Transformers.
¿Linear Transformer funciona con español?
La arquitectura puede utilizarse en modelos entrenados para español, siempre que se disponga de tokenización y datos adecuados.
¿Por qué es importante estudiar Linear Transformer?
Porque permite comprender cómo la atención basada en kernels puede reformularse mediante estados recurrentes y operaciones de complejidad lineal.
Conclusión
La arquitectura Linear Transformer representa una contribución fundamental a la investigación sobre mecanismos de atención eficientes.
Su principal aportación consiste en demostrar que la autoatención puede reformularse mediante funciones kernel y operaciones matriciales reorganizadas para reducir su complejidad computacional.
Esta estrategia permite evitar la construcción explícita de matrices cuadráticas de atención.
Además, los investigadores demostraron que la atención lineal causal puede expresarse mediante estados recurrentes que se actualizan conforme llegan nuevos tokens.
Esta relación conecta los principios de los Transformers con los de las redes neuronales recurrentes.
La formulación también permite utilizar procesamiento vectorizado durante el entrenamiento y actualizaciones incrementales durante la generación.
Sin embargo, la reducción de complejidad introduce compromisos relacionados con la función kernel, la capacidad de memoria y la recuperación de información específica del historial.
Para estudiantes, investigadores y desarrolladores, Linear Transformer ofrece una lección esencial:
Los Transformers y las redes neuronales recurrentes no son necesariamente enfoques completamente separados. Bajo determinadas formulaciones matemáticas, los mecanismos de atención pueden interpretarse como sistemas que actualizan y consultan estados recurrentes.
Comprender Linear Transformer permite profundizar en los fundamentos de atención lineal, funciones kernel, procesamiento autorregresivo, memoria acumulativa y eficiencia computacional de los modelos de lenguaje.
Referencias y fuentes oficiales
- Katharopoulos, A., Vyas, A., Pappas, N. y Fleuret, F. (2020). Transformers are RNNs: Fast Autoregressive Transformers with Linear Attention. Proceedings of the 37th International Conference on Machine Learning, PMLR 119, pp. 5156–5165. https://proceedings.mlr.press/v119/katharopoulos20a.html
- Katharopoulos, A. et al. (2020). Transformers are RNNs: Fast Autoregressive Transformers with Linear Attention. arXiv. https://arxiv.org/abs/2006.16236
- Idiap Research Institute. Linear Transformers — Página oficial del proyecto. https://linear-transformers.com/
- Idiap Research Institute. Fast Transformers — Repositorio de código. https://github.com/idiap/fast-transformers
- Idiap Research Institute. Linear Attention — Implementación PyTorch. https://github.com/idiap/fast-transformers/blob/master/fast_transformers/attention/linear_attention.py
- Idiap Research Institute. Causal Linear Attention — Implementación PyTorch. https://github.com/idiap/fast-transformers/blob/master/fast_transformers/attention/causal_linear_attention.py
- Choromanski, K. et al. (2021). Rethinking Attention with Performers. ICLR 2021. https://arxiv.org/abs/2009.14794
- Vaswani, A. et al. (2017). Attention Is All You Need. https://arxiv.org/abs/1706.03762
