핵심 인사이트 (3줄 요약)
- 본질: BPE(Byte Pair Encoding)는 인간의 언어(문장)를 인공지능이 이해할 수 있는 조각(Token)으로 자를 때, 글자 단위의 비효율성과 단어 단위의 무한대 사전(Vocabulary) 문제를 해결하기 위해 '자주 같이 쓰이는 글자들을 하나의 서브워드(Subword)로 병합'하는 압축 알고리즘이다.
- 가치: "사과가", "사과를", "사과도"처럼 끝도 없이 파생되는 한국어의 교착어 문제나, 한 번도 본 적 없는 신조어(OOV: Out Of Vocabulary)가 등장해도, 이를 잘게 쪼개서("사과" + "가") 100% 인식해 내는 LLM(거대 언어 모델)의 완벽한 텍스트 전처리 표준이 되었다.
- 판단 포인트: BPE는 빈도수(Frequency)를 기준으로 글자를 병합하므로 직관적이지만, 띄어쓰기가 없는 언어나 병합 확률 자체를 최적화해야 할 때는 이를 개선한 WordPiece나 구글의 SentencePiece(Unigram) 아키텍처로 넘어가야 한다.
Ⅰ. 개요 및 필요성
컴퓨터에게 "나는 학교에 간다"를 가르치려면 글을 숫자(Vector)로 바꿔야 한다. 글을 자르는 단위(토큰화)를 어떻게 정할까? '단어' 단위로 자르면 어떨까? ("나는", "학교에", "간다"). 문제는 세상의 모든 단어를 다 사전에 넣으려면 사전의 크기가 무한대가 되고, "학교에서"라는 새 단어가 나오면 컴퓨터는 에러(OOV)를 뱉는다. 그럼 '알파벳(글자)' 단위로 자르면? ("나", "는", "학", "교", ...). 사전 크기는 작아지지만, 단어의 의미가 다 깨져버리고 글이 너무 길어져서 AI의 기억력(Context Window)이 터져버린다.
단어 단위의 무식함과 글자 단위의 비효율성을 완벽히 조율하기 위해, 1994년 데이터 압축 기술로 쓰이던 알고리즘을 NLP로 끌고 온 것이 **BPE (Byte Pair Encoding)**다. **"기본적으로 글자 단위로 쪼개되, 사람들이 자주 붙여 쓰는 글자 쌍(Pair)은 하나의 덩어리(단어)로 합쳐주자"**는 천재적인 발상의 전환이다.
📢 섹션 요약 비유: "스마", "트", "폰"이라는 낱글자들이 항상 같이 붙어 다니는 것을 본 컴퓨터가, 아예 "스마트폰"이라는 하나의 새 단어를 사전에 등록시켜 버려 읽는 속도와 기억력을 획기적으로 올려주는 압축 기술이다.
Ⅱ. 아키텍처 및 핵심 원리
BPE는 빈도수(Frequency)를 세고, 가장 많이 나온 쌍을 합치는 병합(Merge) 파이프라인을 반복한다.
┌────────────────────────────────────────────────────────┐
│ [ BPE (Byte Pair Encoding) 학습 파이프라인 ] │
├────────────────────────────────────────────────────────┤
│ 1. 초기 상태 (글자 단위 쪼개기) │
│ - 데이터: "low", "lowest", "newer", "wider" │
│ - 단어 사전: l, o, w, e, s, t, n, r, i, d │
│ │
│ 2. 빈도수 카운트 및 병합 (Merge) │
│ - 가장 자주 같이 붙어 있는 글자 쌍을 찾음 │
│ - 'e'와 'r'이 2번 같이 나옴! -> 'er'을 사전에 추가 │
│ │
│ 3. 반복 훈련 (Iteration) │
│ - 'e'와 's'가 자주 나옴 -> 'es' 추가 │
│ - 'es'와 't'가 자주 나옴 -> 'est' 추가 (서브워드 완성!) │
│ │
│ 4. 최종 결과물 (Subword Vocabulary) │
│ - 쪼개진 글자 + 자주 쓰는 덩어리(er, est)가 사전에 등록됨 │
└────────────────────────────────────────────────────────┘
- 서브워드 (Subword): 'lowest'라는 단어는 'low'와 'est(최상급)'로 쪼개진다. BPE는 형태소 분석기가 아님에도, 단순히 빈도수를 계산하다 보니 자연스럽게 'est'라는 의미 있는 어미(Subword)를 하나의 토큰으로 인식하게 된다.
- OOV(Out Of Vocabulary) 방어: 처음 보는 신조어 'fastest'가 들어와도 에러가 나지 않는다. 사전에 'fastest'는 없지만, 'f', 'a', 's', 't', 'est'로 잘게 부수어 처리한 뒤, 이를 모아서 뜻 유추해 낼 수 있기 때문이다.
📢 섹션 요약 비유: 레고 블록(글자)을 하나씩 조립하다가, 팔이나 다리처럼 항상 같이 쓰이는 조립 부품(Subword)은 아예 본드로 붙여서 하나의 거대한 부품으로 묶어버려 다음 조립을 1초 만에 끝내는 효율적인 공장이다.
Ⅲ. 비교 및 연결
초거대 언어 모델(LLM) 시대를 이끄는 서브워드 토큰화 3대장을 비교한다.
| 비교 항목 | BPE (Byte Pair Encoding) | WordPiece (워드피스) | SentencePiece (센텐스피스) |
|---|---|---|---|
| 병합 기준 | 단순히 자주 나온 횟수 (빈도수) | 언어 모델의 확률(Likelihood)을 가장 높여주는 쌍 | 글자가 아닌 통계적 확률 분포(Unigram) 모델 기반 |
| 적용 모델 | GPT-3, GPT-4, LLaMA | BERT, Electra | 구글 계열 모델 (T5, ALBERT) |
| 띄어쓰기 의존성 | 띄어쓰기 기준으로 먼저 단어를 쪼갬 | 띄어쓰기 기준으로 먼저 쪼갬 | 띄어쓰기조차 하나의 특수 기호(_)로 취급함 |
| 다국어 지원 | 영어에 특화됨, 한국어엔 약점 | 형태소 분석이 필요해 번거로움 | 한국어/일본어 등 다국어 토큰화의 절대 표준 |
한국어는 "밥을", "밥이", "밥은"처럼 어간과 조사가 붙어 다닌다. BPE를 바로 쓰면 영어를 쪼갤 때보다 효율이 떨어진다. 그래서 한국어 모델에서는 띄어쓰기를 무시하고 문장 전체를 통계적으로 쪼개는 구글의 SentencePiece 라이브러리가 사실상 업계 표준으로 쓰인다.
📢 섹션 요약 비유: BPE가 사람들이 많이 쓴 단어(빈도)만 보고 대충 줄임말을 만드는 중학생이라면, WordPiece는 문맥의 의미(확률)가 가장 잘 살아나는 고급 줄임말을 만드는 국어 선생님이고, SentencePiece는 띄어쓰기가 없는 아랍어나 한국어까지 모두 쪼개버리는 100개국어 통역사다.
Ⅳ. 실무 적용 및 기술사 판단
실무 적용 시나리오: 회사에서 한국어 전용 LLM을 처음부터(From Scratch) 프리트레이닝하려 한다. 인터넷 뉴스 100GB를 긁어온 뒤, 가장 먼저 SentencePiece 라이브러리를 돌려 5만 개(Vocabulary Size = 50,000) 크기의 단어 사전을 굽는다. 이 사전을 구워야만 비로소 한글 문장이 5만 개의 번호(ID) 중 하나로 변환되어 GPU 텐서(Tensor) 연산으로 넘어갈 수 있다.
기술사 판단 포인트 (Trade-off): 토크나이저 아키텍처 설계 시 기술사는 **'사전 크기(Vocabulary Size)'**를 최적의 비율로 타협해야 한다.
- 사전 크기를 10만 개로 너무 크게 잡으면, 단어가 안 쪼개져서 모델이 긴 단어의 의미를 통째로 외울 수 있다. 하지만 10만 개짜리 소프트맥스(Softmax) 출력층을 계산해야 하므로 메모리와 연산 시간이 폭발한다.
- 반면 사전 크기를 1만 개로 너무 작게 잡으면, 단어가 글자 단위로 갈기갈기 찢겨나가 모델이 문맥(Context)을 파악하는 데 방해를 받고 최대 입력 길이(Context Window)를 금방 채워버린다.
- 따라서 3만~5만 개 사이에서, 한 단어가 평균 1.5~2개의 토큰으로 쪼개지는 적절한 압축률을 달성하도록 BPE 학습을 모니터링해야 한다.
📢 섹션 요약 비유: 단어 사전이 너무 크면 도서관 색인이 10만 장이라 책을 찾다 쓰러지고, 너무 작으면 1만 장밖에 안 되지만 책이 전부 갈기갈기 찢어져 있어서 퍼즐을 맞추느라 쓰러진다. 이 사이의 황금 밸런스를 찾는 것이 토크나이저 설계다.
Ⅴ. 기대효과 및 결론
BPE와 서브워드(Subword) 토큰화 기술은, 인간이 단어를 띄어쓰기로 구분한다는 언어학적 고정관념을 부수고 철저히 '통계와 빈도'라는 컴퓨터의 시각으로 언어를 재조립한 혁명이다. 신조어와 오타가 난무하는 인터넷 세상의 데이터를 AI가 단 한 번의 에러(OOV) 없이 소화해 낸 것은 전적으로 이 압축 기술 덕분이다.
결론적으로 토큰화(Tokenization)는 LLM의 성능을 지배하는 숨겨진 심장이다. GPT-4가 코딩을 기가 막히게 잘하는 이유도 공백이나 탭(Tab) 같은 파이썬 코드의 구조를 BPE 토큰으로 완벽하게 병합해 학습했기 때문이다. 기술사는 모델의 아키텍처(트랜스포머)를 튜닝하기 전에, 언어를 잘게 썰어 넣는 이 BPE의 칼날이 얼마나 예리하게 세팅되었는지를 가장 먼저 감리해야 한다.
📢 섹션 요약 비유: 아무리 훌륭한 믹서기(LLM)가 있어도, 사과를 수박만 하게 잘라 넣거나(단어 단위), 모래알처럼 갈아서 넣으면(글자 단위) 맛있는 주스가 나오지 않는다. BPE는 믹서기가 가장 갈기 좋은 한 입 크기(서브워드)로 과일을 썰어주는 완벽한 주방 보조다.
📌 관련 개념 맵
- 상위 개념: 자연어 처리 (NLP), 텍스트 임베딩 (Text Embedding)
- 하위 개념: Subword, OOV (Out Of Vocabulary), Vocabulary Size
- 연결 개념: SentencePiece, WordPiece, LLM (GPT, BERT)
👶 어린이를 위한 3줄 비유 설명
- 컴퓨터에게 "개미", "개구리", "개나리"를 가르치려면 세 단어를 모두 외워야 해서 너무 힘들어요. (단어 사전 폭발)
- BPE는 컴퓨터가 글씨를 보더니 "어? '개'라는 글자가 계속 겹치네? '개'를 따로 떼어내서 하나의 블록으로 묶어버리자!"라고 스스로 규칙을 찾아내는 마법이에요.
- 이렇게 자주 쓰는 글자 블록(서브워드)을 만들어두면, 처음 보는 "개조심"이라는 단어가 나와도 당황하지 않고 척척 읽어낼 수 있답니다!