문맥 벡터

'배'는 무슨 뜻일까요?

답

문장을 봐야 압니다

  • 배
  • 를
  • 타고
  • 섬에
  • 갔다
  • 배
  • 가
  • 고파서
  • 밥을
  • 먹었다
  • 배
  • 를
  • 깎아서
  • 먹었다

글자는 같은데 뜻은 셋입니다. 뜻을 정해 주는 것은 주변 단어입니다.

그런데 모델에게는

'배'가 늘 같은 숫자입니다

배를 타고0.20.70.1
배가 고파서0.20.70.1
배를 깎아서0.20.70.1

LLM은 단어를 벡터, 곧 숫자 묶음으로 바꿔서 다룹니다. 이 변환을 임베딩이라 하는데, 같은 단어는 어느 문장에서나 같은 벡터가 됩니다.

벡터의 숫자는 예시입니다.

셀프 어텐션이 하는 일

주변 단어의 정보를 섞어 넣습니다

배를 타고0.50.40.3
배가 고파서0.10.80.6
배를 깎아서0.30.20.9

섞고 나면 같은 '배'도 문장마다 다른 벡터가 됩니다. 이 새 벡터가 문맥 벡터입니다.

벡터의 숫자는 예시입니다.

핵심

얼마나 섞느냐가 전부입니다

모든 단어를 똑같이 섞으면 어느 문장이든 비슷해집니다. 관련이 깊은 단어는 많이, 아닌 단어는 조금 섞어야 합니다.

이 섞는 비율이 2편에서 본 어텐션 가중치입니다.

계산 순서

세 단계로 구합니다

  1. 점수단어끼리 얼마나 관련 있는지 잰다
  2. 가중치점수를 합이 1인 비율로 바꾼다
  3. 문맥 벡터비율대로 섞는다

예제

이 문장 하나로 끝까지 따라갑니다

  • Your
  • journey
  • starts
  • with
  • one
  • step
journey0.550.870.66

단어마다 숫자 3개짜리 벡터를 줍니다. 이제 journey의 문맥 벡터를 구해 봅니다.

손으로 따라가려고 3개로 줄였습니다. 실제 모델은 단어 하나에 숫자를 수백, 수천 개 씁니다.

다음 편

관련 있다는 것을 계산으로 어떻게 알까?

4편닮음을 숫자로 바꾸는 법 4강 목록