Tokenizer는 왜 Subword를 선택했는가
OOV 문제의 본질부터 BPE·WordPiece·Unigram·SentencePiece의 설계 철학까지, 현대 LLM이 Subword를 표준으로 삼은 이유를 추적한다.
- 01 언어 모델이란 무엇인가 — 확률의 연쇄에서 ChatGPT까지
- 02 단어의 의미는 어떻게 숫자가 되는가
- 03 Word2Vec은 왜 작동하는가 — PMI의 다른 이름
- 04 GloVe는 왜 두 패러다임의 통합인가
- 05 Tokenizer는 왜 Subword를 선택했는가
- 06 FastText에서 ELMo까지 — 임베딩은 어떻게 문맥을 얻었는가
- 07 Embedding 평가는 왜 두 가지가 필요한가
NLP 파이프라인의 첫 번째 결정은 텍스트를 어떤 단위로 쪼개느냐다. 이 결정이 모델의 어휘 크기, 시퀀스 길이, OOV 처리 방식을 모두 규정한다. 그렇다면 왜 GPT, BERT, LLaMA는 모두 “Subword”라는 같은 답에 도달했는가?
문제: Word-level은 왜 실패하는가
전통적인 Word-level 토크나이저는 직관적이다. "the cat sat" → [the, cat, sat]. 그런데 두 가지 벽에 부딪힌다.
첫째, OOV 문제다. 학습 코퍼스에 없는 단어는 전부 <UNK>로 뭉쳐진다. 신조어, 고유명사, URL, 숫자 표기 — 세상은 끊임없이 새 단어를 만들어낸다. Heaps’ Law는 이 문제가 코퍼스를 키워도 사라지지 않음을 수학적으로 보여준다.
어휘 크기 는 코퍼스 크기 의 sub-linear 함수다. 즉, 아무리 데이터를 쌓아도 새 어휘가 계속 등장하며, OOV rate는 결코 0이 되지 않는다.
둘째, 형태소 풍부 언어의 어휘 폭발이다. 한국어는 agglutinative 언어다. 어간 “먹”에서 파생되는 활용형은 수백 개에 이른다. 전체 한국어 word-level 어휘는 이론상 ~ 규모로, 어떤 임베딩 행렬도 수용할 수 없다.
세 접근의 트레이드오프
Word, Character, Subword — 세 접근은 서로 다른 지점에서 타협한다.
Sequence length Vocab size OOV
Word-level: 1x ~1M+ Many
Subword (BPE): ~1.5x 32k-50k None
Character: ~5x ~100 None
Character-level은 OOV를 완전히 없애지만, 시퀀스가 5배 이상 길어진다. Transformer의 self-attention은 이다. GPT-3가 character-level을 채택했다면 학습 compute는 약 25배 증가했을 것이다 — 사실상 불가능하다.
Subword는 이 사이의 sweet spot이다. 자주 등장하는 단어는 단일 토큰으로, 희귀하거나 새로운 단어는 subword의 조합으로 표현한다. Vocab 크기는 32k50k로 제어되고, 시퀀스 길이는 word-level 대비 약 1.31.5배다.
Subword 어휘가 모든 개별 문자(또는 바이트)를 포함하면, 어떤 입력도 worst-case에 문자 단위 분해로 토크나이즈 가능하다. OOV는 원리적으로 0이 된다.
BPE와 WordPiece: Bottom-up의 두 철학
알고리즘의 층위에서 BPE와 WordPiece는 같은 방향 — bottom-up merge — 을 향하면서도 다른 기준으로 쌍을 선택한다.
BPE (Sennrich 2016)는 순수한 빈도 기반이다. 매 iteration마다 코퍼스에서 가장 자주 인접하는 토큰 쌍을 병합한다.
WordPiece (Schuster & Nakajima 2012)는 likelihood gain을 기준으로 삼는다. 병합 후 코퍼스 likelihood를 가장 많이 높이는 쌍을 선택하는 것인데, 이 criterion은 결국 PMI와 동치다.
실질적 차이는 이렇다. BPE는 (the, of)처럼 자주 등장하지만 의미적으로 독립적인 쌍도 우선 병합한다. WordPiece는 PMI가 높은 — 즉 두 토큰이 개별 빈도 이상으로 함께 등장하는 — 의미적 결합을 우선한다. 그 결과 BERT 계열은 WordPiece를, GPT 계열은 BPE를 채택했다. 그러나 Bostrom & Durrett 2020의 실험에서 두 알고리즘의 BLEU·perplexity 차이는 1% 이내다. 어휘 선택 알고리즘의 차이보다 코퍼스 규모와 모델 크기가 훨씬 큰 변수다.
Unigram LM: Top-down과 확률적 분절
BPE와 WordPiece가 작은 어휘에서 시작해 병합으로 어휘를 키우는 반면, Unigram LM (Kudo 2018)은 반대 방향이다. 큰 초기 어휘에서 시작해 contribution이 낮은 토큰을 EM + pruning으로 제거한다.
핵심은 분절의 확률 모델이다. 분절 의 likelihood를 다음으로 정의한다.
최적 분절은 Viterbi로 구한다. 더 중요한 것은 Subword Regularization — 학습 중 최적 분절 대신 확률에 따라 샘플링한 다양한 분절을 사용함으로써, 모델이 하나의 토크나이제이션에 과적합하지 않도록 한다. NMT에서 BLEU +1.5의 향상이 보고됐다.
SentencePiece: Language-agnostic의 완성
BPE와 WordPiece는 whitespace를 단어 경계로 가정하는 pre-tokenization에 의존한다. 이는 공백이 모호한 한국어, 공백이 없는 중국어·일본어에서 즉각 한계를 드러낸다.
SentencePiece (Kudo & Richardson 2018)는 이 가정을 제거한다. 공백을 특수 문자 ▁ (U+2581)로 치환한 뒤, 전체 텍스트를 바이트 스트림으로 다루고 BPE 혹은 Unigram 백엔드로 subword를 학습한다.
"안녕 세계" → "▁안녕▁세계" → ["▁안", "녕", "▁세계"]
Detokenization도 단순하다. 토큰을 이어 붙인 뒤 ▁를 공백으로 치환하면 원본이 정확히 복원된다.
LLaMA 1/2/3, T5, mT5, ALBERT, Whisper — 현대 LLM의 표준이 SentencePiece로 수렴한 이유가 여기 있다.
정리
- OOV는 Heaps’ Law가 보장하듯 어떤 word-level 어휘로도 근본적으로 해결되지 않는다. Subword만이 OOV를 원리적으로 0으로 만든다.
- BPE(빈도 기반)와 WordPiece(PMI 기반)는 다른 기준으로 병합하지만 실전 품질 차이는 미미하다. 알고리즘보다 코퍼스와 규모가 더 큰 변수다.
- Unigram LM은 확률적 분절과 Subword Regularization으로 모델의 토크나이제이션 강건성을 높인다.
- SentencePiece는 whitespace 의존성을 제거해 다국어 처리를 통일했다. 단, language-agnostic 알고리즘이 language-fair 결과를 자동으로 보장하지는 않는다.
Tokenizer는 텍스트를 조각내는 도구이기 이전에, 어떤 언어와 어떤 사용자에게 능력을 배분할지를 결정하는 정책이다.