强化学习(四):探索策略与好奇心驱动学习
在几乎没有奖励反馈的环境中,智能体如何发现回报?从计数型方法到 ICM、RND、NGU——好奇心驱动探索的完整脉络与工程实践。
把一个新出生的 Agent 丢进 Atari 游戏《蒙特祖玛的复仇》。要拿到游戏中的第一分,它必须向右走、跳过头骨、抓住绳子、再跳到台子上、最后捡起钥匙——大约 一百个连续动作不能错。在钥匙到手之前,环境给出的奖励一直是 0。
按教科书的标准 DQN,$\varepsilon = 0.1$,凑齐这一百个动作的概率大约是 $0.1^{100} \approx 10^{-100}$。也就是说:普通 DQN 在这局游戏上永远是 0 分——不是"分数低",而是字面意义的零分,从训练开始到训练结束。
这就是 稀疏奖励问题(Sparse Reward Problem)。它揭示了一个残酷的事实:再漂亮的 Bellman 备份,碰不到非零奖励都白搭。深度强化学习的算法上限,几乎完全由它的探索策略决定。本文要讲的,就是从最朴素的随机探索一路走到 好奇心驱动学习(Curiosity-Driven Learning) 的完整路径——让 Agent 自己给自己造奖励,从而对"新东西"产生兴趣。
你将学到什么
- 为什么 $\varepsilon$-greedy、Boltzmann、甚至 UCB 在高维环境中都会失效
- 计数型方法(count-based) 与基于密度模型的伪计数(pseudo-count)
- ICM(内在好奇心模块):在学到的特征空间中以预测误差作为新奇性信号
- RND(随机网络蒸馏):能在工业级环境中真正 work 的最简单的好奇心信号
- NGU(Never Give Up):用情景记忆解决"需要反复回到同一状态"的任务
- PPO + 好奇心的工程实战配方、超参与常见踩坑
前置阅读: 第 1-3 部分 (MDP、DQN、Policy Gradient、PPO 基础)。
1. 探索为什么这么难
1.1 经典 ε-greedy:朴素到一眼能看穿的弱点
每本入门书都会先讲 $\varepsilon$-greedy:以概率 $\varepsilon$ 随机选一个动作,否则选当前 Q 值最大的那个。公式不难,难的是 schedule:训练越久,$\varepsilon$ 应该怎么衰减?

上图左侧是三种最常用的 schedule(线性、指数、阶梯式),右侧是线性衰减下、4 个可选动作的实际概率构成。三个值得记住的细节:
- 不同的衰减曲线对应非常不同的"探索预算"。 指数衰减把绝大多数随机动作集中在前 20k 步;线性衰减更均匀;阶梯式更像是给 Agent 排了一个粗粒度的课程。
- 即便 $\varepsilon = 0.05$,仍然有约 1/4 的"随机动作"恰好打到了 greedy 动作上($1 - \varepsilon + \varepsilon/|\mathcal{A}|$)。很多人误以为 5% 的 ε 就意味着 5% 的 off-policy 行为,其实并不是。
- 整个过程没有任何一处看了状态。 探索仅仅是训练步数的函数。这正是它最大的弱点,也是后面所有方法要攻破的地方。
数学定义为:
$$ \pi_\varepsilon(a \mid s) = \begin{cases} 1 - \varepsilon + \dfrac{\varepsilon}{|\mathcal{A}|} & a = \arg\max_{a'} Q(s, a') \\[4pt] \dfrac{\varepsilon}{|\mathcal{A}|} & \text{其他} \end{cases} $$1.2 Boltzmann(softmax)探索:略有改善的同门兄弟
不再是粗暴的"全有或全无",Boltzmann 把动作概率按 Q 值加权:
$$ \pi_\tau(a \mid s) = \frac{\exp(Q(s,a)/\tau)}{\sum_{a'} \exp(Q(s,a')/\tau)}. $$温度 $\tau$ 取代了 $\varepsilon$:$\tau \to 0$ 时策略变 greedy,$\tau \to \infty$ 时变成均匀分布。

