본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
Linear attention; 선형 어텐션
소프트맥스 대신 특징 사상의 내적으로 어텐션 유사도를 계산하고 행렬 곱 순서를 바꿔, 시퀀스 길이에 선형인 비용과 고정 크기 상태의 순환 추론을 얻는 어텐션 계열

선형 어텐션(Linear attention)은 셀프 어텐션의 소프트맥스 유사도 exp⁡(q⊤k)를 특징 사상(feature map) ϕ의 내적 ϕ(q)⊤ϕ(k)로 바꿔, 시퀀스 길이 N에 대해 제곱이던 계산량을 선형으로 줄인 어텐션이다. 2020년 카타로풀로스(Angelos Katharopoulos) 등이 ICML 2020 논문 〈Transformers are RNNs〉에서 정식화했다.[1] 논문 제목처럼, 인과 선형 어텐션은 고정 크기 행렬을 상태로 갖는 RNN과 수학적으로 같아서 생성할 때 KV 캐시가 길이에 따라 늘지 않는다.

초기 선형 어텐션은 소프트맥스 어텐션보다 품질이 떨어져 대형 언어 모델에서는 밀려났고, 그 자리는 정확한 어텐션을 빠르게 계산하는 플래시 어텐션이 차지했다. 그러나 2023년 이후 입력에 따라 기억을 지우는 게이트와 델타 규칙을 더한 변형(GLA, DeltaNet, Gated DeltaNet)이 상태 공간 모델(Mamba-2)과 같은 틀로 정리되며 다시 발전했다. 2025년에는 MiniMax-01, Qwen3-Next, Kimi Linear처럼 선형 어텐션 층 여러 개와 소프트맥스 어텐션 층 하나를 섞는 하이브리드 대형 모델이 나왔다.

결합 법칙으로 순서 바꾸기

편집 원본 편집

일반화한 어텐션에서 i번째 출력은

V'i=∑j=1Nsim⁡(Qi,Kj)Vj∑j=1Nsim⁡(Qi,Kj)

이고, 소프트맥스 어텐션은 sim⁡(q,k)=exp⁡(q⊤k/d)인 경우다. 유사도를 특징 사상의 내적 sim⁡(q,k)=ϕ(q)⊤ϕ(k)로 정하면

V'i=ϕ(Qi)⊤∑jϕ(Kj)Vj⊤ϕ(Qi)⊤∑jϕ(Kj)

로 묶을 수 있다. 행렬로 쓰면 (ϕ(Q)ϕ(K)⊤)V를 ϕ(Q)(ϕ(K)⊤V)로 계산하는 것이다. 앞쪽은 N×N 행렬을 만들어 O(N2d), 뒤쪽은 d×d 행렬만 만들어 O(Nd2)다.[1] 카타로풀로스 등은 특징 사상으로

ϕ(x)=elu⁡(x)+1

을 썼다. 값이 항상 양수여서 분모가 0이 되지 않고, ReLU와 달리 음수 입력에서도 기울기가 0이 되지 않는다.[1]

인과 마스킹과 순환형

편집 원본 편집

자기회귀 모델에서는 j≤i까지만 더한다. 누적 합을 상태로 두면

Si=Si−1+ϕ(Ki)Vi⊤,zi=zi−1+ϕ(Ki),V'i=ϕ(Qi)⊤Siϕ(Qi)⊤zi

가 된다. Si는 dk×dv 행렬, zi는 dk 벡터다. 토큰 하나를 만들 때 비용이 문맥 길이와 무관하게 일정하며, 이것이 "트랜스포머는 RNN"이라는 제목의 뜻이다.[1] 행렬 상태 S는 키를 주소, 값을 내용으로 삼는 연상 기억으로 볼 수 있다. 슐라크(Imanol Schlag) 등은 이 구조가 1990년대 슈미트후버의 고속 가중치 프로그래머(fast weight programmer)와 형식적으로 같다는 것을 보였다.[2]

계산 형태 비교

편집 원본 편집
형태 쓰는 곳 시간 메모리 특징
소프트맥스 어텐션 기준 학습 O(N2d), 생성 토큰당 O(Nd) KV 캐시 O(Nd) 정확한 검색 능력
병렬형 짧은 시퀀스 학습 O(N2d) O(N2) 소프트맥스와 같은 모양, 마스크된 행렬 곱
순환형 생성 토큰당 O(d2) 상태 O(d2) 고정 병렬화 불가, 학습에는 느림
청크 단위 긴 시퀀스 학습 O(NCd+Nd2) O(Nd+d2) 청크 안은 행렬 곱, 청크 사이는 상태 전달

