AI-NEWS · 2026年 5月 10日

为什么大模型忘了“马佳琪”?

大模型为何“找不到”马佳琪?

最近开发者圈子里挺闹腾的。有人发现 MiniMax M2 系列大模型有个怪毛病:一提到特定人名“马佳琪”,模型就卡壳了,死活蹦不出这个词。

MiniMax 反应挺快,赶紧拉通团队查了一圈,最后出了一份技术报告。简单来说,这事儿根子出在后训练阶段导致的低频 Token 退化

1. 罪魁祸首:被“挤”掉的词

MiniMax 把问题路径扒得很清楚:

  • 分词机制:Tokenizer 把“马佳琪”硬生生拆成了 ['Ma', 'Jiaqi'] 两个 Token。
  • 预训练阶段:本来嘛,“佳琪”这两个字在预训练语料里出现频率太高了,模型顺手把它合并成了一个独立的 Token(ID 是 190467)。
  • 后训练阶段(SFT):这里出问题了。SFT 是决定模型怎么聊天的关键期。结果发现,包含那个"190467"这个 Token 的样本,连 5 个都不到
  • 向量空间漂移:频率太低,这个 Token 在向量空间里就被边缘化了。而且,那些频繁更新的 Token(比如代码符号、工具调用标记)还在旁边“抢地盘”,把它挤得更远。
  • 最终表现:模型脑子里其实有“马佳琪”的知识,就是没法吐出那个特定的 Token 了。它只能退而求其次,吐出发音相似的“佳琪”或者“琪琪”。

2. 连锁反应:忘了小语种和脏词

MiniMax 对 20 万个 Token 词表扫了一遍,发现大约 4.9% 的 Token 都出现了这种退化。这引发的麻烦可不小:

  • 小语种遭殃:受创最惨的是日语。退化率高达 29.7%。这就解释了为什么有时候跟模型聊日语,它偶尔会蹦出俄语或韩语的字符——因为日语的 Token 参数漂移了,跟其他语言在向量空间里混成一团。
  • SEO 垃圾词被“优化”掉了:退化列表里还塞了不少互联网 SEO 垃圾词,像“私服”、“无痛人流”之类的。因为这些东西平时几乎没人跟模型聊,模型在后训练时不知不觉就把它们给“遗忘”了。

3. 怎么修?加练、回灌、做减法

针对这摊子事,MiniMax 搞了个“最小生成频率”机制来救场,主要三招:

  1. 全词表合成数据

    • 做法:搞点重复性任务,硬是让每个 Token 在后训练阶段都得练几遍。
    • 效果:日语混淆率直接从 47% 掉到了 1%,词表参数稳多了。
  2. 把预训练语料“回灌”回来

    • 做法:把原本预训练时的语料,按比例混进指令微调(SFT)的数据里。
    • 目的:防止模型在专门练对话的时候,把原本学好的通用知识给忘了(也就是所谓的“灾难性遗忘”)。
  3. 词表修剪与监控

    • 做法:直接删掉那些从来没被用过的冗余 Token,以后还得把词表覆盖率当成监控指标。

几点实在的看法

MiniMax 这次复盘其实戳中了一个挺要命的痛点:后训练(SFT)太容易把低频 Token“清洗”掉了

  • 知识蒸馏的副作用:后训练本意是教模型怎么好好回答问题,但要是太盯着特定场景看,模型内部的向量空间就会发生剧烈漂移。结果就是,那些在通用语料里很常见,但在对话数据里稀有的词(比如特定人名、小语种、长尾词汇),全被“挤”出去了。
  • 词表设计也是个坑:Token ID 的分配跟频率关系太大了。如果一个词预训练时是高频词,结果在后训练语料里几乎绝迹,它在向量空间里就彻底迷路了,模型要么“失忆”,要么开始“幻觉”。
  • 给行业的一点建议:这一通操作下来有个挺明显的启示。未来的大模型对齐技术,不能光盯着对话数据做清洗。得先建一套词表级别的保护机制,通过合成数据或者把预训练语料灌回去,保住那些虽然不常用,但对多语言支持或特定领域特别重要的 Token。毕竟,平衡好模型的通用性和专业性,才是关键。

火龙果频道