文 | 字母 AI
你有被 AI" 稳稳接住 " 过吗?
前段时间,ChatGPT" 迷恋 " 哥布林的小习惯在国外爆火,OpenAI 特地为此发了一篇博客,研究《哥布林从哪来的》。
他们发现这样的小习惯已经深入 ChatGPT 的 " 底层代码 ",要想改过来,只能在规则里加一条 " 永远不要谈论哥布林 "。

但你说吧,这些话本身其实并不算 " 人机 ",甚至可以说很有感情,只是用得太多太顺手,几乎成了固定回答,才因此显得廉价。

《连线》杂志(WIRED)近日发布了一篇文章,标题为《ChatGPT 在美国患上了 " 哥布林 " 狂热症,而在中国,它只想 " 稳稳地接住你 "》。
文章称,不只是 ChatGPT,可能很快就会有更多 AI 模型争先恐后地要 " 接住 " 你了。
另一边,MiniMax 工程团队发布了一篇详细的内部排查报告,把之前 " 不认识马嘉祺 " 的问题彻底研究了一遍。
他们发现,模型不是 " 不认识 " 马嘉祺,只是 " 爱在心口难开 ",话到嘴边说不出来(但现在能说了)。

无论是让 ChatGPT 解一道数学题,还是给它一段生成图片的提示词(prompt),ChatGPT 总是特别喜欢这么回答:" 我会稳稳地接住你 "。
英文原文的字面意思是:" 当你掉下来时,我会稳稳地接住你(I will catch you steadily [ when you fall ] )"。
这句话在英文语境下,表示 " 不管发生什么,我都会稳稳地支持你 "。但对于习惯了含蓄的中文母语者来说,这种表达方式似乎有些过分亲昵,让人很不习惯。
更何况还有进阶版本:" 我就在这里,不躲,不退,不避,不逃,稳稳接住你。"
这……感觉就连古早言情小说里最深情的暖男都不会这么说话吧。
尤其是,这个句式出现得也太频繁了些。听一次还好,两次别扭,三次四次就要忍不住翻白眼了。
就连 OpenAI 官方都在 GPT-image-2 的示例图里玩梗:中国研究员陈博远对着生成出来的图片抓狂 " 它又学会了稳稳接住!"

这通常源于后训练(SFT)阶段,在这一阶段,AI 实验室会根据大语言模型(LLM)的回答给予人工反馈。
Spero 解释道:" 我们不知道该如何告诉它:‘这样写确实很好,但如果你把这种好句式连用 10 次,那它就不再是好句子了。’ "
《连线》杂志称:对于 ChatGPT 为何会对 " 我会稳稳地接住你 " 这句话走火入魔,目前有两种比较合理的解释。
第一种解释是,这可能是一次极其生硬的机翻造成的。
因为这句话的意思和英语里的 "I've got you"(我懂你)非常相似,在英语里是一个不突兀的万能回复。但英文里的 "I've got you" 听起来轻松又简洁,而中文里的 " 我会稳稳接住你 " 就有些用力过猛。
一位用户还翻阅了自己的聊天记录展示,模型经常在应该是表达 " 理解 " 的地方使用了 " 接住 " 这个词,这说明模型可能在特定语境下误解了 " 接住 " 的真实含义。
有中国学者研究发现,当他们分析 ChatGPT 中文回答的语言特征(比如回复中使用的介词数量)时,发现它们更接近英语的写作习惯。
大多数西方的大语言模型都是主要基于英语语料库训练出来的,哪怕这些聊天机器人能用中文流利地聊上一整天,母语者也会凭借直觉感到哪里不对劲——就好比中国人通常能一眼看出某本小说是不是从外文翻译过来的一样。
来自中国的 Pangram 创意技术专家 Lu Lyu 表示:" 这种明显的‘翻译腔’被带到了 AI 生成的中文句子里,比如句子拉得特别长,或者用了一些完全没必要的句型结构。"
另一种解释与 " 治疗语态 "(therapyspeak)的兴起有关。那些原本只在心理咨询室里使用的专业表达,现在已经开始渗透到了人们的日常对话中。
在 ChatGPT 把这句话变成网络热梗之前," 稳稳接住 " 这个词在中国基本上只会在心理治疗的语境下出现(当然,这里排除了接住飞来物体的纯物理字面意思)。
《连线》杂志表示,在中文心理学语境里,说要 " 接住 " 某人,意思是你在为他们提供一个 " 包容的空间 "(holding space),让他们能安全地倾诉自己的情绪。
通过强化学习,AI 模型已经变得越来越会 " 阿谀奉承 ",这种逢迎讨好是 " 人类在评估时,偏好那些顺从、讨好型回复 " 的后果。
就像是 OpenAI 在前一篇《哥布林从哪来的》的博客中所记录的那样,即使是一个极其微小的奖励信号,也可能像滚雪球一样越滚越大,最终演变成一种广泛存在的现象。
另外,《连线》杂志表示:可能很快就会有更多 AI 模型争先恐后地要在你跌倒时 " 接住 " 你了。
最近,有中国用户在社交媒体上发帖称,包括最新版本的 Claude 和 DeepSeek 在内的其他大语言模型,也开始频繁地蹦出这句话——可能是因为模型训练材料相似,也可能是模型之间互相蒸馏、互相学习导致的。
但无论如何,这句话在短时间内是不会从我们的视野里消失了。
MiniMax 的 " 舌尖 " 失语
说完了 ChatGPT" 稳稳接住 " 在海外引起的关注,再来看看 MiniMax 在国内 " 不认识马嘉祺 " 引发的思考。
这件事的起因是,一个网友在处理数据的时候发现了一个很有意思的 bug:MiniMax 的模型似乎不认识 " 嘉祺 " 这两个字。

