Linear Attention
Линейное внимание заменяет softmax отображением признаков, благодаря чему вычислительные затраты растут линейно с длиной последовательности, а при декодировании достаточно состояния фиксированного размера. Рассматриваются DeltaNet и гибридные модели.
Линейное внимание — это семейство механизмов внимания, вычислительная стоимость которых растёт линейно с длиной последовательности, а не квадратично, как у стандартного самовнимания с softmax. Внимание с softmax оценивает каждый запрос относительно каждого ключа, поэтому N токенов дают матрицу оценок N × N для каждой головы, а трансформер, генерирующий текст, хранит KV-кэш, который растёт с каждым токеном. Линейное внимание заменяет сходство с softmax скалярным произведением карт признаков, φ(q)·φ(k), что позволяет модели перегруппировать матричные произведения и суммировать все предыдущие ключи и значения в состоянии фиксированного размера. В статье Katharopoulos и соавторов «Трансформеры — это RNN» 2020 года был описан распространённый вариант метода, а его версии с гейтами теперь работают в промышленных больших языковых моделях (LLM) наряду со стандартными слоями внимания.
Как работает линейное внимание#
Внимание с softmax вычисляет softmax(QKᵀ)V, и, поскольку exp(q·k) нельзя разложить на множитель для запроса и множитель для ключа, нужно оценивать каждую пару «запрос — ключ». С картой признаков φ, например elu(x) + 1, результат принимает вид φ(Q)(φ(K)ᵀV) и нормализуется на φ(Q), умноженную на сумму строк φ(K). Матричное умножение ассоциативно, поэтому φ(K)ᵀV можно вычислить первым, получив матрицу d × d, где d — размерность головы, независимо от числа токенов. Вычислительная сложность снижается с O(N²d) до O(Nd²), что выгодно, когда последовательности намного длиннее размерности головы.
Для причинно-следственных моделей та же алгебра превращает внимание в рекуррентную нейронную сеть (RNN) с матричным состоянием. Каждый новый токен добавляет к состоянию внешнее произведение φ(k)vᵀ, а его запрос считывает данные из этого состояния, поэтому для генерации текста требуются постоянный объём памяти и постоянное время на токен. При обучении используется параллельная форма или блочные ядра, например из библиотеки flash-linear-attention, поэтому GPU по-прежнему обрабатывает целые последовательности за один раз. В PyTorch обе формы дают одинаковые результаты:
import torch
import torch.nn.functional as F
torch.manual_seed(0)
n, d = 2048, 64
q, k, v = torch.randn(3, n, d).unbind(0)
phi_q, phi_k = F.elu(q) + 1, F.elu(k) + 1 # positive feature map in place of softmax
# Parallel form: an n x n causal score matrix, as in softmax attention
scores = torch.tril(phi_q @ phi_k.T)
parallel = (scores @ v) / scores.sum(dim=-1, keepdim=True)
# Recurrent form: a fixed d x d state that each new token updates
state, norm, outputs = torch.zeros(d, d), torch.zeros(d), []
for t in range(n):
state += torch.outer(phi_k[t], v[t])
norm += phi_k[t]
outputs.append(phi_q[t] @ state / (phi_q[t] @ norm))
recurrent = torch.stack(outputs)
print("Same outputs:", torch.allclose(parallel, recurrent, atol=1e-4))
print(f"Recurrent state: {state.numel():,} numbers; KV cache after {n:,} tokens: {2 * n * d:,} numbers")Выводится Same outputs: True. Состояние размером 64 × 64 содержит 4 096 чисел независимо от длины последовательности, тогда как KV-кэш одной головы после 2 048 токенов содержит 262 144 числа и увеличивается на 128 с каждым новым токеном.
DeltaNet, гейтинг и гибридные модели#
Состояние фиксированного размера — это память с потерями. Обычное линейное внимание только дополняет его, поэтому старые ассоциации накапливаются и мешают друг другу, а извлечение конкретных фактов из длинного контекстного окна уступает вниманию с softmax. Сейчас широко используются два решения. Гейтинг умножает состояние на обучаемый коэффициент затухания перед каждым обновлением, позволяя модели забывать; этот механизм также используется в моделях пространства состояний (SSM), таких как Mamba-2. Их авторы показали, что эти два семейства — двойственные формы друг друга. Правило дельты, разработанное в рамках исследований связи линейных трансформеров с программистами быстрых весов, считывает текущее значение, сохранённое для ключа, и записывает лишь разницу между новым значением и сохранённым прогнозом. В 2024 году DeltaNet позволила параллельно обучать правило дельты на всей последовательности, Gated DeltaNet (ICLR 2025) добавила гейт затухания, а Kimi Linear от Moonshot AI усовершенствовала этот гейт, чтобы он отдельно воздействовал на каждый канал.
В промышленных моделях эти слои чередуются с полноценным вниманием, чтобы несколько слоёв с softmax обеспечивали точное извлечение данных. Qwen3-Next и семейство Qwen3.5 повторяют блок из трёх слоёв Gated DeltaNet, за которыми следует один слой внимания с гейтами и softmax; в Kimi Linear используется похожее соотношение 3:1 между Kimi Delta Attention и многоголовым латентным вниманием:
Линейное внимание и родственные методы#
- Самовнимание: Точная форма с softmax, которая оценивает все пары токенов, имеет квадратичную временную сложность и KV-кэш, растущий вместе с последовательностью.
- Flash attention: Ядро GPU, вычисляющее точное внимание с softmax по блокам, хранящимся во встроенной памяти чипа. Оно сокращает объём передаваемых данных, но число операций остаётся квадратичным.
- Разреженное внимание: Сохраняет softmax, но оценивает только выбранные пары, например локальную область недавних токенов.
- Внимание с группированными запросами (GQA): Распределяет ключи и значения между головами запросов, сокращая KV-кэш в фиксированное число раз и сохраняя полноценное внимание с softmax.
Где применяется линейное внимание#
Самая крупная область применения — языковые модели с длинным контекстом: при декодировании линейные слои гибридной модели сохраняют состояние фиксированного размера, а растущий KV-кэш есть только у нескольких слоёв с softmax. Второе направление — компьютерное зрение, поскольку число токенов растёт вместе с разрешением изображения. EfficientViT использует линейное внимание на основе ReLU для высокоразрешённой семантической сегментации, а SANA от NVIDIA реализует линейный диффузионный трансформер, который генерирует изображения размером до 4096 × 4096 пикселей. В детекции объектов внимание обычно применяется только там, где карты признаков самые маленькие. YOLO26 сохраняет стандартное внимание с softmax и применяет его только в блоке C2PSA и одном блоке C3k2 с поддержкой внимания. Оба блока работают с картой признаков 20 × 20 с шагом 32 для изображения размером 640 пикселей, поэтому каждый слой внимания обрабатывает 400 токенов и полную матрицу оценок из 160 000 значений на голову.