右侧那张图画了策略熵 $H(\pi_\tau) = -\sum_a \pi_\tau(a) \log \pi_\tau(a)$ 随温度的变化。注意它饱和得非常快:$\tau = 2$ 时已经达到了最大熵 $\ln |\mathcal{A}|$ 的 90%。这其实就是 PPO、SAC 中常用的 熵正则项(entropy bonus) 的本质——把 Boltzmann 探索包装成了一项加在策略网络上的正则。
但 Boltzmann 与 $\varepsilon$-greedy 共享同一个致命缺陷:它根据 当前的 Q 估计 分配概率,而完全不参考 Agent 已经在哪些状态附近转悠过多少次。两个 Agent 从未见过的状态,依然会得到一样的 softmax。
1.3 UCB:理论漂亮,规模上栽跟头
在多臂赌博机问题里,UCB1 准则是出了名的"接近最优":
$$ a_t = \arg\max_a \left[ \hat Q(a) + c \sqrt{\frac{\ln t}{N(a)}} \right]. $$第一项负责利用,第二项负责探索——拉过越少次数的臂,得到的不确定性奖励越大。

观察上面这张图。$t = 50$ 时,橙色的 UCB bonus 占主导,所有臂看起来都"值得一试",拉臂数被均匀地分散开。$t = 1000$ 时,最优臂 3 已经被拉了几百次,它的 bonus 已经掉得很低,但其它臂的 bonus 仍较高,于是算法稳定在"主要拉 3,偶尔抽查其它"的模式上。这才是真正合理的探索——它由数据驱动,而不是由一个写死的 schedule 决定。
那为什么我们不在所有任务里都用 UCB?因为 $N(s, a)$ 在高维状态空间里毫无意义。 Atari 一帧画面是 $84 \times 84 \times 4 = 28{,}224$ 个像素,Agent 几乎不可能见到完全相同的两帧。$N(s, a) = 1$ 对任何遇到的 $(s, a)$ 都成立,这个 bonus 项就退化成一个常数。
1.4 Thompson 采样:贝叶斯版本的 UCB
UCB 的近亲是 Thompson 采样:为每个臂维护一个奖励参数的后验,每一步从后验里抽一个"假想世界",按照在这个世界里最优的动作执行。Bernoulli 臂 + Beta 先验时,更新规则极其简单——成功就 $\alpha + 1$,失败就 $\beta + 1$。

