Part 2 · Tokenization - Training a BPE Tokenizer

토크나이저는 어떻게 단어를 배우는가

토크나이저는 사람이 직접 모든 단어를 등록해 만드는 도구가 아닙니다. 많은 문장을 분석하며 자주 함께 등장하는 문자열을 스스로 찾아 새로운 토큰을 만들어 갑니다. 이 장에서는 BPE가 Vocabulary와 Merge Rule을 만들어 가는 과정을 단계별로 따라가며, 학습이 끝난 토크나이저가 새로운 문장을 처리하는 원리까지 함께 이해합니다.

The Problem

왜 토크나이저를 학습해야 할까?

언어에는 기본 단어뿐 아니라 다양한 형태 변화, 합성어, 신조어와 고유명사가 계속 등장합니다. 가능한 모든 단어를 토큰 사전에 하나씩 등록하는 것은 현실적으로 어렵습니다.

play playing played player playful
모든 단어를 따로 저장한다면

play, playing, played, player를 모두 별도 토큰으로 저장해야 합니다.

새로운 형태가 등장할 때마다 토큰 사전이 계속 커집니다.

공통 부분을 재사용한다면

공통 문자열 play와 ing, ed, er 같은 조각을 재사용할 수 있습니다.

사전에 없는 새로운 단어도 기존 조각을 조합해 표현할 수 있습니다.

토크나이저 학습의 목적은 많은 문자열에서 반복되는 조각을 찾아 재사용 가능한 토큰 사전을 만드는 것입니다.
Finding Reusable Pieces

공통 문자열은 누가 찾을까?

공통 부분을 사람이 모든 단어에서 직접 찾아 등록할 수는 없습니다. 따라서 토크나이저는 많은 학습 문장을 분석해 자주 반복되는 문자열 패턴을 자동으로 찾습니다.

사람이 보는 공통 부분
play ##ing ##ed ##er

사람은 의미와 문법 지식을 이용해 공통 어근과 접미사를 알아볼 수 있습니다.

BPE가 찾는 반복 문자열

BPE는 의미를 분석하지 않고, 학습 데이터에서 어떤 문자나 토큰 쌍이 자주 붙어 나오는지 계산합니다.

자주 붙는 쌍을 반복해서 합치면 자주 쓰이는 문자열이 큰 토큰으로 만들어집니다.

BPE가 만든 서브워드는 형태소와 비슷해 보일 수 있지만, 실제 기준은 문법이나 의미가 아니라 문자열의 반복 빈도입니다.
BPE Overview

BPE는 어떻게 토크나이저를 만들까?

학습 말뭉치 많은 문장과 단어
작은 단위로 분리 문자 또는 바이트
자주 붙는 쌍 병합 빈도 계산과 반복
Vocabulary 토큰과 Token ID
Merge Rules 병합 순서 저장
학습 단어를 가장 작은 단위로 나눕니다.
예: low → l · o · w
서로 이웃한 토큰 쌍이 몇 번 등장하는지 셉니다.
예: (l,o), (o,w), (w,e)
가장 자주 등장하는 쌍을 하나의 새 토큰으로 합칩니다.
예: l + o → lo
병합된 상태에서 다시 빈도를 계산하고 다음 쌍을 합칩니다.
예: lo + w → low
정해 둔 어휘 크기나 병합 횟수에 도달할 때까지 반복합니다.
Interactive Training

BPE 학습 과정을 단계별로 따라가기

원리를 단순하게 보기 위해 low, lower, lowest 세 단어만 사용해 아주 작은 토크나이저를 만들어 보겠습니다.

학습에 사용할 단어

low lower lowest

세 단어에서 low가 반복된다는 점을 살펴보세요.

1단계 · 문자 단위로 나누기

처음에는 모든 단어를 문자 단위로 나눕니다.

1 / 6
아직 병합하지 않았습니다.
Training Result

학습이 끝나면 무엇이 만들어질까?

BPE 학습 결과로는 Vocabulary(토큰 사전)와 Merge Rules(병합 규칙)가 만들어집니다. 두 정보는 서로 다른 역할을 합니다.

Vocabulary · 사용할 수 있는 토큰과 번호

Vocabulary는 토크나이저가 사용할 수 있는 모든 토큰을 저장한 목록입니다. 각 토큰에는 고유한 정수 번호인 Token ID가 함께 부여됩니다.

Token Token ID 예시
l15
o28
w42
lo381
low914

이 번호는 예시입니다. 번호의 크기에는 의미가 없으며, 토큰을 구분하고 임베딩 테이블의 위치를 찾기 위해 사용합니다.

Merge Rules · 토큰을 합치는 순서

Merge Rules는 작은 토큰을 어떤 순서로 합칠지 기록한 목록입니다. 앞에 있는 규칙부터 차례대로 적용합니다.

1 l + o → lo
2 lo + w → low

Vocabulary에 low가 존재하더라도, 문자열을 어떤 순서로 합쳐 low를 만들지는 Merge Rules가 알려 줍니다.

Vocabulary는 사용할 수 있는 토큰과 Token ID를 저장하고, Merge Rules는 작은 조각을 합치는 순서를 저장합니다. 완성된 토크나이저는 두 정보를 함께 사용합니다.
Training vs Usage

