어텐션 메커니즘 (Attention Mechanism)¶
개요¶
어텐션 메커니즘(Attention Mechanism)은 시퀀스 처리에서 "관련된 부분에 집중"하는 능력을 모델에 부여한다. Seq2Seq 모델이 전체 입력을 고정 길이 벡터로 압축해야 하는 정보 병목을 해결하기 위해 등장하였으며, 이후 Transformer의 핵심 구성 요소로 발전하여 현대 딥러닝의 근간이 되었다.
핵심 개념¶
1. 동기 (Motivation)¶
Seq2Seq 모델의 한계: 디코더가 인코더의 마지막 은닉 상태만을 사용하므로, 긴 시퀀스에서 초반 정보가 소실된다.
직관: "번역할 때 전체 문장을 한 번에 기억하는 게 아니라, 관련 부분을 그때그때 참조한다."
어텐션은 디코더가 인코더의 모든 hidden state에 접근하여, 현재 생성할 토큰과 가장 관련 있는 부분에 가중치를 부여한다.
2. Bahdanau Attention (Additive Attention)¶
Bahdanau et al. (2015)이 제안한 최초의 어텐션 메커니즘이다.
에너지 함수: $\(e_{ij} = v^T \tanh(W_1 h_i^{enc} + W_2 h_j^{dec})\)$
어텐션 가중치: $\(\alpha_{ij} = \text{softmax}(e_{ij})\)$
컨텍스트 벡터: $\(c_j = \sum_{i} \alpha_{ij} h_i^{enc}\)$
디코더의 각 단계 \(j\)에서 인코더의 어떤 위치 \(i\)에 "주목"할지를 학습한다.
3. Luong Attention (Multiplicative Attention)¶
Luong et al. (2015)이 제안한 변형이다.
| 변형 | 에너지 함수 |
|---|---|
| Dot | \(e_{ij} = (h_j^{dec})^T h_i^{enc}\) |
| General | \(e_{ij} = (h_j^{dec})^T W h_i^{enc}\) |
| Concat | \(e_{ij} = v^T \tanh(W[h_j^{dec}; h_i^{enc}])\) |
Dot-product 방식이 계산 효율이 높고, 성능도 비슷하다.
4. Scaled Dot-Product Attention¶
Transformer에서 사용되는 어텐션의 핵심이다.
- \(Q\) (Query): "무엇을 찾고 있는가"
- \(K\) (Key): "무엇을 가지고 있는가" (색인)
- \(V\) (Value): "실제 정보"
왜 \(\sqrt{d_k}\)로 나누는가:
\(d_k\)가 크면 내적 값이 커져 softmax가 포화된다. 독립 성분을 가정하면:
\(\sqrt{d_k}\)로 나누어 분산을 1로 유지하면 softmax의 기울기가 안정적으로 유지된다.
직관 — 데이터베이스 검색 비유: 1. Query로 검색 요청 2. Key와 Query의 유사도(점수) 계산 3. 점수에 따라 Value를 가중 합산하여 결과 반환
5. Multi-Head Attention¶
- 각 head가 다른 관계 패턴을 학습 (구문적 관계, 의미적 관계, 위치 관계 등)
- \(d_k = d_{model} / h\)로 설정하여, 총 계산량은 single-head와 동일
graph TD
QKV["Q, K, V"] --> split["Linear 투영 × h"]
split --> h1["Head 1<br>Attention"]
split --> h2["Head 2<br>Attention"]
split --> h3["..."]
split --> hh["Head h<br>Attention"]
h1 --> concat["Concat"]
h2 --> concat
h3 --> concat
hh --> concat
concat --> linear["Linear W^O"]
linear --> out["출력"] 6. Self-Attention¶
Q, K, V가 모두 같은 시퀀스에서 유래한다.
장점: 시퀀스 내 모든 위치 간 직접적 연결 → 경로 길이 \(O(1)\) (RNN은 \(O(n)\))
계산 복잡도: \(O(n^2 d)\) — 시퀀스 길이 \(n\)에 대해 이차적
Masked Self-Attention: 자기회귀(autoregressive) 생성에서 미래 토큰 참조를 방지한다. attention score 행렬의 상삼각 부분을 \(-\infty\)로 설정하여 softmax 후 0이 되게 한다.
7. Cross-Attention¶
Q는 디코더에서, K와 V는 인코더에서 유래한다.
사용처: 번역 (Transformer decoder), 이미지 캡셔닝, 멀티모달 모델 (텍스트-이미지)
8. Efficient Attention 변형¶
| 변형 | 복잡도 | 핵심 아이디어 |
|---|---|---|
| Standard | \(O(n^2 d)\) | 전체 attention 행렬 계산 |
| Linear Attention | \(O(n d^2)\) | softmax를 커널 함수로 대체 |
| Sparse Attention | \(O(n\sqrt{n})\) | 일부 위치 쌍에만 attention |
| Flash Attention | \(O(n^2 d)\) (같지만 빠름) | IO-aware 메모리 최적화 |
Flash Attention: 정확한(exact) attention을 계산하면서, GPU의 메모리 계층(SRAM/HBM)을 고려한 타일링(tiling) 기법으로 메모리와 속도를 크게 개선한다. 근사가 아닌 정확한 계산이라는 점이 핵심이다.
Sparse Attention: - Longformer: 지역(local) + 전역(global) 패턴 조합 - BigBird: random + window + global 패턴
상세 내용¶
Attention Weight 시각화¶
어텐션 가중치를 히트맵으로 시각화하면 모델이 어떤 부분에 "주목"하는지 확인할 수 있다. 예를 들어, 기계 번역에서 소스 언어의 어떤 단어가 타겟 언어의 각 단어와 대응되는지 볼 수 있다.
그러나 주의할 점: attention weight가 반드시 "설명(explanation)"을 의미하지는 않는다 (Jain & Wallace, 2019). 해석 도구로 사용할 때는 신중해야 한다.
Attention as Soft Dictionary Lookup¶
어텐션은 "부드러운(soft) 사전 검색"으로 볼 수 있다:
- Hard lookup: key가 정확히 일치하는 하나의 value 반환
- Soft lookup: 모든 key와의 유사도에 따라 value를 가중 합산하여 반환
이 관점은 메모리 네트워크(Memory Networks), Retrieval-Augmented Generation(RAG) 등으로 확장된다.
언제 사용하는가¶
| 어텐션 유형 | 사용처 |
|---|---|
| Self-Attention | Transformer 인코더/디코더 |
| Masked Self-Attention | 자기회귀 생성 (GPT) |
| Cross-Attention | 인코더-디코더 모델, 멀티모달 |
| Additive Attention | RNN 기반 Seq2Seq (구식) |
| Efficient Attention | 긴 시퀀스 처리 (문서, 유전체 등) |
흔한 오해와 함정¶
-
"어텐션 = 설명 가능성": attention weight가 높다고 해서 모델이 그 부분을 "이해"하는 것은 아니다. 설명 가능성을 위해서는 별도의 분석이 필요하다.
-
Scaling factor 누락: \(\sqrt{d_k}\)로 나누지 않으면 softmax가 포화되어 기울기가 매우 작아진다. 특히 \(d_k\)가 큰 경우 학습이 실패할 수 있다.
-
Attention mask 설정 오류: padding mask와 causal mask를 정확히 설정하지 않으면 패딩 토큰에 어텐션이 가거나, 미래 토큰을 참조하는 문제가 발생한다.
-
\(O(n^2)\) 복잡도 무시: 시퀀스 길이가 길어질수록 메모리와 계산이 이차적으로 증가한다. 긴 시퀀스에서는 efficient attention 변형을 고려해야 한다.
-
Single-head로 충분하다는 생각: Multi-Head Attention은 다양한 관계 패턴을 동시에 학습하므로, head 수를 줄이면 표현력이 제한된다.
다른 주제와의 연결¶
- RNN/LSTM/GRU: Seq2Seq의 정보 병목 → 어텐션의 등장 동기
- Transformer: Self-Attention + Multi-Head Attention이 핵심
- 활성화 함수: Softmax의 역할
- 생성 모델: Cross-Attention이 Diffusion Model에서 사용
- LLM: KV-Cache, Flash Attention
- 윤리적 AI: Attention의 설명 가능성 한계