从图里可以看到后验在向真实奖励率(虚线)逐渐"收紧"。10 次后算法几乎没下结论;300 次时,最优臂 2($\mu = 0.75$)的后验已经是一根细峰,而表现差的臂仍然保留了足够的方差,不会被立刻排除。Thompson 采样在实践中往往与 UCB 持平甚至更好,推荐系统中的 contextual bandit 几乎是它的天下。但要把它原封不动地搬到深度 RL,会遇到和 UCB 同样的问题:在 $10^{60}$ 维状态空间里维护一个后验是不现实的;Bootstrapped DQN、Bayes by Backprop 等贝叶斯深度 RL 方法只能部分还原这种思想。
1.5 深度 RL 中"探索难"的四个维度
把上面的观察拼起来,可以总结出深度 RL 里探索难度同时来自四个方向:
- 奖励稀疏:成百上千个正确动作之后才有一次反馈,随机探索是大海捞针。
- 状态空间组合爆炸:$256^{28224}$ 种 Atari 帧,根本不可能"统计访问次数"。
- 局部最优陷阱:死胡同里那枚硬币会让 Agent 永远忘记还有一道更难的门后藏着大奖。
- 噪声电视(Noisy-TV)问题:如果用朴素的"新奇性"信号,房间里一台播放静态雪花的电视会被永远当作"新内容",Agent 会盯着它看到训练结束。
现代探索方法的核心思路转变是:不再把探索当成训练步数的函数,而是当成 Agent 自身经验的函数。 婴儿就是这样——他们玩的总是新玩具,不是旧的。
2. 好奇心的统一框架:内在奖励
接下来要讲的所有现代方法,都遵循同一个套路——在环境奖励之上加一个 内在奖励 $r^{\text{int}}_t$:
$$ r^{\text{total}}_t = r^{\text{ext}}_t + \beta \cdot r^{\text{int}}_t. $$然后用任意你喜欢的 RL 算法(DQN、PPO、IMPALA…)在 $r^{\text{total}}$ 上训练。所有的设计精力,都集中在一个问题上:
如何定义 $r^{\text{int}}_t$,让它对真正新奇的体验给出大值,对老生常谈给出小值——而且不能要求我们去数像素?
下面的三个答案,越往后越优雅。
3. 计数型方法:计数还能用的时候
最干净的"新奇性"定义就是"我访问得越少,越新奇"。在表格 MDP 上,这给出 MBIE-EB 奖励:
$$ r^{\text{int}}(s) = \frac{\beta}{\sqrt{N(s)}}, $$它有与 UCB 一致的理论保证。问题在于,对像素环境而言,几乎所有状态都满足 $N(s) = 0$。
Bellemare 等(2016)用一个密度模型 $\rho(s)$ 推出"伪计数(pseudo-count)“绕开了这个困难:
$$ \hat N(s) = \frac{\rho(s)\bigl(1 - \rho_{\text{new}}(s)\bigr)}{\rho_{\text{new}}(s) - \rho(s)}, $$其中 $\rho_{\text{new}}$ 是把 $s$ 多观察一次后模型的密度。它假装 $\rho$ 来自一个巨大的计数器、然后把计数器反推出来。配合强力的密度模型(PixelCNN 等),它在《蒙特祖玛的复仇》上拿到了第一个非平凡的分数。但密度模型训练昂贵且脆弱,噪声电视问题 仍然完全没解决——随机像素噪声密度低、被估计为高新奇性、被疯狂奖励。后来主流逐渐放弃了 pseudo-count,转向更鲁棒的"预测误差"思路。
4. ICM:以预测误差衡量好奇心
Intrinsic Curiosity Module(ICM)(Pathak 等, ICML 2017)把"我有没有见过这个状态"换成了"我能不能预测接下来会发生什么”。直觉是:
- 如果环境对我动作的反应是 可预测的,说明我已经懂了——内在奖励小。
- 如果反应让我 吃惊,说明我的模型还不能解释它——内在奖励大。
但直接预测原始像素不行——电视雪花永远不可预测、却毫无意义。ICM 的关键操作是:在一个学出来的特征空间 $\phi$ 里做预测,而这个特征空间只编码 Agent 自身动作能影响到的信息。

