LLM 真的懂拼写吗?深入解读 CUTE 基准测试
当我们与 GPT-4 或 Llama 3 等大型语言模型 (LLM) 交互时,我们通常认为它们具有类似人类的读写能力。我们假设,既然模型可以写十四行诗或调试 Python 代码,那么它理解文本的方式一定和我们一样: 逐个字母、逐个单词地理解。
然而,这是一个根本性的误解。LLM 并不是逐个字符地“阅读”文本。相反,它们通过分词器 (tokenizer) 处理文本,将字符分块成 token (词元) 。 像 “the” 这样的常用词会被处理为一个原本的单位,而不是序列 t-h-e。对于模型来说,token the 只是一个庞大列表中的整数 ID,与 The、theoretical 或 lathe 截然不同。
这种架构上的现实引出了一个有趣的问题: 如果 LLM 无法原生地看到字符,它们真的理解正字法 (拼写) 吗? 它们能在字符级别操作文本吗,还是仅仅在记忆统计模式?
在这篇文章中,我们将深入探讨一篇名为 “CUTE: Measuring LLMs’ Understanding of Their Tokens” (CUTE: 评估 LLM 对其 Token 的理解) 的研究论文,该论文由慕尼黑大学 (LMU Munich) 和慕尼黑工业大学 (TU Munich) 的研究人员撰写。这就引入了一个基准测试,旨在揭示现代 LLM 的“盲点”,揭示了虽然这些模型可以表现得好像它们知道如何拼写,但它们对单词构成的内部理解却出奇地脆弱。
Token 的问题
在剖析论文之前,让我们先确定为什么这很重要。大多数现代 LLM 使用字节对编码 (BPE) 或类似的子词分词方法。
- 效率: 处理 “apple” 的一个 token 比处理
a-p-p-l-e的五个 token 更快。 - 上下文: 它允许模型处理更大的上下文窗口。
然而,这种效率是有代价的。模型失去了对 token 字符构成的直接访问权。它只知道 Token A 通常跟随在 Token B 之后。如果你要求 LLM “输出单词 ‘apple’ 的第三个字母”,它不能直接看字符串。它必须依赖训练期间学到的关联——本质上,它必须“记住” “apple” 这个概念在其第三个位置包含 “p” 这个概念。
CUTE 背后的研究人员着手测试这种间接知识的局限性。他们想要回答三个具体问题:
- LLM 知道哪些字符组成了它们的 token 吗?
- LLM 理解“看起来相似” (字形) 和“意义相似” (语义) 之间的区别吗?
- LLM 能在字符级别操作文本吗 (例如,插入或删除字母) ?
介绍 CUTE: 字符级 Token 理解评估
为了回答这些问题,作者开发了 CUTE , 这是一个由对识字的人类来说微不足道,但对基于 token 的模型来说可能很困难的任务组成的基准测试。
CUTE 的天才之处在于它的对比结构。对于许多任务,研究人员创建了两个版本: 字符级 (Character-level) 版本和单词级 (Word-level) 版本。
- 字符级: 需要拆开一个 token (例如,“从 ’there’ 中删除 ’e’”) 。
- 单词级: 对整个 token 进行操作 (例如,“从 ’the sky is blue’ 中删除单词 ’the’”) 。
这种比较至关重要。如果模型在字符任务上失败但在单词任务上成功,我们就知道模型并没有被指令搞糊涂——它特别被token 的构成搞糊涂了。
图 1: CUTE 基准测试中的任务细分。注意单个单词 (字符级) 和句子 (单词级) 操作之间的区别。
让我们分解图 1 中所示的基准测试的三个主要类别。
1. 组成/构成任务 (Composition Tasks)
这些任务测试关于 token 内部是什么的基本知识。
- 拼写 (Spelling): 给定一个单词 (通常是一个 token) ,模型必须输出带空格的字母 (例如,
there\(\rightarrow\)t h e r e) 。 - 逆向拼写 (Inverse Spelling): 反向操作。模型获取带空格的字母并必须将它们组合起来。
- 包含字符/单词 (Contains Char/Word): 一个简单的布尔检查。“’there’ 里有 ‘c’ 吗?” vs. “’the sky is blue’ 里有 ’the’ 吗?”
2. 相似性任务 (Similarity Tasks)
这是事情变得有趣的地方。语言模型是在语义上下文上训练的。在 LLM 的向量空间中,“happy” 在数学上接近 “glad”。但是 “happy” 接近 “apply” 吗?
- 字形相似性 (Orthographic Similarity): 给定一个单词 (例如,“happy”) 和两个选项。一个拼写相似 (低莱文斯坦距离,如 “apply”) ,另一个则不相似。模型能选出长得像的那个吗?
- 语义相似性 (Semantic Similarity): 一个对照任务。模型能选出同义词吗?
3. 操作任务 (Manipulation Tasks)
这些是压力测试。它们要求模型根据其知识采取行动。
- 插入 (Insertion): 在序列中每个特定元素的实例后插入一个元素 (例如,在每个 ’e’ 后添加 ‘b’) 。
- 删除 (Deletion): 删除特定元素。
- 替换 (Substitution): 替换元素 (例如,将 ’e’ 改为 ‘a’) 。
- 交换 (Swapping): 交换两个特定元素的位置。
其中每一个都有相应的单词级任务 (例如,交换句子中的单词) 。
实验设置
研究人员测试了各种流行的开源模型,参数范围从 70 亿到 1320 亿。阵容包括 Llama 2、Llama 3、Mistral、Gemma、Command-R 和 DBRX 。
为了确保测试公平,他们使用了少样本提示 (few-shot prompting) 。 这意味着他们不只是问问题;在提出测试问题之前,他们提供了四个正确执行任务的示例。这教会了模型所需的格式,而无需微调其权重。
图 3: 拼写任务使用的少样本提示示例。模型在尝试目标单词 “cow” 之前看到了四个“拼写出来”的例子。
结果: 两种粒度的故事
结果 (如下图 2 所示) 描绘了 LLM 能力的复杂图景。模型并非在正字法上一无是处,但表现高度不一致。
图 2: 所有任务的准确率。请密切关注单词任务 (蓝色条) 和字符任务 (黄色/橙色条) 之间的差距。
1. 能力的假象: 拼写
看图 2 的前两行。大多数模型,尤其是像 Llama-3-70B 和 Command-R+ 这样的大型模型,在 拼写 (Spelling) 和 逆向拼写 (Inverse Spelling) 上得分极高。
你可能会想,“太好了!它们知道怎么拼写。” 但作者建议在这里要谨慎。拼写是训练数据中非常常见的任务。模型很有可能只是记住了 token there 和序列 t, h, e, r, e 之间的映射。这并不一定意味着它们理解了结构;它们只是知道了标准答案。
2. 语义偏见: 相似性
相似性 (Similarity) 结果 (图 2 中间部分) 揭示了一个迷人的盲点。
- 语义 (Semantic,紫色条纹): 模型在这方面很棒。它们知道 “happy” 意味着 “glad”。这就是它们被制造出来的目的。
- 字形 (Orthographic,红色): 这里的表现糟透了。许多模型的表现接近甚至低于随机概率 (50%)。
这证实了一个主要假设: LLM 理解意义,而非形状。 它们很难识别出 “apply” 看起来像 “happy”,因为在它们的内部嵌入空间中,这两个概念相距甚远。只有非常大的模型 (如 Command-R+) 在这里表现出显著的能力,这可能是由于接触了海量的数据。
3. 崩塌: 操作
最的确凿证据来自 操作 (Manipulation) 任务 (图 2 下半部分) 。
- 单词级 (Word-level,蓝色条): 模型通常很有能力。它们可以在句子中插入、删除和交换单词。它们理解指令的逻辑。
- 字符级 (Character-level,黄色/橙色条): 表现断崖式下跌。
以 插入 (Insertion) 为例。即使是强大的模型也很难做到“在每个 ’e’ 后添加 ‘b’”。为什么?因为要做到这一点,模型必须:
- 将 token
there解构为t-h-e-r-e。 - 定位
e。 - 插入
b。 - 重构字符串。
由于 token there 对模型来说是一个原子单位,它无法“看到”其内部来执行逻辑。它必须依赖对字母位置的死记硬背,这在动态应用规则时就会失效。
随机字符串的“确凿证据”
为了证明分词是罪魁祸首,研究人员进行了一个巧妙的对照实验。他们对 随机字符串 (如 fxqg) 运行了相同的任务。
因为这些字符串是无意义的,分词器无法将它们匹配到单个预先学习的 token。相反,分词器被迫将它们分解为单个字符或非常小的块。
图 5: 标准词汇 (Vocab) 与随机字符串 (Rand) 的性能对比。理想情况下,标准单词应该更容易,但请注意粉色条。
如图 5 所示,在操作任务中,模型在随机字符串 (粉色条) 上的表现通常比在真实单词 (灰色条) 上 更好 。
这违反直觉,但在架构上完全讲得通。当模型处理随机字符串时,它将单个字符视为单独的输入。它不需要“拆包”一个 token。它可以简单地看着序列 f, x, q, g 并应用操作规则。当处理像 there 这样的真实单词时,分词隐藏了字符,使任务变得更难。
多语言能力: 并非灵丹妙药
该研究还扩展到了俄语 (CUTE-Rus),以查看多语言模型——它们遇到不同的脚本和分词模式——是否表现更好。
图 4: 俄语版基准测试的结果。
俄语的趋势在很大程度上反映了英语的趋势。有趣的是,图 4 显示,即使提供了示例,模型在俄语的基本拼写上也遇到了很大困难。这表明拼写表的“记忆”在训练数据中严重偏向英语。即使像 Aya 这样的多语言模型也没有表现出纯粹源于其多语言性质的巨大优势;它们的性能提升主要与其总体规模和质量相关。
扩大规模能解决问题吗?
AI 研究中一个常见的说法是“规模即一切 (Scale is all you need)”。把模型做大能修复它看不到字符的问题吗?
数据表明: 是,也不是。
看图 2,较大的模型 (如 Llama-3-70B) 明显优于较小的模型 (如 Llama-2-7B) 。它们更善于遵循指令,并且记住了更多的拼写模式。
然而, 差距依然存在。与单词级任务相比,即使是最大的模型在字符交换和插入方面也很吃力。扩大规模提高了模拟理解的能力,但并没有赋予模型直接访问字符的权限。根本的架构限制仍然存在。
结论与启示
CUTE 基准测试为当前 LLM 的局限性提供了一个发人深省的审视。虽然这些模型可以写诗和代码,但它们对生成的文本本身的理解是抽象的。它们就像绘画大师,可以创作出照片般逼真的图像,但并不了解所用颜料的化学成分。
关键要点:
- 肤浅的知识: LLM 知道
there拼写为t-h-e-r-e,但它们并不使用这些信息来处理文本。这是一种被检索出的事实,而非结构性的现实。 - 字形盲点: 模型很难识别看起来相似的单词,这对押韵生成、双关语解释或基于视觉相似性纠正拼写错误等任务有影响。
- 分词瓶颈: 主要障碍是 BPE 分词。只要模型将单词视为原子整数,字符级逻辑就是一种模拟,而非原生能力。
作者的结论是,对于需要真正字符级理解的任务 (如密码学、复杂的文字游戏或严格的形态分析) ,目前 LLM 的架构并不是最优的。未来的研究可能需要通过 字符级模型 (逐字节处理文本) 或混合架构来弥合语义流畅性和正字法精确性之间的差距。
目前,下次当 LLM 无法反转字符串或解决 Wordle 谜题时,你就知道原因了: 它不是故意刁难;它是真的看不到你在说什么字母。
](https://deep-paper.org/en/paper/2409.15452/images/cover.png)