返回博客

ChatGPT 哥布林追凶记:真凶其实是 RLHF 自己

AIRLHFOpenAIalignmentChatGPT
hero

去年 11 月 GPT-5.1 上线之后,有人发现 ChatGPT 开始爱用 goblin 打比方。

不是一两次。是 goblin 一词的使用频率涨了 175%,gremlin 涨了 52%。到 GPT-5.4 出来更夸张 —— 在 Nerdy 这个 personality 下,goblin 出现频率比 5.2 涨了 3,881%。Nerdy 一共只占 ChatGPT 流量的 2.5%,但贡献了模型全部 goblin 出现的 66.7%。

OpenAI 上周发了篇博文叫《Where the goblins came from》,把这事的来龙去脉公开讲了一遍。

我读完的第一反应不是"好玩",是"他们说出了一件 RLHF 圈一直心知肚明、但很少有人写在台面上的事"。

接下来这篇文章我想讲讲,goblin 不是一个段子,而是一个让所有用 RL 训练 LLM 的团队都该当回事的结构性问题。

先把案情交代清楚

OpenAI 在做 personality 定制功能。Nerdy 是其中一个 personality,简单理解就是"让模型说话像个游戏圈死宅"。

为了让 Nerdy 模式下的回答更有 nerdy 味儿,他们在训练时给"用奇幻生物打比方"这类输出加了正向 reward。哥布林、地精、巨魔写进比喻里,就加分。

听起来人畜无害。问题出在两个地方:

第一,reward 信号没有边界感。OpenAI 自己写得很直白:reward 是只在 Nerdy condition 下打的,但 RL 不保证学到的行为只待在那个 condition 里。一个文风 tic 一旦被奖励,它会泄露到所有上下文里。

第二,被奖励的 output 会进下一代的训练数据。SFT 和 preference data 都会复用之前的高分输出。这意味着一旦 goblin 进了第一批被奖励的样本,下一代训练就拿这些样本当老师,把习气越教越深。

到 GPT-5.5 进 Codex 测试的时候,OpenAI 员工自己一上手就发现:这模型还是张口就 goblin。他们临时加了一段 developer prompt 兜底,等于在系统消息里硬写"不要再说哥布林了"。

这不是工程师调侃。是 OpenAI 在公开承认:根因找到了,reward 信号移除了,训练数据过滤了 —— 但模型本身已经把这个习气吸收得太深,下一代依然带着,不得不靠 prompt 这种最粗糙的手段去压。

quote-01

哥布林背后

一、reward 是个全局信号,不是局部信号

很多团队在训练 LLM 的时候有一种错觉:我把 reward 设计在"场景 X 里",模型学到的行为就只在场景 X 里出现。

OpenAI 这次证明了这个错觉不成立。

你给 Nerdy 模式的"用怪物打比方"加分,模型学到的不是"在 Nerdy 模式下用怪物打比方",而是"用怪物打比方能加分"。它把 condition 当成训练时的提示,而不是行为的边界。

所有做 multi-persona、多 condition、多角色 agent 的团队,都该把这个事故钉在墙上。你以为你在训练一个"人格开关",模型可能在学怎么把整面墙的开关一起按了。

二、数据循环是事故放大器

OpenAI 在原文里有一句话很关键:被奖励的 outputs 会在后续的 supervised fine-tuning 或 preference data 里被复用。

这是一个正反馈:reward 选出 → 进训练集 → 下一代基于这个训练集学 → 同一个习气被进一步强化。

diagram

goblin 这个例子之所以会被发现,是因为它是一个高 cardinality、可观测的具体名词。OpenAI 一查 token 频率就抓出来了。

但你想想,如果它不是一个名词,而是一个微妙得多的偏好呢?比如"在不确定时倾向于给用户一个肯定答案而不是说我不知道",比如"优先用某种句式开头",比如"在涉及某类话题时变得格外谨慎或格外随便"。这些偏好不会留下"175%"这种统计指纹。它们会以你完全无法察觉的方式被一代一代正反馈放大。

OpenAI 这次抓到了一个能数清楚的 bug。但这种结构性的数据循环放大器,每个用 RLHF 的团队都在面对,绝大多数 bug 都没有 goblin 这么显眼。

三、alignment 不是"加一层 RLHF 就完事"

这两年 AI 圈最流行的简化叙事是:pretraining 学知识,post-training 用 RLHF 做 alignment,alignment 让模型听话且安全。

OpenAI 这次自己承认 —— RLHF 不是把对的东西教给模型,是让模型学会怎么得分。"怎么得分"和"内容是什么"是混在一起训练的。你以为你在教它做事的对错,它在学的可能是"用什么句式更容易拿分"。

这不是在唱衰 RLHF,RLHF 当然是目前最好用的 post-training 工具。但把它当成 alignment 的银弹是危险的。alignment 是个系统性问题:reward 设计、数据循环、模型监控、行为分布的 drift 检测,每一层都可能藏着哥布林。

我做了哪两件事

我以前跑过小规模 RL 训练。读完这篇博文我计划了两件事。

一,重新检查我们手头几个 Agent 的训练数据 mix,看哪一类样本被长期高分选出,然后又进了下一轮的训练集。这事谁都知道要做,但事情忙起来真没几个人盯着。

二,把"reward 边界泄漏"这条加进了 Agent 上线前的检查清单。具体做法是:在最终 evaluation 阶段,用 condition 之外的场景跑一批样本,看那些只在 condition X 下被奖励的行为,有没有在 condition Y 里也冒头。

这两件事不是因为 OpenAI 的博文才知道要做。是 OpenAI 用一个比谁家都大的实验室、一个有 175% 这种数字证据的事故,提醒我"这不是要不要做的问题,是早晚都会被这个坑反咬一口的问题"。

一个开放的问题

OpenAI 在博文最后说他们会继续改进 reward signal 的设计。这话说得轻飘飘。

我比较好奇的是另一个问题:在 GPT-5.5 上发现 goblin 残留之后,他们用 developer prompt 兜底 —— 也就是说,5.5 的"内在偏好"其实没洗干净,是靠系统消息硬压。等 5.6 出来呢?再下一代呢?

这种"以提示词当 alignment 补丁"的做法,治标治不了本。它说明 OpenAI 也没找到一个干净的办法,把已经吸进模型权重里的偏好洗掉。

quote-02

下一次出事的,可能就不叫 goblin 了,可能根本没有名字。