GPT-4o分词器动画解析:草莓为何数不清R

动画追踪“strawberry”在GPT-4o分词器中的旅程,揭示模型数不对字母的根源。
文章借助一段6分钟动画,完整展示了“strawberry”在GPT-4o所用o200k_base分词器中的切分过程:带空格的“ strawberry”被编码为单个token(id 101830),三个r被封在同一id内,模型在嵌入层看到的是整体向量而非字符序列。文章解释了BPE在字母级与整词级之间的折中逻辑,指出空格附着于单词、大小写形成不同token序列等细节,并引用OpenAI论文说明推理模型通过逐字母拼写绕开单token限制。最后以印地语token数从21降到5为例,说明分词器迭代对多语言效率的显著影响。
大语言模型数不对“strawberry”里有几个r,这个经典段子背后其实藏着一个关于分词器的硬核知识。最近,一位Reddit用户在自制视频中,用一段6分钟的动画完整追踪了“strawberry”在GPT-4o分词器中的旅程,从真实token id到BPE合并过程,把“为什么模型看不见字母”讲得明明白白。

一个词,八个token:o200k_base下的真实切分
视频开篇就给出了一个反直觉的事实:问句“How many r's are in strawberry?”在o200k_base(GPT-4o和GPT-5所用的分词器)中被切成了8个token。更关键的是,“ strawberry”这个带空格的完整单词,本身就是一个单独的token,id为101830。这意味着三个r被封装在同一个id里,模型在嵌入层看到的是一个整体向量,而不是s-t-r-a-w-b-e-r-r-y这十个字符。
这也解释了一个常见困惑:为什么模型有时能答对字母数量,有时又不行。当单词被合并成单个token时,字符级别的计数就变成了模型需要“绕路”完成的任务——它必须依赖训练中见过的类似模式,而不是真正去数。
o200k_base 是 OpenAI 为 GPT-4o 系列模型设计的分词器名称,其词表规模约为 20 万个 token,相比 GPT-3.5/GPT-4 使用的 cl100k_base(约 10 万 token)扩容近一倍。词表扩大带来的直接好处是:更多常见词(包括带前导空格的完整单词)可以被编码为单个 token,从而缩短序列长度、降低推理成本。o200k_base 显著提升了对非英语语言(如印地语、中文)的压缩效率,这也是文章中印地语例子从 21 个 token 降到 5 个 token 的根本原因。该分词器通过 tiktoken 库开源,开发者可以直接调用其编码/解码接口复现文中的切分结果。
为什么是子词,而不是字母或整词
动画用一段自制文本演示了微型BPE(Byte Pair Encoding)的运行过程:从单个字节开始,逐次合并出现频率最高的相邻对,直到“strawberry”被拆成st | raw | berry这样的子词组合。作者在视频中解释了这种折中的必要性——如果按字母切分,序列长度会变成大约4倍;如果按整词切分,词表会爆炸,而且遇到新词就束手无策。子词分词正是在序列长度和词表规模之间找到的平衡点。
说个细节,这个演示并非黑箱结果:视频中的每一个切分都来自实际运行tiktoken 0.14.0的输出。
空格属于单词,而不是分隔符
一个容易被忽略的细节是,空格在分词器里并不独立存在,而是粘在前面的单词上。“strawberry”、“ strawberry”(带前导空格)和“Strawberry”(首字母大写)在分词器眼中是三个完全不同的token序列。这种设计让模型能区分句首词和句中词,但也意味着同一个词在不同上下文中可能获得不同的token表示。
BPE(Byte Pair Encoding,字节对编码) 最初是一种数据压缩算法,2016 年前后被引入神经机器翻译,此后成为大语言模型最主流的分词方法。其训练流程是:先将语料拆成单个字节(或字符),统计所有相邻符号对的出现频率,反复将最高频的一对合并为新符号,直到词表达到预设大小。合并的顺序和结果被固化为“合并规则表”,推理时按同样的优先级依次应用。因此 BPE 的切分是确定性的、可复现的,并非模型“随手”决定。理解这一点很关键:模型看到的 token 边界是训练语料统计规律的产物,反映的是“哪些字符串经常一起出现”,而不是任何语言学意义上的词法结构。
推理模型为何更会数数
视频引用了OpenAI在2025年发表的论文《Why Language Models Hallucinate》中的一个观察:DeepSeek广告-R1在计数前会先把DEEPSEEK逐字母拼出来,而DeepSeek-V3则直接给出了2或3(正确答案是1)。这种差异指向一个更大的问题——推理模型通过显式的思维链,把“数数”这个任务拆解成可逐字符操作的形式,绕开了单token整体表示的限制。
这不仅仅是“更聪明”的问题,而是推理过程改变了模型接触字符级信息的方式。当模型被引导去拼写、拆解、再计数时,它实际上是在构造一条不依赖token合并结果的路径。
思维链(Chain-of-Thought, CoT) 指模型在给出最终答案前,先生成一系列中间推理步骤。对计数这类任务而言,CoT 的意义不止于“多想一步”:当模型在输出中逐字母写出 D-E-E-P-S-E-E-K 时,这些字母会作为新的输入 token 被重新编码,相当于把原本封装在单个 token 里的字符信息“摊开”到序列中,使后续的注意力机制能够逐个访问。这也是为什么推理模型在字符级任务上表现更好——它们通过生成行为主动重构了输入的粒度,而非单纯依赖更强的参数记忆。
多语言场景下的分词效率差异
视频末尾还给了一个额外例子:同一句印地语,在GPT-4的分词器下需要21个token,而GPT-4o(o200k_base)只需要5个。这种数量级的差异说明,分词器版本的迭代对非英语语言的压缩效率有显著影响。更少的token意味着更低的推理成本和更长的有效上下文,这对多语言应用的开发者来说是实打实的收益。
从这个角度看,“strawberry里有几个r”不只是个梗,它是理解大模型能力边界的一扇小窗——模型看到的世界,是由token组成的,而不是我们眼中的字符。
视频作为教学工具的价值
作者在帖子中说明,旁白是AI语音朗读自己撰写的脚本,视频面向正在学习分词器知识的观众,并主动征求纠错反馈。这种“动画+真实数据+可复现工具”的组合,比单纯的文字解释更容易建立直觉。对于想深入了解BPE和tokenizer内部机制的开发者,这类内容提供了一个低门槛的入口。
相关推荐

Stenograf:本地运行的私人AI会议笔记工具
Stenograf是一款本地运行的AI会议笔记工具,无需会议机器人即可录制通话,并在电脑上完成转写、总结和跨会议搜索,录音与转写文本全部保留在本地。

Sonari:用隔空手势玩转Mac音乐创作
Sonari是一款面向Mac的手势乐器与MIDI控制器,支持17种演奏风格、音乐驱动视觉和无摄像头的Key Deck模式,可将手势直接发送至DAW。本文介绍其功能、系统要求与使用场景。

PasteGuard for Mac:让AI聊天远离密钥泄露
PasteGuard for Mac 是一款剪贴板隐私防护工具,在复制瞬间自动掩码API密钥、密码、邮箱和卡号,防止粘贴进 ChatGPT、Claude 等AI聊天工具时泄露敏感数据,支持本地 Apple Intelligence 检查与自定义规则。