1. Tokenizing
Tokenizing
Tokenizing은 텍스트와 같은 데이터를 더 작고 관리 가능한 조각인 _tokens_으로 나누는 과정입니다. 각 토큰은 고유한 숫자 식별자(ID)가 할당됩니다. 이는 기계 학습 모델, 특히 자연어 처리(NLP)를 위한 텍스트 준비의 기본 단계입니다.
이 초기 단계의 목표는 매우 간단합니다: 입력을 의미 있는 방식으로 토큰(ID)으로 나누기입니다.
How Tokenizing Works
텍스트 분할:
기본 토크나이저: 간단한 토크나이저는 텍스트를 개별 단어와 구두점으로 나누고 공백을 제거할 수 있습니다.
예: 텍스트:
"Hello, world!"
토큰:["Hello", ",", "world", "!"]
어휘 생성:
토큰을 숫자 ID로 변환하기 위해 어휘가 생성됩니다. 이 어휘는 모든 고유 토큰(단어 및 기호)을 나열하고 각 토큰에 특정 ID를 할당합니다.
특수 토큰: 다양한 시나리오를 처리하기 위해 어휘에 추가된 특수 기호입니다:
[BOS]
(시퀀스 시작): 텍스트의 시작을 나타냅니다.[EOS]
(시퀀스 끝): 텍스트의 끝을 나타냅니다.[PAD]
(패딩): 배치의 모든 시퀀스를 동일한 길이로 만들기 위해 사용됩니다.[UNK]
(알 수 없음): 어휘에 없는 토큰을 나타냅니다.예: 만약
"Hello"
가 ID64
에 할당되고,","
가455
,"world"
가78
,"!"
가467
이라면:"Hello, world!"
→[64, 455, 78, 467]
알 수 없는 단어 처리: 만약
"Bye"
와 같은 단어가 어휘에 없다면,[UNK]
로 대체됩니다."Bye, world!"
→["[UNK]", ",", "world", "!"]
→[987, 455, 78, 467]
&#xNAN;([UNK]
의 ID가987
라고 가정)
Advanced Tokenizing Methods
기본 토크나이저는 간단한 텍스트에 잘 작동하지만, 특히 큰 어휘와 새로운 또는 희귀 단어를 처리하는 데 한계가 있습니다. 고급 토크나이징 방법은 텍스트를 더 작은 하위 단위로 나누거나 토크나이징 프로세스를 최적화하여 이러한 문제를 해결합니다.
바이트 쌍 인코딩 (BPE):
목적: 어휘의 크기를 줄이고 희귀하거나 알 수 없는 단어를 자주 발생하는 바이트 쌍으로 나누어 처리합니다.
작동 방식:
개별 문자를 토큰으로 시작합니다.
가장 자주 발생하는 토큰 쌍을 반복적으로 하나의 토큰으로 병합합니다.
더 이상 병합할 수 있는 자주 발생하는 쌍이 없을 때까지 계속합니다.
장점:
모든 단어가 기존의 하위 단어 토큰을 결합하여 표현될 수 있으므로
[UNK]
토큰이 필요하지 않습니다.더 효율적이고 유연한 어휘입니다.
예:
"playing"
은"play"
와"ing"
가 자주 발생하는 하위 단어라면["play", "ing"]
로 토크나이즈될 수 있습니다.
WordPiece:
사용 모델: BERT와 같은 모델.
목적: BPE와 유사하게, 알 수 없는 단어를 처리하고 어휘 크기를 줄이기 위해 단어를 하위 단위로 나눕니다.
작동 방식:
개별 문자의 기본 어휘로 시작합니다.
훈련 데이터의 가능성을 극대화하는 가장 자주 발생하는 하위 단어를 반복적으로 추가합니다.
어떤 하위 단어를 병합할지 결정하기 위해 확률 모델을 사용합니다.
장점:
관리 가능한 어휘 크기와 단어를 효과적으로 표현하는 것 사이의 균형을 유지합니다.
희귀하고 복합적인 단어를 효율적으로 처리합니다.
예:
"unhappiness"
는 어휘에 따라["un", "happiness"]
또는["un", "happy", "ness"]
로 토크나이즈될 수 있습니다.
유니그램 언어 모델:
사용 모델: SentencePiece와 같은 모델.
목적: 가장 가능성이 높은 하위 단어 토큰 집합을 결정하기 위해 확률 모델을 사용합니다.
작동 방식:
잠재적인 토큰의 큰 집합으로 시작합니다.
훈련 데이터의 모델 확률을 가장 적게 개선하는 토큰을 반복적으로 제거합니다.
각 단어가 가장 가능성이 높은 하위 단위로 표현되는 어휘를 최종화합니다.
장점:
유연하며 언어를 더 자연스럽게 모델링할 수 있습니다.
종종 더 효율적이고 간결한 토크나이징 결과를 가져옵니다.
예:
"internationalization"
은["international", "ization"]
과 같은 더 작고 의미 있는 하위 단어로 토크나이즈될 수 있습니다.
Code Example
이해를 돕기 위해 https://github.com/rasbt/LLMs-from-scratch/blob/main/ch02/01_main-chapter-code/ch02.ipynb에서 코드 예제를 살펴보겠습니다:
References
Last updated