프로그래밍 기초 · 대규모 모델 속의 자료구조

어휘 사전과 Trie: Tokenizer가 단어를 자르는 비밀

대규모 모델 원리 편의 그 디테일, 기억나세요?—Tokenizer가 「五花肉」을 토큰 한 덩어리로 자르고, 글자 셋이 아니었죠. 그때 「자주 나오는 조합은 한 덩어리」라고 했어요. 이번엔 바닥을 엽니다: 수만 개 단어 속에서 「五花肉」을 통째로 가져가야 한다고 어떻게 순간 알아보나요? 답은 Trie(접두사 트리)라는 수납 방식—어휘 사전을 「공유하는 앞부분」으로 트리에 걸어 두는 거예요.

먼저 수납 · 어휘 사전을 트리로 거는 법

어휘 사전에 이런 단어가 있다고 해 보세요: , 五月, 五花肉, 今天, , 天气, , , . 첫 글자, 둘째 글자… 한 겹씩 걸면, 앞이 같은 단어는 가지를 공유해요—「五月」과 「五花肉」이 같은 「五」 가지에 몰려요. 초록 ✓ 노드는 「여기까지가 완전한 단어」라는 뜻; 「五→花」에는 ✓가 없어요—경유 정류장일 뿐(「五花」는 단어가 아님).

문장 하나 고르기:
「토큰화 시작」을 누르면 커서가 글자마다 트리를 따라 내려가요. 두 가지를 눈여겨보세요: ✓에 닿아도 바로 안 자릅니다(탐욕—더 길게 가볼까?); 막히면 가장 가까운 ✓로 되돌아가 자릅니다.
토큰화 결과:
약 15초, 매 단계 나레이션
이 걸음이 「탐욕 최장 일치」예요: 갈 수 있는 데까지 가고, 막히면 가장 가까운 단어 끝으로 되돌아가 자릅니다. 왜 탐욕? 「五花肉」을 한 덩어리로 자르면 「五 / 花 / 肉」 세 조각보다 토큰이 아끼고 의미도 지켜요. Trie의 묘미는 매 단계 「지금 노드에 이 글자 가지가 있나」만 본다는 것—어휘 사전을 처음부터 다시 안 훑어요. 수만 단어여도 한 스텝에 조회 한 번. 또 「수납을 잘하면 찾기가 빠르다」예요.
속사정 · 실제 대규모 모델은 BPE, 생각은 같아요

🧩 BPE: 「가장 자주 붙어 나오는 문자 쌍」을 반복해 덩어리로 합치기

실제 Tokenizer(GPT·DeepSeek가 쓰는 BPE)의 어휘 사전 만들기는 더 거칠어요: 글을 최소 조각으로 부수고, 어떤 두 조각이 가장 자주 옆자리인지 세어 붙여 사전에 넣고; 다시 세고 붙이기를 수만 번. 흔한 조합이 이렇게 「자라」 큰 토큰이 됩니다—Trie의 「흔한 단어를 통째로 수납」과 같은 생각이에요.

五花肉 → 고빈도, 각자 한 덩어리
「饕餮」 饕(조각1) 饕(조각2) 餮(조각1) 餮(조각2) → 희귀, 바이트 조각으로 쪼개짐

그래서 본 현상들이 설명돼요: 「的」「,」는 늘 토큰 하나; 희귀 글자는 오히려 여러 조각. 중국어가 영어보다 토큰을 더 쓰는 이유도 여기—대부분 어휘 사전이 영어 말뭉치 위주라, 영어 흔한 말은 통째 토큰을 쌓고 중국어는 적어서 더 많이 자를 수밖에 없어요. 같은 문장, 중국어 청구서가 더 비싼 뿌리는 이 「사전」이 누구를 수납했느냐예요.

이 강의가 전하고 싶은 것