Encoder가 입력 문장을 문맥화된 표현으로 바꾸면 Decoder는 이를 참고해 출력 토큰을 한 개씩 만든다. 학습 중에는 정답 문장을 알고 있지만 추론 중에는 미래 단어를 볼 수 없다. Transformer Decoder의 설계는 이 차이를 정확히 통제한다.
Causal Mask와 Cross-Attention을 거쳐 Next Token을 생성하는 Transformer Decoder

1. Masked Multi-Head Self-Attention
Decoder의 첫 블록은 Masked Multi-Head Self-Attention이다. 각 위치는 자신과 그 이전 토큰만 볼 수 있고 미래 토큰은 볼 수 없다.
Attention Score 행렬에서 미래 위치에 매우 작은 값, 실무에서는 보통 -∞에 해당하는 값을 더한다. Softmax를 통과하면 그 위치의 가중치가 0이 된다. 이를 Causal Mask 또는 Look-ahead Mask라고 한다.
Target 길이가 4라면 허용 관계는 아래와 같은 Lower Triangular Matrix가 된다.
Key position
Query 1 2 3 4
1 O X X X
2 O O X X
3 O O O X
4 O O O O
실제 Score에는 허용 위치에 0, 차단 위치에 -∞를 더한다. Mask는 Q나 K 벡터를 삭제하는 것이 아니라 Softmax 직전 Score를 바꾼다. Padding Mask까지 있다면 두 Mask를 결합해야 한다.
학습 때 정답 시퀀스를 한꺼번에 넣더라도 Mask 덕분에 모델은 미래 정답을 훔쳐보지 못한다. 이 구조가 Autoregressive Generation을 학습 가능하게 한다.
2. Encoder-Decoder Attention
Decoder의 두 번째 Attention 블록은 Cross-Attention이라고도 부른다.
- Query: Decoder의 현재 표현
- Key, Value: Encoder의 최종 출력
CrossAttention(Q_decoder, K_encoder, V_encoder)
Decoder가 “지금 만들 단어”의 관점에서 입력 문장의 어떤 부분을 참고할지 결정하는 단계다. 이후 FFN을 통과하며, 각 서브레이어에는 Encoder와 마찬가지로 Residual Connection과 Layer Normalization이 적용된다.
Source 길이가 n, Target 길이가 m이라면 Cross-Attention Score Shape는 m × n이다. Self-Attention의 정사각형 n × n과 다르게 Source와 Target 길이가 달라도 된다. 이 행렬의 각 행은 한 Target 위치가 모든 Source 위치를 얼마나 참고하는지 나타낸다.
3. 학습과 추론의 차이
학습에서는 정답 문장을 한 칸 오른쪽으로 민 Shifted Target을 Decoder 입력으로 사용한다. 모든 위치의 다음 토큰 Loss를 동시에 계산할 수 있다.
추론은 순차적이다.
<sos> → I
<sos> I → am
<sos> I am → an
<sos> I am an → instructor
<sos> I am an instructor → <eos>
각 단계에서 마지막 Linear Layer가 Decoder 표현을 어휘 크기의 Logits로 바꾸고, Softmax가 다음 토큰 확률을 만든다. 가장 큰 값만 고르는 Greedy Decoding 외에도 여러 후보를 유지하는 Beam Search를 사용할 수 있다.
Greedy Decoding은 매 Step의 최선만 선택해 빠르지만, 현재의 최선이 전체 문장의 최선이라는 보장은 없다. Beam Search는 누적 Log Probability가 높은 B개 후보를 유지한다. Beam Width가 커질수록 탐색은 넓어지지만 계산량과 메모리가 증가하고, 짧은 문장을 과도하게 선호할 수 있어 Length Penalty를 함께 사용하기도 한다.
학습 시에는 모든 Target 위치의 정답을 알고 있어 Masked Attention과 Loss 계산을 병렬화할 수 있다. 그러나 추론 시 다음 입력 Token이 직전 출력에 달려 있으므로 Autoregressive Decoding은 기본적으로 순차적이다. Encoder의 병렬성과 Decoder 추론의 직렬성을 구분해야 한다.
4. Dropout과 비선형성
원 Transformer는 여러 위치에서 Dropout = 0.1을 사용한다. Attention Weight, 서브레이어 출력, Embedding과 Positional Encoding의 합 등에 Dropout을 적용해 Overfitting을 줄인다.
Attention 수식 자체에는 ReLU가 없지만 모델 전체가 선형인 것은 아니다. Q와 K의 곱, Softmax, FFN의 Activation이 비선형성을 만든다. 즉, “Attention 블록에 ReLU가 없다”와 “Transformer가 선형 모델이다”는 전혀 다른 말이다.
Perplexity와 BLEU가 평가하는 서로 다른 요소

