Part 6 · Self-Attention - Turning Scores into Context

점수는 어떻게 문맥이 되는가

Attention Score는 각 단어가 현재 Query와 얼마나 잘 맞는지를 보여 주지만, 아직 실제 정보를 결합할 수 있는 비율은 아닙니다. 점수의 크기와 범위가 제각각이기 때문에 먼저 비교 가능한 가중치로 바꾸어야 합니다. Softmax는 여러 점수를 합이 1인 비율로 변환하고, Weighted Sum은 그 비율만큼 각 Value를 반영해 하나의 새로운 벡터를 만듭니다. 관련성을 나타내던 점수가 실제 문맥 정보로 바뀌는 단계입니다.

The Remaining Problem

점수만으로는 아직 부족하다

앞장에서 He의 Query와 여러 Key를 비교해 다음과 같은 Attention Score를 얻었습니다.

Tom
9.0
New York
2.0
loves
1.0

Tom의 점수가 가장 크다는 것은 알 수 있습니다. 하지만 아직 Tom은 얼마나 많이 참고하고, 나머지는 얼마나 조금 참고해야 하는지 알 수 없습니다.

Attention Score는 후보를 비교한 원점수일 뿐, 실제 참고 비중은 아닙니다.
A Recommendation Story

친구들의 추천을 참고하는 상황

세 친구에게 식당을 추천받았다고 생각해 봅시다. 세 사람의 추천이 모두 똑같이 믿을 만한 것은 아닙니다.

철수★★★★★

평소 맛집을 잘 찾습니다.

가장 많이 참고하고 싶습니다.

영희★★★

가끔 좋은 식당을 추천합니다.

어느 정도 참고합니다.

민수★

추천이 자주 빗나갑니다.

조금만 참고합니다.

실제로 결정하려면 별점보다 누구의 의견을 몇 퍼센트 참고할지 정하는 것이 편합니다.

철수
70%
영희
20%
민수
10%
점수를 전체 100% 안의 참고 비율로 바꾸면 각 의견을 얼마나 반영할지 분명해집니다.
Softmax

점수를 참고 비율로 바꾸는 Softmax

Softmax는 여러 Attention Score를 받아 각 점수가 전체에서 차지하는 비중으로 바꿉니다.

Attention Score9.0 · 2.0 · 1.0
큰 점수를 더 강조차이를 분명하게 만듦
모두 양수로 정리음수 점수도 처리
전체 합을 1로 맞춤100%와 같은 의미
Attention Weight각 단어의 참고 비중
Softmax 전: Attention Score

9.0, 2.0, 1.0처럼 범위가 일정하지 않은 원점수입니다.

음수나 매우 큰 수도 나올 수 있습니다.

Softmax 후: Attention Weight

0.70, 0.20, 0.10처럼 실제 참고 비중으로 이해할 수 있습니다.

모든 값을 더하면 1이 됩니다.

Softmax는 점수의 상대적인 차이를 참고 비중으로 바꾸는 함수입니다.
이 장에서는 Softmax의 지수 계산식을 외우지 않습니다. “큰 점수는 더 큰 비중으로, 작은 점수는 더 작은 비중으로 바꾸고, 전체 합을 1로 만든다”는 역할을 이해하면 충분합니다.
Back to Attention

Attention Score가 Attention Weight로 바뀐다

Attention Score
Tom
9.0
New York
2.0
loves
1.0
Attention Weight
Tom
0.70
New York
0.20
loves
0.10
이제 모델은 Tom의 정보를 가장 많이, New York과 loves의 정보는 더 적게 반영하겠다는 구체적인 참고 비중을 가지게 됩니다.
9.0, 2.0, 1.0이 실제 Softmax에서 정확히 0.70, 0.20, 0.10이 되는 것은 아닙니다. 위 숫자는 개념을 쉽게 설명하기 위한 예시입니다.
Weighted Sum

비율이 정해졌다면 이제 정보를 섞는다

Softmax는 각 단어의 참고 비중을 정했습니다. 이제 그 비중만큼 각 단어의 실제 정보인 Value를 가져옵니다.

단어별 Value와 Weight

Tom× 0.70사람에 관한 정보를 많이 반영
New York× 0.20장소 정보는 조금 반영
loves× 0.10행동 정보는 아주 조금 반영
→

새로운 문맥 표현

여러 Value를 비중에 따라 섞은 결과입니다.

Tom의 정보가 가장 강하게 반영되므로, He가 Tom을 가리킨다는 문맥을 담게 됩니다.

결과He를 이해하기 위한 Context Vector
각 Value에 Attention Weight를 곱하고 모두 더하는 과정을 가중합(Weighted Sum)이라고 합니다.
A Recipe Story

Weighted Sum은 재료를 비율대로 섞는 것과 비슷하다

비빔밥을 만든다고 생각해 봅시다. 모든 재료를 넣지만 같은 양으로 넣지는 않습니다.

재료의 비율

밥50%가장 많이
고기30%두 번째로 많이
나물15%조금
고추장5%아주 조금
→

완성된 비빔밥

모든 재료가 들어가지만, 각 재료의 양에 따라 최종 맛이 결정됩니다.

Weighted Sum도 마찬가지입니다. 여러 단어의 Value를 모두 사용하되, Attention Weight에 따라 반영되는 양이 달라집니다.
A Crucial Distinction

단어를 섞는 것이 아니라 Value 벡터를 섞는다

잘못된 이해

Tom, New York, loves라는 글자를 직접 섞는다고 생각합니다.

올바른 이해

각 단어에서 만들어진 Value 벡터를 서로 다른 비중으로 섞습니다.

Weighted Sum의 결과도 하나의 숫자가 아니라, 현재 단어에 필요한 문맥 정보가 담긴 새로운 벡터입니다.
Try It

점수가 바뀌면 참고 비중과 결과도 바뀐다

아래 상황을 선택해 보세요. Attention Score가 달라지면 Softmax 이후의 비중과 최종적으로 많이 반영되는 Value도 달라집니다.

Attention Score

Softmax 이후 Weight

From One Word to the Whole Sentence

이 계산은 한 단어에서만 일어나는 것이 아니다

지금까지는 He 하나가 다른 단어들을 참고하는 과정을 살펴봤습니다. 하지만 Self-Attention에서는 문장 속 모든 단어가 자신만의 Query를 가지고 같은 과정을 수행합니다.

각 단어의 Query무엇이 필요한가?
여러 Key와 비교Attention Score
Softmax 적용Attention Weight
Value 가중합새 문맥 벡터
모든 단어의 새 표현문장 전체 이해
다음 페이지에서는 문장 속 모든 단어가 이 계산을 수행하는 Self-Attention 전체 과정을 살펴봅니다.
Summary

핵심 정리

  • Attention Score는 Query와 Key를 비교한 원점수입니다.
  • Softmax는 여러 점수를 실제 참고 비중인 Attention Weight로 바꿉니다.
  • Attention Weight는 모두 양수이며 전체를 더하면 1이 됩니다.
  • 큰 점수는 큰 비중으로, 작은 점수는 작은 비중으로 변환됩니다.
  • 각 Value에 Attention Weight를 곱한 뒤 모두 더하는 것이 Weighted Sum입니다.
  • Weighted Sum의 결과는 현재 단어에 필요한 문맥이 담긴 새로운 벡터입니다.