《强化学习的数学原理》【学习笔记08】值函数近似与深度 Q-learning:从表格到神经网络
《强化学习的数学原理》赵世钰 著 · 第 8 章
前面所有算法都是"表格型"的——每个状态(或状态-动作对)存一个值。当状态空间巨大(如 Atari 游戏的像素状态)时,表格存不下。本章引入函数近似,用参数化函数 代替表格。
一、从表格到函数
表格方法的局限
- 状态空间太大:围棋 ,Atari
- 内存不够存表格
- 无法泛化:相似状态的值没有共享信息
函数近似
用参数 的函数近似值函数:
可以是:
- 线性特征:
- 神经网络:
核心变化:从"每个状态一个独立参数"变成"所有状态共享一组参数 "。代价是引入了近似误差,收益是能处理大状态空间和泛化。
二、基于值函数的 TD:状态值估计
目标函数
最小化值函数近似的误差:
优化算法
梯度下降:
问题: 未知!用 TD 目标代替:
这就是 半梯度 TD(0)——叫"半梯度"是因为只在目标值 处求梯度,不对 TD 目标 求梯度。
为什么是半梯度? 如果对目标也求梯度,会引入额外的噪声项,收敛性更难保证。半梯度方法在理论上有收敛保证(线性近似情况下)。
线性近似的收敛性
当 是线性函数时,半梯度 TD(0) 收敛到 的全局最小(在满足 RM 条件时)。
非线性近似(神经网络)没有收敛保证——这是实践中 DQN 不稳定的理论根源。
三、基于值函数的动作值估计
Sarsa 的函数近似版本
其中 。
Q-learning 的函数近似版本
其中 。
致命三要素(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)
把转移 存到缓冲区,训练时随机采样小批量。
作用:
- 打破数据的时间相关性(SGD 假设样本独立同分布)
- 提高数据效率(一条经验可以多次使用)
2. 目标网络(Target Network)
用一个延迟更新的网络 计算 TD 目标,而不是用正在训练的网络 。
作用:
- 稳定训练:如果用同一个网络算目标和更新,目标会随每步变化,形成"追着自己尾巴跑"的不稳定 dynamics
- 延迟更新(每 C 步同步一次)让目标在短期内固定,类似"站在地上跳"而非"站在弹簧上跳"
五、DQN 的理论分析
收敛性
严格来说,DQN 没有收敛保证。原因:
- 非线性函数近似(神经网络)
- Off-policy(Q-learning)
- 自举(TD 目标用估计值)
这就是"致命三要素"。实践中 DQN 能工作,是因为经验回放和目标网络提供了足够的稳定性,但理论上仍可能发散。
过估计问题
Q-learning 中的 操作会导致过估计偏差:
即"噪声的 max"大于"max 的噪声"。这可能导致值被持续高估。
解决方案:Double Q-learning,用两个独立的网络分别选动作和估值,解耦选择和评估。
六、总结
值函数方法的发展
表格型(第 2-7 章)
↓ 状态空间太大
线性近似
↓ 表达能力不够
非线性近似(神经网络)
↓ 训练不稳定
DQN = 神经网络 + 经验回放 + 目标网络
↓ 过估计偏差
Double DQN, Dueling DQN, ...
| 方法 | 函数近似 | 收敛保证 | 实用性 |
|---|---|---|---|
| 表格 TD | 无 | 有 | 小状态空间 |
| 线性 TD | 线性 | 有 | 中等状态空间 |
| DQN | 神经网络 | 无 | 大状态空间 |
- 点赞
- 收藏
- 关注作者
评论(0)