从"字库"到"词表",四十年轮回的技术困局
我儿子的名字,AI总是写不对。
不是偶尔写错,是每次都写错。有时候换成同音字,有时候生编一个根本不存在的人名。作为一个经常跟AI打交道的从业者,我一开始以为是语音识别的问题,后来发现文本生成也一样——AI就是"说不出"我儿子的名字。
说实话,这种感觉挺微妙的。你知道AI很聪明,能写代码、能翻译、能做数学题,但连一个名字都处理不对。
这让我想起了小时候的一件事。
一、一个翻篇了的故事
1980年代,中国所有的计算机都装了一套叫GB2312的字库,里面收录了6763个常用汉字。如果你名字里有一个不常用的字——比如"镕"——恭喜你,在所有需要电脑录入的场景里,系统都会告诉你:我不认识这个字。
那时候去银行办业务、去派出所登记、去考试填答题卡,只要遇到电脑系统,名字里带生僻字的人就得准备接受一个尴尬的现实:你的名字,系统不认。
后来GBK扩展到了两万多个字符,再后来Unicode统一编码横空出世,理论上覆盖了世界上所有的文字系统。生僻字问题?听起来像是上个世纪的古董。
可是2026年,这个问题换了一件新马甲,又回来了。
这一次,不是字库的问题,是词表的问题。不是你的字显示不出来,而是AI"说不出"你的名字。
二、一个追星粉丝引发的行业发现
2026年5月9日,稀宇科技(MiniMax)发布了一份技术报告,解释了为什么他们的M2系列模型无法输出"马嘉祺"这个名字。
马嘉祺是谁?时代少年团的队长,2002年出生的年轻歌手和演员。在中文互联网上,这是一个知名度极高的人名。
但MiniMax的模型就是"说不出"这三个字。
关键不在于"不认识"。你问模型时代少年团是什么团体、队长有哪些经历、出道时间是什么时候,它回答得头头是道。唯独当你让它"说出"马嘉祺这三个字的时候,它开始支支吾吾,最后憋出一个"佳琪"或者"琪琪"。有时候更离谱,直接生编一个"马嘉轩"或者"马丝祺"出来。
心理学里有个词叫"舌尖现象"(tip-of-the-tongue phenomenon)——你明明知道答案,就是说不出口。没想到千亿参数的大语言模型,也完美复刻了这个现象。
但真正让我在意的,不是马嘉祺本人,而是MiniMax接下来做的事情。
三、20万个词的"体检报告"
他们没有悄悄修完就完了,而是做了一次全词表扫描——把模型里大约20万个Token全部检查了一遍。
Token是大模型处理文字的基本单位。你可以粗略地把Token理解为"词元"——大模型不会逐字处理文本,而是先把文字切分成若干词元,然后对词元进行处理。在MiniMax的词表中,"马嘉祺"被切分为"马"和"嘉祺"两个Token,其中"嘉祺"是一个独立的Token。
全词表扫描的结果令人吃惊:"嘉祺"只是冰山一角。约4.9%的Token在后训练后都发生了显著退化。这些退化的Token大致分为四类:预训练阶段使用的特殊标记(比如代码填充符号)、LaTeX公式和维基百科源码标记、中文SEO垃圾关键词(比如"传奇私服""无痛人流"等),以及占比最大的日文口语和博客模板表达。
最触目惊心的是语种维度的数据:日语Token的退化率高达29.7%,而中文只有3.9%,英文只有3.5%。
这意味着什么?意味着当你用日语跟AI对话的时候,它有接近一半的概率会在回答中混入俄语或者韩语字符。MiniMax的实验数据证实,日语回答中混入俄文字符的比例高达47%。
4.9%听起来不多?那你有没有想过,这4.9%里会不会恰好包含你儿子的名字?
四、AI的两个"大脑"
要理解这个问题,需要知道大模型内部的一个基本设计:它有两个"大脑",一个负责理解,一个负责生成。
负责理解的叫"输入端"(vocab embedding),功能是把人类语言翻译成机器能懂的向量。负责生成的叫"输出端"(lm_head),功能是把机器的抽象意图转换回具体的文字。
MiniMax的工程师做了一个关键的对比实验:用未经后训练的Base模型去回答"时代少年团的队长是谁",模型顺利输出了"马嘉祺"。换成经过后训练的模型,同样的题目,模型开始支支吾吾。
进一步检查发现,输入端几乎没变——模型仍然"认识"马嘉祺。但输出端发生了显著偏移——模型"说不出"这个名字了。
打个不太恰当的比方:就像一个人,你问他认不认识张三,他说认识,能告诉你张三做什么工作、住在哪里、喜欢吃什么。但你让他写下张三的名字,他提笔写了个"张三丰"。
他没有忘记关于张三的一切信息。他只是忘记了张三名字的写法。
这就是大模型"失语症"的核心机制:理解能力和生成能力是解耦的。后训练阶段损害了模型的生成能力,但没有损害理解能力。所以模型"知道"但"说不出"。

