Shuangfei Zhai · Apple · arXiv 2026

Exclusive Self Attention

"어텐션은 '맥락'을 모아야 한다 — 자기 자신의 정보는 FFN에게 맡겨라."
Self Attention (SA)이 자기 자신의 값 벡터와 지나치게 유사한 출력을 만들어내는 '어텐션 유사도 편향'을 발견하고, 단 두 줄의 코드로 이를 제거하는 Exclusive Self Attention (XSA)을 제안합니다.

arXiv →
Self Attention Transformer LM Attention Efficiency LM Scaling Attention Sink Long Context

문제의 배경 — SA와 FFN의 역할 분담

Transformer는 두 가지 핵심 블록의 반복으로 구성됩니다. SA(Self Attention)는 문맥 속 다른 위치의 정보를 모아오고, FFN(Feed Forward Network)은 각 위치를 독립적으로 변환합니다. 이 역할 분담은 2017년 "Attention is All You Need" 이후 거의 변하지 않았습니다.

발견된 문제 학습된 언어 모델을 분석해보면, SA의 출력 \(y_i\)가 자기 자신의 값 벡터 \(v_i\)와 높은 코사인 유사도를 보입니다. 즉, SA가 "다른 위치의 정보를 가져오는" 본래 역할 대신, 현재 위치의 정보를 그대로 반영하는 데 많은 용량을 낭비하고 있습니다. 저자는 이를 어텐션 유사도 편향 (Attention Similarity Bias)이라 명명합니다.

왜 이런 현상이 발생할까요? 두 가지 구조적 원인이 맞물립니다.

① 값 벡터들이 서로 양의 상관관계를 가집니다. 같은 시퀀스 내 값 벡터 \(v_i, v_j\)의 평균 코사인 유사도가 0보다 크기 때문에, 어떤 위치에서 어텐션을 집계하더라도 결과가 \(v_i\)와 비슷해지는 경향이 있습니다.

② 자기 자신 위치에 높은 어텐션 점수가 할당됩니다. 대각 어텐션 값 \(a_{i,i}\)가 상대적으로 높아, SA 출력 \(y_i\)가 \(v_i\) 자체를 많이 반영합니다. 레이어가 깊어질수록 이 편향은 더욱 심해집니다.

"This suggests that standard SA tends to aggregate value vectors similar to what the self value \(v_i\) already encodes, which implicitly overlaps with role of FFN and consequently diminishes SA's goal of context modeling."

"이는 표준 SA가 자기 값 벡터 \(v_i\)가 이미 인코딩한 것과 유사한 값 벡터를 집계하는 경향이 있음을 시사하며, 이는 FFN의 역할과 암묵적으로 겹쳐 SA의 맥락 모델링 목표를 약화시킨다."

평가 이 발견은 단순한 관찰이 아닙니다. SA와 FFN 사이에 비효율적 경쟁이 존재한다는 구조적 진단입니다. SA가 자기 위치의 정보 변환을 담당하면, FFN이 같은 일을 다시 해야 하거나 SA가 맥락 모델링에 쓸 용량이 줄어듭니다.

어텐션 유사도 편향 시각화

실제 1.3B 파라미터 모델 분석 결과를 재현한 시각화. 레이어가 깊어질수록 SA 출력과 자기 값 벡터의 코사인 유사도가 증가합니다.

이 논문의 선택 — 배타적 어텐션으로 편향 제거

문제 진단이 명확하면, 해결책도 명확합니다. SA 출력에서 자기 값 벡터 방향의 성분을 빼버리면 됩니다. 이것이 Exclusive Self Attention (XSA)의 전부입니다.

핵심 아이디어 SA의 출력 \(y_i\)에서 자기 값 벡터 \(v_i\) 방향으로의 정사영(projection)을 제거합니다. 이렇게 얻은 \(z_i\)는 \(v_i\) 자체도, \(v_i\)와 상관된 문맥 성분도 포함하지 않습니다. 어텐션 유사도 편향이 완전히 제거됩니다.
Standard SA (문제 있음) 입력 xᵢ SA yᵢ (vᵢ 방향 포함) vᵢ 방향이 yᵢ에 남아있음 → FFN 역할 중복 XSA (해결) 입력 xᵢ SA → 투영 제거 zᵢ (순수 문맥) vᵢ 방향 제거 → SA = 순수 문맥 집계 잔차 연결(Residual Connection)이 있으므로 표현력 손실 없음 xᵢ 자체가 SA 출력에 더해지므로, vᵢ 방향을 제거해도 정보는 보존됩니다. FFN은 잔차를 통해 xᵢ를 그대로 받아 위치별 변환을 수행합니다.

