【强化学习系列·第 02 篇】值函数方法:从动态规划到 DQN——“学习好不好“的演进之路
【强化学习系列·第 02 篇】值函数方法:从动态规划到 DQN——"学习好不好"的演进之路
系列回顾:第 01 篇我们绘制了强化学习的全景图——五大时代、六大核心概念和四大算法家族。本篇深入强化学习第一大算法家族:值函数方法。值函数方法的核心思想极其简洁:学习"好不好"——评估每个状态或动作的价值,然后选最好的。从 1957 年 Bellman 方程的动态规划,到 1989 年 Q-Learning 的无模型突破,到 2013 年 DQN 的深度学习革命,到 2017 年 Rainbow 的六重改进——值函数方法用 60 年时间从"已知模型"走到"未知世界",从"表格存储"走到"深度网络",从"单机 Atari"走到"通用框架"。今天,我们从动态规划的三种方法、DQN 的六重改进到值函数方法的局限与突破,彻底拆解"学习好不好"的演进之路。
📑 文章目录
📐 一、三种方法:动态规划·蒙特卡洛·时序差分
值函数方法的目标:学习最优值函数 V(s) 或 Q(s,a)**,然后通过贪心策略 π(s) = argmax Q(s,a) 做出最优决策。根据"怎么学值函数",可以分为三种方法:动态规划(需要模型)、蒙特卡洛(需要完整回合)、时序差分(两者都不需要)。
1.1 动态规划(DP):已知模型的理论最优

动态规划是值函数方法的"理论天花板"——它假设环境模型完全已知(转移概率 P 和奖励函数 R),可以精确计算最优值函数。
策略评估(Policy Evaluation)。给定一个策略 π,计算其值函数 V^π。方法是反复应用 Bellman 期望方程:V(s) ← Σ_a π(a|s) Σ_{s’,r} P(s’,r|s,a)[r + γV(s’)]。这叫做"同步备份"——每次迭代更新所有状态的值,直到收敛。
策略改进(Policy Improvement)。给定值函数 V^π,构造更好的策略 π’:对每个状态,选择使 Q(s,a) 最大的动作。这保证了 π’ ≥ π(新策略不差于旧策略)。
策略迭代(Policy Iteration)。交替执行策略评估和策略改进:π₀ → V^{π₀} → π₁ → V^{π₁} → … → π*。策略迭代保证收敛到最优策略,通常收敛很快(几次迭代即可)。
值迭代(Value Iteration)。直接应用 Bellman 最优方程:V(s) ← max_a Σ_{s’,r} P(s’,r|s,a)[r + γV(s’)]。值迭代不需要显式评估策略,直接向最优值函数逼近。值迭代和策略迭代在理论上等价,但值迭代实现更简单。
动态规划的致命局限:需要完全已知的环境模型。真实世界的问题,转移概率 P 通常是未知的——你不知道"向左走"后"有 30% 概率滑倒"这种信息。此外,状态空间大时,“备份所有状态"的计算代价极高——这就是"维度灾难”。
1.2 蒙特卡洛(MC):从完整回合中学习
蒙特卡洛方法的核心思想:不需要环境模型,从完整的回合(episode)经验中学习值函数。
MC 预测。从经验中估计值函数:运行一个完整回合,记录每个状态的回报 G_t = r_t + γr_{t+1} + … + γ^{T-t}r_T,然后用回报的平均值估计 V(s)。大数定律保证:回合数足够多时,MC 估计收敛到真实值函数。
MC 控制。用 MC 方法学习最优策略:用 ε-greedy 策略收集回合,用回合回报更新 Q(s,a),然后改进策略。为了保证探索,必须使用"探索性启动"(每个状态-动作对都有非零概率被访问)或 ε-greedy 策略。
MC 的优势:无偏估计(用真实回报,没有自举偏差)、不需要环境模型、概念简单。MC 的局限:必须等回合结束才能更新(无法在线学习)、方差大(回报是长期累积的随机变量)、没有回合概念的任务无法使用(如连续控制)。
1.3 时序差分(TD):RL 最核心的方法
时序差分学习是强化学习最重要的算法思想——它结合了 DP 的自举和 MC 的采样,既不需要环境模型,也不需要等回合结束。
TD(0) 预测。TD(0) 的更新规则:V(s_t) ← V(s_t) + α[r_t + γV(s_{t+1}) - V(s_t)]。核心是 TD 误差:δ_t = r_t + γV(s_{t+1}) - V(s_t)——“实际比预期好多少”。TD(0) 用一步的真实奖励 r_t 加上下一步的估计值 γV(s_{t+1}) 来更新当前估计——这叫"自举"(bootstrapping)。
SARSA:On-Policy TD 控制。SARSA 是 TD(0) 的控制版本,直接学习 Q(s,a):Q(s_t,a_t) ← Q(s_t,a_t) + α[r_t + γQ(s_{t+1},a_{t+1}) - Q(s_t,a_t)]。名字来自五元组 (s_t, a_t, r_t, s_{t+1}, a_{t+1})。SARSA 是 on-policy 的——它评估和改进的是同一个策略。这意味着 ε-greedy SARSA 会考虑探索风险——如果"贪心动作"附近有悬崖,SARSA 会学到"绕路走"。
Q-Learning:Off-Policy TD 控制。Q-Learning 是值函数方法最重要的算法:Q(s_t,a_t) ← Q(s_t,a_t) + α[r_t + γ max_{a’} Q(s_{t+1},a’) - Q(s_t,a_t)]。与 SARSA 的区别:Q-Learning 用 max 而不是实际动作 a_{t+1}——它学习的是最优策略的 Q 值,而不管行为策略是什么。这就是"离策略"(off-policy)——学习和行为可以分离。
n-Step TD:统一框架。n-Step TD 统一了 TD 和 MC:G_t^(n) = r_t + γr_{t+1} + … + γ^n V(s_{t+n})。n=1 是 TD(0),n=∞ 是 MC。n-Step TD 让我们可以自由选择偏差-方差的平衡点——n 越大偏差越小方差越大。
1.4 三种方法的关系
三种方法形成了一个优雅的谱系:DP 需要模型但最精确,MC 不需要模型但方差大,TD 不需要模型且方差小但有偏差。TD 是 DP 和 MC 的完美结合——从 DP 继承了自举(低方差),从 MC 继承了采样(不需要模型)。n-Step TD 进一步统一了 TD 和 MC,让我们可以自由选择偏差-方差的平衡点。
🧠 二、DQN 革命:从 Q-Learning 到 Rainbow 的六重改进

