🤖 NEXIS LAB (메인)

AI는 글자를 어떻게 읽을까 — 토큰의 정체

AI는 단어를 읽지 않는다. 단어보다 작은, 당신이 본 적 없는 조각으로 세상을 본다.

AI는 단어를 읽지 않는다

챗GPT에게 "안녕하세요"라고 입력하면, AI는 그 다섯 글자를 어떻게 받아들일까. '안녕하세요'라는 단어 하나? 아니다. AI는 그 말을 우리가 생각하는 방식으로 읽지 않는다. AI의 눈에는 오직 토큰이라 불리는 더 작은 조각들만 보인다.

이 조각이 무엇인지, 왜 이런 방식이 쓰이는지 알면, AI가 왜 가끔 엉뚱한 단어를 만들어내는지, 그리고 왜 한국어가 영어보다 AI 비용이 더 많이 나오는지를 한번에 이해하게 된다.


토큰이란 무엇인가

토큰(token)은 언어 모델이 텍스트를 처리하는 최소 단위다. 글자 하나도, 단어 하나도 아닐 수 있다. 영어의 경우 "playing"이라는 단어는 "play"와 "ing" 두 토큰으로 쪼개질 수 있고, "cat"은 그 자체로 하나의 토큰이 된다. 흔한 단어는 통째로, 낯선 단어는 여러 조각으로 나뉜다.

OpenAI의 tiktoken 문서에 따르면, 영어 기준으로 토큰 하나는 평균적으로 약 네 글자, 혹은 단어 하나에 4분의 3개 정도에 해당한다. "100토큰이면 약 75개 단어"라는 표현이 자주 쓰이는 이유다.

한국어는 다르다. "안녕하세요"는 GPT-4 계열 기준 상당히 많은 수의 토큰으로 분해되는 것으로 알려져 있으며, 반면 같은 의미인 "Hello"는 단 하나의 토큰이다. 동일한 내용을 담은 문장도 한국어로 쓰면 영어보다 훨씬 많은 토큰이 필요하다. 기술 벤치마크에서는 CJK(중·일·한) 계열 언어 전반이 영어 대비 약 네다섯 배에 이르는 토큰 비용이 보고된다.


BPE — 토큰을 만드는 알고리즘

이 토큰들은 어떻게 결정될까. 현재 GPT 계열 모델을 비롯한 대부분의 대형 언어 모델은 바이트 페어 인코딩(Byte Pair Encoding, BPE)이라는 방법을 쓴다.

BPE의 역사는 의외의 곳에서 시작된다. 1994년, Philip Gage라는 연구자가 C Users Journal에 발표한 데이터 압축 알고리즘이 원조다. 목적은 파일 크기를 줄이는 것이었다. 방식은 단순하다. 텍스트에서 가장 자주 등장하는 두 글자 쌍을 찾아 새 기호로 교체하는 일을 반복한다. "aaabdaaabac"라는 문자열이 있다면, 가장 많이 붙어 있는 "aa"를 "Z"로 바꾸면 "ZabdZabac"로 줄어든다. 이것을 반복하면 문자열이 점점 짧아진다.

이 압축 아이디어가 AI 언어 처리로 넘어온 것은 2016년이다. Rico Sennrich, Barry Haddow, Alexandra Birch 세 연구자가 신경망 기계번역에 BPE를 적용한 논문을 ACL 학회에 발표했다(「Neural Machine Translation of Rare Words with Subword Units」, ACL 2016). 목표가 "파일 크기 줄이기"에서 "어휘 크기 조절하기"로 바뀌었을 뿐, 원리는 같았다. 훈련 데이터에서 자주 붙어 나오는 글자 쌍을 하나의 토큰으로 합치는 과정을 수만 번 반복해, 최종 어휘 목록(vocabulary)을 만든다. GPT-2가 이 방식을 채택하면서 지금의 표준이 되었다.


왜 한국어가 불리한가

BPE의 핵심은 훈련 데이터에서 자주 나오는 조합이 하나의 토큰이 된다는 점이다. GPT 계열 모델이 학습한 인터넷 텍스트의 대부분은 영어다. "the", "ing", "tion", "er" 같은 영어 조합은 훈련 중에 수없이 등장해 자연스럽게 하나의 토큰으로 묶인다.

반면 한국어는 훈련 데이터에서 비중이 훨씬 낮았다. 한글의 자음과 모음 조합이 충분히 학습되지 않아, 한 음절도 한 토큰으로 묶이지 못하고 여러 조각으로 쪼개지는 경우가 많다. "안녕"이라는 두 글자가 하나의 토큰이 되지 못하고 낱낱이 분해된다는 뜻이다.

GPT-4o가 내놓은 새 토크나이저 o200k_base는 어휘 수를 기존 약 10만 개(cl100k_base)에서 20만 개로 두 배 늘렸다. 그 결과 비영어권 언어들의 토큰 효율이 눈에 띄게 개선됐다. 일본어 "お誕生日おめでとう" 같은 사례에서는 구 토크나이저(r50k_base)의 14토큰이 o200k_base에서 8토큰으로 줄었다(OpenAI Cookbook 실측). 하지만 영어 중심 구조의 한계가 완전히 사라진 것은 아니다.


토큰이 AI 동작에 미치는 영향

토큰은 단순한 입력 단위가 아니다. AI가 "생각하는" 단위이기도 하다. 언어 모델은 이전 토큰들을 참고해 다음 토큰을 예측하는 방식으로 문장을 만들어낸다. 이 과정에서 토큰이 어떻게 쪼개지느냐가 모델이 단어를 인식하는 방식 자체를 결정한다.

예를 들어, "strawberry"에 'r'이 몇 개냐는 질문에 GPT가 틀리곤 했던 이유도 토큰과 관련이 있다. "strawberry"는 토크나이저 버전에 따라 "straw"+"berry" 또는 "st"+"raw"+"berry" 같은 조각들로 쪼개지는 것으로 알려져 있다. 모델은 글자 하나하나가 아니라 이 조각 단위로 처리하므로, 특정 글자를 세는 작업이 인간에게보다 훨씬 복잡한 과정이 된다.


한 줄로 정리하면

AI는 텍스트를 단어가 아니라 토큰이라는 조각으로 쪼개 읽는다. 그 조각의 크기는 훈련 데이터에서 얼마나 자주 함께 등장했느냐로 결정된다. 영어가 유리하고 한국어가 불리한 이유도, AI가 가끔 철자 실수를 하는 이유도, 그 출발점은 이 보이지 않는 조각에 있다.


출처

#AI#토큰#토크나이저#LLM#BPE#자연어처리#한국어AI

NEXIS LAB (메인)의 다른 글