AI Engineer 공간 "사부작 사부작"

LLM의 첫 단추, 토크나이저: 텍스트를 숫자로 바꾸는 마법 본문

Theory/Transfomer

LLM의 첫 단추, 토크나이저: 텍스트를 숫자로 바꾸는 마법

ChoYongHo 2025. 7. 2. 08:12
728x90

LLM의 첫 단추, 토크나이저: 텍스트를 숫자로 바꾸는 마법

거대 언어 모델(LLM)이 마치 사람처럼 글을 쓰고, 대화하고, 번역하는 모습을 보면 경이롭기까지 합니다. 하지만 컴퓨터는 본질적으로 '텍스트'를 이해하지 못합니다. 오직 숫자만을 처리할 수 있을 뿐이죠. 그렇다면 LLM은 어떻게 우리가 사용하는 자연어를 이해하고 처리하는 걸까요? 그 비밀의 첫 단추는 바로 토크나이저(Tokenizer)에 있습니다. 토크나이저는 인간의 언어를 기계가 이해할 수 있는 숫자 데이터로 변환하는 필수적인 다리 역할을 합니다. 이 과정이 없다면 LLM은 그저 복잡한 연산을 수행하는 기계에 불과할 것입니다. 이번 글에서는 LLM의 심장부로 들어가는 첫 관문인 토크나이저의 개념부터 시작해, 서브워드 방식, 임베딩, 그리고 모델에게 특별한 지시를 내리는 스페셜 토큰까지 쉽고 알아 보겠습니다.


토크나이저(Tokenizer)와 서브워드: 단어 사전에 없는 단어는 어떻게?

가장 기본적인 토크나이저는 문장을 단어 단위로 나누는 것입니다. 예를 들어 "I love you"는 "I", "love", "you" 세 개의 조각으로 나뉩니다. 하지만 이 방식에는 치명적인 단점이 있습니다. 세상의 모든 단어를 미리 학습하고 사전에 담아둘 수는 없기 때문입니다. "unhappiness"나 "먹었다"와 같은 단어는 "happy"나 "먹다"와 관련이 깊지만, 단순 단어 분할 방식으로는 이 관계를 알 수 없고, 사전에 없는 단어(Out-of-Vocabulary, OOV)는 그냥 무시해버리게 됩니다.

이 문제를 해결하기 위해 등장한 것이 바로 서브워드 토크나이저(Subword Tokenizer)입니다.

  • 개념: 서브워드 토크나이저는 단어를 의미 있는 더 작은 단위(subword)로 분해하는 방식입니다. 자주 사용되는 단어는 그대로 두고, 자주 등장하지 않거나 복잡한 단어는 더 작은 단위로 쪼개어 처리합니다. 이를 통해 한정된 크기의 단어 사전으로도 거의 모든 단어를 표현할 수 있게 됩니다. 대표적으로 BERT 모델에 사용되는 WordPieceGPT 계열에서 사용하는 BPE(Byte Pair Encoding)가 여기에 속합니다.
  • 예시: OpenAI의 GPT-4 토크나이저로 "저의 직무는 AI Engineer 입니다. 제 이름은 ChoYongho 입니다."라는 문장을 토큰화하면 총 18개의 토큰으로 분리됩니다. 이때 한국어 단어들은 음절 단위나 더 작은 단위로 세분화되고, 영어 단어인 'Engineer'와 고유명사 'ChoYongho'도 각각 여러 토큰으로 나뉘어 처리됩니다. 특히 한국어의 경우 영어 대비 약 2-3배 더 많은 토큰이 필요하므로, 같은 의미를 전달하는데도 더 많은 계산 비용이 발생합니다.
  • 비유: 서브워드 토크나이저는 마치 레고 블록과 같습니다. 자동차, 집, 비행기 등 모든 완성품을 하나하나 가지고 있을 필요 없이, 기본적인 블록(서브워드) 몇 종류만 있으면 어떤 복잡한 형태(단어)라도 조립해서 만들어낼 수 있습니다. 처음 보는 형태의 장난감이라도 기존 블록들을 조합해 표현할 수 있는 것과 같은 원리입니다.

임베딩(Embedding): 토큰에 '의미'를 불어넣는 과정

