문맥 벡터
'배'는 무슨 뜻일까요?
답
문장을 봐야 압니다
- 배
- 를
- 타고
- 섬에
- 갔다
- 배
- 가
- 고파서
- 밥을
- 먹었다
- 배
- 를
- 깎아서
- 먹었다
글자는 같은데 뜻은 셋입니다. 뜻을 정해 주는 것은 주변 단어입니다.
그런데 모델에게는
'배'가 늘 같은 숫자입니다
배를 타고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인 비율로 바꾼다
- 문맥 벡터비율대로 섞는다
예제
이 문장 하나로 끝까지 따라갑니다
- Your
- journey
- starts
- with
- one
- step
journey0.550.870.66
단어마다 숫자 3개짜리 벡터를 줍니다. 이제 journey의 문맥 벡터를 구해 봅니다.
손으로 따라가려고 3개로 줄였습니다. 실제 모델은 단어 하나에 숫자를 수백, 수천 개 씁니다.
다음 편