【强化学习系列·第 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 的半壁江山。


参考链接

系列预告:第 03 篇将深入策略梯度方法——从 REINFORCE 到 TRPO 到 PPO,拆解"直接优化策略"的演进之路。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