토크나이저를 통해 텍스트를 토큰으로 나누고, 각 토큰을 고유한 숫자(ID)로 변환했다 해도 아직 부족합니다. [7993, 170, 11303, ...]와 같은 숫자 배열은 그 자체로 단어의 의미나 관계를 담고 있지 않기 때문입니다. 여기서 임베딩(Embedding)이 등장합니다.

  • 개념: 임베딩은 각 토큰을 고정된 크기의 실수 벡터(vector)로 변환하는 과정 또는 그 결과물을 의미합니다. 이 벡터 공간에서는 의미적으로 유사한 단어들이 서로 가까운 위치에 자리하게 됩니다. 즉, '고양이'와 '강아지'는 가깝게, '책상'은 멀리 떨어져 있도록 벡터 값을 부여하는 것입니다.
  • 예시: TensorFlow의 Embedding Projector를 사용해 단어들을 시각화하면, 지리적인 의미의 'geographic'이라는 단어 주변에 'geographical', 'coordinates', 'map', 'geography' 등 의미적으로 관련된 단어들이 모여있는 것을 확인할 수 있습니다. 이는 각 단어가 의미를 담은 좌표값을 부여받았기 때문입니다.
  • 비유: 임베딩은 밤하늘의 별자리 지도를 만드는 것과 같습니다. 각 별(토큰)은 저마다 고유한 좌표(벡터)를 가집니다. 우리는 이 좌표를 보고 어떤 별들이 모여 '오리온자리'를 이루고, 어떤 별이 '북극성'과 가까운지 그 관계를 파악할 수 있습니다. 임베딩 벡터 역시 단어들의 의미 관계를 나타내는 좌표인 셈입니다.

스페셜 토큰(Special Tokens): 모델에게 보내는 특별 지시어

모델이 문장의 시작과 끝을 인지하거나, 두 문장을 구분하거나, 특정 단어를 가리고 예측하게 하려면 어떻게 해야 할까요? 이때 스페셜 토큰이라는 특별한 지시어가 사용됩니다.

  • 개념: 스페셜 토큰은 원래 텍스트에는 없지만, 모델의 학습과 추론을 돕기 위해 인위적으로 추가되는 특별한 토큰입니다.
  • 예시: 대표적인 스페셜 토큰은 다음과 같습니다.
    • [CLS] (Classification): 문장의 시작을 알리는 토큰으로, BERT와 같은 모델에서는 전체 문장의 의미를 압축하는 역할을 합니다.
    • [SEP] (Separator): 두 문장을 구분하거나 한 문장의 끝을 알립니다.
    • [PAD] (Padding): 여러 문장을 한 번에 처리하기 위해 길이를 맞추려고 빈 공간을 채우는 토큰입니다.
    • [UNK] (Unknown): 서브워드로도 표현할 수 없는 미지의 토큰을 나타냅니다.
    • [MASK]: 모델의 사전 학습(Pre-training)에서 사용되며, 문장의 일부 단어를 이 토큰으로 가리고 모델이 맞추도록 훈련시킵니다.
  • 비유: 스페셜 토큰은 연극 대본의 지문과 같습니다. 배우(모델)는 대사("나는 학생입니다")뿐만 아니라, "(등장하며)", "(관객을 바라보며)", "[1막 끝]"과 같은 지문(스페셜 토큰)을 보고 행동을 결정합니다. [CLS]는 '등장' 신호, [SEP]는 대화 상대가 바뀜을 알리는 신호, [MASK]는 배우가 일부러 대사를 잊은 척하고 다른 배우가 채워주길 기다리는 상황과 비슷합니다.

마무리하며

지금까지 우리는 LLM이 인간의 언어를 처리하는 첫 번째 단계인 토크나이저의 세계를 여행했습니다. 텍스트를 잘게 쪼개는 토크나이저, OOV 문제를 해결하는 서브워드, 토큰에 의미를 부여하는 임베딩, 그리고 모델에 지시를 내리는 스페셜 토큰까지, 이 모든 과정이 유기적으로 결합하여 비로소 모델은 텍스트를 이해할 준비를 마칩니다. BERT와 같은 모델은 이 과정을 거쳐 만들어진 숫자 벡터들을 입력받아, 양방향으로 문맥을 깊이 있게 학습하며 놀라운 성능을 발휘합니다. 토크나이저는 눈에 잘 띄지 않는 배경 작업처럼 보일 수 있지만, 사실은 LLM이라는 거대한 건축물의 가장 단단한 주춧돌입니다. 이 첫 단추를 어떻게 끼우느냐에 따라 모델의 성능이 크게 달라질 수 있기 때문입니다. 토크나이저에 대한 이해는 AI의 작동 원리를 이해하는 핵심이라고 할 수 있습니다.


https://arxiv.org/abs/2404.08335

 

Toward a Theory of Tokenization in LLMs

While there has been a large body of research attempting to circumvent tokenization for language modeling (Clark et al., 2022; Xue et al., 2022), the current consensus is that it is a necessary initial step for designing state-of-the-art performant languag

arxiv.org

https://arxiv.org/abs/2403.00417

 

Rethinking Tokenization: Crafting Better Tokenizers for Large Language Models

Tokenization significantly influences language models(LMs)' performance. This paper traces the evolution of tokenizers from word-level to subword-level, analyzing how they balance tokens and types to enhance model adaptability while controlling complexity.

arxiv.org

https://platform.openai.com/tokenizer

 

 

 

728x90