《强化学习的数学原理》【学习笔记08】值函数近似与深度 Q-learning:从表格到神经网络

举报
yd_269763035 发表于 2026/10/22 10:21:32 2026/10/22
【摘要】 《强化学习的数学原理》赵世钰 著 · 第 8 章前面所有算法都是"表格型"的——每个状态(或状态-动作对)存一个值。当状态空间巨大(如 Atari 游戏的像素状态)时,表格存不下。本章引入函数近似,用参数化函数 v^(s,w)\hat{v}(s, w)v^(s,w) 代替表格。 一、从表格到函数 表格方法的局限状态空间太大:围棋 ∼10170\sim 10^{170}∼10170,Atari...

《强化学习的数学原理》赵世钰 著 · 第 8 章

前面所有算法都是"表格型"的——每个状态(或状态-动作对)存一个值。当状态空间巨大(如 Atari 游戏的像素状态)时,表格存不下。本章引入函数近似,用参数化函数 v^(s,w)\hat{v}(s, w) 代替表格。


一、从表格到函数

表格方法的局限

  • 状态空间太大:围棋 ∼10170\sim 10^{170},Atari ∼1010000\sim 10^{10000}
  • 内存不够存表格
  • 无法泛化:相似状态的值没有共享信息

函数近似

用参数 ww 的函数近似值函数:

v^(s,w)≈vπ(s)\hat{v}(s, w) \approx v_\pi(s)

ww 可以是:

  • 线性特征:v^(s,w)=wTϕ(s)\hat{v}(s, w) = w^T \phi(s)
  • 神经网络:v^(s,w)=NN(s;w)\hat{v}(s, w) = \text{NN}(s; w)

核心变化:从"每个状态一个独立参数"变成"所有状态共享一组参数 ww"。代价是引入了近似误差,收益是能处理大状态空间和泛化。


二、基于值函数的 TD:状态值估计

目标函数

最小化值函数近似的误差:

J(w)=E[(vπ(S)−v^(S,w))2]J(w) = \mathbb{E}\big[(v_\pi(S) - \hat{v}(S, w))^2\big]

优化算法

梯度下降:

wt+1=wt+αt(vπ(St)−v^(St,wt))∇wv^(St,wt)w_{t+1} = w_t + \alpha_t \big(v_\pi(S_t) - \hat{v}(S_t, w_t)\big) \nabla_w \hat{v}(S_t, w_t)

问题:vπ(St)v_\pi(S_t) 未知!用 TD 目标代替:

wt+1=wt+αt(Rt+1+γv^(St+1,wt)−v^(St,wt))∇wv^(St,wt)w_{t+1} = w_t + \alpha_t \big(R_{t+1} + \gamma \hat{v}(S_{t+1}, w_t) - \hat{v}(S_t, w_t)\big) \nabla_w \hat{v}(S_t, w_t)

这就是 半梯度 TD(0)——叫"半梯度"是因为只在目标值 v^(St,w)\hat{v}(S_t, w) 处求梯度,不对 TD 目标 Rt+1+γv^(St+1,w)R_{t+1} + \gamma \hat{v}(S_{t+1}, w) 求梯度。

为什么是半梯度? 如果对目标也求梯度,会引入额外的噪声项,收敛性更难保证。半梯度方法在理论上有收敛保证(线性近似情况下)。

线性近似的收敛性

当 v^(s,w)=wTϕ(s)\hat{v}(s, w) = w^T \phi(s) 是线性函数时,半梯度 TD(0) 收敛到 J(w)J(w) 的全局最小(在满足 RM 条件时)。

非线性近似(神经网络)没有收敛保证——这是实践中 DQN 不稳定的理论根源。


三、基于值函数的动作值估计

Sarsa 的函数近似版本

wt+1=wt+αtδt∇wq^(St,At,wt)w_{t+1} = w_t + \alpha_t \delta_t \nabla_w \hat{q}(S_t, A_t, w_t)

