인공지능/트랜스포머 이해

TR-04. 멀티-헤드 인코더-디코더 어텐션(Multi-head Encoder-Decoder Attention)

FedTensor 2025. 10. 22. 15:41

 

멀티-헤드 인코더-디코더 어텐션은 트랜스포머 디코더의 "두 번째 어텐션 층"에 위치하며, 디코더가 출력 단어를 생성할 때 인코더의 입력 문장 전체를 참고할 수 있게 해주는 핵심 다리 역할을 합니다.

이는 "크로스-어텐션(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, K, V 얻기

  • 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)

어텐션 점수 행렬(Attention Score Matrix) 계산
어텐션 값(Attention Value) 계산

  • 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" (출력)

  1. 디코더가 "Je"를 생성했습니다.
  2. 이제 디코더는 "suis"를 생성하려고 합니다. 이때 Q는 "Je 다음 단어"에 대한 정보를 담고 있습니다.
  3. 디코더의 인코더-디코더 어텐션 층이 작동합니다.
    • Q: "Je 다음 단어" (from Decoder)
    • K, V: "I", "am", "a", "student"의 문맥 정보 (from Encoder)
  4. 어텐션 계산:
    • "Je 다음 단어"(Q)는 "I", "am", "a", "student"(K) 중 "am"과 가장 연관성 점수가 높게 계산됩니다.
    • Head 1은 이 "am"의 정보(V)를 강하게 반영합니다. (직접적인 번역 관계)
    • Head 2는 "Je"(주어)가 "I"(주어)와 관련 있으므로, "I"에 대한 정보(V)도 일부 반영할 수 있습니다. (문법적 일치 관계)
  5. 최종적으로 "am"의 정보가 가장 강하게 반영된 출력(Z)이 생성되어, 디코더가 다음 단어로 "suis"를 선택할 확률이 높아집니다.

이처럼 멀티-헤드 인코더-디코더 어텐션은 디코더가 매 순간 입력 문장의 가장 관련 있는 부분에 "집중"하여 정확한 출력을 생성하도록 돕는, 트랜스포머의 핵심적인 번역 및 요약 엔진입니다.