앞 장에서 확인한 내용
토크나이저는 문장을 토큰으로 나눈 뒤, 각 토큰을 Vocabulary에 저장된 Token ID로 바꿉니다.
임베딩이란?
임베딩(Embedding)은 토큰을 언어 모델이 계산할 수 있는 숫자 벡터로 바꾸는 표현 방식입니다.
토큰마다 하나의 벡터가 준비되어 있으며, 이 벡터들은 하나의 큰 표인 Embedding Table에 행 단위로 저장됩니다.
Embedding Table은 번호로 찾는 보관함과 비슷하다
도서관에서 책 번호는 책의 내용을 설명하지 않습니다. 책이 꽂힌 위치를 찾기 위한 번호입니다.
1523
Token ID도 토큰의 의미를 설명하지 않습니다. Embedding Table에서 벡터가 저장된 행을 찾기 위한 번호입니다.
1523
Embedding Table의 구조
Embedding Table은 행과 열로 이루어진 숫자 표입니다. 각 행은 하나의 Token ID에 대응하고, 각 열에는 해당 토큰을 표현하는 숫자가 저장됩니다.
| Token ID | Token | 숫자 1 | 숫자 2 | 숫자 3 | 숫자 4 |
|---|---|---|---|---|---|
| 0 | <pad> | 0.01 | -0.04 | 0.07 | 0.02 |
| 1 | the | -0.21 | 0.15 | 0.32 | -0.08 |
| ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ |
| 1523 | apple | 0.12 | -0.55 | 0.81 | 0.24 |
| 1524 | tree | 0.09 | -0.31 | 0.74 | 0.18 |
| ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ |
이해를 위한 4개 숫자 예시입니다. 실제 모델은 한 토큰을 훨씬 많은 숫자로 표현할 수 있습니다.
이 표의 숫자는 사람이 고정해서 입력하는 값이 아니라, 모델이 학습하면서 예측 오류가 줄어드는 방향으로 계속 수정되는 학습 가능한 파라미터(Parameter)입니다.
Embedding Table, Matrix, Layer는 무엇이 다를까?
임베딩을 설명할 때는 비슷해 보이는 여러 용어가 함께 등장합니다. 각 용어는 완전히 다른 대상을 뜻하는 것이 아니라, 같은 구조를 서로 다른 관점에서 설명한 표현입니다.
| 용어 | 의미 | 주로 사용하는 맥락 |
|---|---|---|
| Embedding Table | 모든 토큰의 임베딩 벡터를 행(Row) 단위로 저장한 표입니다. | 교재, 실무 설명, 프레임워크 문서 |
| Embedding Matrix | Embedding Table을 수학적인 행렬(Matrix) 관점에서 부르는 이름입니다. | 논문, 수식, 연구 문헌 |
| Embedding Layer | Token ID를 입력받아 임베딩 벡터를 출력하는 신경망의 레이어입니다. 내부적으로 Embedding Table을 사용합니다. | PyTorch, TensorFlow 같은 딥러닝 프레임워크 |
| Lookup Table | 번호를 이용해 해당 항목을 찾아오는 표라는 동작 관점의 표현입니다. | 구현 원리와 동작 설명 |
| Embedding Lookup | Token ID에 해당하는 행을 선택해 임베딩 벡터를 가져오는 과정입니다. | 알고리즘과 처리 과정 설명 |
Embedding Lookup은 어떻게 동작할까?
Lookup은 복잡한 계산을 먼저 수행하는 과정이 아닙니다. Token ID를 행 번호처럼 사용하여 Embedding Table에서 해당 행을 선택하는 과정입니다.
apple
1523
1523번 행을 선택
[0.12, -0.55, 0.81, 0.24]
토크나이저가 Token ID를 만듭니다.
apple → 1523
Token ID와 같은 번호의 행을 찾습니다.
Embedding Table에서 1523번 행을 선택합니다.
선택한 행의 숫자 전체를 가져옵니다.
[0.12, -0.55, 0.81, 0.24]
가져온 벡터를 언어 모델의 입력으로 전달합니다.
RNN이나 Transformer는 Token ID 자체가 아니라 이 벡터를 처리합니다.
Embedding Lookup 직접 확인하기
토큰을 선택한 뒤 Lookup 버튼을 누르면 Token ID에 대응하는 행과 벡터를 확인할 수 있습니다.
apple
Token ID 1523
1523번 행 선택
문장에는 여러 개의 임베딩 벡터가 필요하다
문장에는 여러 토큰이 들어 있으므로, 각 Token ID마다 Embedding Lookup을 한 번씩 수행합니다.
| Token | Token ID | Lookup 결과 |
|---|---|---|
| A | 17 | [0.31, 0.08, -0.17, 0.52] |
| cute | 842 | [-0.12, 0.66, 0.20, 0.41] |
| bear | 391 | [0.27, -0.09, 0.73, 0.16] |
[17, 842, 391]
17행 · 842행 · 391행
3개의 임베딩 벡터
Token ID, Embedding Table, Embedding Vector 구분하기
| 용어 | 역할 | 예시 |
|---|---|---|
| Token ID | Embedding Table에서 행을 찾는 번호 | 1523 |
| Embedding Table | 모든 토큰의 벡터를 행 단위로 저장한 표 | Vocabulary 크기만큼의 행 |
| Embedding Lookup | Token ID에 해당하는 행을 선택하는 과정 | 1523번 행 선택 |
| Embedding Vector | 선택한 행에서 가져온 숫자 묶음 | [0.12, -0.55, 0.81, 0.24] |
Embedding Lookup은 데이터베이스 검색과 같은가?
Embedding Table의 숫자는 처음부터 의미가 있는가?
다음 장에서 배울 내용
- Embedding Table은 벡터를 저장한 표입니다.
- Token ID는 표의 행을 찾는 번호입니다.
- Lookup은 해당 행의 벡터를 가져오는 과정입니다.
- 벡터는 왜 여러 숫자로 이루어지는가?
- 차원(Dimension)은 무엇인가?
- 벡터의 거리와 유사성은 무엇을 나타내는가?
학습 내용 정리
- 임베딩은 토큰을 언어 모델이 계산할 수 있는 숫자 벡터로 표현하는 방법입니다.
- Embedding Table은 모든 토큰의 벡터를 행 단위로 저장한 학습 가능한 가중치 행렬입니다.
- Embedding Table과 Embedding Matrix는 같은 대상을 표와 행렬의 관점에서 부르는 이름입니다.
- Embedding Layer는 내부의 Embedding Table을 사용해 Token ID를 벡터로 변환합니다.
- Token ID는 Embedding Table에서 해당 토큰의 행을 찾기 위한 번호입니다.
- Embedding Lookup은 Token ID에 해당하는 행을 선택하여 벡터를 가져오는 과정입니다.
- 문장에 여러 토큰이 있으면 각 토큰마다 하나의 임베딩 벡터를 가져옵니다.
- 언어 모델은 Token ID 자체가 아니라 Lookup으로 얻은 벡터 시퀀스를 처리합니다.