五、一场看不见的"生存竞争"
那么,生成能力是怎么被损害的?
大模型的训练分两个阶段。第一阶段叫预训练,模型要读遍互联网上的海量文本,学习所有的词汇和知识。在这个阶段,"嘉祺"这个Token被充分学习——它的向量参数完全正常,语义邻居都是"千玺""亚轩""肖战"等中文人名,非常健康。
第二阶段叫后训练(也叫指令微调),模型要学习如何跟人对话。这个阶段使用的数据量远小于预训练,而且内容更集中——主要是对话样本、工具调用示例、编程练习等。
问题就出在这里。
在后训练数据中,"嘉祺"这个词出现的次数不足5条。而那些工具调用标记、编程符号呢?它们每天都被反复练习,不断强化自己在向量空间中的位置。
你可以把向量空间想象成一个社区。预训练阶段,"嘉祺"和一群中文人名住在同一个社区,邻里关系和谐。后训练阶段,大量工具调用标记和编程符号涌入社区,占据了越来越多的空间。"嘉祺"没有搬家,但它的邻居变了——从"千玺""亚轩"变成了tool_call标记、edit_file标记、delete_file标记。
这就好比一个安静的居民区,突然搬来了一群工厂车间。原来的居民没有搬走,但整个社区的氛围完全变了。当系统需要找到"嘉祺"的位置时,发现周围全是陌生的机器指令,只能退而求其次,找一个发音相近的替代品。
在大模型的内部空间里,高频Token像滚雪球一样越练越好,低频Token像没人浇水的花一样悄悄枯萎。这不是"容量不够"的问题,是"维护不均"的问题。

六、500条数据的"精准治疗"
找到问题根因之后,修复方案出奇地简单。
MiniMax构造了大约500条合成数据,让模型做一个"复读"任务——给模型看一段文字,让它原样重复一遍。就这么简单。
具体做法是:把全词表20万个Token随机分成每批约8000个,构造一条对话样本。query是打乱后的词列表加上"请重复以上内容"的指令,answer是原样复制。总共500条数据,只占总训练数据量的1%。每个Token至少作为生成目标出现20次。
效果立竿见影:
- • 全词表余弦相似度最低值提升至0.97以上
- • 日语混入俄文比例从47%降到1%
- • "马嘉祺""无痛人流""据介绍""地税"等此前被替换的词组,全部恢复正常
打个比方:你是一个老师,班上有20万个学生。你最近只顾着培训95%的"核心学生",剩下5%的"边缘学生"成绩严重下滑。你不需要给每个差生请家教,只需要在每次考试里确保每个学生至少被点到一次名字。就这么简单。
500条数据修复20万个Token,听起来像魔法。但它不是魔法——它是精确诊断之后的精准治疗。难的不是治疗本身,而是诊断。在MiniMax发布这份技术报告之前,行业里没有人对全词表做过系统性的退化扫描。
七、比"遗忘"更隐蔽的"遗忘"
"灾难性遗忘"是AI领域的经典问题——模型学了新东西,忘了旧东西。比如你让一个擅长写诗的模型去学写代码,学完之后它可能连诗都不会写了。
但"马嘉祺"事件展示了一种更隐蔽的遗忘。
模型没有忘掉马嘉祺是谁。它对时代少年团的知识完好无损。它忘掉的,只是如何把"嘉祺"这两个字从输出端"说"出来。
这种遗忘之所以危险,恰恰因为它太细粒度了。传统的评估方法根本检测不出来——你测知识储备,一切正常;你测对话能力,毫无破绽。只有在某个特定的生成场景下,它才会突然"失语"。
这也解释了为什么这个问题之前没被发现。行业评估体系关注的是语义层面的能力——问答准确率、推理能力、多轮对话质量。没有人去检查底层Token的生成能力是否退化。
说白了,这就像一栋大楼,99%的房间都完好无损,但电梯坏了。从面积上看,损坏率不到1%,但整栋楼的可用性大打折扣。

