BPE (Byte Pair Encoding)란 ?
BPE (Byte Pair Encoding)는 서브워드 토큰화를 위한 대표적인 알고리즘으로,
자주 등장하는 문자 쌍(Pair)를 반복적으로 병합하여 새로운 토큰을 만들어가는 방식이다.
원래는 데이터 압축 알고리즘으로 사용되었지만, 현재는 자연어 처리에서 토큰화를 위해 널리 활용된다.
=> 가장 빈도수가 높은 "문자 쌍"을 반복적으로 병합하여 새로운 토큰 만드는 방식
논문 : https://arxiv.org/abs/1508.07909
Neural Machine Translation of Rare Words with Subword Units
Neural machine translation (NMT) models typically operate with a fixed vocabulary, but translation is an open-vocabulary problem. Previous work addresses the translation of out-of-vocabulary words by backing off to a dictionary. In this paper, we introduce
arxiv.org
동장 원리
BPE는 다음과 같은 과정을 반복한다.
- 최기화 : 텍스트를 문자 단위로 분리
- 빈도수 계산 : 가장 자주 등장하는 문장 쌍을 찾음
- 병합 : 해당 쌍을 하나의 토큰으로 병합
- 이 과정을 반복
예:
초기 문장:
"low lower lowest"
1. 문자 단위 분리
l o w l o w e r l o w e s t
2. 빈도 계산 후 병합
- "l"+"o" → "lo"
- "lo"+"w" → "low"
3. 반복 결과
["low", "low", "er", "low", "est"]
특징
- 자주 등장하는 패턴을 자동으로 학습
- 단어 내부 구조를 반영 가능
- OOV 문제를 효과적으로 해결
한계점
- 병합 기준이 단순 빈도 기반
- 의미를 고려하지 않음
- 학습 데이터에 의존적
왜 중요한가 ?
BPE는 서브워드 토큰화의 기본 개념을 제공하며, 이후 등장한 WordPiece, SentencePiece기반이 된다.
특시 GPT계열 모델에서도 이와 유사한 방식의 토큰화가 사용된다.
실무에서의 활용(GPT)
GPT 시리즈는 Byte-level BPE라는 방식을 사용한다. 유니코드 문자를 그대로 쓰는 대신, 문자를 바이트 (Byte)단위로 변환하여 처리한다. 이렇게 하면 어떤 언어, 어떤 이모지, 어떤 특수문자가 들어와도 OOV 문제 없이 완벽하게 토큰하할 수 있다.
Python으로 간단한 BPE 구현
Algorithm 1 Learn BPE operations 논문 참고
import re, collections
def get_stats(vocab):
pairs = collections.defaultdict(int)
for word, freq in vocab.items():
symbols = word.split()
for i in range(len(symbols)-1):
pairs[symbols[i],symbols[i+1]] += freq
return pairs
def merge_vocab(pair, v_in):
v_out = {}
bigram = re.escape(' '.join(pair))
p = re.compile(r'(?<!\S)' + bigram + r'(?!\S)')
for word in v_in:
w_out = p.sub(''.join(pair), word)
v_out[w_out] = v_in[word]
return v_out
vocab = {'l o w </w>' : 5, 'l o w e r </w>' : 2,
'n e w e s t </w>':6, 'w i d e s t </w>':3}
num_merges = 10
for i in range(num_merges):
pairs = get_stats(vocab)
best = max(pairs, key=pairs.get)
vocab = merge_vocab(best, vocab)
print(best)
요약
BPE는 빈도 기반으로 서브워드를 생성하는 알고리즘으로, 현대 토큰화 기법의 출발점이다.
BPE는 단순한 알고리즘이지만, 모델이 데이터를 받아들이는 해상도를 가장 효율적으로 결정하는 핵심 인프라이다.
제미나이, 챗지피티 등을 이용 하여 작성
'LLM' 카테고리의 다른 글
| 7. SentencePiece (0) | 2026.04.15 |
|---|---|
| 6. WordPiece (0) | 2026.04.14 |
| 4. 토크나이즈 - 서브워드 단위 토큰화(subword based tokenization) (0) | 2026.04.10 |
| 3. 토크나이즈 - 문자 단위 토큰화(Character - based Tokenization) (0) | 2026.04.09 |
| 2. 토크나이즈 - 단어 단위 토큰화(Word - based Tokenization) (0) | 2026.04.08 |