Deep reinforcement learning from human preferences
Paul Christiano, Jan Leike, Tom B. Brown, Miljan Martic, Shane Legg, Dario Amodei
stat.ML, cs.AI, cs.HC, cs.LG
2017-06-13
OpenAI 与 DeepMind 的双网络方案让非专家用不到 1% 的交互、约一小时反馈,就教会深度强化学习复杂行为,无需现成奖励函数。
2017 年,深度强化学习已经能打 Atari、下围棋,但有个前提:环境必须给出一个明确的奖励函数。问题是大量真实任务的奖励根本写不出来。你想让机器人擦桌子、摊鸡蛋,奖励得是机器人传感器的函数,怎么设计都容易跑偏。一个粗略的奖励函数往往被智能体钻空子,优化的是你写的分数,不是你想要的动作。
这是价值对齐(alignment)问题的早期形态:智能体拼命最大化你给的目标,但那个目标没真正代表你的意图。
已有的替代方案都各有短板。模仿学习、逆向强化学习需要人类示范,但有些动作人类根本示范不了,比如让一个非人形机器人后空翻。直接把人类反馈当奖励信号又太贵,深度强化学习动辄需要几百上千小时的经验,让人盯着每一步打分,成本上完全行不通。要把它做成实用的,反馈量得砍掉好几个数量级。
核心是把「学习目标」拆成两个可以分开训练的神经网络:一个是策略 π,负责在环境里动作;一个是奖励模型 r̂,负责预测某个动作片段有多好。
整个训练是三个异步循环:
关键设计是不让人类打绝对分,而是比较两段 1 到 2 秒的视频片段哪个更好。比较比打分对人友好得多,尤其是在连续控制任务里,绝对分数的尺度飘忽,人很难给得一致。
奖励模型怎么从比较里学?用的是 Bradley-Terry 模型,把 r̂ 当成一个隐变量,人类偏好某段片段的概率随该片段累计奖励指数上升。这其实就是国际象棋的 Elo 积分:两段片段预测奖励的差,对应人类选这一段而非那一段的概率,就像两个棋手 Elo 分差对应胜负概率。用交叉熵去拟合这个概率。
几个工程细节撑住了效果:
策略侧,Atari 用 A2C,机器人用 TRPO,都是当年的主流算法。预测奖励被归一化成零均值、固定方差,因为奖励的绝对位置在这个问题里本来就定不下来。
数字层面,反馈只占智能体与环境交互的不到 1%,交互复杂度被砍掉约三个数量级。
机器人任务(8 个 MuJoCo 任务,含 hopper、walker、half-cheetah、ant 等),用 700 条人类比较就基本追平了用真实奖励训练的强化学习;到 1400 条合成标签时甚至略胜真实奖励一筹,大概是因为学到的奖励被塑形得更好。真人反馈的效率在「真实反馈的一半」到「和真实反馈持平」之间浮动。Ant 这个任务上真人反馈明显超过合成标签,因为作者让人类偏好「机器人保持直立」,这恰好是个好用的塑形信号。
Atari(7 个游戏)更难追平。BeamRider 和 Pong 用 3300 条合成标签就能接近或追平真实奖励;Seaquest、Qbert 能追上但学得慢;SpaceInvaders、Breakout 始终追不上,但智能体仍有明显进步,比如 Breakout 能打到 20 分左右、标签够多时到 50 分。Qbert 用真人反馈时连第一关都过不去。
最能说明问题的是几个没有现成奖励函数的新行为:
| 新行为 | 人类查询数 | 训练规模 |
| Hopper 连续后空翻 | 900 | 不到 1 小时 |
| Half-Cheetah 单腿前跑 | 800 | 不到 1 小时 |
| Enduro 跟车并排、不超车 | 约 1300 | 400 万帧 |
成本上,真人标注由外包人员完成,每条比较 3 到 5 秒,单个任务 30 分钟到 5 小时;Atari 训练算力约 25 美元,5000 条标签对应约 5 小时人力,按美国最低工资算约 36 美元。人力成本和算力成本已经在一个量级。
这篇是后来 RLHF(基于人类反馈的强化学习)的起点。ChatGPT、InstructGPT 用的「奖励模型 + 策略」双网络循环、用人类偏好比较训练奖励模型、偏好数据在线收集,配方直接来自这里,只是把环境从 Atari 和机器人换成了语言模型。
对从业者的直接启示:复杂目标不一定需要写奖励函数,可以让人用偏好比较来教。比较比打分省心,成对偏好数据比绝对评分更容易标得一致。但要注意,这篇是在模拟器里做控制任务,规模和今天的语言模型 RLHF 完全不在一个级别,它是种子,不是成品。
作者自己很克制,反复强调目标是「尽量接近真实奖励训练」,不是超越。真人反馈在同等标签量下通常略差于合成标签,很多时候只相当于打六折的合成标签,原因是人为误差、外包标注不一致、标注速率忽快忽慢导致标签扎堆在狭窄的状态空间里。
方差选片(主动挑集成分歧大的对去问人)这个设计,作者自己承认在部分任务上反而拖累效果,只是个粗糙近似。离线训练奖励模型会出大问题:因为智能体访问的状态分布会随训练漂移,离线训出的奖励模型只捕捉到真实奖励的一部分,智能体去最大化这部分残缺奖励就会跑偏。Pong 上,离线训练有时让智能体只顾着不丢分、不去得分,结果打出无限长的回合。这说明人类反馈必须和强化学习交织进行,不能一次性给完。
另外,为了不让环境本身泄漏任务信息,作者做了大量手工裁剪:去掉了回合终止条件、掉命信号,把游戏分数显示抹成黑屏。这些工程处理本身就提示,「纯粹只靠人类偏好」还很脆弱。