2.1 Q-Learning 的困境:表格法的天花板
Q-Learning 是值函数方法的核心算法,但表格法 Q-Learning 有一个致命问题:无法处理高维状态空间。Atari 游戏的状态是 84×84×4 的像素帧——状态空间约 10^16879,远超任何表格的存储能力。
2.2 DQN(2013/2015):深度学习 + Q-Learning 的突破
DQN 的核心贡献:用深度神经网络近似 Q(s,a),将 Q-Learning 从表格法解放出来。DQN 在 49 个 Atari 游戏上达到了人类水平,这是深度强化学习的里程碑。
DQN 的两大创新:
经验回放(Experience Replay)。将交互经验 (s,a,r,s’) 存入回放缓冲区,训练时随机采样。这打破了数据的时间相关性——连续的交互数据高度相关(同一局游戏中的帧),直接用于训练会导致神经网络过拟合。经验回放让数据接近独立同分布,极大稳定了训练。
目标网络(Target Network)。用两个网络:在线网络 Q(s,a;θ) 和目标网络 Q(s,a;θ⁻)。训练时用目标网络计算 TD 目标:y = r + γ max Q(s’,a’;θ⁻),然后更新在线网络。目标网络参数 θ⁻ 定期从 θ 复制(如每 10000 步)。这解决了"追逐移动目标"的问题——如果用同一个网络计算目标和更新,目标会随训练不断变化,导致训练不稳定。
2.3 Double DQN(2015):解决过估计
Q-Learning 的 max 操作会导致过估计(overestimation):max E[X] ≥ E[max X]。即使每个 Q 值的估计是无偏的,取 max 后也会系统性地偏高。DQN 继承了这个问题。
Double DQN 的解决方案:解耦动作选择和动作评估。用在线网络选择动作 a* = argmax Q(s’,a;θ),用目标网络评估 Q(s’,a*;θ⁻)。这样,选择和评估用的是不同的 Q 值估计,过估计的概率大大降低。
2.4 Dueling DQN(2016):分离状态值和优势
Dueling DQN 的洞察:Q(s,a) = V(s) + A(s,a)——动作值可以分解为状态值(“这个状态有多好”)和优势(“这个动作比平均好多少”)。很多时候,不同动作的 Q 值差异很小(状态本身决定了大部分价值),Dueling 架构让网络更容易学习 V(s)。
Dueling DQN 的网络结构:共享卷积特征提取层,然后分成两个流——V 流输出标量 V(s),A 流输出 |A| 维优势 A(s,a),最后合并 Q(s,a) = V(s) + A(s,a) - mean(A(s,a’))。减去均值是为了可识别性(V 和 A 的和有无限种分解方式)。
2.5 Prioritized Experience Replay(2016):优先回放重要样本
均匀采样的经验回放效率低——大部分样本的 TD 误差很小,对学习贡献不大。Prioritized ER 的核心思想:TD 误差大的样本更重要,应该更频繁地回放。用 TD 误差的绝对值作为优先级,按优先级采样。为了防止高优先级样本被过度回放导致过拟合,加入重要性采样权重。
2.6 Distributional RL(2017):学习回报分布
传统 Q-Learning 只学习 Q 值的期望 E[G]。但回报 G 是随机变量——同一个状态下,不同回合的回报可能差异很大。Distributional RL 学习回报的完整分布 Z(s,a),而非仅期望值。
C51 将回报分布离散化为 51 个支撑点。QR-DQN 用分位数回归学习分布的分位数。IQN 用隐式分位数网络,可以评估任意分位数。Distributional RL 提供了更丰富的信息——不仅知道"平均有多好",还知道"有多不确定",这对风险感知决策至关重要。
2.7 Rainbow(2017):集齐六颗龙珠
Rainbow 将六种改进整合到一个 DQN 中:Double DQN + Prioritized ER + Dueling + Distributional (C51) + Noisy Net + n-Step Return。Rainbow 在 Atari 上大幅超越任何单一改进的 DQN,证明了"组合改进"的威力。
🚧 三、局限与突破:值函数方法的边界