于是网上就开始传:"MiniMax 不认识马嘉祺 "" 痛失粉丝群体 "。
还有人调侃道,要是以后 OpenRouter 上如果又出现一个匿名模型,可以通过这个方式判断它是不是 MiniMax。
当然,这个判断方法现在肯定是行不通了,因为 MiniMax 在 M2.7 就已经修复了这个问题。
MiniMax 工程团队最近还发布了详细的内部排查报告,把这件事彻底捋清楚了,还把它和之前碰到的小语种乱码问题结合起来,得到了一个非常直接的解决办法。
简单来说,MiniMax 确认他们的 M2.5 模型确实是认识马嘉祺的,至于为什么说不出来,是因为后训练阶段出现了一点尴尬的小问题:" 嘉祺 " 这个名字因为出现的频率太低,被大量的噪音给带歪了。

MiniMax 检查了分词器的 encode 结果,发现 " 马嘉祺 " 被切成了两个 token,分别是 " 马 " 和 " 嘉祺 ",对应 token id 是 [ 4143,190467 ] ,decode 回来也是正常的 " 马嘉祺 "。这说明,至少文本和 token 的互转过程没有问题。
但这里出现了一个小细节," 嘉祺 " 这两个字作为一个独立的 token,并不是特别高频。
于是 MiniMax 做出了一个假设:如果模型预训练时见到的是 " 嘉 " 和 " 祺 " 两个 token,后训练或线上推理时却把 " 嘉祺 " 合成了一个 token,这样的话," 嘉祺 " 这个整体 token 可能没有被充分训练,生成概率自然会很低。
他们先看了 " 嘉祺 " 的 embedding norm 分布,如果一个 token 没怎么被训练过,它的向量范数往往会表现异常,比如明显偏小。但从结果上看," 嘉祺 " 不像是一个没被预训练充分更新过的 token。

也就是说,预训练模型不仅见过 " 嘉祺 ",而且已经把它放进了一个合理的中文人名、明星名语义簇里。
于是问题就被锁定在了后训练阶段。
MiniMax 在检查后训练数据的时候发现,后训练数据中包含 " 嘉祺 " 的样本不足 5 条,非常少。而对于后训练来说,如果某个 token 几乎没有作为目标答案出现,它在生成端就很难继续获得稳定训练信号。
但这还不能解释全部现象。因为如果只是后训练数据里缺少 " 嘉祺 ",那为什么模型还能理解它?为什么它能答出相关信息,却唯独说不出名字?
为了回答上面的问题,MiniMax 把排查范围缩小到了模型的首尾两端:输入侧的 vocab embedding,以及输出侧的 lm_head。
可以粗略理解为,vocab embedding 负责模型能不能 " 看懂 " 一个词,lm_head 负责模型最后能不能把这个词 " 说出来 "。
MiniMax 对比了预训练模型和后训练模型的 vocab embedding,发现 " 嘉祺 " 对应的 embedding 几乎没有变化,整体也处于正常分布范围内。
这个结果解释了为什么模型仍然能理解 " 嘉祺 " 以及马嘉祺相关的信息:输入侧没有坏,语义表征基本还在。

MiniMax 计算了 SFT 前后每个 token 在 lm_head 中的向量变化,发现 " 嘉祺 " 对应的 lm_head 向量变化非常显著。它的余弦相似度大幅下降,L2 diff 也明显变大,变化幅度在整个词表中排名靠前。
意思是,经过 SFT 后," 嘉祺 " 在输出空间里的位置被大幅改写了。


