核心事件
MiniMax 最近发了一篇技术报告,专门解释为什么 M2 系列大模型在输出特定人名(比如“马嘉祺”)时总是出错。乍一看,这好像只是个偶尔出现的 bug,但仔细琢磨,其实暴露了当前大模型训练里一个挺要命的结构性漏洞。
深度分析:到底哪里出了问题?
1. Token 偏移:向量空间被“挤”坏了
- 分词机制:大模型干活的基本单位是 Token。拿“马嘉祺”举例,模型得把它拆成两个 Token:"Ma"和"Jiaqi"。
- 训练阶段的冲突:
- 预训练阶段:模型在海量数据里滚过,这两个词它都认识。
- 微调阶段(Instruction Fine-tuning):麻烦来了。因为微调数据集中"Jiaqi"这个词出现得太少,这个 Token 基本处于“没学过”的状态。
- 资源被抢:与此同时,那些高频 Token(比如代码符号、工具调用指令)在训练中被反复强化。这就造成了“马太效应”——强者愈强,直接把低频 Token 的生存空间给挤没了,导致它们的概率分布彻底跑偏。
- 最终表现:模型在处理像马嘉祺这样的特定名人名字时,脑子一热,倾向于输出概率较高的相似替代词(比如把“嘉祺”误判成“齐齐”),完全忘了原本的发音。
2. 跨语言连锁反应:日语、俄语、韩语全乱了
MiniMax 把全词表(约 20 万个 Token)扫了一遍,发现性能明显下降的 Token 占了 4.9%。其中:
- 日语 Token 退化率:高达 29.7%。
- 具体表现:这就是为什么模型有时候在说日语,嘴里突然蹦出俄语或韩语字符的原因。
- 受影响范围:除了人名和外语,倒霉的 Token 还包括 LaTeX 公式标记、维基百科源代码符号,甚至那些 SEO 垃圾关键词。
结论:数据稀疏的后果是连锁的,不是哪里的孤立事件。当后训练(Post-training)的数据没法均匀覆盖不同语言和特定词汇时,模型的生成逻辑就会系统性跑偏。
我们打算怎么修?
针对这个结构性顽疾,研发团队没打算搞花架子,直接上了精确的修复策略:
- 全词表合成数据:把数据补全,覆盖整个词表。
- 强制重复任务:让模型多做重复练习,给每个 Token 的生成频率设个“最低保底线”。
修复效果数据
- 全词表输出稳定性:好了很多。
- 跨语言混用率:从修之前的 47% 直接跌到了 1%。
接下来想干嘛?
团队还在琢磨更深入的解法,比如:
- 把预训练的材料直接混进微调阶段。
- 干脆把词表里那些不再用的冗余标记给删了。
行业反思
这事儿其实挺让人后怕的,给行业提了个醒:
- 挑战:大模型的 Tokenizer 通常是基于广泛的网络语料建的,但具体到下游应用场景,差异大到没法想象。
- 关键难题:咱们得想想,如何在追求语义多样化的同时,从最根本的统计视角,确保 Token 级别的数据覆盖?这恐怕是未来提升大模型可靠性的核心痛点。
