멀티-헤드 인코더-디코더 어텐션은 트랜스포머 디코더의 "두 번째 어텐션 층"에 위치하며, 디코더가 출력 단어를 생성할 때 인코더의 입력 문장 전체를 참고할 수 있게 해주는 핵심 다리 역할을 합니다.
이는 "크로스-어텐션(Cross-Attention)"이라고도 불립니다.
앞서 설명한 '셀프 어텐션'은 문장 내부의 관계를 파악하는 것이 목적이었다면, 이 '인코더-디코더 어텐션'은 서로 다른 두 문장(입력 문장과 출력 문장) 간의 관계를 파악하는 것이 목적입니다.
핵심 차이점: Q, K, V의 출처
가장 큰 차이점은 Query(Q), Key(K), Value(V)를 가져오는 위치입니다.
- Query (Q): 디코더의 이전 층(Masked Self-Attention 층)에서 옵니다.
- 의미: "내가 지금 번역/생성하려는 이 단어(Q)는..."
- Key (K) & Value (V): 인코더의 최종 출력(입력 문장 전체의 문맥 정보)에서 옵니다.
- 의미: "...입력 문장의 어떤 단어들(K, V)과 가장 관련이 깊지?"
멀티-헤드 인코더-디코더 어텐션의 구조
작동 방식은 멀티-헤드 셀프 어텐션과 거의 동일하지만, Q, K, V의 출처가 다르다는 점만 기억하면 됩니다. (헤드 개수 $h=8$로 가정)
1단계: 입력 프로젝션 (Projection)

- Q 생성: 디코더의 이전 층 출력을 8개의 헤드용 $W^Q$ 행렬들과 곱하여 $Q_1, \dots, Q_8$을 만듭니다.
- K, V 생성: 인코더의 최종 출력을 8개의 헤드용 $W^K$, $W^V$ 행렬들과 곱하여 $K_1, \dots, K_8$과 $V_1, \dots, V_8$을 만듭니다.
2단계: 병렬 어텐션 계산 (Parallel Attention)


- 8개의 헤드가 독립적으로 스케일드 닷-프로덕트 어텐션을 계산합니다.
- 각 헤드는 "디코더의 현재 상태(Q)"가 "인코더의 전체 정보(K, V)" 중 어느 부분에 집중해야 할지 계산하여 출력($Z_i$)을 만듭니다.
$$\text{Head}_i = \text{Attention}(Q_i, K_i, V_i) = \text{softmax}\left(\frac{Q_i K_i^T}{\sqrt{d_k}}\right)V_i$$
결합 (Concatenation)
- 8개의 헤드가 계산한 출력 행렬($Z_1$ ~ $Z_8$)을 다시 하나의 큰 행렬로 이어 붙입니다.
최종 프로젝션 (Final Projection)
- 결합된 행렬을 최종 출력 가중치 행렬 $W^O$와 곱하여, 디코더의 다음 층(Feed-Forward Network)으로 전달될 최종 결과물을 만듭니다.
예시: 번역 작업
"I am a student" (입력) $\rightarrow$ "Je suis un étudiant" (출력)
- 디코더가 "Je"를 생성했습니다.
- 이제 디코더는 "suis"를 생성하려고 합니다. 이때 Q는 "Je 다음 단어"에 대한 정보를 담고 있습니다.
- 디코더의 인코더-디코더 어텐션 층이 작동합니다.
- Q: "Je 다음 단어" (from Decoder)
- K, V: "I", "am", "a", "student"의 문맥 정보 (from Encoder)
- 어텐션 계산:
- "Je 다음 단어"(Q)는 "I", "am", "a", "student"(K) 중 "am"과 가장 연관성 점수가 높게 계산됩니다.
- Head 1은 이 "am"의 정보(V)를 강하게 반영합니다. (직접적인 번역 관계)
- Head 2는 "Je"(주어)가 "I"(주어)와 관련 있으므로, "I"에 대한 정보(V)도 일부 반영할 수 있습니다. (문법적 일치 관계)
- 최종적으로 "am"의 정보가 가장 강하게 반영된 출력(Z)이 생성되어, 디코더가 다음 단어로 "suis"를 선택할 확률이 높아집니다.
이처럼 멀티-헤드 인코더-디코더 어텐션은 디코더가 매 순간 입력 문장의 가장 관련 있는 부분에 "집중"하여 정확한 출력을 생성하도록 돕는, 트랜스포머의 핵심적인 번역 및 요약 엔진입니다.
'인공지능 > 트랜스포머 이해' 카테고리의 다른 글
| TR-06. 트랜스포머 디코더(Decoder) (0) | 2025.10.23 |
|---|---|
| TR-05. 트랜스포머 인코더(Encoder) (0) | 2025.10.23 |
| TR-03. 멀티-헤드 마스크드 셀프 어텐션(Multi-head Masked Self Attention) (0) | 2025.10.11 |
| TR-02. 멀티-헤드 셀프 어텐션(Multi-head Self Attention) (0) | 2025.10.11 |
| TR-01. 어텐션(Attention) 함수 (0) | 2025.10.11 |