Visibilidad IA

Arquitectura Linear Transformer (Transformers are RNNs): qué es, cómo funciona y cómo utiliza atención lineal mediante funciones kernel y formulación recurrente

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 secuenciaPares de atención completa
512 tokens262.144
1.024 tokens1.048.576
2.048 tokens4.194.304
4.096 tokens16.777.216
8.192 tokens67.108.864
16.384 tokens268.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ísticaRNN tradicionalLinear Transformer
Procesamiento recurrenteSíSí, en modo causal
Estado internoVector recurrenteMatriz y vector acumulativos
Atención explícitaNo necesariamenteSí, mediante kernel
Procesamiento paraleloLimitado por dependencias temporalesPosible mediante formulación vectorizada
Actualización de memoriaFunciones recurrentes aprendidasAcumulación de características y valores
Complejidad respecto a longitudHabitualmente linealLineal con dimensiones fijas
Generación incrementalSíSí
Relación contextualMediante estados ocultosMediante 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ísticaTransformer-XLLinear Transformer
EstrategiaMemoria entre segmentosAtención basada en kernel
Memoria principalEstados ocultos anterioresEstadísticas acumuladas
Atención convencionalPuede mantener atención softmaxFunción kernel
RecurrenciaEntre segmentosPor token en modo causal
Tamaño de memoriaDepende de longitud retenidaPuede mantenerse fijo por capa
Objetivo de eficienciaContexto reutilizableCá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ísticaLinear TransformerPerformer
Publicación principalICML 2020ICLR 2021
EstrategiaAtención mediante kernelFAVOR+
Características aleatoriasNo necesariasSí
Función de ejemploELU + 1Características aleatorias positivas
Aproximación de softmaxNo reproduce necesariamente softmaxDiseñada para aproximar su kernel
Atención causalSíSí
Formulación recurrenteSíSí, mediante acumulación
Complejidad respecto a longitudLinealLineal 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.

ArquitecturaTécnica principalComplejidad característica
Transformer convencionalAtención completa(O(N^2))
ReformerLSH Attention(O(N\log N))
LinformerProyecciones de baja dimensión(O(Nk))
Linear TransformerAtención mediante kernel(O(N)) con dimensiones fijas
PerformerFAVOR+(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 torch
import torch.nn.functional as F
def 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 = 2
sequence_length = 512
head_dim = 64
q = 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 torch
import torch.nn.functional as F
def 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 torch
import torch.nn.functional as F
def 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

  1. 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
  2. Katharopoulos, A. et al. (2020). Transformers are RNNs: Fast Autoregressive Transformers with Linear Attention. arXiv. https://arxiv.org/abs/2006.16236
  3. Idiap Research Institute. Linear Transformers — Página oficial del proyecto. https://linear-transformers.com/
  4. Idiap Research Institute. Fast Transformers — Repositorio de código. https://github.com/idiap/fast-transformers
  5. Idiap Research Institute. Linear Attention — Implementación PyTorch. https://github.com/idiap/fast-transformers/blob/master/fast_transformers/attention/linear_attention.py
  6. Idiap Research Institute. Causal Linear Attention — Implementación PyTorch. https://github.com/idiap/fast-transformers/blob/master/fast_transformers/attention/causal_linear_attention.py
  7. Choromanski, K. et al. (2021). Rethinking Attention with Performers. ICLR 2021. https://arxiv.org/abs/2009.14794
  8. Vaswani, A. et al. (2017). Attention Is All You Need. https://arxiv.org/abs/1706.03762

Solicitar Análisis Gratuito
Solicitar Análisis Gratuito

Visibilidad IA

Contact

Menu

(c) 2025-2026  Todos los derechos reservados | Designed by Benelux-IT