ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

9. 理解 Tokenizer

2026/8/19 21:56:16 拓冰建站 浏览量
9. 理解 Tokenizer 什么是 Tokenizer分词器如果只用一句话解释Tokenizer 就是大模型和人类语言之间的翻译器。它负责把文本变成数字Token ID再把数字还原成文本。因为神经网络根本不认识你好 ChatGPT Transformer它只认识[1532, 8756, 42, 998]所以在进入模型之前必须经过 Tokenizer。为什么需要 Tokenizer假设有一句话我喜欢机器学习计算机看到的其实只是UTF-8字节流而 Transformer 的输入要求是Embedding向量中间必须经过文字 ↓ Tokenizer ↓ Token ID ↓ Embedding ↓ Transformer完整流程我喜欢机器学习 │ ▼ Tokenizer │ ▼ [315, 892, 1256, 87] │ ▼ Embedding │ ▼ [[0.1,0.3,...], [0.7,0.2,...], ...]最早的做法按单词切分例如I love machine learning直接按空格切[I,love,machine,learning]然后建立词表I → 1 love → 2 machine → 3 learning → 4变成[1,2,3,4]看起来很简单。但问题巨大。问题1词表会无限大例如dog dogs dogging dogged到底算几个词再比如ChatGPT ChatGPT-4 ChatGPT-5 ChatGPT-Pro新词天天出现。如果全部加入词表词表 无限大模型根本存不下。问题2遇到新词怎么办训练时apple banana orange测试时watermelon词表里没有watermelon就变成UNKUnknown信息直接丢失。所以出现了 Subword子词现代大模型几乎都采用Subword Tokenization核心思想不按单词切而按“常见片段”切。例如unbelievable切成un believe able即使没见过unbelievably也能切un believe ably模型依然能理解。BPEGPT 系列经典方案现代 Tokenizer 的祖师爷之一Byte Pair Encoding (BPE)最早用于压缩算法后来被 NLP 使用。GPT-2、GPT-3 的 tokenizer 基本都属于 BPE 家族。CausalBPE 是怎么训练出来的假设语料low lower lowest初始状态l o w l o w e r l o w e s t统计最常出现的相邻字符l o出现很多次。合并lo得到lo w lo w e r lo w e s t继续统计lo w继续合并low最终low er est成为词表。举个真实例子GPT Tokenizer 可能会把understanding切成under stand ing因为这些片段出现频率很高。而不会切成u n d e r ...这样效率太低。Token 不等于字很多初学者容易误解1 Token 1 个字实际上不是。例如hello可能是[hello]1 Token。中文你好可能[你, 好]2 Token。复杂词internationalization可能[inter, national, ization]3 Token。所以字符数 ≠ Token数Tokenizer 是如何训练的现代 TokenizerBPE、SentencePiece通常经历第一步收集语料例如Wikipedia Common Crawl Books Github几十 TB 数据。第二步统计频率统计机器 学习 深度学习 Transformer出现次数。第三步构建词表保留最常见的50000 100000 128000个 Token。例如 Llama 系列常见规模约为十万级词表。CausalSentencePiece2018 年 Google 提出了著名的SentencePiece论文其特点是不依赖空格传统英文I love AI先按空格切。SentencePieceI▁love▁AI把空格本身也作为符号学习。因此英文 中文 日文 韩文都能统一处理。(Hugging Face)Tokenizer 在训练中的位置完整训练链路可以理解为Tokenizer 编译器前端Transformer 则是CPUCPU 不认识高级语言。Transformer 不认识自然语言。都需要先翻译。一个直观例子输入我爱北京天安门Tokenizer 可能输出[我, 爱, 北京, 天安门]对应 ID[128, 52, 981, 3476]进入 Embedding128 → 向量A 52 → 向量B 981 → 向量C 3476→ 向量D最终形成[B,L,D] [1,4,4096]送入 Transformer。从训练大模型的角度理解你正在学习从零训练大模型可以把 Tokenizer 看成Tokenizer 把文本压缩成模型能处理的离散符号它主要解决三个问题1. 文本如何数字化 2. 未登录词(OOV)如何处理 3. 词表大小如何控制因此整个训练流程实际上是海量文本 │ ▼ Tokenizer训练 │ ▼ 生成词表(vocab) │ ▼ 文本→Token │ ▼ Embedding训练 │ ▼ Transformer训练可以说Tokenizer 是整个大模型训练流水线的第一步。没有 Tokenizer就没有后面的 Embedding、Attention 和 Transformer。