Linear Attention
선형 어텐션은 소프트맥스를 특징 맵으로 대체하여 시퀀스 길이에 따라 비용이 선형적으로 증가하고 디코딩 시 고정 크기 상태를 유지합니다. DeltaNet과 하이브리드 모델을 다룹니다.
선형 어텐션은 표준 소프트맥스 자기 어텐션의 이차 비용 대신 시퀀스 길이에 따라 비용이 선형적으로 증가하는 어텐션 메커니즘의 한 계열입니다. 소프트맥스 어텐션은 모든 쿼리를 모든 키와 비교하므로, N개의 토큰은 헤드마다 N × N 점수 행렬을 만들고 텍스트를 생성하는 트랜스포머는 토큰이 추가될 때마다 커지는 KV 캐시를 유지합니다. 선형 어텐션은 소프트맥스 유사도를 특징 맵의 내적 φ(q)·φ(k)로 대체해 모델이 행렬 곱의 순서를 바꾸고 과거의 모든 키와 값을 고정 크기 상태로 요약할 수 있게 합니다. Katharopoulos 등이 2020년에 발표한 논문 Transformers are RNNs는 이 방법의 일반적인 형태를 제시했으며, 이제 게이트 방식 변형이 표준 어텐션 레이어와 함께 운영 환경의 대규모 언어 모델(LLM)에서 실행됩니다.
선형 어텐션의 작동 원리#
소프트맥스 어텐션은 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개가 저장됩니다. 반면 토큰 2,048개를 처리한 후 헤드 하나의 KV 캐시에는 숫자 262,144개가 저장되며, 새 토큰이 추가될 때마다 128개씩 늘어납니다.
DeltaNet, 게이팅 및 하이브리드 모델#
고정 크기 상태는 손실이 있는 메모리입니다. 일반 선형 어텐션은 상태에 내용을 더하기만 하므로 오래된 연관 정보가 쌓여 서로 간섭하고, 긴 컨텍스트 윈도우에서 특정 사실을 기억하는 능력은 소프트맥스 어텐션보다 떨어집니다. 현재는 두 가지 해결책이 주로 사용됩니다. 게이팅은 각 업데이트 전에 학습된 감쇠값을 상태에 곱해 모델이 정보를 잊을 수 있게 합니다. 이는 Mamba-2와 같은 상태 공간 모델(SSM)에도 쓰이는 메커니즘으로, 두 모델 계열이 서로 쌍대 형태임을 저자들이 보였습니다. 선형 트랜스포머와 고속 가중치 프로그래머를 연결한 연구에서 나온 델타 규칙은 키에 현재 저장된 값을 읽고, 새 값과 저장된 예측값의 차이만 기록합니다. DeltaNet은 2024년에 시퀀스 전체에 걸쳐 델타 규칙 학습을 병렬화했으며, Gated DeltaNet(ICLR 2025)은 감쇠 게이트를 추가했습니다. Moonshot AI의 Kimi Linear는 이 게이트를 채널마다 적용하도록 개선했습니다.
운영 모델은 정확한 기억을 유지하기 위해 이러한 레이어 사이에 전체 어텐션 레이어를 배치합니다. Qwen3-Next와 Qwen3.5 제품군은 Gated DeltaNet 레이어 3개 다음에 게이트 소프트맥스 어텐션 레이어 1개를 반복해서 배치합니다. Kimi Linear는 Kimi Delta Attention과 멀티헤드 잠재 어텐션을 비슷한 3:1 비율로 사용합니다.
선형 어텐션과 관련 기법 비교#
- 자기 어텐션: 모든 토큰 쌍의 점수를 계산하는 정확한 소프트맥스 방식으로, 시간 복잡도는 이차이며 시퀀스가 길어질수록 KV 캐시가 커집니다.
- Flash 어텐션: 온칩 메모리에 저장된 타일 단위로 정확한 소프트맥스 어텐션을 계산하는 GPU 커널입니다. 메모리 트래픽은 줄이지만 연산 횟수는 여전히 이차적으로 증가합니다.
- 희소 어텐션: 소프트맥스는 유지하면서 최근 토큰의 로컬 밴드처럼 선택된 쌍만 점수를 계산합니다.
- 그룹 쿼리 어텐션(GQA): 쿼리 헤드 간에 키와 값을 공유해 KV 캐시를 일정한 배수만큼 줄이면서 전체 소프트맥스 어텐션을 유지합니다.
선형 어텐션의 사용 분야#
하이브리드 모델의 선형 레이어는 디코딩 중 고정 크기 상태를 유지하고 일부 소프트맥스 레이어만 크기가 증가하는 KV 캐시를 보유하므로, 긴 컨텍스트를 처리하는 언어 모델이 가장 큰 활용 분야입니다. 토큰 수가 이미지 해상도에 따라 증가한다는 점에서 비전이 두 번째로 큰 활용 분야입니다. EfficientViT는 고해상도 시맨틱 세그멘테이션에 ReLU 기반 선형 어텐션을 사용하며, NVIDIA의 SANA는 최대 4096 × 4096픽셀 이미지를 생성하는 선형 디퓨전 트랜스포머를 구성합니다. 객체 탐지에서는 어텐션이 보통 특징 맵의 해상도가 가장 낮은 지점에서만 실행됩니다. YOLO26은 표준 소프트맥스 어텐션을 유지하면서 C2PSA 블록과 어텐션을 사용하는 C3k2 블록 하나에서만 실행합니다. 두 블록 모두 640픽셀 이미지의 20 × 20 스트라이드-32 특징 맵에서 동작하므로, 각 어텐션 레이어는 토큰 400개와 헤드당 160,000개 항목으로 구성된 전체 점수 행렬을 처리합니다.