5. Perplexity (PPL)
언어 모델 평가는 흔히 Perplexity (PPL)를 사용한다. 평균 Negative Log-Likelihood 또는 Cross-Entropy를 지수화한 값으로 볼 수 있다.
PPL = exp(average cross-entropy loss)
PPL이 100이면 모델이 매 순간 평균적으로 100개의 후보 사이에서 헷갈리는 것처럼 해석할 수 있다. 낮을수록 정답 시퀀스에 높은 확률을 준다. 다만 서로 다른 Tokenization이나 데이터셋의 PPL을 단순 비교하면 안 된다.
정답 Token 확률이 각 Step에서 0.5, 0.25라면 평균 Negative Log-Likelihood는 -(log 0.5 + log 0.25)/2이고 PPL은 그 값을 지수화한 √8 ≈ 2.83이다. PPL은 Sequence Probability의 역기하평균이므로 한두 Token에 매우 낮은 확률을 주면 크게 나빠진다.
6. BLEU Score
기계 번역에서는 정답 문장과 생성 문장의 n-gram Precision을 비교하는 BLEU (Bilingual Evaluation Understudy)를 사용한다.
BLEU = BP × exp(Σ w_n log p_n)
p_n: n-gram Precisionw_n: n-gram별 가중치BP: 짧은 번역에 벌점을 주는 Brevity Penalty
동일한 단어를 반복해 점수를 부풀리지 못하도록 정답 문장에 존재하는 횟수까지만 인정하는 Clipped Precision을 쓴다. 말뭉치 전체의 n-gram 일치 수를 합산하는 Corpus BLEU가 일반적이다.
BLEU는 단어 위치가 완전히 같지 않아도 부분 일치를 볼 수 있지만, 의미 보존이나 문장 자연스러움을 완벽히 측정하지는 않는다.
Clipped Precision이 필요한 이유
정답이 “나는 강의를 듣는다”인데 예측이 “나는 나는 나는 나는”이라면 단순 Unigram Precision은 “나는”이 여러 번 맞았다고 과대평가할 수 있다. Clipping은 Reference에 등장한 최대 횟수까지만 일치로 인정한다. 따라서 반복으로 점수를 부풀리는 것을 막는다.
Brevity Penalty가 필요한 이유
짧은 출력은 틀릴 기회가 적어 Precision이 높아지기 쉽다. Candidate 길이 c가 Reference 길이 r보다 짧으면 BP = exp(1-r/c)를 곱해 벌점을 준다. 길이가 충분하면 BP=1이다. BLEU는 n-gram Precision의 기하평균과 길이 벌점을 함께 봐야 한다.
Sentence BLEU와 Corpus BLEU
짧은 한 문장에서는 4-gram 일치가 0이 되어 전체 BLEU가 0이 되기 쉽다. 실제 평가는 여러 문장의 일치 수를 합친 Corpus BLEU를 주로 사용한다. 라이브러리마다 Tokenization, Smoothing, 대소문자 처리 설정이 다르면 점수가 달라질 수 있으므로 설정을 함께 기록해야 한다.
7. 전체 구조 다시 보기
Source Tokens
→ Embedding + Positional Encoding
→ Encoder × N
→ Encoder Memory ─────────────────────┐
↓
Shifted Target → Masked Self-Attention → Cross-Attention → FFN → Logits
강의의 Ablation 결과가 주는 메시지도 기억할 만하다. Head 수, 차원, Dropout, Label Smoothing 같은 선택이 성능에 영향을 주며, Learned Positional Embedding과 Sinusoidal Positional Encoding은 실험에서 큰 차이가 없었다. 구조 하나보다 여러 설계 요소의 균형이 중요하다.
Ablation Study는 모델의 구성 요소를 하나씩 바꾸거나 제거해 성능 변화를 확인한다. 전체 모델끼리의 단순 비교보다 어떤 선택이 실제 개선에 기여했는지 보여 준다. 표를 읽을 때는 Parameter Count, Training Cost, 평가 지표가 함께 변했는지 확인해야 한다.
8. 학습 Loss와 생성 품질은 같은가?
Cross-Entropy와 PPL은 정답 Token에 부여한 확률을 측정한다. 그러나 실제 생성에서는 Decoding Strategy가 개입하고, 하나의 입력에 여러 좋은 답이 있을 수 있다. BLEU도 표현이 다른 올바른 번역을 낮게 평가할 수 있다. 따라서 생성 모델 평가는 자동 지표만으로 끝내지 않고 Human Evaluation, 의미 기반 지표, Task-specific Metric을 함께 보는 것이 안전하다.
전체 흐름 점검
Shifted Target
→ Masked Self-Attention으로 Target Prefix 문맥화
→ Cross-Attention으로 Encoder Memory 참조
→ FFN과 Linear Projection으로 Vocabulary Logits 생성
→ Cross-Entropy로 학습
→ Autoregressive Decoding으로 추론
→ PPL, BLEU 및 사람 평가로 품질 확인
Key Terms
Masked Self-Attention · Causal Mask · Cross-Attention · Shifted Target · Autoregressive Generation · Greedy Decoding · Beam Search · Perplexity · BLEU · Brevity Penalty · Clipped Precision
Self Check
- Decoder 학습에서 정답 문장을 입력하면서도 미래 정보 누출을 막는 장치는 무엇인가?
- Cross-Attention의 Q, K, V는 각각 어디에서 오는가?
- PPL과 BLEU는 모델의 어떤 서로 다른 측면을 평가하는가?
'DL > Transformer' 카테고리의 다른 글
| 4. Self-Attention과 Transformer Encoder 완전 정복 (1) | 2026.09.01 |
|---|---|
| 3. Transformer의 입력 설계 - Token Embedding과 Positional Encoding (0) | 2026.09.01 |
| 2. Seq2Seq의 병목에서 Attention까지 - 왜 문장 전체를 한 벡터에 담으면 안 될까? (0) | 2026.09.01 |
| 1. RNN은 순서를 어떻게 기억할까? - 순차 데이터에서 구조적 한계까지 (0) | 2026.09.01 |