3.1 局限一:只能处理离散动作
Q(s,a) 需要对所有动作取 max——这在离散动作空间中很简单(遍历即可),但在连续动作空间中不可行(无法遍历无限个动作)。这是值函数方法的根本限制。
突破方向:Actor-Critic——加一个策略网络(Actor)处理连续动作,值函数网络(Critic)提供学习信号。DDPG、SAC、TD3 都是这条路线。
3.2 局限二:维度灾难
即使用深度网络近似 Q 函数,高维状态空间的泛化仍然困难。表格法的天然瓶颈——状态空间指数增长时,任何函数近似器都面临挑战。
突破方向:更好的函数近似器——CNN、Transformer、图网络等。但根本性的泛化问题仍需更多研究。
3.3 局限三:探索不足
ε-greedy 太粗糙——它随机探索,没有方向性。Noisy Net 有改善但仍不够。值函数方法缺乏系统性的探索策略。
突破方向:好奇心驱动探索(Intrinsic Curiosity Module)、计数方法(统计状态访问次数)、不确定性估计(贝叶斯方法)。
3.4 局限四:离线学习困难
Q-Learning 的 off-policy 特性在离线设置下会导致严重过估计——行为策略和学习策略差异大时,Q 值在数据分布外区域被严重高估。
突破方向:离线 RL——BCQ 限制动作在数据范围内、CQL 保守估计 Q 值、IQL 只用 Q 的期望值。离线 RL 是值函数方法最活跃的前沿方向之一。
📊 全文速查表
三种方法对比
| 方法 | 需要模型 | 更新时机 | 偏差 | 方差 | 样本效率 |
|---|---|---|---|---|---|
| DP | 需要 | 每步 | 有(自举) | 零 | 最高 |
| MC | 无需 | 回合结束 | 无 | 高 | 低 |
| TD(0) | 无需 | 每步 | 有(自举) | 中 | 中 |
DQN 六重改进
| 改进 | 解决的问题 | 核心思想 | 效果 |
|---|---|---|---|
| 经验回放 | 数据相关性 | 随机采样 | 稳定训练 |
| 目标网络 | 目标不稳定 | 延迟更新 | 收敛保障 |
| Double DQN | 过估计 | 解耦选择和评估 | 减少过估计 |
| Dueling | V和A混淆 | V+A 分离 | 更好值估计 |
| Prioritized | 样本效率低 | 优先回放重要样本 | 效率提升 |
| Distributional | 只学期望值 | 学习回报分布 | 更丰富信息 |
一句话总结
值函数方法的核心思想是"学习好不好"——评估每个状态或动作的价值,然后选最好的。三种方法:动态规划(需要模型,理论最优但不可用)、蒙特卡洛(不需要模型,无偏但方差大)、时序差分(不需要模型,低方差但有偏差——RL 最核心的方法)。TD = DP 的自举 + MC 的采样。Q-Learning 是值函数方法最重要的算法——off-policy,直接学习最优 Q 值。DQN 用深度网络近似 Q,用经验回放和目标网络稳定训练,在 Atari 上达到人类水平。六重改进:Double DQN(解决过估计)、Dueling(分离 V 和 A)、Prioritized(优先回放)、Noisy Net(自适应探索)、Distributional(学习分布)、n-Step Return(多步回报)。Rainbow 集齐六颗龙珠。值函数方法的四大局限:只能处理离散动作(→ Actor-Critic)、维度灾难(→ 更好的函数近似器)、探索不足(→ 好奇心驱动)、离线学习困难(→ 离线 RL)。值函数是所有现代 RL 算法的"地基"——理解了值函数,就理解了 RL 的半壁江山。
参考链接:
- Reinforcement Learning: An Introduction Ch.4-6 (Sutton & Barto)
- DQN (Mnih et al., 2015)
- Double DQN (van Hasselt et al., 2016)
- Dueling DQN (Wang et al., 2016)
- Rainbow (Hessel et al., 2018)
- C51 (Bellemare et al., 2017)
系列预告:第 03 篇将深入策略梯度方法——从 REINFORCE 到 TRPO 到 PPO,拆解"直接优化策略"的演进之路。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)