멀티-헤드 마스크드 셀프 어텐션은 트랜스포머 디코더의 첫 번째 하위 계층에서 사용되는 메커니즘입니다.
핵심 기능은 문장을 생성할 때, 모델이 "미래의" 정답 단어를 미리 훔쳐보지 못하도록(cheating) 방지하는 것입니다.
1. 왜 "Masked"가 필요한가?
트랜스포머의 디코더는 자기회귀적(Autoregressive) 방식으로 작동합니다. 즉, 한 단어씩 순차적으로 문장을 생성합니다.
- 예: "나는" $\rightarrow$ (다음 단어 예측) $\rightarrow$ "학생" $\rightarrow$ (다음 단어 예측) $\rightarrow$ "이다"
"학생"이라는 단어를 예측해야 하는 시점(Time Step 2)에서, 모델이 정답인 "학생"이나 그 뒤에 올 "이다"라는 정보를 미리 본다면, 그건 예측이 아니라 단순한 복사가 됩니다.
따라서 현재 단어를 예측할 때는 오직 이전에 생성된 단어들만 참고해야 합니다. "마스킹(Masking)"은 바로 이 "미래 정보 차단"을 수행합니다.
2. "Masked Self-Attention"은 어떻게 작동하나?
- "Self-Attention": 인코더-디코더 어텐션과 달리, Q, K, V가 모두 디코더 자신의 이전 층 출력에서 나옵니다.
- 의미: 디코더가 지금까지 생성한 단어들 사이의 내부 문맥을 파악합니다.
- "Masked": 이 셀프 어텐션 계산 과정(정확히는 Softmax 직전)에 "마스크"가 개입합니다.
작동 4단계 (싱글 헤드 기준)
1. 점수(Score) 계산: $QK^T$를 통해 어텐션 점수 행렬을 계산합니다.
- 예: "나는 학생 이다"라는 3개 단어 시퀀스가 있다면, 3x3 점수 행렬이 나옵니다.
2. 마스킹(Masking) 적용:
- "룩-어헤드 마스크(Look-Ahead Mask)"라는 행렬을 준비합니다. 이 행렬은 현재 위치보다 "미래"에 있는 위치(주대각선 위쪽)는 0, 나머지는 1로 채워져 있습니다. (실제로는 0 대신 $-\infty$를 사용합니다.)
- 이 마스크를 어텐션 점수 행렬에 적용(덧셈 연산)합니다.
- 결과: "미래" 위치에 해당하는 점수들은 모두 $-\infty$ (혹은 아주 큰 음수)가 됩니다.
[마스킹 전 점수]
| '나는' | '학생' | '이다'
---------------------------
'나는' | 5.2 | 1.3 | 0.8
'학생' | 2.1 | 4.5 | 3.1
'이다' | 1.7 | 2.2 | 6.0
[마스킹 적용 후 점수]
| '나는' | '학생' | '이다'
---------------------------
'나는' | 5.2 | -∞ | -∞ <- '나는'은 '학생', '이다'를 못 봄
'학생' | 2.1 | 4.5 | -∞ <- '학생'은 '이다'를 못 봄
'이다' | 1.7 | 2.2 | 6.0 <- '이다'는 모든 과거를 볼 수 있음
3. 가중치(Weight) 계산 (Softmax):
- 마스킹된 점수 행렬에 Softmax를 적용합니다.
- $e^{-\infty}$는 0에 수렴합니다.
- 결과: 미래 단어들에 대한 어텐션 가중치는 0이 됩니다. 즉, "참조하지 않음"이 됩니다.
[최종 가중치]
| '나는' | '학생' | '이다'
---------------------------
'나는' | 1.0 | 0.0 | 0.0
'학생' | 0.2 | 0.8 | 0.0
'이다' | 0.15 | 0.25 | 0.6
4. 최종 출력(Output) 계산: 이 가중치와 $V$ 행렬을 곱하여 최종 출력을 얻습니다.
3. "멀티-헤드"의 역할
멀티-헤드 마스크드 셀프 어텐션은 위의 1~4번 과정을 여러 개의 헤드(예: 8개)로 나누어 병렬로 처리합니다.
- 디코더가 지금까지 생성한 문장("나는 학생")을 입력받습니다.
- 8개의 헤드가 각자 다른 관점으로 이 문장 내부의 관계를 (마스킹된 채로) 학습합니다.
- Head 1: "학생"이 "나는"이라는 주어와 어떤 문법적 관계를 맺는지 학습.
- Head 2: "학생"이 "나는"이라는 단어와 의미적으로 얼마나 가까운지 학습.
- 각 헤드의 출력($Z_1, \dots, Z_8$)을 결합(Concatenate)하고 최종 프로젝션($W^O$)을 거쳐 디코더의 다음 층(인코더-디코더 어텐션 층)으로 전달합니다.
요약
멀티-헤드 마스크드 셀프 어텐션은 디코더가 과거 정보(이미 생성한 단어들)만을 바탕으로, 그것도 다양한 관점(멀티-헤드)에서 현재 단어의 문맥을 풍부하게 파악하도록 돕는 필수적인 장치입니다.
'인공지능 > 트랜스포머 이해' 카테고리의 다른 글
| TR-06. 트랜스포머 디코더(Decoder) (0) | 2025.10.23 |
|---|---|
| TR-05. 트랜스포머 인코더(Encoder) (0) | 2025.10.23 |
| TR-04. 멀티-헤드 인코더-디코더 어텐션(Multi-head Encoder-Decoder Attention) (0) | 2025.10.22 |
| TR-02. 멀티-헤드 셀프 어텐션(Multi-head Self Attention) (0) | 2025.10.11 |
| TR-01. 어텐션(Attention) 함수 (0) | 2025.10.11 |