上图左半部分展示了 ICM 的三个组件:
- 编码器 $\phi$(CNN)把原始观测 $s_t$ 映射到特征向量 $\phi(s_t)$。
- 前向模型 $\hat f$ 根据当前特征和动作预测下一刻特征:$\hat\phi_{t+1} = \hat f(\phi(s_t), a_t)$。它的平方误差 $$r^{\text{int}}_t = \eta \,\bigl\| \hat\phi_{t+1} - \phi(s_{t+1}) \bigr\|^2$$ 就是 内在奖励。
- 逆向模型 $g$ 反过来,根据连续两帧的特征预测动作:$\hat a_t = g(\phi(s_t), \phi(s_{t+1}))$,它的损失会回传到 $\phi$ 上。
第三步是关键。逆向模型只有在 $\phi$ 保留了"两帧之间会随动作变化的信息"时才能成功;与此无关的背景噪点、电视雪花等都会被 $\phi$ 自动丢掉,因为它们对预测 $a_t$ 没有帮助。这些被丢掉的东西自然也就不会被前向模型当成"新奇性"。
参考实现
| |
实测效果
《蒙特祖玛的复仇》上,ICM + A3C 在 25M 帧内能跑到约 6,600 分(vanilla DQN 永远是 0)。更惊人的是:把外在奖励完全去掉,只留下 ICM 的内在奖励,Agent 仍然能学会在前几个房间里穿梭、躲避敌人、捡起钥匙——只因为做这些事能让它的前向模型保持忙碌。
ICM 的局限
- 依赖环境的确定性。 如果环境里有真正随机的"老虎机",前向模型永远预测不了它,Agent 会沉迷于拉杆。逆向模型能过滤"动作无关"的随机性,但"动作相关"的随机性依然致命。
- 算力开销。 三套额外网络(编码器、前向、逆向),训练成本通常是 vanilla PPO 的 2 倍左右。
5. RND:简单到不可思议的替代方案
Random Network Distillation(随机网络蒸馏,RND)(Burda 等, ICLR 2019)把 ICM 的整套前向/逆向机器换成一句话:
把一个固定的随机网络蒸馏出来,预测器误差大的地方,就是 Agent 还没访问够的地方。
具体做法(架构图右半部分):
- 目标网络 $f$:随机权重,整个训练过程都不更新。
- 预测网络 $\hat f$:用梯度下降学着把观测 $s$ 上的输出 $\hat f(s)$ 拟合到 $f(s)$。
内在奖励就是预测残差:
$$ r^{\text{int}}(s) = \bigl\| \hat f(s) - f(s) \bigr\|^2. $$对预测器看过很多次的状态,loss 早被驱动到接近 0——奖励小。对从未见过的状态,预测器没有训练过,输出是随机的,残差很大——奖励大。冻结的目标网络相当于一个确定性的哈希函数,结构相似的状态映射到相似的目标,泛化能力是免费送的。
同样的机制能搞定噪声电视:随机雪花虽然像素差异巨大,但在一张随机 CNN 看来 结构高度相似,预测器只需要几次更新就能匹配,奖励迅速衰减到零。所以 ICM 和 RND 解决"噪声电视"用的是完全不同的机制——ICM 在 特征层面 过滤,RND 利用 随机映射的一致性。
参考实现
| |
头条战绩
- 《蒙特祖玛的复仇》:平均 8,152 分——首个超过人类专家基准 7,385 的算法。
- 《Pitfall!》:70.4 分(之前最好成绩是确切的 0)。
- 在很长一段时间里,RND 在所有"硬探索(hard exploration)“的 Atari 游戏上都是 SOTA。
让 RND 真正 work 的两个非显然的工程技巧:(i) 策略网络配 两个独立的 value head,分别对 $r^{\text{ext}}$ 与 $r^{\text{int}}$ 估值,并用不同的折扣因子;(ii) 用 滑动标准差 对内在奖励做 per-environment 归一化。如果不做归一化,内在奖励的尺度会失控、把外在奖励淹没,训练立刻崩。
6. NGU:永不放弃任何状态
RND 有一个隐含假设——一个状态的预测器误差被压到零之后,它就再也"不新奇"了。绝大多数情况下没问题。但有两类重要场景会被这个假设干掉:
- 钥匙-门类任务。 Agent 死亡后重生,需要 再次 去捡那把钥匙。但 RND 已经认为钥匙位置很无聊了,Agent 不会再回去拿。
- 回溯探索(Backtracking)。 探索完地图右半边,Agent 必须从起点回到左半边继续探索。但起点已经被走过几千次,RND 不会奖励它再次穿过那里。
Never Give Up(NGU)(Badia 等, ICLR 2020)的方案是把两种新奇性信号 乘 起来:
$$ r^{\text{int}}_t = r^{\text{episodic}}_t \cdot \min\bigl(r^{\text{lifetime}}_t,\; L\bigr). $$- 情景新奇性 $r^{\text{episodic}}$:维护一个 只属于当前 episode 的状态嵌入记忆库。当前状态在嵌入空间中距离记忆库越远,奖励越大。关键在于这个记忆库 每个新 episode 都会清空——一个被全局访问过千百万次的状态,在新一局开局时仍然算"新奇”。
- 生命周期新奇性 $r^{\text{lifetime}}$:经典的 RND 信号,并加一个上限 $L$ 防止失控。
乘法保证两者都要高才能给出大奖励:状态既要"在本局新鲜"又要"在全局尚未走腻"。NGU 还引入了 多策略并行训练(不同 $\beta$ 的策略族)以及 directed exploration 机制,但情景-生命周期分解才是它思想的内核。
后续的 Agent57(Badia 等, 2020)在 NGU 之上再加一个 meta-controller 来动态选择当前用哪条探索策略,是史上 第一个在全部 57 个 Atari 游戏上都超过人类基线 的单一算法。
关键得分对比
| 游戏 | DQN(ε-greedy) | RND | NGU | 人类专家 |
|---|---|---|---|---|
| 蒙特祖玛的复仇 | 0 | 8,152 | 11,000+ | 7,385 |
| Pitfall! | 0 | 70 | 5,000+ | 6,464 |
| Private Eye | 0 | 8,800 | 69,000 | 69,571 |
7. 直观对比:随机 vs 好奇
把"随机"和"好奇"两种探索拿到一个最小问题上看一眼,差距会非常震撼。