Token退化的问题不在于比例,而在于不可预测性——你永远不知道下一个被"遗忘"的Token,会不会正好是你最需要的那个。
八、这不是MiniMax一个人的问题
几乎可以肯定,其他大模型也存在类似的Token退化问题。
ChatGPT出现过Glitch Token——输出乱码或重复特定无意义字符串,学术界已经有多篇论文研究这个现象。DeepSeek V3.1会在各种地方塞一个"极"字,连英文输出都逃不过,被网友戏称"极你太美bug"。GPT-5迷上了"哥布林",不管聊什么话题都能不动声色地塞进一只哥布林,OpenAI工程师不得不在系统提示词里手动写上"永远不要谈论哥布林、小精灵、浣熊、巨魔、食人魔、鸽子"。豆包搜索黎元洪时给出范伟的恶搞剧照——因为互联网上的玩梗内容彻底压过了真实历史照片。
这些案例的具体原因各不相同——有的是脏数据污染,有的是奖励信号偏差,有的是信息混淆。但它们共同指向一个事实:大模型在Token级别的生成稳定性,远没有我们以为的那么可靠。
有意思的是,这次是"马嘉祺"——一个追星粉丝的疑问——推动了一次行业级别的技术发现。MiniMax自己也承认,这是"从一位追星粉丝的疑问出发"才发现的。如果不是名人效应,普通人的名字被写错,大概只会被当成"AI还不够聪明"而不了了之。
九、AI行业的"GBK时刻"
1980年代,计算机字库不全,生僻字显示不了。解决方案是扩展字库——从GB2312的6763字到GBK的两万字,再到Unicode的全球覆盖。这个过程花了十几年,推动力来自用户的真实需求和行业的标准化行动。
2026年,大模型词表退化,生僻词输出不了。MiniMax给出的解决方案是扩充覆盖——用500条合成数据给全词表做"保底校准"。
你看,四十年过去了,技术从字符编码进化到了千亿参数的神经网络,但问题的本质纹丝未动。

系统对"低频但真实存在"的语言元素,始终缺乏保障机制。而解决思路也惊人相似:确保每一个元素都获得最低限度的"存在感"。
也许,AI行业正在经历自己的"GBK时刻"。
对模型厂商来说,MiniMax的案例提供了一个清晰的行动框架:建立Token覆盖度审计机制,定期对全词表进行退化扫描;在后训练流程中加入Token级别的数据覆盖检查;多语言产品需要特别关注语种间的Token覆盖均衡;考虑词表精简化,裁撤那些业务场景永不启用的特殊标记。
对AI产品经理来说,需要在产品评估中加入专有名词生成测试——人名、地名、品牌名、专业术语。需要建立用户反馈机制,及时发现"AI写错名字"类问题。更需要理解一个技术现实:AI的"理解"和"生成"是两回事,知道不等于能说出来。
十、下一次,被遗忘的会是谁?
回到开头那个问题——我儿子的名字被AI写错,这件事的本质到底是什么?
不是AI不够聪明,不是数据不够多,也不是模型不够大。而是一个在AI行业被长期忽视的结构性问题:后训练阶段的数据分布不均,导致低频Token的生成能力在沉默中退化。
MiniMax用一份透明、详尽的技术报告,把这个隐藏在底层的问题暴露在了阳光下。他们也因此成为第一个系统性地量化Token退化、定位根因、并提出可复用修复方案的团队。
但问题的解决不应该只靠一家公司的自觉。Token覆盖度应该成为后训练的标准评估指标,全词表扫描应该成为模型发布前的标准流程。就像当年扩展字库不是一家公司的事,而是整个行业的基础设施升级。
下一次,当AI写错你名字的时候,你还会觉得是它不够聪明吗?还是说,你会开始想:这个词,是不是又在后训练里被"遗忘"了?

而那些还没有被任何人注意到、被写错的生僻名字,还有多少?
夜雨聆风