Part 7 · Transformer Architecture - Looking Back at the Input

입력 문장을 다시 참고하는 방법

Decoder는 자신의 앞부분만 보는 것으로 충분하지 않습니다. 번역이나 요약을 하려면 입력 문장이 무엇이었는지도 계속 참고해야 합니다. Cross-Attention은 Encoder가 이해한 입력 정보를 Decoder가 필요할 때마다 참고하도록 연결하는 역할을 합니다.

A Missing Piece

Decoder가 자기 문장만 본다면 무엇이 부족할까?

?
“Decoder는 지금까지 생성한 단어를 볼 수 있습니다. 그런데 번역해야 할 원문이나 대답해야 할 질문은 어디에서 참고할까요?”

Masked Self-Attention은 Decoder가 지금까지 생성한 토큰을 살펴보게 합니다. 하지만 그것만으로는 입력 문장의 내용과 연결할 수 없습니다.

Decoder가 Encoder의 출력 벡터를 참고하도록 연결하는 Attention이 Cross-Attention입니다.
Translation Story

번역문은 원문을 참고해야 한다

입력 문장

I love this book

Encoder가 원문의 의미를 정리합니다.

→
생성 중인 문장

나는 이 책을 …

Decoder는 다음 단어를 결정해야 합니다.

“나는 이 책을”이라는 앞부분만 보고도 여러 단어가 이어질 수 있습니다. 좋아한다, 읽었다, 샀다처럼 후보가 많습니다. 원문의 “love”를 참고해야 알맞은 단어를 선택할 수 있습니다.
Two Sides Meet

Cross-Attention은 두 흐름을 연결한다

Decoder에서 오는 정보 현재 어떤 내용을 생성하고 있는지 나타내는 벡터입니다. “지금 무엇을 찾고 있는가?”를 결정합니다.
Encoder에서 오는 정보 입력 문장의 각 토큰을 문맥에 맞게 표현한 벡터입니다. “참고할 수 있는 정보”를 제공합니다.
Encoder 출력
I
love
this
book
⇄
Cross-Attention

Decoder가 필요한 Encoder 정보를 찾아 가져옵니다.

Decoder 현재 표현
나는
이
책을
다음 토큰?
이름의 “Cross”는 서로 다른 두 흐름이 만난다는 뜻입니다. Decoder의 표현이 Encoder의 출력을 바라봅니다.
Query, Key, Value

Cross-Attention의 Query, Key, Value는 어디에서 올까?

계산 방식은 앞에서 배운 Attention과 같습니다. 차이는 Query와 Key·Value가 서로 다른 곳에서 온다는 점입니다.

Q

Query

Decoder의 현재 표현에서 만듭니다. 지금 어떤 입력 정보를 찾고 있는지를 나타냅니다.

K

Key

Encoder 출력에서 만듭니다. 각 입력 정보가 무엇과 관련 있는지 비교할 기준입니다.

V

Value

Encoder 출력에서 만듭니다. Attention 점수에 따라 실제로 가져올 정보입니다.

Cross-Attention에서는 Q는 Decoder에서, K와 V는 Encoder에서 옵니다.
Interactive Attention

Decoder는 원문의 어느 단어를 참고할까?

생성하려는 다음 토큰에 따라 원문에서 중요하게 보는 단어가 달라집니다. 아래 버튼을 눌러 Attention의 초점이 어떻게 달라지는지 확인해 보세요.

Decoder의 질문: “나는 이 책을 다음에 어떻게 이어야 할까?”
I
love
this
book
‘좋아한다’를 생성하려면 원문의 ‘love’를 가장 중요하게 참고합니다.
Step by Step

Cross-Attention 계산 흐름

1

Decoder가 Query를 만든다

현재 생성 위치에서 어떤 입력 정보가 필요한지 표현합니다.

2

Encoder의 Key와 비교한다

Query와 각 입력 토큰의 Key가 얼마나 관련 있는지 계산합니다.

3

중요도를 정한다

관련성이 높은 입력 토큰에 더 큰 Attention 가중치를 줍니다.

4

Value를 모아온다

가중치에 따라 Encoder의 정보를 섞어 Decoder에 전달합니다.

Cross-Attention이 원문 단어 하나만 선택하는 것은 아닙니다. 모든 Encoder Value를 가중합하지만, 현재 생성에 중요한 정보가 더 크게 반영됩니다.
Self-Attention vs Cross-Attention

두 Attention은 무엇이 다를까?

Masked Self-Attention

  • Decoder 내부의 토큰끼리 관계를 계산합니다.
  • Q, K, V가 모두 Decoder에서 옵니다.
  • 미래 토큰은 Mask로 가립니다.
  • 지금까지 생성한 문맥을 이해합니다.

Cross-Attention

  • Decoder와 Encoder 정보를 연결합니다.
  • Q는 Decoder, K와 V는 Encoder에서 옵니다.
  • Encoder 출력 전체를 참고할 수 있습니다.
  • 입력 문장과 맞는 출력을 만들게 합니다.
Masked Self-Attention이 내가 지금까지 무엇을 만들었는가를 살펴본다면, Cross-Attention은 입력에서 무엇을 참고해야 하는가를 찾습니다.
Summary

핵심 정리

  • Cross-Attention은 Decoder가 Encoder 출력을 참고하게 합니다.
  • Query는 Decoder의 현재 표현에서 만들어집니다.
  • Key와 Value는 Encoder의 출력 벡터에서 만들어집니다.
  • Decoder의 Query와 Encoder의 Key를 비교해 Attention 가중치를 계산합니다.
  • 중요도가 높은 Encoder Value가 Decoder 출력에 더 크게 반영됩니다.
  • 이 연결 덕분에 Decoder는 입력 내용과 맞는 번역문이나 답변을 생성할 수 있습니다.