上面两幅图展示了同一个 Agent 从中心白星出发、在 25x25 GridWorld 中走 1500 步的访问分布。蓝色 Agent 是均匀随机游走;紫色 Agent 按照 $1/\sqrt{N(s')}$ 的概率从邻居中采样下一步——这是最朴素的计数型好奇心奖励。同样步数后:随机游走者只覆盖了 65.6% 的格子,最热门格子被踩了 19 次;好奇心 Agent 覆盖了 80%,最高重访次数只有 11。右侧那张按访问数排序的对数曲线传递了同样的信息:好奇心把"头部"压平(不再有过度访问的格子),把"尾部"抬起(不再有被冷落的格子)。
把这种效应放大到 $10^8$ 帧、状态空间大如系外行星的 Atari,你就明白为什么"好奇心"是 0 分和 11000 分之间的鸿沟了。

上图把同一个故事放到了大场景里。Vanilla DQN 一直锁死在 0——它从来没找到过哪怕一次奖励。从 count-based 到 ICM、RND、再到 NGU,每一代好奇心方法都把"首次拿到奖励"的时间往前压、把渐进得分往上抬。NGU 是第一个站到人类专家虚线之上的方法。
8. 工程配方:PPO + 好奇心如何上线
起手超参
| 参数 | 起始值 | 备注 |
|---|---|---|
| 内在奖励系数 $\beta$ | 0.01 | 极稀疏奖励环境可推到 0.1 |
| 奖励归一化 | 必须开,$r^{\text{ext}}$ 和 $r^{\text{int}}$ 分开做 | 否则 RND/ICM 会淹没任务奖励 |
| 折扣 $\gamma_{\text{int}}$ | 0.99 | 经常 比 $\gamma_{\text{ext}}$ 更小,鼓励局部探索 |
| 双 value head | 是 | 一个 head 一种奖励,永远比混在一起好 |
| Frame skip / stack | 4 / 4 | Atari 标配 |
| 梯度裁剪 | 0.5 | ICM/RND 梯度尾部很厚 |
训练应该看到的进度
PPO + RND,Montezuma’s Revenge,单张现代 GPU:
| 帧数 | 期望里程碑 |
|---|---|
| 10M | 稳定通过第一个房间(≈100 分) |
| 30M | 拿到钥匙,开门(≈400 分) |
| 100M | 平均回报 6000+,偶尔 8000+ |
如果跑到 20M 帧仍然过不了第一个里程碑,踩坑排序 通常是:忘了归一化 $r^{\text{int}}$、用了单 value head、$\beta$ 设得过低。
怎么选方法
| 场景 | 推荐探索策略 | 原因 |
|---|---|---|
| 奖励密集,低维状态 | $\varepsilon$-greedy 线性衰减 | 便宜、够用 |
| 连续控制(MuJoCo、机器人) | SAC 熵奖励 / 参数噪声 | 平滑动作空间需要平滑探索 |
| 单个稀疏奖励 Atari 游戏 | PPO + RND | 简洁与性能的最佳折中 |
| 需要反复回到同一状态的稀疏奖励任务 | NGU | 情景记忆解决"再做一次同样的事" |
| 全 Atari、研究级 SOTA | Agent57 / Go-Explore | 顶尖性能,但工程复杂度陡升 |
9. 小结与下一步
探索是横亘在"玩具 RL"与"通用智能"之间最大的瓶颈。随机探索按理论也能 cover 所有状态,但它的缩放规律实在太糟——状态空间远比均匀采样能覆盖的范围庞大。
所有现代探索方法的共同思想可以浓缩成一句话:
把好奇心当成一个可学习的奖励。 用某种可计算的方式定义"新奇性"——访问次数低、预测误差大、蒸馏残差高、距离情景记忆远——再让 Agent 同时最大化它和任务奖励。
我们看了四个具体实例:
- 计数型 / 伪计数:表格 MDP 上漂亮,像素世界里脆弱。
- ICM:在学到的、动作相关的特征空间里以预测误差为新奇性。
- RND:以一个随机网络的蒸馏残差为新奇性,简洁到尴尬,效果好到尴尬。
- NGU / Agent57:把情景新奇与生命周期新奇相乘,专治"会忘记应该回去做某事"的任务。
但探索问题远未解决。当前主流方法仍然需要 $10^8 \sim 10^9$ 量级的环境帧;人脑解决《蒙特祖玛的复仇》只需要几小时。当前活跃的研究方向包括 技能发现(skill discovery)、语言锚定的探索(language-grounded exploration)、从人类示范中学习探索策略。
下一篇预告: 第 5 部分 进入 Model-Based RL 与世界模型——学一个可微的环境模拟器,让 Agent 在"想象"中预演成千上万条轨迹,从而把真实交互的需求降低一两个数量级。
参考文献
- Pathak, D., Agrawal, P., Efros, A. A., & Darrell, T. (2017). Curiosity-driven exploration by self-supervised prediction. ICML. arXiv:1705.05363
- Burda, Y., Edwards, H., Storkey, A., & Klimov, O. (2019). Exploration by random network distillation. ICLR. arXiv:1810.12894
- Badia, A. P., Sprechmann, P., Vitvitskyi, A., et al. (2020). Never Give Up: learning directed exploration strategies. ICLR. arXiv:2002.06038
- Badia, A. P., Piot, B., Kapturowski, S., et al. (2020). Agent57: outperforming the Atari human benchmark. ICML. arXiv:2003.13350
- Bellemare, M. G., Srinivasan, S., Ostrovski, G., Schaul, T., Saxton, D., & Munos, R. (2016). Unifying count-based exploration and intrinsic motivation. NeurIPS. arXiv:1606.01868
- Ecoffet, A., Huizinga, J., Lehman, J., Stanley, K. O., & Clune, J. (2021). First return, then explore. Nature, 590, 580-586. arXiv:2004.12919
- Auer, P., Cesa-Bianchi, N., & Fischer, P. (2002). Finite-time analysis of the multi-armed bandit problem. Machine Learning, 47, 235-256.
系列导航
| 部分 | 主题 |
|---|---|
| 1 | 基础与核心概念 |
| 2 | Q-Learning 与深度 Q 网络 |
| 3 | Policy Gradient 与 Actor-Critic |
| 4 | 探索策略与好奇心驱动学习(本文) |
| 5 | Model-Based 强化学习与世界模型 |
| 6 | PPO 与 TRPO:信任域策略优化 |