왜 토크나이저를 학습해야 할까?
언어에는 기본 단어뿐 아니라 다양한 형태 변화, 합성어, 신조어와 고유명사가 계속 등장합니다. 가능한 모든 단어를 토큰 사전에 하나씩 등록하는 것은 현실적으로 어렵습니다.
play, playing, played,
player를 모두 별도 토큰으로 저장해야 합니다.
새로운 형태가 등장할 때마다 토큰 사전이 계속 커집니다.
공통 문자열 play와
ing, ed, er 같은 조각을 재사용할 수 있습니다.
사전에 없는 새로운 단어도 기존 조각을 조합해 표현할 수 있습니다.
공통 문자열은 누가 찾을까?
공통 부분을 사람이 모든 단어에서 직접 찾아 등록할 수는 없습니다. 따라서 토크나이저는 많은 학습 문장을 분석해 자주 반복되는 문자열 패턴을 자동으로 찾습니다.
사람은 의미와 문법 지식을 이용해 공통 어근과 접미사를 알아볼 수 있습니다.
BPE는 의미를 분석하지 않고, 학습 데이터에서 어떤 문자나 토큰 쌍이 자주 붙어 나오는지 계산합니다.
자주 붙는 쌍을 반복해서 합치면 자주 쓰이는 문자열이 큰 토큰으로 만들어집니다.
BPE는 어떻게 토크나이저를 만들까?
예:
low → l · o · w
예:
(l,o), (o,w), (w,e)
예:
l + o → lo
예:
lo + w → low
BPE 학습 과정을 단계별로 따라가기
원리를 단순하게 보기 위해
low, lower, lowest
세 단어만 사용해 아주 작은 토크나이저를 만들어 보겠습니다.
학습에 사용할 단어
세 단어에서 low가 반복된다는 점을 살펴보세요.
1단계 · 문자 단위로 나누기
처음에는 모든 단어를 문자 단위로 나눕니다.
학습이 끝나면 무엇이 만들어질까?
BPE 학습 결과로는 Vocabulary(토큰 사전)와 Merge Rules(병합 규칙)가 만들어집니다. 두 정보는 서로 다른 역할을 합니다.
Vocabulary는 토크나이저가 사용할 수 있는 모든 토큰을 저장한 목록입니다. 각 토큰에는 고유한 정수 번호인 Token ID가 함께 부여됩니다.
| Token | Token ID 예시 |
|---|---|
l | 15 |
o | 28 |
w | 42 |
lo | 381 |
low | 914 |
이 번호는 예시입니다. 번호의 크기에는 의미가 없으며, 토큰을 구분하고 임베딩 테이블의 위치를 찾기 위해 사용합니다.
Merge Rules는 작은 토큰을 어떤 순서로 합칠지 기록한 목록입니다. 앞에 있는 규칙부터 차례대로 적용합니다.
l + o → lo
lo + w → low
Vocabulary에 low가 존재하더라도,
문자열을 어떤 순서로 합쳐 low를 만들지는
Merge Rules가 알려 줍니다.
학습 단계와 사용 단계는 다르다
- 많은 학습 문장을 분석합니다.
- 인접 토큰 쌍의 빈도를 계산합니다.
- Vocabulary와 Merge Rules를 만듭니다.
- 모델 학습 전에 한 번 수행합니다.
- 새로운 단어나 문장을 입력받습니다.
- 빈도를 다시 계산하지 않습니다.
- 저장된 Merge Rules를 순서대로 적용합니다.
- 결과 토큰을 Token ID로 변환합니다.
완성된 토크나이저로 새 단어 처리하기
이번 예제의 토크나이저는
low, lower, lowest
세 단어만 사용해 학습했습니다.
따라서 low는 큰 토큰으로 학습했지만,
ly라는 토큰은 학습하지 않았습니다.
예제: lowly
문자를 작은 단위로 나눕니다.
첫 번째 병합 규칙을 적용합니다.
l + o → lo두 번째 병합 규칙을 적용합니다.
lo + w → low더 이상 적용할 규칙이 없습니다.
이번에 학습한 Vocabulary에는 ly가 없고,
l + y → ly라는 병합 규칙도 없습니다.
따라서 l과 y는 따로 남습니다.
이 결과는 lowly가 원래 이렇게 나뉘는 단어이기 때문이 아니라,
이번 예제의 작은 Vocabulary와 Merge Rules를 적용했기 때문입니다.
실제 LLM의 토크나이저에서는 lowly,
low + ly, 또는 다른 조합으로 나뉠 수 있습니다.
왜 실제 모델과 토큰화 결과가 다를 수 있을까?
토큰은 어떻게 Token ID가 될까?
토큰화가 끝나면 각 토큰을 Vocabulary에서 찾아 대응하는 Token ID로 변환합니다.
low
l
y
low → 914
l → 15
y → 73
[914, 15, 73]
BPE의 장점과 한계
- 자주 쓰는 문자열을 적은 수의 토큰으로 표현할 수 있습니다.
- 사전에 없는 단어도 작은 조각으로 나누어 표현할 수 있습니다.
- 어휘 크기와 토큰 수 사이의 균형을 조정할 수 있습니다.
- 학습 절차가 비교적 단순합니다.
- 문자열 빈도를 기준으로 하며 의미를 직접 이해하지 않습니다.
- 형태소나 단어의 의미 경계와 다르게 나뉠 수 있습니다.
- 학습 데이터가 부족한 언어는 토큰 수가 더 많아질 수 있습니다.
- 어휘가 너무 크면 임베딩 테이블과 출력층의 크기가 증가합니다.
토크나이저 다음 단계
학습 내용 정리
- 토크나이저는 반복되는 문자열을 재사용 가능한 토큰으로 만들기 위해 학습됩니다.
- BPE는 가장 자주 함께 등장하는 인접 토큰 쌍을 반복해서 합칩니다.
- 학습 결과로 Vocabulary와 Merge Rules가 만들어집니다.
- Vocabulary는 사용할 수 있는 토큰과 Token ID를 저장합니다.
- Merge Rules는 작은 토큰을 어떤 순서로 합칠지 저장합니다.
- 실제 사용 단계에서는 빈도를 다시 계산하지 않고 저장된 규칙만 적용합니다.
- 토큰화 결과는 학습 데이터와 Vocabulary에 따라 달라질 수 있습니다.
- 최종 토큰은 Token ID로 변환된 뒤 임베딩과 언어 모델에 전달됩니다.