Part 7 · Transformer Architecture - Why Masking Is Necessary

미래 단어를 왜 가려야 할까

문장을 생성하는 모델은 아직 만들어지지 않은 미래 단어를 미리 볼 수 없어야 합니다. Masked Self-Attention은 Decoder가 현재까지 생성한 정보만 이용하도록 하여 실제 문장 생성과 같은 환경에서 학습하도록 만듭니다.

A Strange Question

아직 만들지 않은 단어를 미리 볼 수 있다면?

?
Decoder는 문장을 한 토큰씩 만들어 갑니다. 그런데 다음 토큰을 예측할 때 뒤에 올 정답을 미리 볼 수 있다면, 그것을 정말 예측이라고 부를 수 있을까요?

문장을 생성할 때 Decoder는 앞에서 만든 내용을 바탕으로 다음 토큰을 결정해야 합니다. 아직 생성하지 않은 토큰은 존재하지 않는 것처럼 다뤄야 합니다.

Masked Self-Attention의 목적은 단순합니다. 현재 위치보다 뒤에 있는 미래 토큰을 보지 못하게 하는 것입니다.
One Token at a Time

Decoder는 문장을 한 번에 완성하지 않는다

“나는 이 책을 좋아한다”라는 문장도 실제 생성 과정에서는 아래처럼 조금씩 만들어집니다.

1 나는 다음 토큰은?
2 나는 이 다음 토큰은?
3 나는 이 책을 다음 토큰은?
4 나는 이 책을 좋아한다
각 단계에서 Decoder가 볼 수 있는 것은 이미 만들어진 앞쪽 토큰뿐입니다. 뒤쪽 토큰은 아직 생성되지 않았으므로 참고해서는 안 됩니다.
The Test Analogy

미래 토큰을 보는 것은 답안지를 미리 보는 것과 같다

📝

시험 문제

정답을 스스로 생각해야 합니다.

나는 이 책을 ______.
→
🔓

미리 열린 답안지

정답이 이미 보입니다.

좋아한다
정답을 보고 그대로 말하는 것은 예측이 아닙니다. Decoder도 학습할 때 미래 토큰을 볼 수 있다면 다음 토큰을 예측하는 방법을 제대로 배우기 어렵습니다.
Mask On · Mask Off

그래서 미래 토큰을 가린다

현재 “책을”까지 보고 다음 토큰을 예측하는 상황입니다. 버튼을 눌러 Mask가 있을 때와 없을 때를 비교해 보세요.

나는
이
책을
좋아한다
Mask가 꺼져 있어 미래 토큰 ‘좋아한다’가 보입니다.
미래 토큰이 보이면 Decoder는 정답을 미리 확인할 수 있습니다.
Visibility by Position

현재 위치에 따라 볼 수 있는 범위가 달라진다

Decoder는 현재 토큰과 그 앞쪽 토큰만 볼 수 있습니다. 왼쪽의 위치를 선택해 각 단계에서 어떤 토큰이 보이는지 확인해 보세요.

“나는”을 처리하는 순간

나는
현재 위치에서는 “나는”만 볼 수 있습니다.
현재 토큰까지는 볼 수 있기 때문에 정확히 말하면 현재 위치와 그 이전 위치에만 Attention을 보낼 수 있습니다.
Why the Mask Matters

Mask가 없을 때와 있을 때의 차이

✕

미래를 볼 수 있다면

정답 토큰을 미리 참고하게 됩니다. 학습할 때는 잘 맞히는 것처럼 보여도 실제 생성 상황과 조건이 달라집니다.

✓

미래를 가린다면

이미 생성된 앞쪽 토큰만으로 다음 토큰을 예측합니다. 실제 문장 생성과 같은 조건에서 학습할 수 있습니다.

Mask는 Decoder가 편법을 쓰지 못하게 막습니다. 그래야 실제 생성 상황처럼 과거와 현재 정보만으로 다음 토큰을 예측할 수 있습니다.
Encoder Attention vs Decoder Attention

Encoder의 Self-Attention과 무엇이 다를까?

Encoder의 Self-Attention

입력 문장은 이미 모두 주어져 있으므로 전체 토큰을 함께 볼 수 있습니다.

A ↔ B ↔ C ↔ D

Decoder의 Masked Self-Attention

문장을 생성 중이므로 현재 위치보다 뒤쪽 토큰은 볼 수 없습니다.

A
AB
ABC
Summary

핵심 정리

  • Decoder는 문장을 한 토큰씩 생성합니다.
  • 현재 위치보다 뒤에 있는 토큰은 아직 생성되지 않은 미래입니다.
  • 미래 토큰을 미리 보면 정답을 보고 예측하는 문제가 생깁니다.
  • Mask는 미래 위치로 향하는 Attention을 차단합니다.
  • 따라서 Decoder는 현재 토큰과 앞쪽 토큰만 참고할 수 있습니다.
  • 이 구조 덕분에 실제 생성 상황과 같은 조건에서 다음 토큰을 예측할 수 있습니다.