학습 단계와 사용 단계는 다르다

학습 단계 · 토크나이저를 만들 때
  • 많은 학습 문장을 분석합니다.
  • 인접 토큰 쌍의 빈도를 계산합니다.
  • Vocabulary와 Merge Rules를 만듭니다.
  • 모델 학습 전에 한 번 수행합니다.
사용 단계 · 새 입력을 처리할 때
  • 새로운 단어나 문장을 입력받습니다.
  • 빈도를 다시 계산하지 않습니다.
  • 저장된 Merge Rules를 순서대로 적용합니다.
  • 결과 토큰을 Token ID로 변환합니다.
학습은 한 번, 사용은 반복입니다. 실제 모델을 사용할 때마다 BPE를 다시 학습하는 것이 아닙니다.
Using the Tokenizer

완성된 토크나이저로 새 단어 처리하기

이번 예제의 토크나이저는 low, lower, lowest 세 단어만 사용해 학습했습니다. 따라서 low는 큰 토큰으로 학습했지만, ly라는 토큰은 학습하지 않았습니다.

예제: lowly

1

문자를 작은 단위로 나눕니다.

l o w l y
2

첫 번째 병합 규칙을 적용합니다.

l + o → lo
lo w l y
3

두 번째 병합 규칙을 적용합니다.

lo + w → low
low l y
4

더 이상 적용할 규칙이 없습니다.

이번에 학습한 Vocabulary에는 ly가 없고, l + y → ly라는 병합 규칙도 없습니다. 따라서 l과 y는 따로 남습니다.

최종 토큰화 결과
low l y

이 결과는 lowly가 원래 이렇게 나뉘는 단어이기 때문이 아니라, 이번 예제의 작은 Vocabulary와 Merge Rules를 적용했기 때문입니다. 실제 LLM의 토크나이저에서는 lowly, low + ly, 또는 다른 조합으로 나뉠 수 있습니다.

왜 실제 모델과 토큰화 결과가 다를 수 있을까?
실제 모델은 훨씬 큰 말뭉치와 수만 개 이상의 토큰으로 학습된 토크나이저를 사용합니다. 학습 데이터, 어휘 크기, 병합 횟수와 알고리즘이 다르면 같은 단어도 서로 다르게 분할될 수 있습니다.
Token IDs

토큰은 어떻게 Token ID가 될까?

토큰화가 끝나면 각 토큰을 Vocabulary에서 찾아 대응하는 Token ID로 변환합니다.

토큰 low l y
→
Vocabulary 조회 low → 914 l → 15 y → 73
→
Token ID 시퀀스 [914, 15, 73]
Token ID는 의미를 담은 값이 아니라 Vocabulary에서 해당 토큰을 찾기 위한 고유 번호입니다. 다음 단계에서는 이 번호를 이용해 임베딩 벡터를 가져옵니다.
Benefits and Limits

BPE의 장점과 한계

장점
  • 자주 쓰는 문자열을 적은 수의 토큰으로 표현할 수 있습니다.
  • 사전에 없는 단어도 작은 조각으로 나누어 표현할 수 있습니다.
  • 어휘 크기와 토큰 수 사이의 균형을 조정할 수 있습니다.
  • 학습 절차가 비교적 단순합니다.
한계
  • 문자열 빈도를 기준으로 하며 의미를 직접 이해하지 않습니다.
  • 형태소나 단어의 의미 경계와 다르게 나뉠 수 있습니다.
  • 학습 데이터가 부족한 언어는 토큰 수가 더 많아질 수 있습니다.
  • 어휘가 너무 크면 임베딩 테이블과 출력층의 크기가 증가합니다.
BPE가 어떤 문자열을 하나의 토큰으로 합쳤다고 해서 그 문자열의 의미를 이해했다는 뜻은 아닙니다. 학습 데이터에서 자주 붙어 나타났기 때문에 병합된 것입니다.
Next Step

토크나이저 다음 단계

새 문장 Raw Text
BPE 토크나이저 Vocabulary + Rules
Token ID 정수 시퀀스
임베딩 숫자 벡터
언어 모델 RNN · Transformer
BPE는 토크나이저를 만드는 방법이고, 완성된 토크나이저는 문자열을 Token ID로 바꿉니다. 다음 장에서는 Token ID가 어떻게 임베딩 벡터로 변환되는지 살펴봅니다.
Summary

학습 내용 정리

  • 토크나이저는 반복되는 문자열을 재사용 가능한 토큰으로 만들기 위해 학습됩니다.
  • BPE는 가장 자주 함께 등장하는 인접 토큰 쌍을 반복해서 합칩니다.
  • 학습 결과로 Vocabulary와 Merge Rules가 만들어집니다.
  • Vocabulary는 사용할 수 있는 토큰과 Token ID를 저장합니다.
  • Merge Rules는 작은 토큰을 어떤 순서로 합칠지 저장합니다.
  • 실제 사용 단계에서는 빈도를 다시 계산하지 않고 저장된 규칙만 적용합니다.
  • 토큰화 결과는 학습 데이터와 Vocabulary에 따라 달라질 수 있습니다.
  • 최종 토큰은 Token ID로 변환된 뒤 임베딩과 언어 모델에 전달됩니다.