Deep Q-Networks/zh
| Article | |
|---|---|
| Topic area | Reinforcement Learning |
| Prerequisites | Neural Networks, Stochastic Gradient Descent, Backpropagation |
概述
深度 Q 网络(DQN)是一种强化学习算法,它将经典的 Q 学习与作为函数逼近器的深度神经网络相结合。该方法由 Mnih 等人于 2013 年提出,并在 2015 年发表于 Nature 的论文中得到完善:一个统一的架构直接以原始像素和游戏分数作为输入,学会了以人类水平玩 49 款 Atari 2600 游戏。[1] DQN 证明了同一个网络通过随机梯度下降进行端到端训练,便可掌握各种各样的任务,无需针对具体任务进行特征工程,并因此被广泛视为开启了深度强化学习的现代纪元。
其核心思想是用一个参数化的神经网络 $ Q(s, a; \theta) $ 来逼近最优动作价值函数 $ Q^*(s, a) $——即在状态 $ s $ 下采取动作 $ a $、此后遵循最优策略所能获得的期望折扣回报。两项工程上的关键技术——经验回放与周期性更新的目标网络——稳定了训练过程,避免了以往将 Q 学习与非线性函数逼近器相结合时长期存在的发散问题。
背景:Q 学习
强化学习问题通常被形式化为一个马尔可夫决策过程,包含状态 $ s \in \mathcal{S} $、动作 $ a \in \mathcal{A} $、奖励 $ r $ 以及折扣因子 $ \gamma \in [0, 1) $。最优动作价值函数满足贝尔曼最优方程:
- $ {\displaystyle Q^*(s, a) = \mathbb{E}_{s'} \left[ r + \gamma \max_{a'} Q^*(s', a') \mid s, a \right]} $
表格化的 Q 学习通过采样得到的转移 $ (s, a, r, s') $ 迭代更新估计 $ Q(s, a) $:
- $ {\displaystyle Q(s, a) \leftarrow Q(s, a) + \alpha \left[ r + \gamma \max_{a'} Q(s', a') - Q(s, a) \right]} $
在每个状态-动作对都被无限次访问的温和条件下,该过程收敛到 $ Q^* $;但表格化方法在大规模或连续状态空间中并不可行。自然的做法是用参数化函数 $ Q(s, a; \theta) $ 替代表格,并通过梯度下降来学习参数——这种做法在使用非线性逼近器时,实际上可能发散。DQN 的贡献正是一套使该做法能够可靠运作的稳定化技巧。
DQN 算法
DQN 用一个卷积神经网络对 $ Q(s, a; \theta) $ 进行参数化,其输入为若干最近观测的堆叠(对于 Atari 而言为连续四帧灰度图像),输出为一个Q 值向量,每个离散动作对应一个分量。在每一步与环境的交互中,智能体按照epsilon 贪婪策略选择动作:以概率 $ \epsilon $ 在所有动作中均匀随机采样,否则选择 $ \arg\max_a Q(s, a; \theta) $。探索率 $ \epsilon $ 在最初的数百万帧内由 1.0 退火至一个较小的终值(通常为 0.1 或 0.05)。
转移 $ (s, a, r, s') $ 被存入经验回放缓冲区,并从中采样一个由过去转移组成的小批量来执行梯度更新。Q 网络的训练目标是最小化其预测与一个由自身的缓慢更新副本计算得到的自举目标之间的时序差分误差。
经验回放
经验回放缓冲区是一个固定容量的循环存储结构,通常保留最近 $ 10^6 $ 条转移。每一步梯度更新都从该缓冲区中均匀随机采样一个小批量,而不是使用最新的转移。此举解决了在线学习面对相关轨迹时的三个问题:
- 样本效率 —— 每条转移都可以参与多次梯度更新。
- 去相关 —— 相邻的转移高度相关;采样打破了这种依赖关系,使数据更接近独立同分布,这正是随机梯度下降所假定的条件。
- 平滑 —— 训练数据的分布变化更为平缓,减少了振荡和反馈循环,避免最近一次策略变化使下一批数据偏向相似状态。
随后,优先经验回放对该方案进行了改进,按照TD 误差的绝对值大小成比例地采样转移,使学习更多聚焦于令人意外的经验。[2]
目标网络
如果自举目标 $ r + \gamma \max_{a'} Q(s', a'; \theta) $ 用与正在更新的同一组参数来计算,那么每一次梯度更新都会改变它所追逐的目标——这是一个移动目标问题,常常导致发散。DQN 为此引入了一个独立的目标网络,其参数 $ \theta^- $ 在 $ C $ 步(通常为 10 000 步)内保持不变,之后再从在线网络中拷贝过来。于是目标变为:
- $ {\displaystyle y = r + \gamma \max_{a'} Q(s', a'; \theta^-)} $
将目标与当前在用参数解耦,可以显著提升稳定性,代价是学习略慢,因为目标落后于最新的知识。
损失函数与训练
对采样得到的小批量 $ \mathcal{B} $,损失为均方TD 误差:
- $ {\displaystyle \mathcal{L}(\theta) = \mathbb{E}_{(s, a, r, s') \sim \mathcal{B}} \left[ \left( r + \gamma \max_{a'} Q(s', a'; \theta^-) - Q(s, a; \theta) \right)^2 \right]} $
对终止转移,舍去自举项:$ y = r $。梯度仅相对 $ \theta $ 求取——目标参数 $ \theta^- $ 视为常量。最初的 DQN 论文使用了 RMSProp 优化器、梯度裁剪(将平方误差项裁剪到 $ [-1, 1] $,等价于在线性区间之外使用Huber 损失)以及跳帧(智能体每四帧选择一次动作,并在其间的帧中重复执行)。
伪代码如下:
初始化在线网络 theta 与目标网络 theta_minus = theta
初始化经验回放缓冲区 D
for episode = 1 to M:
观测 s
当未到达终止状态:
以概率 epsilon 随机选取动作 a,否则 a = argmax Q(s, a; theta)
执行 a,观测 r 与 s'
将 (s, a, r, s') 存入 D
从 D 中采样一个小批量
计算目标 y 并对 theta 执行一次梯度更新
每 C 步: theta_minus <- theta
s <- s'
变体与扩展
随后涌现的一批工作针对原始 DQN 的具体失效模式进行了改进:
- Double DQN —— 使用在线网络选择下一动作,再用目标网络对其进行评估,从而缓解最大化算子导致的 Q 值系统性高估。[3]
- Dueling DQN —— 将 $ Q(s, a) $ 分解为状态价值 $ V(s) $ 与动作优势 $ A(s, a) $,使网络可以在不学习每个动作具体作用的情况下评估状态价值。[4]
- 优先经验回放 —— 见上文。
- 多步回报 —— 用 $ n $ 步回报替代单步自举,在偏差与方差之间作权衡。
- 分布式 DQN(C51) —— 预测回报的分布而不仅仅是其期望值,从而捕捉与风险相关的信息。[5]
- Noisy Nets —— 用施加在网络权重上的参数化噪声替代epsilon 贪婪策略,提供与状态相关的探索。
- Rainbow —— 将上述六种改进集成到单一智能体之中,性能显著优于其中任何一项单独使用。[6]
与策略梯度方法的比较
DQN 属于基于价值的方法:它学习一个 Q 函数,并通过贪婪选择动作得到策略。由于 $ \max_{a'} $ 算子在连续动作空间上不可解,DQN 仅适用于离散动作空间。而策略梯度方法——如 REINFORCE、A2C 和 PPO——则直接对策略进行参数化,并通过对期望回报进行梯度上升来对其进行优化。演员-评论家方法把二者结合起来,在学习策略的同时学习一个价值基线。对于连续控制,标准做法是采用确定性的演员-评论家方法(如 DDPG),它可以视为 DQN 在连续动作上的对应版本:用一个学习得到的演员网络的输出取代离散的 max 操作。
局限性
DQN 继承了离策略自举的脆弱性。当环境、回放缓冲区中的内容与移动目标之间相互作用不佳时,训练可能不稳定;细微的实现细节(损失函数、优化器、网络架构、探索计划)都会对最终性能产生可观察的影响。该算法的样本效率也较低:在 Atari 上通常需要数千万帧,远多于人类玩家所需的数据量。在不加修改的情况下,离散动作限制了它在连续控制中的适用性。最后,函数逼近、自举与离策略学习共同构成了 Sutton 与 Barto 所称的致命三元组——已知该组合会破坏表格化情形下的收敛保证,而 DQN 的稳定化技巧只是经验性的启发式方法,并非严格的收敛证明。
参见
- Neural Networks
- Convolutional Neural Networks
- Stochastic Gradient Descent
- Backpropagation
- Loss Functions
参考文献
- ↑ Mnih, V. et al. (2015). "Human-level control through deep reinforcement learning". Nature 518, 529–533.
- ↑ Schaul, T., Quan, J., Antonoglou, I. and Silver, D. (2016). "Prioritized Experience Replay". ICLR.
- ↑ van Hasselt, H., Guez, A. and Silver, D. (2016). "Deep Reinforcement Learning with Double Q-learning". AAAI.
- ↑ Wang, Z. et al. (2016). "Dueling Network Architectures for Deep Reinforcement Learning". ICML.
- ↑ Bellemare, M. G., Dabney, W. and Munos, R. (2017). "A Distributional Perspective on Reinforcement Learning". ICML.
- ↑ Hessel, M. et al. (2018). "Rainbow: Combining Improvements in Deep Reinforcement Learning". AAAI.