728x90
반응형
SMALL

서브워드 단위 토큰화(subword based tokenization) 이란 ?

서브워드 방식은 텍스트를 의미를 가진 최소 단위 (Subwords)로 쪼개는 기법이다. 흔히 접두가, 접미사, 언근 등의 단위가 토큰이 된다. 

이 방식은 단어 단위 와 문자 단위 토큰화의 장점을 결합한 방법으로, 현대의 대형 언어 모델 (LLM)에서 가장 널리 사용된다. 

 

예: "unhappiness"

토큰화 결과 : ["un", "happi", "ness"]

-> 하나의 단어를 여러 개의 의미 단위로 분해 

 

왜 서브워드 방식이 표준이 되었을까요?

  1. OOV 문제의 세련된 해결
    사전에 없는 단어가 들어와도 문자 단위로 완전히 분해하는 대신, 알고 있는 조각들을 조합해 의미를 유추한다. 
    예를 들어 "Smartest"라는 단어를 처음 보더라도 모델은 Smart + est로 나누어 처리할 수 있다. 
  2. 효율적인 사전 크기
    단어 단위처럼 수만 개의 변형을 다 저장할 필요가 없다. 기본이 되는 조각들만 저장해두고 조합하면 되기 때문입니다. 덕분에 메모리를 아끼면서도 풍부한 표현이 가능해진다. 
  3. 신조어 및 오타 대응
    새로 생겨난 유행어나 약간의 오타도 모델이 알고 있는 '의미 조각'들 내에서 최대한 해석해낼 수 있는 복원력을 가진다. 

한계점

  1. 토큰 분해 방식의 의존성
    어떤 기준으로 나누느냐에 따라 결과가 달라진다. 
  2. 완벽한 의미 단위는 아님
    서브워드는 사람이 이해하는 의미 단위와 항상 일치하지 않는다. 

 

왜 LLM은 서버워드를 사용할까?

서브워드 토큰화는 다음과 같은 이유로 LLM에서 필수적으로 사용된다.

  • OOV 문제 해결
  • 의미 단위를 일정 수준 유지
  • 어휘 크기와 시퀀스 길이의 균형

 

대표적인 알고리즘

  1. BPE (Byte Pair Encoding) 
    가장 빈번하게 함께 등장하는 문자 쌍을 반복적으로 합쳐서 하나의 토큰으로 만든다. (GPT 시리즈에서 사용)
  2. WordPiece
    BPE와 유사하지만, 단순히 빈도가 아니라 합쳤을 때 데이터의 가능도(Likelihood)를 높이는 방향으로 합친다. (BERT에서 사용)
  3. SentencePiece
    사전 지식(공백 등) 없이도 동작하여 한국어처럼 띄어쓰기가 복잡한 언어에 특히 강력하다. 

 

파이썬 코드 : HuggingFace 활용

from transformers import AutoTokenizer

# BERT 토크나이저 불러오기
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")

text = "I am looking for subword tokenization."
tokens = tokenizer.tokenize(text)

print(f"토큰화 결과: {tokens}")
# 결과 예시: ['i', 'am', 'looking', 'for', 'sub', '##word', 'token', '##iza', '##tion', '.']

 

요약 

서브워드 토큰화는 표현력과 효율성을 모두 잡은 방식으로 현태 LLM의 핵심 토큰화 전략이다. 

 

 

제미나이, 챗지피티 등을 이용 하여 작성 

728x90
반응형

+ Recent posts