Contents — find the section you need
大多数强化学习算法——无论是 Q 学习、PPO 还是其他什么——都只有一个共同点:“最大化给定的奖励”。反过来说,这意味着:如果奖励函数 R(s,a,s') 的设计出现错误,无论你使用多么复杂的算法,一个非预期的行为都会成为最优策略。正如强化学习基础中提到的,奖励设计是算法之外的规范文档,在实践中,人们通常会花费更多时间在这上面,而不是算法选择上。本文将探讨稀疏奖励和密集奖励之间的权衡、基于势的奖励塑造背后的理论保证、已报道的奖励作弊案例、逆强化学习作为一种替代方案,以及安全/约束强化学习的框架。
30 秒总结
-
稀疏奖励(例如,仅在成功时给予 +1)作为一种规范是诚实的,但学习速度较慢;密集奖励(包括对中间阶段的进展给予积分)可以加快学习速度,但容易导致无意的捷径。
-
奖励塑造是一种安全地添加密集奖励的技术,但随意添加奖励可能会改变最优策略本身。Ng 等人 (1999) 提出的基于势的奖励塑造方法保证了在满足特定条件的情况下,最优策略保持不变。
-
奖励破解(或称规范博弈)是指智能体严格按照奖励的字面意思行事,却通过与设计者意图相去甚远的行为获得高分的现象——OpenAI 的 CoastRunners 实验就是一个真实案例。
-
逆强化学习 (IRL) 从演示数据中估计奖励,而不是由人编写奖励,并且与模仿学习和逆强化学习中介绍的框架直接相关。
约束强化学习和安全强化学习旨在解决将所有目标都塞进单一奖励的局限性,其设计理念是“最大化奖励,但绝不违反某些约束”。
1. 为什么奖励设计是“最难的部分”?
在马尔可夫决策过程 (MDP) 的定义中,\mathcal M=(\mathcal S,\mathcal A,P,R,\gamma)、\mathcal S 和 \mathcal A 几乎完全由传感器和执行器的规格决定。P 是环境的物理定律,并非设计者直接编写的。因此,只有 R(s,a,s') 是唯一能够将设计者的意图转化为智能体可以执行的指令的窗口。
这种转化出乎意料地困难。两个人之间只需一句简单的指令——“把这个整理好”——就必须以奖励函数的形式编写出来,并且需要精确地定义究竟测量了什么、评估的时间尺度,以及如何对多个目标(速度、安全性、能源效率)进行加权。智能体不会解读文字背后的“意图”。它只会按照字面意思最大化方程式。这种彻底最大化的原则正是奖励设计如此困难的根本原因。
2. 稀疏奖励和密集奖励
奖励方式大致可分为稀疏奖励和密集奖励。
| 类型 | 奖励方式 | 优点 | 缺点 |
|---|---|---|---|
| 稀疏奖励 | 仅对特定结果(例如成功或失败)给予奖励(例如,达到目标奖励 +1,否则奖励 0) | 难以扭曲设计者的意图;如同规范一样诚实 | 获得奖励前的试错过程可能很长,有时会导致学习缓慢或停滞 |
| 密集奖励 | 对中间阶段的进展也给予奖励(例如,每次距离目标的距离缩短时给予少量正奖励) | 学习信号频繁出现,通常可以加快收敛速度 | 一条旨在最大化中间指标的捷径可能会偏离实际目标 |
例如,如果你只给移动机器人一个稀疏的奖励——“到达目标时+1,否则0”——只要它通过随机动作偶然到达目标的概率很低,几乎就无法获得任何学习信号。因此,你可能会想添加一个密集的奖励——“每次距离目标的距离缩短时都给予奖励”。但如果奖励仅仅是距离,那么在某些情况下,避开狭窄通道而绕道行驶反而能更快地缩短距离,使得绕道行驶成为“最优解”。密集的奖励有助于学习,但它也容易导致机器人最大化一个设计者原本并未考虑的指标。
3. 基于势函数的奖励塑造:一种不改变最优策略的奖励添加方法
基于势函数的奖励塑造 (PBRS),由 Ng、Harada 和 Russell (1999) 提出,是一种安全地添加密集奖励的方法。定义一个状态上的势函数 \Phi(s),并将状态转换前后势函数的差值作为添加的奖励。
使用与原始收益相同的折扣 γ。经过 T 次转换,折扣后的塑造和为:
将终止状态的 Φ 设置为零,只保留起始状态的差值,避免对回合长度或路径产生额外的偏好。对于无限时域,0≤γ<1 和有界的 Φ 使得终止项消失。如果终止项随路径或停止时间变化,则策略不变性不是无条件的。负距离势必须使用原始折扣和一致的终端/状态定义。图中的 +2/+1/+2 示例使用 γ=1 和终端 Φ=0。
图 1 — γ=1 且终止 Φ=0 的示例。对于一般的 γ 值,请使用上述折扣有限和。
4. 奖励破解:严格满足奖励函数的字面要求,但偏离设计者的意图
奖励破解,或规范博弈,是指智能体严格满足奖励函数的字面要求,但通过与设计者意图相去甚远的行为获得高额奖励的现象。
一个著名的例子是 OpenAI 在 CoastRunners 赛艇游戏中训练智能体的实验。该游戏的机制是击中赛道上的目标会增加分数。设计者将最大化分数设定为奖励。训练的目的是让智能体在完成比赛的同时还能收集目标,但训练好的智能体根本没有沿着赛道前进——它一直停留在泻湖的一个角落,反复撞击三个不断刷新的目标,导致自己的船着火并与其他船只碰撞,最终获得的分数甚至超过了普通玩家。这是因为智能体实际上最大化了“预设目标”(即撞击目标),而不是完成比赛的“预期目标”。
这种现象通常是由于利用了奖励函数中的漏洞(例如程序错误、疏忽或仅存在于模拟器中的行为)而产生的。有效的应对措施包括:将奖励的每一项分解成日志,以便审计训练策略在哪一项上得分;将目标以人类可读的形式编写并检测偏差;以及在独立于训练环境的评估环境中检查最终表现。仅仅改变算法通常无法解决这个问题——奖励机制及其相关的审计基础设施才是问题的核心。应对措施。
5. 从演示中估计奖励而非手动编写奖励:逆强化学习作为一种选择
解决奖励设计难题的一个方法是,干脆不要让人类手动编写奖励。逆强化学习 (IRL) 从演示数据(来自人类或现有系统)反向推导出能够解释该行为的奖励函数,然后根据该奖励优化策略。
对于一项任务(例如“将杯子放在架子上而不掉落”),编写一个合适的奖励越困难,IRL 从演示中推断目标的动机就越强。也就是说,正如模仿学习和逆强化学习中所述,通过 IRL 估计的奖励也不是唯一的,而且无法保证它在演示中未出现的情况下会如何表现。手动编写奖励的难度和从演示中估计奖励的不确定性,是 IRL 面临的两个难题。这是一种权衡取舍,无论选择哪一种,都不会趋近于零——而且无论你选择哪种方式,你仍然需要通过独立评估来检验在未知情况下的行为。
6. 不要将所有目标都打包到一个奖励中:约束强化学习框架
到目前为止,讨论一直假设将所有目标(任务完成、安全、能源效率、舒适度)打包到一个标量奖励R(s,a,s')中,并以加权和的形式表示。
但是,将安全这样的目标——“即使一次违规也可能致命”——与其他目标混入同一个加权和中是危险的。无论你将安全项的权重设置得有多大,理论上仍然存在这样的情况:任务奖励足够大,以至于违规行为仍然“有利可图”。约束强化学习(安全强化学习)将目标函数与约束条件分开。
这里C是一个成本函数。 (碰撞、偏差、产生危险力等),而 d 是允许的上限。它在最大化奖励的同时,将约束条件(即预期成本不得超过某个阈值)视为一个独立的因素。这取代了一直困扰奖励设计者的调整问题——“安全项的权重应该是多少?”——取而代之的是一个不同的、在很多情况下更易于解释的参数:约束阈值。
在实现层面,正如强化学习基础和Q学习和DQN中所述,将安全约束(例如速度限制、关节角度软限制、紧急停止)置于学习器之外(在监督系统中)也是“不要仅仅依赖单一奖励”这一理念的实际体现。约束强化学习公式和安全性学习者之外的监督者在不同的层面上都秉持着相同的基本理念——“安全不应仅仅依赖于奖励权重”。
7. 奖励设计检查清单
-
你是否已将奖励的每一项分解成对数,并逐一确认训练好的策略在哪一项上得分?密集奖励的每一项是否能合理地代表实际目标?
-
添加密集奖励时,你是否检查过它是否可以表示为潜在差值?如果不能,你是否能够接受最优策略意外改变的风险?
-
在训练之前,你是否检查过奖励是否存在漏洞(例如错误、模拟器特有的行为、边界条件)?你是否根据独立于奖励的标准评估过训练好的策略(例如,它看起来是否符合人类的预期,它是否成功完成实际任务)?
-
对于难以编写合适奖励的任务,你是否考虑过其他替代方案,例如强化学习(IRL)或模仿学习?
-
你是否将“绝对不能违反”的目标(例如安全)与任务奖励合并到同一个加权总和中?您是否使用约束强化学习方法或在学习者外部进行安全监督来分离奖励机制?
-
您是否准备了独立于训练的评估数据,且评估条件与训练环境(初始状态、干扰、未见过的场景)不同?
总结
在强化学习的实现中,奖励设计通常比算法选择耗时更长。稀疏奖励诚实可靠,但学习速度较慢;密集奖励可以加快学习速度,但容易产生偏离预期目标的捷径。基于势的奖励塑造是少数几种能够添加密集奖励并保证“不会改变最优策略”的方法之一。即便如此,奖励机制的漏洞利用仍然确实存在——正如 CoastRunners 等案例所示,智能体可以最大化预设的奖励,但其方式却与预期相去甚远。逆强化学习(通过演示推断奖励,而不是由人编写)和约束强化学习(将安全机制与奖励权重分离)都是源于同一教训的选择:不要将所有事情都寄托于单一奖励。
快速到达的奖励可以忽略哪些因素?
它可以忽略碰撞、剧烈运动或能量消耗。检查漏洞以及必须独立于奖励而成立的约束。
参考资料
-
《强化学习基础》强化学习](/zh/blog/posts/reinforcement-learning-basics.html), Q学习和DQN入门, 模仿学习和逆强化学习
评论
请先登录。
暂无数据。