주제: TK-2 WordPiece Tokenization
문제 설정
언어 모델은 텍스트를 토큰 단위로 처리합니다. 단어 단위 토큰화(word-level)는 다음 문제를 발생시킵니다.
- 어휘 크기(vocabulary)가 매우 커짐
- 새로운 단어(OOV, out-of-vocabulary) 처리 어려움
이를 해결하기 위해 subword tokenization이 사용됩니다. WordPiece는 이러한 subword 방식 중 하나이며 BERT에서 사용된 토큰화 방법입니다.
직관 비유
- 단어 -> 여러 조각(subword)
- 자주 등장하는 조각은 하나의 토큰으로 유지
- 덜 중요한 조합은 분해
핵심 아이디어:
언어 모델의 likelihood를 최대화하는 토큰을 선택
1. 기본 아이디어
WordPiece는 다음 목표를 가집니다.
즉 선택한 토큰 집합이 전체 텍스트 확률을 가장 높게 만들도록 합니다.
기호 의미
- P(text) : 전체 문장의 확률
왜 필요한가
단순 빈도 기반(BPE)보다 더 좋은 언어 모델을 만들 수 있습니다.
주의점
직접 확률을 계산하기 어렵기 때문에 근사 방법을 사용합니다.
2. WordPiece Merge 기준
BPE는 단순히 가장 자주 등장하는 pair를 merge합니다.
하지만 WordPiece는 다음 점수를 사용합니다.
기호 의미
- count(pair) : 두 토큰이 함께 등장한 횟수
- count(token1) : 첫 번째 토큰 빈도
- count(token2) : 두 번째 토큰 빈도
직관 설명
- 두 토큰이 서로 강하게 결합될수록 score가 높아짐
- 우연한 빈도 결합은 score가 낮음
왜 필요한가
더 의미 있는 subword를 선택할 수 있습니다.
3. WordPiece 알고리즘
1. 모든 단어를 문자 단위로 시작
2. token pair score 계산
3. 가장 높은 score pair merge
4. vocabulary 업데이트
5. 반복
수식 표현
merge:
주의점
vocabulary 크기 제한에 도달하면 merge 종료
4. Tokenization 예시
단어:
playing
WordPiece 토큰:
play ##ing
특징
- ## 는 subword continuation 표시
- 단어 중간 토큰을 의미
5. WordPiece Tokenization 과정
텍스트 입력:
unbelievable
토큰 분해:
un ##bel ##iev ##able
이 토큰들은 ID로 변환됩니다.
기호 의미
- t_i : token id
- n : 토큰 길이
6. WordPiece vs BPE
| 방법 | Merge 기준 | 사용 모델 |
|---|---|---|
| BPE | 빈도 | GPT 계열 |
| WordPiece | likelihood 기반 score | BERT |
7. WordPiece 장점
- OOV 문제 해결
- 효율적인 vocabulary 구성
- 언어 모델 확률 고려
코드-수식 연결
| 개념 | 라이브러리 코드 | 설명 |
|---|---|---|
| WordPiece tokenizer | BertTokenizer |
BERT 토크나이저 |
| tokenize | tokenizer.tokenize(text) |
텍스트 -> subword |
| encode | tokenizer.encode(text) |
token id 변환 |
자주 하는 오해 5개
- WordPiece는 BPE와 완전히 동일하다고 생각한다
- subword는 항상 의미 단위라고 생각한다
- ## 기호는 모델 입력에 그대로 사용된다고 생각한다
- WordPiece는 단어 기반 tokenizer라고 생각한다
- tokenization은 모델 성능에 큰 영향을 주지 않는다고 생각한다
체크리스트 (스스로 설명 가능해야 하는 질문)
- WordPiece tokenization의 핵심 아이디어는 무엇인가?
- BPE와 WordPiece의 merge 기준 차이는 무엇인가?
- WordPiece에서 score는 어떻게 계산되는가?
- ## 토큰의 의미는 무엇인가?
- WordPiece가 OOV 문제를 어떻게 해결하는가?