大模型在回答类似“strawberry中有几个字母‘r’”这类看似简单的问题时出错
这个问题本质上是由其技术原理与人类认知方式的根本差异
导致的,涉及到大模型在处理文本时的Tokenization(分词)过程以及其预测机制
。具体来说,以下是几个关键点:
错误原因:
1. Token 化机制的天然缺陷
大模型处理文本的第一步是将字符序列转换为
子词单元(Token)
,这一过程可能导致字母级信息丢失
。
- GPT-4o 的分词结果:strawberry → str-aw-berry
- Llama 3.1 的分词结果:strawberry → st-raw-berry
- Claude 3 的分词结果:strawberry → str-aw-berry
这种分词方式将原本连续的字母序列切割为语义片段,导致模型难以追踪每个字母的具体位置。例如,berry中的两个r被合并为一个 Token,模型可能误认为这是
一个整体而非两个独立字母
。
2. 注意力机制与长程依赖
大模型的核心机制是基于概率的自回归生成,其本质是 “猜测下一个 Token” 而非 “逻辑推理”:
- 注意力机制的均值特性:谷歌研究表明,Transformer 的注意力权重会被归一化,导致无法有效累积计数信息。例如,当需要统计r的数量时,模型可能因注意力分散而漏数。
- 训练数据的偏差:若训练数据中存在大量拼写错误(如strawbery),模型会将错误模式泛化。例如,千问模型在解释时提到 “rr 里面有两个 r”,但最终仍漏数。
- 词表大小的限制:当字符数量超过模型维度(如 Llama 3.1 的 405B 参数),计数任务的准确率会显著下降。
3. 任务特性与模型能力
大模型的能力分布呈现不均衡性(Jagged Intelligence),具体表现为:
- 复杂任务强,简单任务弱:能通过法律考试、数学竞赛,却数不清字母。
- 语义理解强,形式计算弱:擅长理解 “草莓” 的含义,却无法准确统计字符。
- 模式匹配强,逻辑推理弱:依赖训练数据中的统计规律,而非符号逻辑。
这种现象源于模型的 “无自我认知” 特性 :它无法判断自身是否擅长某项任务,也不会主动调用工具(如代码解释器)辅助计数。
如何解决
- 特殊符号强制分词:使用全角字符或分隔符(如ⓢⓣⓡⓐⓦⓑⓔⓡⓡⓨ)迫使模型将每个字母视为独立 Token
- 提示词优化:要求模型“先拼写单词,再逐个字母检查”。
- 分步思考(Chain-of-Thought):要求模型 “分步骤思考”,如:
Step 1: 拼写 "s-t-r-a-w-b-e-r-r-y"。 Step 2: 从左到右扫描字母,标记所有“r”的位置。 Step 3: 统计标记数量。
- 外部工具辅助:结合拼写检查API或自定义函数(如
count("r", "strawberry")
),但需模型支持插件调用,如:提示 “请编写 Python 代码统计 r 的数量”,模型可直接输出strawberry.count(‘r’)
总结
大模型的错误源于其设计初衷(语义生成)与符号操作任务(如精确计数)的不匹配,加之训练数据噪声和分词机制的局限。模型的错误率与其分词器设计、训练数据和架构优化密切相关。改进需结合提示工程或外部工具,而非单纯依赖模型自身能力。
参考:https://developer.aliyun.com/article/1639729