주제: TK-3 SentencePiece (Language-Independent Tokenization)

분류: llm

타입: concept

난이도: 입문

선수지식: 없음

SentencePiece는 "공백으로 먼저 자르지 말고, 문자열 전체에서 바로 subword를 배우자"는 발상이다.

BPE나 WordPiece를 먼저 배우면 SentencePiece도 비슷해 보일 수 있다. 하지만 핵심 차이는 전처리 철학이다. SentencePiece는 언어마다 단어 경계를 따로 정하지 않고, 공백까지 포함한 원문 문자열 자체에서 subword를 배운다.

그래서 공백 규칙이 영어처럼 명확하지 않은 언어나, 다국어를 한 모델로 처리해야 하는 상황에서 특히 강하다. 한국어 문서에서도 이 차이를 이해하면 왜 SentencePiece가 자주 쓰이는지 바로 연결된다.

SentencePiece는 "공백으로 먼저 자르지 말고, 문자열 전체에서 바로 subword를 배우자"는 발상이다.

BPE나 WordPiece를 배운 뒤 SentencePiece를 보면 비슷해 보이지만, 핵심 차이는 전처리 철학이다. 언어마다 단어 경계를 따로 정하지 않고, 공백까지 포함한 원문 문자열 자체에서 subword를 배운다. 그래서 다국어 환경이나 공백 규칙이 약한 언어에서 특히 강하다.

문제 설정

기존 토크나이저(BPE, WordPiece)는 대부분 공백 기반 단어 분리를 전제로 합니다. 하지만 일부 언어에서는 공백이 단어 경계를 정확히 나타내지 않습니다.

이 문제를 해결하기 위해 Google이 개발한 토크나이저가 SentencePiece입니다.

즉 SentencePiece는 tokenizer 앞에 별도의 language-specific pre-tokenizer를 두지 않아도 된다는 장점이 있다. 파이프라인이 더 단순해지고, 언어별 예외처리도 줄어든다.

즉 SentencePiece는 tokenizer 이전에 language-dependent pre-tokenizer를 두지 않아도 된다는 장점이 있다. 이 덕분에 한국어, 일본어, 중국어처럼 공백 규칙이 영어와 다른 언어에서도 더 일관된 파이프라인을 만들 수 있다.

직관 비유

핵심 아이디어:

공백을 포함한 문자열 전체를 하나의 sequence로 보고 subword를 학습

1. Language-Independent Tokenization

SentencePiece는 입력 텍스트를 그대로 사용합니다.

예:

Hello world

SentencePiece 내부 표현:

▁Hello ▁world

기호 의미

왜 필요한가

주의점

공백 자체도 토큰의 일부가 됩니다.

2. SentencePiece 학습 목표

SentencePiece는 다음 확률 모델을 사용합니다.

P(sentence)=ΠP(tokeni)

기호 의미

왜 필요한가

subword 분해가 문장의 확률을 잘 설명하도록 합니다.

주의점

실제 구현에서는 Unigram LM을 사용합니다.

3. Unigram Language Model

SentencePiece의 대표 알고리즘은 Unigram LM입니다.

문장을 여러 방식으로 분해할 수 있습니다.

예:

unbelievable

un + believable
unbel + iev + able
un + bel + iev + able

각 분해의 확률:

P(sentence)=ΠP(tokeni)

핵심 아이디어

확률이 가장 높은 token segmentation을 선택합니다.

주의점

token set은 반복적으로 pruning됩니다.

4. Normalization 전략

SentencePiece는 토큰화 전에 텍스트 정규화를 수행합니다.

대표적인 정규화:

수식 표현:

x=normalize(x)

기호 의미

왜 필요한가

텍스트 표현의 변형을 줄여 안정적인 토큰화를 제공합니다.

5. SentencePiece Tokenization 예

입력:

Machine learning is powerful

토큰:

▁Machine ▁learn ing ▁is ▁power ful

이 토큰은 ID로 변환됩니다.

x=[t1,t2,...,tn]

기호 의미

6. SentencePiece vs BPE

방법 특징 사용 모델
BPE 빈도 기반 merge GPT
WordPiece likelihood 기반 merge BERT
SentencePiece 언어 독립 tokenizer T5, ALBERT

7. SentencePiece 장점

코드-수식 연결

개념 라이브러리 코드 설명
SentencePiece sentencepiece.SentencePieceProcessor() 토크나이저 로드
encode sp.encode(text) 텍스트 -> 토큰
train spm.SentencePieceTrainer tokenizer 학습

자주 하는 오해 5개

체크리스트 (스스로 설명 가능해야 하는 질문)