실제 학습 커널은 청크 단위 형태를 쓴다. 양쑹린(Songlin Yang) 등의 FlashLinearAttention은 메모리 이동과 병렬성을 조절하는 입출력 인지(I/O-aware) 알고리즘으로, 1K 같은 짧은 시퀀스에서도 단독 층 속도가 FlashAttention-2보다 빨랐다고 보고했다.[3]

세 형태가 같은 값을 내는지 확인하는 최소 구현이다(PyTorch 2.5에서 최대 오차 10-7 수준).

import torch
import torch.nn.functional as F

def phi(x):
    return F.elu(x) + 1                      # Katharopoulos 외(2020)의 특징 사상

def linear_attn_parallel(q, k, v):
    """병렬형(인과). q,k: (B,T,d_k), v: (B,T,d_v). 설명용으로 T×T 마스크를 쓴다."""
    q, k = phi(q), phi(k)
    T = q.shape[1]
    a = (q @ k.transpose(-1, -2)) * torch.ones(T, T).tril()   # 소프트맥스 없음
    return (a @ v) / a.sum(-1, keepdim=True)

def linear_attn_recurrent(q, k, v):
    """순환형: 상태 S(d_k×d_v)와 z(d_k)만 들고 간다."""
    q, k = phi(q), phi(k)
    B, T, dk = q.shape
    S, z, out = torch.zeros(B, dk, v.shape[-1]), torch.zeros(B, dk), []
    for t in range(T):
        S = S + k[:, t, :, None] * v[:, t, None, :]   # S_t = S_{t-1} + φ(k_t) v_tᵀ
        z = z + k[:, t]
        num = (q[:, t, None, :] @ S).squeeze(1)       # φ(q_t)ᵀ S_t
        den = (q[:, t] * z).sum(-1, keepdim=True)     # φ(q_t)ᵀ z_t
        out.append(num / den)
    return torch.stack(out, 1)

def linear_attn_chunked(q, k, v, C=16):
    """청크 단위: 청크 안은 행렬 곱, 청크 사이는 상태로 넘긴다."""
    q, k = phi(q), phi(k)
    B, T, dk = q.shape
    S, z, out = torch.zeros(B, dk, v.shape[-1]), torch.zeros(B, dk), []
    for s in range(0, T, C):
        qc, kc, vc = q[:, s:s+C], k[:, s:s+C], v[:, s:s+C]
        n = qc.shape[1]
        intra = (qc @ kc.transpose(-1, -2)) * torch.ones(n, n).tril()
        out.append((qc @ S + intra @ vc) / (qc @ z[:, :, None] + intra.sum(-1, keepdim=True)))
        S, z = S + kc.transpose(-1, -2) @ vc, z + kc.sum(1)
    return torch.cat(out, 1)

q, k, v = torch.randn(2, 50, 16), torch.randn(2, 50, 16), torch.randn(2, 50, 32)
a = linear_attn_parallel(q, k, v)
print((a - linear_attn_recurrent(q, k, v)).abs().max(), (a - linear_attn_chunked(q, k, v)).abs().max())

실제로 쓸 때는 위처럼 파이썬 반복문을 돌리지 않고, 청크 단위 알고리즘을 트리톤 커널로 구현한 fla-org의 flash-linear-attention 같은 라이브러리를 쓴다.[4]

특징 사상 선택

편집 원본 편집
  • elu+1 (Linear Transformer, 2020): 단순하고 빠르지만 소프트맥스를 근사하지는 않는다.
  • 무작위 특징 (Performer, 2020): 초로만스키(Krzysztof Choromanski) 등은 양의 직교 무작위 특징으로 소프트맥스 커널을 편향 없이 근사하는 FAVOR+를 제안했다. 소프트맥스 어텐션을 증명 가능한 정확도로 추정한다는 것이 장점이다.[5] 무작위 특징 근사의 원리는 커널 트릭 문서의 무작위 푸리에 특징과 같다.
  • 항등 사상: 이후 RetNet, GLA, DeltaNet 계열은 복잡한 특징 사상 대신 쿼리·키를 그대로 쓰거나 간단한 정규화만 하고, 품질은 아래의 감쇠·게이트·델타 규칙으로 끌어올리는 쪽으로 갔다. RetNet은 분모 정규화 대신 헤드 출력에 GroupNorm을 둔다.[6]

