Decoder가 자기 문장만 본다면 무엇이 부족할까?
Masked Self-Attention은 Decoder가 지금까지 생성한 토큰을 살펴보게 합니다. 하지만 그것만으로는 입력 문장의 내용과 연결할 수 없습니다.
번역문은 원문을 참고해야 한다
I love this book
Encoder가 원문의 의미를 정리합니다.
나는 이 책을 …
Decoder는 다음 단어를 결정해야 합니다.
Cross-Attention은 두 흐름을 연결한다
Decoder가 필요한 Encoder 정보를 찾아 가져옵니다.
Cross-Attention의 Query, Key, Value는 어디에서 올까?
계산 방식은 앞에서 배운 Attention과 같습니다. 차이는 Query와 Key·Value가 서로 다른 곳에서 온다는 점입니다.
Query
Decoder의 현재 표현에서 만듭니다. 지금 어떤 입력 정보를 찾고 있는지를 나타냅니다.
Key
Encoder 출력에서 만듭니다. 각 입력 정보가 무엇과 관련 있는지 비교할 기준입니다.
Value
Encoder 출력에서 만듭니다. Attention 점수에 따라 실제로 가져올 정보입니다.
Decoder는 원문의 어느 단어를 참고할까?
생성하려는 다음 토큰에 따라 원문에서 중요하게 보는 단어가 달라집니다. 아래 버튼을 눌러 Attention의 초점이 어떻게 달라지는지 확인해 보세요.
Cross-Attention 계산 흐름
Decoder가 Query를 만든다
현재 생성 위치에서 어떤 입력 정보가 필요한지 표현합니다.
Encoder의 Key와 비교한다
Query와 각 입력 토큰의 Key가 얼마나 관련 있는지 계산합니다.
중요도를 정한다
관련성이 높은 입력 토큰에 더 큰 Attention 가중치를 줍니다.
Value를 모아온다
가중치에 따라 Encoder의 정보를 섞어 Decoder에 전달합니다.
두 Attention은 무엇이 다를까?
Masked Self-Attention
- Decoder 내부의 토큰끼리 관계를 계산합니다.
- Q, K, V가 모두 Decoder에서 옵니다.
- 미래 토큰은 Mask로 가립니다.
- 지금까지 생성한 문맥을 이해합니다.
Cross-Attention
- Decoder와 Encoder 정보를 연결합니다.
- Q는 Decoder, K와 V는 Encoder에서 옵니다.
- Encoder 출력 전체를 참고할 수 있습니다.
- 입력 문장과 맞는 출력을 만들게 합니다.
핵심 정리
- Cross-Attention은 Decoder가 Encoder 출력을 참고하게 합니다.
- Query는 Decoder의 현재 표현에서 만들어집니다.
- Key와 Value는 Encoder의 출력 벡터에서 만들어집니다.
- Decoder의 Query와 Encoder의 Key를 비교해 Attention 가중치를 계산합니다.
- 중요도가 높은 Encoder Value가 Decoder 출력에 더 크게 반영됩니다.
- 이 연결 덕분에 Decoder는 입력 내용과 맞는 번역문이나 답변을 생성할 수 있습니다.