생성형 AI

대형 언어 모델의 세계로 - ChatGPT의 원리와 활용 (3)토큰화

대소니 2025. 2. 12. 08:33

 

대형 언어 모델의 세계로 - ChatGPT의 원리와 활용에 대한
개요와 전체 목차 및 저자 소개는 아래의 이전 글에서 보실 수 있습니다.

 

대형 언어 모델의 세계로 - ChatGPT의 원리와 활용 개요

안녕하세요 최근에 가장 많이 사용이 되고 있는 대형 언어 모델의 세계로 입문하고자 하시는 분들을 위해서 좋은 유튜브 강좌를 시리즈로 작성해 보려 합니다.원 저자는 Andrej Karpathy 로 스텐포

daeson.tistory.com

 

 

토큰화(Tokenization)

텍스트를 어떻게 표현할 것인가?

우리는 텍스트를 컴퓨터에서 처리할 수 있도록 변환해야 해요.
뉴런 네트워크 모델들은 1차원(onedimensional) 순차적 심볼(sequence of symbols)을 입력으로 받아요.
또한, 이 심볼들은 유한한 개수의 심볼 집합(finite set of symbols)을 가져야 해요.

그래서 우리가 해야 할 일은:

  1. 사용할 심볼들을 정의하고
  2. 데이터를 해당 심볼들의 1차원 순서로 변환하는 것이죠.

지금 우리가 다루고 있는 텍스트는 화면에서는 2차원으로 보일지 몰라도,
실제로는 왼쪽에서 오른쪽으로, 위에서 아래로 읽는 1차원적인 순서를 가지고 있어요.

심볼은 단어와 같아요.
한글이나 영어와 같은 텍스트 문장들은 1차원 데이터로 표현이 되어 있는데 컴퓨터는 어떻게 이해하는지 알아보아요.

 

텍스트의 컴퓨터 내 표현 방식

컴퓨터는 문자를 직접 이해할 수 없어요.
그래서 텍스트를 이진 데이터(0과 1의 조합)로 변환해야 해요.
예를 들어, UTF-8로 인코딩하면 텍스트는 컴퓨터 내부에서 비트(bit)로 표현돼요.

비트는 0과 1의 조합이므로,
우리는 이진 코드(binary code)를 사용해 텍스트를 저장할 수 있어요.
하지만 이렇게 표현하면 너무 길어지기 때문에 더 효율적인 방법이 필요해요.

컴퓨터는 0와 1만 알아듣기 때문에 일반 텍스트는 사람은 읽을 수 있어도 컴퓨터가 읽지는 못해요.

 

심볼을 줄이고, 표현 방식을 최적화하기

비트 하나하나를 직접 다루는 건 비효율적이죠. 그래서 여러 개의 비트를 묶어 표현하는 방식을 사용해요.

  1. 바이트(Byte) 단위 표현
    • 8개의 비트를 한 묶음으로 만들어 **바이트(byte)**로 변환해요.
    • 8비트로 표현할 수 있는 경우의 수는 **256가지 (0~255)**예요.
    • 즉, 우리는 256개의 고유한 심볼을 가질 수 있어요.
    • 이렇게 하면 원래보다 8배 짧은 시퀀스로 압축할 수 있어요.
  2. 바이트를 고유한 ID(심볼)로 생각하기
    • 숫자가 아니라, 256개의 고유한 이모지(Emoji)처럼 생각하면 이해가 쉬워요.
    • 하지만 이 방식도 여전히 충분히 압축된 것은 아니에요.

데이터의 세계에서는 최적화가 의미를 유지하면서 최대한 압축해서 작은 단위로 만들어 내는 것이에요.

 

심볼을 더욱 효율적으로 줄이는 방법: BPE (Byte Pair Encoding)

최신 자연어 처리 모델들은 단순한 바이트 단위 표현보다 더 효율적인 방법을 사용해요. 바로 BPE (Byte Pair Encoding) 알고리즘이죠.

BPE의 핵심 원리

  1. 자주 등장하는 연속된 바이트 쌍(byte pair)을 하나의 새로운 심볼로 묶음
  2. 새로운 심볼에 고유한 ID를 부여 (예: 256번 심볼 생성)
  3. 이 과정을 여러 번 반복하여 시퀀스를 점점 더 압축

예를 들어, 116과 32라는 두 개의 바이트 쌍이 자주 등장한다고 가정해볼게요.
그러면 새로운 심볼 256번을 만들고, 모든 "116 32"를 "256"으로 대체할 수 있어요.

이 과정을 반복하면 더 짧은 시퀀스를 만들 수 있어요. 토큰(token)의 개수를 늘리는 대신, 시퀀스 길이를 줄이는 것이 핵심이죠.

수학에서는 치환법 이라고 하고 코딩에서는 레퍼런스화 라고 하는 것과 비슷하죠.

 

실제 모델에서 사용하는 토큰 개수

BPE를 계속 적용하면 최적의 토큰 개수를 찾을 수 있어요.
GPT-4는 총 100,277개의 토큰을 사용해요.
즉, 이 숫자는 GPT-4가 인식하는 유한한 심볼 집합(vocabulary size)이에요.

텍스트를 이런 토큰으로 변환하는 과정이 바로 토크나이제이션(Tokenization)이에요.

 

토크나이제이션 실제 예제

GPT 모델이 어떻게 텍스트를 토큰으로 변환하는지 확인할 수 있는 사이트가 있어요.
바로 "tiktokenizer"라는 웹사이트죠.

  1. 여기서 "cl100k_base" (GPT-4의 토큰화 방식)를 선택하고
  2. 입력 텍스트를 넣으면
  3. 해당 텍스트가 어떤 토큰으로 변환되는지 볼 수 있어요.

예제: "hello world"를 입력하면?

  • "hello " → 토큰 ID 15339
  • "world" → 토큰 ID 1917
  • 따라서 "hello world"는 총 2개의 토큰으로 변환돼요.

만약 공백을 추가하면?

  • "hello world" (공백 2개) → 새로운 토큰 등장
  • "Hello World" (대문자) → 다른 토큰으로 인식됨

즉, 대소문자나 공백이 다르면 토큰도 달라져요!

 

 

이제 우리는 텍스트를 컴퓨터가 이해할 수 있는 형태로 변환하는 과정을 배웠어요.
이 과정이 토크나이제이션(Tokenization)이며, AI 모델의 핵심적인 부분이에요! 🚀