时间:2026-03-05 18:07
人气:
作者:admin
密集奖励与稀疏奖励的本质差异——兼论奖励塑形、课程学习、内在奖励与分层强化学习(后文有人话讲解)
在强化学习(Reinforcement Learning)中,奖励信号的设计方式对智能体的学习效率有根本性影响。
智能体在每一个时间步或几乎每一步都能收到反馈信号。
特点:
例子:
优点: 学习效率高,收敛快
缺点: 奖励函数难以设计,容易出现"奖励欺骗"(reward hacking)——智能体找到了不符合预期的方式来最大化奖励
智能体只在完成特定关键事件时才收到奖励,大多数时间步奖励为 0。
特点:
例子:
优点: 奖励定义简洁,不容易被"钻空子"
缺点: 探索效率极低,在复杂任务中几乎无法学习
| 密集奖励 | 稀疏奖励 | |
|---|---|---|
| 反馈频率 | 每步都有 | 偶尔才有 |
| 学习速度 | 快 | 慢 |
| 设计难度 | 高 | 低 |
| 主要风险 | 奖励欺骗 | 探索困难 |
实践中常用以下方法缓解稀疏奖励的问题:
在原始奖励 RRR 的基础上,叠加一个人工设计的势函数(Potential Function),引导智能体朝目标方向前进。
R′(s,a,s′)=R(s,a,s′)+F(s,s′)R'(s, a, s') = R(s, a, s') + F(s, s')R′(s,a,s′)=R(s,a,s′)+F(s,s′)
其中 F(s,s′)=γΦ(s′)−Φ(s)F(s, s') = \gamma \Phi(s') - \Phi(s)F(s,s′)=γΦ(s′)−Φ(s) 称为势能差,Φ(s)\Phi(s)Φ(s) 是状态 sss 的势函数。
Ng et al. 1999 的重要定理: 只要塑形项是势函数差的形式,就不会改变最优策略,只会加速学习。
原始奖励:抓到物体 → +1,否则 0
塑形后:
Φ(s) = -distance(手, 物体) # 距离越近,势能越高
每步奖励 = γ·Φ(s') - Φ(s) # 靠近 → 正奖励,远离 → 负奖励
若势函数设计不当,智能体可能学会"反复靠近再离开"来刷奖励,而不是真正完成任务。这就是为什么势函数差的形式至关重要——它在数学上保证了最优策略不变。
模仿人类教育方式:从简单到复杂,循序渐进地提升任务难度,让智能体在每个阶段都能获得足够的学习信号。
阶段 1:迷宫 3×3,出口很近 → 容易探索到奖励
↓
阶段 2:迷宫 5×5,出口稍远
↓
阶段 3:迷宫 10×10,有障碍物
↓
阶段 4:迷宫 20×20,动态障碍物 → 最终目标
| 类型 | 说明 | 代表方法 |
|---|---|---|
| 人工课程 | 人工预定义难度序列 | 传统 Curriculum Learning |
| 自动课程 | 算法自动调整难度 | ACL、PAIRED、PLR |
Teacher: "当前你的胜率是 40%,我给你生成难度适中的关卡"
Student: 训练 → 胜率提升到 60%
Teacher: "进步了!适当加难"
OpenAI 训练机械手玩魔方时,就用了自动课程学习——从简单的手指移动,逐步到完整的魔方还原。
不依赖外部奖励,给智能体植入内在动机——对新奇状态的好奇心,鼓励它主动探索未知区域。
Rtotal=Rextrinsic+β⋅RintrinsicR_{total} = R_{extrinsic} + \beta \cdot R_{intrinsic}Rtotal=Rextrinsic+β⋅Rintrinsic
┌─────────────────────────────────────────┐
│ Forward Model:给定 (s, a) → 预测 s' │
│ Inverse Model:给定 (s, s') → 预测 a │
│ │
│ 内在奖励 = Forward Model 的预测误差 │
│ → 越难预测的状态 → 越高的好奇心奖励 │
└─────────────────────────────────────────┘
直觉:如果我对某个状态的后果预测很差,说明这是个陌生状态,值得探索。
固定随机网络 f(s):随机初始化,永远不变
可训练网络 g(s):不断学习去模仿 f(s)
内在奖励 = || f(s) - g(s) ||²
= 预测误差
直觉:对于从未见过的状态,g 还没学会模仿 f,误差大 → 奖励高;访问多了,误差变小 → 奖励降低,自然减少重复探索。
这个游戏奖励极为稀疏(传统 RL 几乎学不会),但加入 RND 内在奖励后,智能体因为"好奇心"自发探索了大量房间,最终达到超人类水平。
若环境中有随机噪声源(如随机播放的电视),好奇心型智能体会被吸引并卡死在那里,因为噪声永远新奇。RND 对此有一定免疫,但这仍是研究热点。
将一个长期、复杂的任务分解为多层次的子目标,不同层级的策略负责不同的时间粒度。
高层策略(Manager):制定长期目标 → 每 k 步做一次决策
↓ 子目标
低层策略(Worker):执行具体动作 → 每步都做决策
┌──────────────────────────────────────────────┐
│ Manager(每 k=10 步) │
│ 输入:当前状态 s │
│ 输出:子目标 g(目标状态的方向) │
│ 奖励:来自环境的原始稀疏奖励 │
└───────────────────┬──────────────────────────┘
│ 子目标 g
┌───────────────────▼──────────────────────────┐
│ Worker(每步) │
│ 输入:当前状态 s + 子目标 g │
│ 输出:原始动作 a │
│ 奖励:|| s_{t+1} - g ||² 的负值(密集!) │
└──────────────────────────────────────────────┘
关键洞察:低层的奖励是密集的(离子目标的距离每步都变化),稀疏奖励问题只留给高层,而高层决策频率低,更容易学习。
高层目标:走到迷宫出口(稀疏奖励)
→ 子目标1:走到走廊入口
→ 子目标2:走到转角处
→ 子目标3:走到出口
低层任务:控制8个关节,实现位移(密集奖励)
低层策略只需学会"如何移动身体",高层策略只需学会"去哪里",两者解耦,大大降低了学习难度。
| 方法 | 解决的核心问题 | 主要代价 |
|---|---|---|
| 奖励塑形 | 引导方向,加速收敛 | 需要领域知识,可能设计错 |
| 课程学习 | 提供渐进学习信号 | 需要定义难度度量 |
| 内在奖励 | 无需领域知识的探索 | 可能被噪声干扰 |
| 分层 RL | 长视野任务分解 | 训练复杂,层间协调难 |
任务特点 推荐方法
─────────────────────────────────────────────
有领域知识,知道"中间状态好坏" → 奖励塑形
任务有天然难度梯度 → 课程学习
完全未知环境,无法定义中间奖励 → 内在奖励
任务时间跨度极长,有自然子结构 → 分层 RL
复杂真实任务 → 多种方法组合
这四种方法并不互斥,现代 SOTA 系统(如 OpenAI Five、AlphaCode)往往组合使用多种方法来克服稀疏奖励的挑战。
想象你在教一只狗学会"开冰箱拿啤酒"。
稀疏奖励就是:只有狗真的把啤酒叼过来了,你才给它零食。
问题是——狗根本不知道自己该干嘛,它乱跑乱蹦,99%的时间什么反馈都没有,完全不知道自己做对了还是做错了。学习效率极其低下。
下面四种方法,就是在想办法解决这个问题。
一句话:把终点奖励,拆成沿途的小奖励。
还是教狗开冰箱的例子:
❌ 只有拿到啤酒才给零食(稀疏)
✅ 走向冰箱方向 → 给一点点零食
靠近冰箱 → 再给一点
碰到冰箱 → 再给一点
打开冰箱 → 再给一点
拿到啤酒 → 大奖!
就像在马拉松跑道上每隔一公里放一个补给站,跑手不会跑到一半完全不知道自己在正确路线上。
最大的坑: 如果路牌插得不对,狗可能学会一直在冰箱附近打转,因为"靠近冰箱"一直有零食吃,但就是不开门。所以路牌要插得有技巧。
一句话:先学简单的,再学难的,循序渐进。
你不会第一天教小孩微积分,对吧?先教 1+1=2,再教乘除法,再教方程式……
强化学习也一样:
???? 第一周:3×3 的小迷宫,出口就在旁边
???? 第二周:5×5 的迷宫,绕几个弯
???? 第三周:10×10,加上障碍物
???? 第四周:20×20,障碍物还会动
每个阶段 AI 都能频繁拿到奖励,学到东西,再挑战下一关。
关键点: 难度要恰到好处——太简单没挑战,太难又学不动。最好的状态是"跳一跳够得到"。
有研究者甚至训练了一个"老师 AI"专门负责出题,实时观察"学生 AI"的进度,动态调整难度,就像私教一样。
一句话:不靠外部奖励,让 AI 自己对新事物感兴趣。
小孩子没人奖励他,他也会到处乱翻、乱探索——因为好奇心本身就是驱动力。
我们给 AI 也装上类似的东西:
去没去过的地方 → 自动获得"好奇心奖励"
反复去同一个地方 → 没什么奖励,去别处吧
具体怎么实现?有个很聪明的方法(RND):
给 AI 出一道题:“预测这个状态会怎样发展”
如果 AI 预测得很准 → 说明见过,不新鲜,奖励少
如果 AI 预测得很差 → 说明没见过,很新奇,奖励多!
这样 AI 就会自发地去探索它"不懂"的地方。
有个有趣的问题: 如果房间里有一台随机播放的电视,AI 会被它吸引然后傻站在那里一直看——因为画面永远在变,永远"新奇",永远有奖励。这就是"噪声电视问题",科学家们还在研究怎么解决。
一句话:大目标交给"领导"规划,具体执行交给"员工"。
想象你让一个新员工去北京开会:
你(高层):你去北京,到XX会议室,开完回来。
员工(低层):好的!(自己决定:打车去机场 → 办理登机 → 坐飞机 → 打车去酒店 → 走路去会议室……)
你不需要告诉他每一步怎么走,他自己解决细节。你只管大方向。
在 AI 里也一样:
高层 AI(每隔10步做一次决策):
"去迷宫左边那个走廊"
↓
低层 AI(每步都在决策):
控制腿部关节,一步一步走过去
为什么管用?
低层 AI 的奖励变密集了——"离目标点越来越近"每步都有反馈,好学!
高层 AI 不用管腿怎么动,只管往哪走,简单多了!
两层各司其职,把一个超级难的问题拆成了两个相对简单的问题。
问题:AI 不知道自己做的对不对(稀疏奖励)
│
├─ 你知道"中间步骤"怎么算好?
│ └─ 是 → 奖励塑形(插路牌)
│
├─ 任务有难易之分?
│ └─ 是 → 课程学习(从简单练起)
│
├─ 环境未知,无从下手?
│ └─ 是 → 内在奖励(装上好奇心)
│
└─ 任务又长又复杂?
└─ 是 → 分层 RL(领导+员工分工)
这四招不是非此即彼,真实项目里常常是一起用,就像学习一门新技能,你可能同时需要:好老师循序渐进教你(课程学习)、做对了及时表扬你(奖励塑形)、加上你自己的求知欲(内在奖励)。