보충 정사영(projection)이란? 벡터 \(y\)를 단위 벡터 \(\hat{v}\) 방향으로 투영한 값은 \((y \cdot \hat{v})\hat{v}\)입니다. 이를 \(y\)에서 빼면, \(y\)에서 \(\hat{v}\) 방향 성분이 완전히 제거된 벡터를 얻습니다. 이것이 XSA의 핵심 연산입니다. 직교 보완(orthogonal complement)이라고도 불립니다.

트레이드오프: XSA는 어텐션 출력에서 \(v_i\) 방향 정보를 명시적으로 삭제합니다. 이 정보가 필요하다면 어떻게 될까요? 잔차 연결(residual connection)이 있기 때문에 \(x_i\) 자체가 그대로 다음 레이어로 전달됩니다. FFN은 이 잔차로부터 위치별 변환을 수행할 수 있어, 표현력 손실이 없습니다.

방법론

수식 정의

표준 SA의 정의를 먼저 확인합니다.

\[ q_i = W_q x_i,\quad k_j = W_k x_j,\quad v_j = W_v x_j \] \[ a_{i,j} = \frac{\exp(q_i^T k_j)}{\sum_{j'=1}^{i} \exp(q_i^T k_{j'})},\quad y_i = \sum_{j=1}^{i} a_{i,j} v_j \]
변수의미비고
W_q, W_k, W_v쿼리, 키, 값 선형 투영 행렬학습 파라미터
q_i, k_j, v_ji번째 위치의 쿼리, j번째 위치의 키·값헤드별 분리
a_{i,j}i→j 어텐션 점수 (softmax 정규화)인과적: j ≤ i만 참조
y_iSA 출력 (가중 합산된 값 벡터)vᵢ 방향 편향 존재

직관적 해설

쿼리 \(q_i\)는 "나는 무엇을 찾고 있나?"를 나타내고, 키 \(k_j\)는 "나는 무엇을 제공할 수 있나?"를 나타냅니다. 두 벡터의 내적이 클수록 해당 위치 \(j\)에 높은 어텐션 점수가 할당되고, 그 값 \(v_j\)가 출력 \(y_i\)에 많이 반영됩니다. 그러나 \(j=i\)일 때(자기 자신) 어텐션 점수가 상대적으로 높고 \(v_i\)도 다른 \(v_j\)들과 양의 상관관계를 가지므로, \(y_i\)가 \(v_i\)를 많이 닮게 됩니다.

수학적 배경

Softmax 정규화로 인해 \(\sum_j a_{i,j} = 1\), 즉 값들의 볼록 조합(convex combination)입니다. 모든 \(v_j\)가 같은 방향을 향하는 경향이 있다면, 그 볼록 조합도 같은 방향을 향하게 됩니다. 특히 \(a_{i,i}\)가 크면 \(y_i \approx v_i\)가 됩니다.

이제 XSA의 추가 단계를 정의합니다. 앞의 SA 연산은 그대로 유지하고, 마지막 단계만 바꿉니다.

\[ z_i = y_i - \left(y_i^T v_i\right) \frac{v_i}{\|v_i\|_2^2} \]
변수의미비고
y_i표준 SA의 출력vᵢ 방향 편향 있음
v_i자기 자신(i번째 위치)의 값 벡터정규화 기준
(y_iᵀ v_i) / ‖v_i‖²y_i의 v_i 방향 스칼라 투영 계수그람-슈미트 직교화와 동일
z_iXSA 출력. v_i와 직교(orthogonal)함어텐션 유사도 편향 = 0

직관적 해설

\(y_i\)를 \(v_i\) 방향 성분과 그에 수직인 성분으로 분리합니다. XSA는 \(v_i\) 방향 성분을 버리고 수직 성분만 남깁니다. 결과로 얻은 \(z_i\)는 \(v_i\)와 완전히 직교하므로, 자기 위치의 정보는 일절 포함하지 않습니다. 어텐션은 이제 진정한 의미의 "다른 위치에서 온 정보"만을 전달합니다.

수학적 유도

\(y_i\)를 \(v_i\) 방향 단위 벡터 \(\hat{v}_i = v_i / \|v_i\|\)에 대해 분해하면: \[ y_i = \underbrace{(y_i^T \hat{v}_i)\hat{v}_i}_{\text{v}_i\text{ 방향 성분}} + \underbrace{y_i - (y_i^T \hat{v}_i)\hat{v}_i}_{\text{직교 성분}} \] XSA는 직교 성분만 남기므로 \(z_i = y_i - (y_i^T \hat{v}_i)\hat{v}_i\)입니다. 이를 정리하면: \(z_i = y_i - (y_i^T v_i) v_i / \|v_i\|_2^2\). 이는 그람-슈미트 직교화 과정과 동일합니다. 결과적으로 \(z_i^T v_i = 0\)이 항상 성립합니다.

알고리즘 코드 (PyTorch)

XSA는 표준 SA에 단 두 줄의 코드를 추가하는 것으로 구현됩니다. 아래에서 단계별로 살펴봅니다.

