앞 장에서 가져온 벡터
앞 장에서는 Token ID를 이용해 Embedding Table의 한 행을 선택하고, 해당 행에 저장된 벡터를 가져오는 Embedding Lookup을 살펴보았습니다.
벡터는 여러 숫자를 순서대로 묶은 표현이다
하나의 숫자만으로는 토큰의 다양한 특징과 관계를 표현하기 어렵습니다. 그래서 임베딩은 여러 숫자를 순서대로 묶은 벡터(Vector)를 사용합니다.
Token ID는 토큰을 구분할 수 있지만, 다른 토큰과 어떤 관계를 갖는지는 표현하지 못합니다.
여러 숫자를 함께 사용하면, 모델이 토큰 사이의 차이와 관계를 더 풍부하게 표현할 수 있습니다.
차원(Dimension)이란?
벡터에 들어 있는 숫자의 개수를 차원이라고 합니다. 숫자가 2개이면 2차원 벡터, 숫자가 4개이면 4차원 벡터입니다.
실제 모델은 하나의 토큰을 수백 개 또는 수천 개의 숫자로 표현할 수 있습니다.
벡터는 의미 공간에서 토큰의 위치를 나타낸다
이해를 돕기 위해 실제 고차원 벡터를 2차원 평면에 단순화해 보겠습니다. 비슷한 문맥에서 자주 사용되는 토큰은 가까운 위치에 모이고, 사용 방식이 크게 다른 토큰은 더 멀리 놓일 수 있습니다.
숫자 하나가 의미 하나를 담당하는 것은 아니다
임베딩을 처음 배우면 첫 번째 숫자는 ‘과일 정도’, 두 번째 숫자는 ‘크기’처럼 사람이 이해할 수 있는 의미가 하나씩 배정되어 있다고 생각하기 쉽습니다. 그러나 실제 임베딩은 보통 그렇게 단순하지 않습니다.
0.12 = 과일
-0.55 = 빨간색
0.81 = 먹을 수 있음
실제 모델의 각 숫자에 사람이 미리 이런 이름을 붙여 둔 것은 아닙니다.
하나의 특징이 여러 차원에 나뉘어 표현될 수 있고, 하나의 차원이 여러 관계에 동시에 관여할 수 있습니다.
따라서 의미는 특정 숫자 하나보다 벡터 전체의 패턴에 분산되어 있다고 보는 편이 적절합니다.
그렇다면 벡터 숫자를 사람이 전혀 해석할 수 없는가?
벡터의 의미는 학습 과정에서 만들어진다
Embedding Table의 숫자는 사람이 단어 뜻을 읽고 직접 입력한 값이 아닙니다. 모델이 문장을 예측하는 학습을 반복하면서, 예측 오류가 줄어드는 방향으로 벡터 값이 조금씩 조정됩니다.
[0.02, -0.01, 0.03, ...]
작은 임의 값에서 시작
예측 → 정답 비교
역전파로 값 조정
[0.12, -0.55, 0.81, ...]
사용 패턴과 관계 반영
비슷한 단어가 왜 가까워질까?
단어별 벡터 패턴 비교하기
토큰을 선택하면 설명을 위해 단순화한 6차원 벡터를 확인할 수 있습니다. 개별 숫자보다 전체 패턴을 비교해 보세요.
위 숫자와 차원 이름은 설명을 위해 만든 예시입니다. 실제 LLM의 임베딩 차원에는 사람이 붙인 명확한 이름이 없으며, 훨씬 많은 숫자가 함께 작동합니다.
벡터의 유사성은 무엇을 의미할까?
apple과 banana처럼
비슷한 문맥에서 사용되는 토큰은 벡터 패턴이 비슷해질 수 있습니다.
apple과 airplane처럼
사용되는 문맥과 역할이 크게 다르면 벡터 차이도 커질 수 있습니다.
| 비교 | 단순화된 해석 |
|---|---|
apple ↔ banana |
과일, 음식, 먹는 행위와 관련된 비슷한 문맥이 많음 |
apple ↔ orange |
과일을 나타내며 여러 문장에서 비슷한 위치에 등장할 수 있음 |
apple ↔ airplane |
일반적으로 사용 문맥과 관계가 크게 다름 |
Embedding Lookup으로 가져온 벡터는 아직 문맥을 충분히 반영하지 못한다
Embedding Table에서 Lookup한 벡터는 기본적으로 같은 Token ID에 대해 같은 값입니다.
예를 들어 같은 bank 토큰이라면 문장에 관계없이 같은 초기 임베딩을 가져옵니다.
I deposited money at the bank.
We sat on the river bank.
두 문장의 bank는 Lookup 직후에는 같은 기본 벡터에서 시작할 수 있습니다.
Transformer나 RNN은 주변 토큰을 함께 살펴보고, 각 위치의 벡터를 문맥에 맞게 변화시킵니다.
따라서 이후 단계에서는 금융 기관의 bank와 강둑의 bank가 서로 다른 표현으로 바뀔 수 있습니다.
언어 모델은 이 벡터로 무엇을 할까?
학습 내용 정리
- 임베딩 벡터는 하나의 토큰을 여러 숫자로 표현한 모델 내부의 좌표입니다.
- 벡터에 들어 있는 숫자의 개수를 차원이라고 합니다.
- 실제 언어 모델은 수백 개 또는 수천 개 차원의 벡터를 사용할 수 있습니다.
- 의미는 숫자 하나에 저장되는 것이 아니라 벡터 전체에 분산되어 표현됩니다.
- 임베딩 값은 언어 모델의 학습 과정에서 예측 오류를 줄이는 방향으로 조정됩니다.
- 비슷한 문맥에서 사용되는 토큰은 벡터 공간에서 가까워질 수 있습니다.
- Lookup으로 가져온 벡터는 기본 출발점이며, 실제 문맥에 따른 의미는 RNN이나 Transformer를 통과하면서 더 구체화됩니다.