왜 성능이 떨어졌나

편집 원본 편집

상태 S의 크기는 dk×dv로 고정이므로 저장할 수 있는 키-값 연관의 수에 한계가 있다. 단순 덧셈 갱신은 오래된 정보를 지우지 못해 연관이 쌓일수록 서로 간섭한다. 슐라크 등은 이 기억 용량 한계를 지적하고, 덧셈 대신 델타 규칙으로 기존 연관을 고쳐 쓰자고 제안했다.[2]

아로라(Simran Arora) 등의 Zoology 연구는 어텐션 없는 효율적 언어 모델과 어텐션 모델의 퍼플렉서티 차이 가운데 82%가 문맥 안에서 앞서 나온 정보를 다시 꺼내는 연상 회상(associative recall) 능력으로 설명된다고 분석했다. 이 과제에서는 7천만 매개변수 어텐션 모델이 14억 매개변수 게이트 합성곱 모델을 이겼다.[7] 연상 회상은 인덕션 헤드가 하는 일과 같은 종류의 작업이다. MiniMax 팀도 자체 실험에서 선형 어텐션의 검색 능력이 제한적이어서 하이브리드 구조를 택했다고 밝혔다.[8]

발전: 감쇠, 게이트, 델타 규칙

편집 원본 편집

후속 모델은 상태 갱신 규칙을 바꿔 왔다. 열 벡터 관례로 출력은 ot=Stqt다.

모델 상태 갱신 의미
선형 어텐션(2020) St=St−1+vtkt⊤ 계속 더하기만 함
RetNet(2023) St=γSt−1+vtkt⊤ 헤드별 고정 감쇠율 γ로 오래된 정보를 지수적으로 잊음[6]
GLA(2023) St=St−1Diag⁡(αt)+vtkt⊤ 입력에 따라 정해지는 차원별 망각 게이트[3]
Mamba-2(2024) St=αtSt−1+vtkt⊤ 입력에 따른 스칼라 감쇠. 상태 공간 모델과 선형 어텐션의 쌍대성(SSD)으로 정리[9]
DeltaNet St=St−1(I−βtktkt⊤)+βtvtkt⊤ 키 kt에 저장된 옛 값을 지우고 새 값으로 고쳐 씀. 2024년 순차 길이 방향 병렬 학습 알고리즘이 나옴[10]
Gated DeltaNet(2024) St=St−1αt(I−βtktkt⊤)+βtvtkt⊤ 게이트(빠른 전체 삭제)와 델타 규칙(정밀한 수정)을 결합[11]

델타 규칙은 상태를 "키 kt를 넣으면 값 vt가 나오는 선형 사상"으로 보고, 오차 ‖Skt−vt‖2를 줄이는 방향으로 한 단계 경사 하강하는 것과 같다. Gated DeltaNet 논문은 이런 관점으로 위 모델들을 온라인 학습 목적함수의 차이로 정리했고, 게이트는 αt→0으로 기억을 빨리 비우고 αt→1이면 순수 델타 규칙이 된다고 설명했다.[11] RetNet 논문은 70억 매개변수 모델, 8K 길이에서 KV 캐시를 쓰는 트랜스포머보다 디코딩이 8.4배 빠르고 메모리를 70% 아꼈다고 보고했다.[6]

하이브리드 모델

편집 원본 편집

순수 선형 어텐션 모델의 검색 약점을 메우려고, 대형 모델들은 선형 어텐션 층 사이에 소프트맥스 어텐션 층을 일정 간격으로 끼워 넣었다.

모델 공개 구성 비고
MiniMax-Text-01 2025년 1월 라이트닝 어텐션(선형) 층 7개마다 소프트맥스 어텐션 층 1개, 총 80층. 소프트맥스 층은 GQA 총 4,560억·토큰당 활성 459억 매개변수 MoE. 학습 때 100만 토큰, 추론 때 400만 토큰까지 문맥 확장[8]
Qwen3-Next-80B-A3B 2025년 9월 48층 = 12 × (Gated DeltaNet 3층 + 게이트 어텐션 1층) 총 800억·활성 30억. 기본 문맥 262,144토큰[12]
Kimi Linear 2025년 10월 Gated DeltaNet을 확장한 KDA(Kimi Delta Attention) 층과 MLA 층을 층 단위로 섞음 활성 30억·총 480억. 같은 학습 조건의 MLA 전용 모델보다 성능이 좋고, 100만 토큰 문맥에서 KV 캐시 최대 75% 절감, 디코딩 처리량 최대 6배라고 보고[13]

