Project NEUROVERSE
목차

기초 이론 편 · 3부 ChatGPT는 어떻게 대답을 만들까? — 3.2

토큰 — 모델은 글자를 보지 않습니다

모델이 읽고 쓰는 단위는 글자도 단어도 아닌 '토큰'입니다. strawberry의 r 개수를 틀리는 이유도 여기 있습니다.

“strawberry에 r이 몇 개야?”라고 물었을 때 AI가 틀렸다는 이야기, 들어보셨나요? 사람한테는 너무 쉬운 문제인데 왜 틀릴까요?

이유는 모델이 글을 글자 단위로 보지 않기 때문입니다. 모델은 글을 토큰이라는 조각으로 잘라서 봅니다. 앞 장에서 “다음 말”을 고른다고 했는데, 정확히는 “다음 토큰”을 고릅니다.

문장을 눌러보세요. 모델이 실제로 보는 조각(토큰)으로 나눠서 보여줘요.

strawberry

3 토큰

␣는 띄어쓰기예요. OpenAI가 공개한 토크나이저(o200k_base)로 실제로 나눈 결과이고, 모델마다 토크나이저가 달라서 다른 모델은 다르게 나눌 수 있어요.

해보면 보이는 것

strawberry는 st, raw, berry 세 조각입니다. 모델에게 이 단어는 글자 10개가 아니라 조각 3개입니다. “r이 몇 개?”에 답하려면 각 조각 안에 r이 몇 개 들어 있는지를 따로 알아야 하는데, 모델은 조각의 철자를 직접 보는 게 아니라 조각 하나를 하나의 덩어리로 다룹니다. 그래서 이런 질문에 약합니다.

한국어도 마찬가지입니다. “안녕하세요”는 안, 녕하세요 두 조각입니다. 자주 쓰이는 말은 크게 한 덩어리가 되고, 덜 쓰이는 말은 잘게 쪼개집니다.

글자보다 작게 쪼개지기도 합니다. “딸기”를 눌러보세요. “딸”이라는 글자 하나가 두 조각으로 나뉩니다. 컴퓨터 안에서 한글 한 글자는 여러 개의 바이트(숫자)로 저장되는데, 이 토크나이저는 자주 안 나오는 글자를 그 바이트 단위로 쪼개서 다룹니다.

왜 굳이 쪼갤까

모든 단어를 통째로 하나씩 다루면, 세상의 모든 단어, 신조어, 오타, 이름까지 다 목록에 넣어야 합니다. 반대로 글자 하나하나로 다루면 문장이 너무 길어져서 계산이 오래 걸립니다.

토큰은 그 중간입니다. 자주 나오는 덩어리는 크게, 드문 것은 잘게 쪼개서, 목록 크기도 적당하고 처음 보는 단어도 조각을 조합해서 표현할 수 있습니다.

토큰이 중요한 이유

토큰은 모델 내부 이야기 같지만, 쓰는 사람에게도 직접 영향을 줍니다.

  • 요금: API로 AI를 쓰면 보통 토큰 수로 요금을 매깁니다.
  • 길이 제한: 모델이 한 번에 읽을 수 있는 양도 토큰 수로 정해져요(4부에서 보겠습니다).
  • 언어에 따라 다릅니다: 같은 뜻의 문장도 언어마다 토큰 수가 다릅니다. 이 토크나이저로 재보면 “Where is the nearest subway station?”은 7토큰인데, “가장 가까운 지하철역이 어디예요?”는 13토큰입니다.
더 깊게 · 토큰을 정하는 방법: BPE

토큰 목록은 사람이 정하지 않습니다. 많이 쓰이는 방법이 BPE(Byte Pair Encoding) 입니다. 처음엔 모든 걸 가장 작은 단위로 쪼개 두고, 엄청난 양의 글에서 가장 자주 붙어 나오는 두 조각을 하나로 합치는 걸 반복합니다. “b”와 “e”가 자주 붙어 나오면 “be”로 합치고, “be”와 “rry”가 자주 붙으면 또 합치고… 이걸 목록이 원하는 크기가 될 때까지 합니다.

그래서 학습한 글에 많이 나온 말일수록 큰 덩어리가 됩니다. 이 토크나이저가 영어를 더 큰 덩어리로 묶는 경향이 있는 것도, 학습한 글에 영어가 많았기 때문일 가능성이 큽니다.

모델 안에서 토큰은 결국 번호로 바뀝니다. “berry”가 몇 번 토큰, 이런 식으로요. 모델은 이 번호들을 받아서 계산합니다. 번호가 어떻게 의미를 갖게 되는지는 두 장 뒤 “임베딩”에서 보겠습니다.

정리

  • 모델은 글을 토큰이라는 조각으로 잘라서 읽고 씁니다. 글자 하나를 직접 보지 않습니다.
  • 자주 쓰이는 덩어리는 크게, 드문 것은 잘게 쪼갭니다. 한글 한 글자가 여러 조각이 되기도 합니다.
  • 요금과 길이 제한이 토큰 수로 정해지고, 언어와 모델에 따라 토큰 수가 다릅니다.

이 장을 복사합니다. ChatGPT나 Claude 같은 AI에 붙여넣고 그대로 보내면 AI가 다 읽었다고 답합니다. 그다음 궁금한 걸 물어보세요.