스텝 1 / 5
def exclusive_self_attention(x, Wq, Wk, Wv, Wo, H):
    B, T, D = x.shape
    Q = (x @ Wq).reshape(B, T, H, D // H).transpose(1, 2)
    K = (x @ Wk).reshape(B, T, H, D // H).transpose(1, 2)
    V = (x @ Wv).reshape(B, T, H, D // H).transpose(1, 2)
    Y = torch.nn.functional.scaled_dot_product_attention(Q, K, V, is_causal=True)
    Vn = torch.nn.functional.normalize(V, dim=-1)          # ← XSA 추가 ①
    Z = Y - (Y * Vn).sum(dim=-1, keepdim=True) * Vn        # ← XSA 추가 ②
    out = Z.transpose(1, 2).reshape(B, T, D) @ Wo
    return out
        

구현 세부사항 및 학습 설정

항목설정값비고
코드베이스NanoGPT재현 용이성
위치 인코딩RoPE학습된 PE 대체
추가 LayerNorm토큰 임베딩 직후학습 안정성 향상
데이터셋FineWeb-100BT (~100B 토큰)GPT-2 토크나이저
배치 크기256 (글로벌), 0.5M 토큰/배치
학습 반복200K iterations (≈100B 토큰)1 epoch
옵티마이저AdamWlr warmup 2K steps
학습률 스케줄코사인 감쇠, 최솟값 = max_lr / 10
컨텍스트 길이기본 2048 (최대 16384까지 실험)
수치 정밀도bfloat16B200 GPU
모델 크기레이어 수d_model헤드 수d_head학습률
0.7B24153662565.0 × 10⁻⁴
1.4B242048241284.0 × 10⁻⁴
2.7B322560241283.0 × 10⁻⁴

보충 논문에서 학습률은 베이스라인에 대해 그리드 서치로 찾고, XSA에도 동일한 학습률을 사용합니다. 즉 XSA가 별도의 하이퍼파라미터 튜닝 없이도 성능 이득을 얻는지 공정하게 비교합니다.

인터랙티브 데모 — 직교 분해 체험

슬라이더를 조작해 y_i와 v_i의 각도를 바꾸면서, XSA가 어떻게 v_i 방향 성분을 제거하는지 확인하세요.

결과

+1.36
평균 정확도 향상 (%p)
2.7B 모델, 8개 다운스트림 태스크
2줄
코드 변경
표준 SA에 추가하는 코드 수
≈0%
추가 연산 오버헤드
속도·메모리 모두 미미한 증가

학습/검증 손실 (모델 크기별)

세 가지 모델 크기(0.7B, 1.4B, 2.7B) 모두에서 XSA가 SA를 일관되게 앞섭니다. 모델이 클수록 격차도 커지는 경향을 보입니다.

다운스트림 평가 (8개 태스크)

ARC-Easy, BoolQ, HellaSwag, LAMBADA, OpenBookQA, PIQA, SocialIQA, WinoGrande 8개 태스크에서 평균 정확도를 비교합니다.

모델방법ARC-EBoolQHSwagLAMBADAOBQAPIQASocIQAWinoGr평균
0.7B Baseline 51.2661.0755.6852.8235.0074.0540.0255.8853.22
XSA 52.6961.1956.2954.0732.2073.7841.4556.2053.48 (+0.26)
1.4B Baseline 56.1965.4760.6956.2434.6075.9041.4058.8056.16
XSA 58.8462.2962.4158.5736.0076.6142.8459.9857.19 (+1.03)
2.7B Baseline 58.5960.9866.2060.1837.0076.6142.9461.9658.06
XSA 60.6564.8667.4062.0438.4077.8041.4562.7559.42 (+1.36)

시퀀스 길이에 따른 이득 (1.4B 모델)

특히 주목할 만한 결과입니다. 시퀀스가 길어질수록 XSA의 이득이 더 커집니다. 512에서는 이득이 작지만, 16384에서는 격차가 뚜렷해집니다.

핵심 발견 시퀀스가 길수록 문맥 모델링의 부담이 증가하는데, XSA는 어텐션이 순수하게 문맥에만 집중하도록 강제하므로 긴 시퀀스에서 이득이 더 두드러집니다. 이는 XSA가 장문맥 Transformer 스케일링에 유망한 기법임을 시사합니다.

학습률 견고성 (1.4B 모델)

1e-4부터 6e-4까지 4가지 학습률에서 XSA는 Baseline 대비 일정한 마진을 유지합니다. 특정 학습률에서만 유효한 효과가 아닙니다.

한계점 & 열린 질문들

한계 1 더 큰 규모에서의 검증 부재. 실험은 최대 2.7B 파라미터, 100B 토큰 학습에 그칩니다. 10B, 100B+ 규모의 모델과 조 단위 토큰 학습에서도 이득이 유지되는지는 미검증입니다.
한계 2 언어 모델링 외 태스크 검증 부재. 비전 Transformer, 멀티모달 모델, 음성 모델 등 다른 모달리티에서도 효과적인지 알 수 없습니다.
한계 3 다른 옵티마이저와의 호환성 미확인. 모든 실험은 AdamW로만 수행됐습니다. Muon 등 최신 옵티마이저와 조합했을 때의 효과는 열린 질문입니다.
한계 4 이론적 근거 부재. 논문은 경험적 검증을 주요 정당화 근거로 삼으며, "이론적 근거를 제공하는 것도 가능하지만 이 논문에서는 미루겠다"고 명시합니다. 왜 효과적인지에 대한 이론적 이해가 부족합니다.

평가 한계 4는 중요한 지적입니다. XSA가 "단순히 정규화 효과를 주는 것"인지, "진정으로 역할 분리를 이루는 것"인지 구분하려면 이론적 분석이 필요합니다. 향후 연구에서 해석 가능성(interpretability) 관점의 분석이 기대됩니다.

영향력 & 후속 연구

XSA는 구현이 극히 단순하면서도 일관된 성능 이득을 보이기 때문에, 실용적 파급력이 클 수 있습니다.

실용적 기여 단 두 줄의 코드로 기존 Transformer 학습 파이프라인에 적용 가능하며, 추가 파라미터나 연산 비용 없이 성능 이득을 얻습니다. 특히 긴 시퀀스 모델링이 중요한 RAG, 코드 생성, 장문 요약 등에서 잠재적 효과가 큽니다.

Q&A — 연구자의 고민과 독자의 질문

Q. vᵢ 방향을 제거하면 표현력이 손실되지 않나요?

논문이 핵심적으로 다루는 질문입니다. 표현력이 손실되지 않는 이유는 잔차 연결 때문입니다.

"in the presence of residual connections and the FFN block, XSA 1) maintains the expressiveness of standard SA and 2) promotes modeling efficiency"

Transformer의 각 레이어는 \(\text{output} = x + \text{Attn}(x) + \text{FFN}(x)\) 형태입니다. \(x\) 자체가 잔차로 전달되기 때문에, 어텐션 출력에서 \(v_i\)(즉 \(x_i\)를 선형 변환한 것)의 방향을 제거해도 FFN이 잔차에서 해당 정보를 그대로 활용할 수 있습니다.

Q. Attention Sink와 어떤 관계인가요?

Attention Sink [Xiao et al., 2023]는 시퀀스 앞에 특별한 "싱크 토큰"을 추가해 불필요한 어텐션을 흡수합니다. XSA는 다른 방식으로 유사한 효과를 냅니다.

XSA에서는 어텐션이 \(v_i\) 방향을 향하지 않아도 되므로, 대각 어텐션 점수 \(a_{i,i}\)가 "싱크" 역할을 자연스럽게 할 수 있습니다. 즉 암묵적 Attention Sink처럼 작동합니다.

실험에서 XSA에 명시적 Attention Sink를 추가해도 성능 마진이 유지되므로, 두 기법은 독립적으로 기여합니다.

Q. 0.7B에서 이득이 작고(+0.26), 2.7B에서 이득이 크다(+1.36)는 게 의미하는 것은?

저자는 이를 근거로 "더 큰 규모에서도 XSA가 유리할 것"이라고 추정합니다. 모델이 클수록 SA와 FFN의 용량 경쟁이 더 뚜렷하게 나타나기 때문에, 역할 분리의 이득도 커지는 것으로 해석할 수 있습니다.

평가 단, 이는 2.7B까지의 스케일링 추세를 외삽한 추론이며, 수십B 규모에서도 같은 패턴이 성립하는지는 직접 실험이 필요합니다.

Q. 기존 학습된 모델에 XSA를 사후 적용할 수 있나요?

평가 논문은 이 질문을 다루지 않습니다. XSA는 어텐션 출력 후처리이기 때문에 이론적으로 사전 학습된 모델에 적용 후 파인튜닝할 수는 있지만, 처음부터 XSA로 학습한 것과 동일한 이득을 얻을지는 불확실합니다. 모델 가중치가 표준 SA 기반으로 최적화되었기 때문입니다.

Q. GQA(Grouped Query Attention), MLA 등 다른 어텐션 변형과 함께 쓸 수 있나요?

평가 XSA의 핵심 연산은 어텐션 계산 방식이 아닌 출력에서의 투영 제거이므로, GQA나 MLA와 독립적으로 결합 가능합니다. 다만 GQA에서는 키·값이 여러 쿼리 헤드에 공유되므로 "자기 위치의 값 벡터" 정의가 약간 달라질 수 있어, 실험적 검증이 필요합니다.