하이브리드에서 KV 캐시는 소프트맥스 층에만 생기므로, 3:1 구성이면 캐시가 같은 깊이 순수 트랜스포머의 약 4분의 1로 준다. 선형 층의 상태는 길이와 무관한 고정 크기다.

실무 선택 기준

편집 원본 편집
  • 문맥이 수십만 토큰 이상이고 디코딩 처리량이 중요하면 선형 어텐션 계열 하이브리드를 검토할 만하다. 짧은 문맥 위주라면 플래시 어텐션을 쓰는 표준 트랜스포머가 단순하고 생태계(추론 엔진, 양자화, 미세 조정 도구)도 넓다.
  • 순수 선형 어텐션 모델은 문맥 속 정확한 복사·검색(전화번호, 코드 식별자, 긴 문서의 특정 문장)에서 약할 수 있으므로 해당 과제로 따로 평가한다.
  • 선형 어텐션 층의 상태는 KV 캐시처럼 토큰 단위로 자르거나 공유할 수 없다. 접두사 캐싱, 빔 탐색, 투기적 디코딩 같은 서빙 기법이 KV 캐시 전제로 짜여 있다면 상태 저장 방식을 따로 맞춰야 한다.
  • 위치 정보: 감쇠·게이트가 있는 변형은 오래된 토큰일수록 영향이 줄어 갱신 규칙 자체에 순서가 반영된다. 감쇠가 없는 원래 선형 어텐션에 RoPE를 넣는 방법은 RoFormer 논문이 보였다.[14]
  1. ↑ 1.0 1.1 1.2 1.3 Angelos Katharopoulos, Apoorv Vyas, Nikolaos Pappas, François Fleuret, 〈Transformers are RNNs: Fast Autoregressive Transformers with Linear Attention〉, ICML 2020. arXiv:2006.16236
  2. ↑ 2.0 2.1 Imanol Schlag, Kazuki Irie, Jürgen Schmidhuber, 〈Linear Transformers Are Secretly Fast Weight Programmers〉, ICML 2021. arXiv:2102.11174
  3. ↑ 3.0 3.1 Songlin Yang 외, 〈Gated Linear Attention Transformers with Hardware-Efficient Training〉, ICML 2024. arXiv:2312.06635
  4. ↑ fla-org/flash-linear-attention, GitHub.
  5. ↑ Krzysztof Choromanski 외, 〈Rethinking Attention with Performers〉, ICLR 2021. arXiv:2009.14794
  6. ↑ 6.0 6.1 6.2 Yutao Sun 외, 〈Retentive Network: A Successor to Transformer for Large Language Models〉, 2023. arXiv:2307.08621
  7. ↑ Simran Arora 외, 〈Zoology: Measuring and Improving Recall in Efficient Language Models〉, 2023. arXiv:2312.04927
  8. ↑ 8.0 8.1 MiniMax, 〈MiniMax-01: Scaling Foundation Models with Lightning Attention〉, 2025. arXiv:2501.08313
  9. ↑ Tri Dao, Albert Gu, 〈Transformers are SSMs: Generalized Models and Efficient Algorithms Through Structured State Space Duality〉, ICML 2024. arXiv:2405.21060
  10. ↑ Songlin Yang 외, 〈Parallelizing Linear Transformers with the Delta Rule over Sequence Length〉, NeurIPS 2024. arXiv:2406.06484
  11. ↑ 11.0 11.1 Songlin Yang, Jan Kautz, Ali Hatamizadeh, 〈Gated Delta Networks: Improving Mamba2 with Delta Rule〉, ICLR 2025. arXiv:2412.06464
  12. ↑ Qwen/Qwen3-Next-80B-A3B-Instruct 모델 카드, 허깅 페이스.
  13. ↑ Kimi Team, 〈Kimi Linear: An Expressive, Efficient Attention Architecture〉, 2025. arXiv:2510.26692
  14. ↑ Jianlin Su 외, 〈RoFormer: Enhanced Transformer with Rotary Position Embedding〉, 2021. arXiv:2104.09864