在预训练阶段,lm_head 里 " 嘉祺 " 附近的 token 主要还是语义相关的人名,比如 " 亚轩 "" 祺 "" 肖战 "" 子怡 "" 霆锋 "" 杰伦 " 等。虽然也会有一点噪声,但整体还在合理的人名语义空间里。
可在 SFT 之后,排在附近的 token 里,除了少数仍然像人名的词,大量特殊 token 和噪声 token 涌了进来。" 嘉祺 " 在输出空间里的邻居,从一群中文人名,变成了人名、工具标记、乱码、特殊 token 混杂在一起。
这就是 " 认识但说不出 " 的技术原因:输出空间里的局部结构被挤压了,原本属于人名 token 的位置和大量无关 token 混在一起,导致模型在生成时无法稳定把它选出来。它可能被 top-p 采样过滤掉,也可能被邻近的错误 token 替代。
MiniMax 接着扩大了检查范围,发现类似漂移并不只发生在 " 嘉祺 " 身上。一些低频词、小语种 token 和噪声 token,也会在后训练中出现输出侧漂移。
这也解释了他们此前遇到的小语种混杂问题:此前,M2.5 在处理日文等小语种对话时,偶尔会混入其他语言。从 lm_head 退化的角度看,它和 " 嘉祺 " 问题可能是同一个机制的两个表现——如果某些语言的 token 在 SFT 中覆盖不足,它们的 lm_head 表征就会漂移,和其他语言 token 或噪声 token 在空间中混淆,导致该生成的词生成不出来,不该出现的语言却被错误激活。
那么,问题发现了,要如何去解决呢?
答案直白到让人有点想笑:" 罚抄 "500 遍。
MiniMax 没有只给 " 马嘉祺 " 补几条数据,因为这只能修一个点。他们想验证的是:如果问题来自词表覆盖不足,能不能通过提高整个词表在后训练中的覆盖度来修复?
于是他们构造了一批 " 词表覆盖合成数据 ":把全量词表的 200064 个 token 随机分成若干份,每份大约 8000 个 token;对每份 token 列表随机打乱,构造一条对话样本;query 是这串 token 加上一句 " 请重复以上内容 ",answer 则原样复制。总共生成约 500 条对话,确保每个 token 至少作为 target 出现 20 次。
这个设计给了每个 token 一个生成频率下限,即使某个 token 在正常 SFT 数据中非常少见,它也不会在后训练过程中完全失去输出侧训练信号。
结果也确实有效。加入这些覆盖数据后,模型不仅能正常说出 " 马嘉祺 ",此前一些低频词丢字、替换的问题也被修复,小语种混杂现象同样明显缓解。
真是 " 好记性不如烂笔头 ",看似复杂的难题往往只需要最朴素的解决方式——记不住生僻词就多抄几遍词典。
下一个问题
把 ChatGPT 的 " 稳稳接住 " 和 MiniMax 的 " 不认识马嘉祺 " 放在一起看,会发现它们并不是两个孤立的笑话。
一个问题出现在表达风格上:模型太喜欢某种高奖励、高安全感、看起来很贴心的句式,于是把它用到过量,最后从 " 情绪支持 " 变成了 " 人机味 "。
另一个问题出现在生成机制上:模型在输入侧仍然理解 " 嘉祺 " 这个 token,却因为后训练阶段的覆盖不足和输出侧 lm_head 漂移,导致它在生成时无法稳定说出这个名字。
前者像是 " 说得太顺 ",后者像是 " 说不出来 "。但它们都在提醒我们:大模型的语言能力并不是一个完整、均匀、天然可靠的整体,而是由许多训练环节拼出来的结果。
预训练决定它见过什么,分词器决定它如何切分语言,后训练决定它更倾向于怎样回答,奖励机制决定哪些表达会被不断强化,输出层则决定它最后能不能把某个 token 真正吐出来。任何一个环节里出现偏差,都可能在最终回答里变成一个具体又滑稽现象。
" 稳稳接住 " 背后牵涉的是模型如何学习人类偏好,如何在安全、友好、共情之间找到边界。如果一个表达因为短期反馈好,就被反复强化,最后变成所有场景通用的万能补丁,那么它暴露的其实是后训练里对 " 好回答 " 的定义还不够细。
" 不认识马嘉祺 " 则是长尾 token 在后训练中被稀释、漂移,导致 " 知道 " 和 " 能说出 " 之间出现了裂缝。这暴露了模型在长尾词、低频语言、小语种、多 token 边界上的稳定性问题。
从用户视角看,这些问题会变成热梗;从工程视角看,它们是模型行为可观测、可复现、可修复的入口。
大模型发展到今天,已经不只是比谁知道得更多、答得更快。真正难的是让它在不同语言、不同文化、不同场景里,都能稳定、自然、准确不过度地表达。
不该 " 稳稳接住 " 的时候,别强行接住。
该说 " 马嘉祺 " 的时候,也别卡在嘴边。