其中 δt=Rt+1+γq^(St+1,At+1,wt)−q^(St,At,wt)\delta_t = R_{t+1} + \gamma \hat{q}(S_{t+1}, A_{t+1}, w_t) - \hat{q}(S_t, A_t, w_t)。

Q-learning 的函数近似版本

wt+1=wt+αtδt∇wq^(St,At,wt)w_{t+1} = w_t + \alpha_t \delta_t \nabla_w \hat{q}(S_t, A_t, w_t)

其中 δt=Rt+1+γmax⁡a′q^(St+1,a′,wt)−q^(St,At,wt)\delta_t = R_{t+1} + \gamma \max_{a'} \hat{q}(S_{t+1}, a', w_t) - \hat{q}(S_t, A_t, w_t)。

致命三要素(Deadly Triad):函数近似 + 自举 + Off-policy 三者同时出现时,训练可能发散。Q-learning 的函数近似版本就有这个问题。DQN 通过经验回放和目标网络来缓解(但不是根本解决)。


四、深度 Q-learning(DQN)

算法描述

初始化: 主网络 Q(s,a;w), 目标网络 Q(s,a;w⁻) = Q(s,a;w)
        经验回放缓冲区 D = {}
每步:
    用 ε-greedy 选择动作 A_t
    执行 A_t,观察 R_{t+1}, S_{t+1}
    存入回放缓冲区: D ← D ∪ {(S_t, A_t, R_{t+1}, S_{t+1})}
    
    从 D 中随机采样小批量 {(s_j, a_j, r_j, s'_j)}
    计算目标: y_j = r_j + γ max_a' Q(s'_j, a'; w⁻)
    损失: L = (1/m) Σ (y_j - Q(s_j, a_j; w))²
    梯度下降更新 w
    
    每隔 C 步: w⁻ ← w

两个关键技巧

1. 经验回放(Experience Replay)

把转移 (St,At,Rt+1,St+1)(S_t, A_t, R_{t+1}, S_{t+1}) 存到缓冲区,训练时随机采样小批量。

作用:

  • 打破数据的时间相关性(SGD 假设样本独立同分布)
  • 提高数据效率(一条经验可以多次使用)

2. 目标网络(Target Network)

用一个延迟更新的网络 Q(s,a;w−)Q(s, a; w^-) 计算 TD 目标,而不是用正在训练的网络 Q(s,a;w)Q(s, a; w)。

作用:

  • 稳定训练:如果用同一个网络算目标和更新,目标会随每步变化,形成"追着自己尾巴跑"的不稳定 dynamics
  • 延迟更新(每 C 步同步一次)让目标在短期内固定,类似"站在地上跳"而非"站在弹簧上跳"

五、DQN 的理论分析

收敛性

严格来说,DQN 没有收敛保证。原因:

  • 非线性函数近似(神经网络)
  • Off-policy(Q-learning)
  • 自举(TD 目标用估计值)

这就是"致命三要素"。实践中 DQN 能工作,是因为经验回放和目标网络提供了足够的稳定性,但理论上仍可能发散。

过估计问题

Q-learning 中的 max⁡\max 操作会导致过估计偏差:

E[max⁡aq(s,a)]≥max⁡aE[q(s,a)]\mathbb{E}[\max_a q(s,a)] \geq \max_a \mathbb{E}[q(s,a)]

即"噪声的 max"大于"max 的噪声"。这可能导致值被持续高估。

解决方案:Double Q-learning,用两个独立的网络分别选动作和估值,解耦选择和评估。


六、总结

值函数方法的发展
表格型(第 2-7 章)
    ↓ 状态空间太大
线性近似
    ↓ 表达能力不够
非线性近似(神经网络)
    ↓ 训练不稳定
DQN = 神经网络 + 经验回放 + 目标网络
    ↓ 过估计偏差
Double DQN, Dueling DQN, ...
方法 函数近似 收敛保证 实用性
表格 TD 无 有 小状态空间
线性 TD 线性 有 中等状态空间
DQN 神经网络 无 大状态空间
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。