当前位置: 首页 > news >正文

2.3 深度 Q 网络(Deep Q-Network, DQN)

深度 Q 网络(Deep Q-Network, DQN)


深度神经网络在函数逼近中的局限性

值函数型深度强化学习的目标是使用深度神经网络(DNN)逼近每个状态–动作对的 Q 值。
网络可以有两种形式(见下图):

  • 以状态–动作对 \((s,a)\) 为输入,输出对应的单个 Q 值;
  • 以状态 \(s\) 为输入,输出所有可能动作的 Q 值(仅适用于离散动作空间)。

functionapprox

在 Q-learning 中,我们要最小化以下均方误差(MSE)损失函数:

\[\mathcal{L}(\theta) = \mathbb{E}_{(s,a,r,s')}[(r(s,a,s') + \gamma \max_{a'} Q_\theta(s',a') - Q_\theta(s,a))^2] \]

目标是减少预测误差,即 \(Q_\theta(s,a)\) 与真实回报(此处以 \(r(s,a,s') + \gamma \max_{a'} Q_\theta(s',a')\) 近似)之间的差距。

valuebased-agent

在实践中,我们收集若干样本 \((s,a,r,s')\)(即单步转移),打乱组成小批量(minibatch),并通过反向传播和 SGD 更新神经网络,从而间接改进策略。


相关输入问题(Correlated Inputs)

在与环境的在线交互中,连续采样的转移是高度相关的:
\((s_t,a_t,r_{t+1},s_{t+1})\) 紧跟 \((s_{t+1},a_{t+1},r_{t+2},s_{t+2})\)
在电子游戏中,相邻帧几乎相同(仅少数像素变化),最优动作也往往连续相同。

breakout

深度网络对相关输入非常敏感:
若批量样本缺乏独立性(非 i.i.d.),SGD 将难以优化,模型易陷入局部最小值。
因此我们需要“打乱”样本,确保训练批次中的样本尽可能独立。


非平稳目标问题(Non-stationary Targets)

在传统的监督学习中,目标值 \(\mathbf{t}\) 是固定的;但在 Q-learning 中,目标值:

\[t = r(s,a,s') + \gamma \max_{a'} Q_\theta(s',a') \]

会随着训练不断变化,因为 \(Q_\theta(s',a')\) 自身在更新。
这导致训练目标是非平稳(non-stationary)的,模型容易出现不稳定或震荡收敛。


深度 Q 网络(DQN)

@Mnih2015(最早发表于 @Mnih2013)提出了两个关键改进,成功解决了上述问题,奠定了深度强化学习的基础。


经验回放机制(Experience Replay Memory)

为解决输入相关性问题,DQN 使用一个大型缓存区——经验回放池(Replay Buffer, ERM)
智能体与环境交互产生的转移 \((s,a,r,s')\) 被存储到 ERM 中,
每次训练时从中随机采样小批量样本用于更新。

ERM

损失函数定义为:

\[\mathcal{L}(\theta) = \frac{1}{K} \sum_{k=1}^K (r_k + \gamma \max_{a'} Q_\theta(s'_k, a') - Q_\theta(s_k, a_k))^2 \]

这些样本虽然独立,但并非同分布,因为它们来自不同策略。
然而 Q-learning 是异策略(off-policy)方法,因此不受此影响。

只有异策略算法才能与经验回放机制结合使用。


目标网络(Target Network)

为解决目标非平稳问题,DQN 引入了第二个神经网络——目标网络(Target Network)
目标网络参数 \(\theta'\) 与主网络参数 \(\theta\) 相同,但更新频率较低。

损失函数改写为:

\[\mathcal{L}(\theta) = \frac{1}{K} \sum_{k=1}^K (r_k + \gamma \max_{a'} Q_{\theta'}(s'_k,a') - Q_\theta(s_k,a_k))^2 \]

目标网络定期(如每 10000 步)从主网络复制参数:

\[\theta' \leftarrow \theta \]

这样目标值在较长时间内保持稳定,训练更加平稳。

targetnetwork


DQN 算法流程

DQN 核心算法:

  1. 初始化主网络 \(Q_\theta\)
  2. 复制参数得到目标网络 \(Q_{\theta'}\)
  3. 初始化经验回放池 \(\mathcal{D}\)
  4. 观察初始状态 \(s_0\)
  5. 对每个时间步 \(t=1...T\)
    • 按策略(如 \(\epsilon\)-greedy)选择动作 \(a_t\)
    • 执行动作,得到 \(r_{t+1}, s_{t+1}\)
    • 将转移 \((s_t,a_t,r_{t+1},s_{t+1})\) 存入 \(\mathcal{D}\)
    • 每隔 \(T_\text{train}\) 步:
      • \(\mathcal{D}\) 随机采样小批量;
      • 计算目标值 \(t = r + \gamma \max_{a'} Q_{\theta'}(s',a')\)
      • 最小化损失 \(\mathcal{L}(\theta) = \mathbb{E}[(t - Q_\theta(s,a))^2]\)
    • 每隔 \(T_\text{target}\) 步:
      • 更新目标网络:\(\theta' \leftarrow \theta\)

targetnetwork

在实践中,更新目标网络的方式也可采用软更新(soft update)

\[\theta' = \tau \theta + (1 - \tau) \theta' \]

其中 \(\tau \in [0,1]\) 较小,使目标网络缓慢追踪主网络的参数。


DQN 的特点与局限

DQN 的两个特性使其学习速度较慢:

  1. 经验回放导致样本被延迟使用;
  2. 目标网络更新缓慢。

因此 DQN 的样本复杂度(sample complexity)很高——往往需要数百万次交互才能收敛。


DQN 在 Atari 游戏中的应用

DQN 最初被用于解决 Atari 2600 游戏问题。
输入为视频帧,动作空间为有限离散集合(上/下/左/右/射击等)。

dqn

网络结构包括:

  • 两个卷积层(无池化层);
  • 两个全连接层;
  • 输出层对应各个动作的 Q 值。

为克服部分可观测性问题(单帧不满足马尔可夫性),DQN 将最近4帧图像拼接为输入,使网络能学习出速度信息。
DQN 在部分游戏(如 Breakout、Pinball)上达到超人水平,但在需要长远规划的任务(如 Montezuma’s Revenge)上表现仍差。


为什么不使用池化层?

在图像分类中,池化层用于实现空间不变性(无论物体在图像何处都可识别)。
但在强化学习中,空间信息非常重要
例如球的位置对决策至关重要,因此 DQN 不使用池化层,以保留精确位置信息。
缺点是参数量更大,对显存和样本需求更高。


总结

DQN 能在高维状态空间中,通过稀疏和延迟的奖励信号学习到有效策略。
它在 49 款 Atari 游戏上使用同一套网络结构与超参数实现了稳定表现,展示了深度强化学习的通用性与潜力。

atari-results

http://www.hskmm.com/?act=detail&tid=29558

相关文章:

  • Linux存储媒介devmount
  • Linux系统目录(文件)结构
  • 实用指南:如何读懂Mach-O:构建macOS和iOS应用安全的第一道认知防线
  • vim配置使用
  • shell高级
  • shell流程控制
  • shell展开shell数组
  • shell排错
  • 原木
  • 格式化输出与文本处理
  • 2025年10月镀锌卷板厂家最新推荐排行榜,有花镀锌卷板,无花镀锌卷板,高锌层镀锌卷板,批发镀锌卷板公司推荐
  • React 19.2 重磅更新!这几个新特性终于来了
  • Akka.NET高性能分布式Actor框架完全指南
  • 基于Docker搭建MySQL Cluster
  • 2025 年抗氧剂厂家最新推荐排行榜,聚酯防黄变抗氧剂,透明膜防晶点抗氧剂,PC聚碳防黄变抗氧剂公司推荐!
  • PaddleX服务化部署精度低于命令行调用的原因及解决方案 - 指南
  • 某中心与华盛顿大学公布机器人研究奖项与学者名单
  • 会话跟踪方案
  • 阻塞、非阻塞、同步、异步的区别是什么?
  • 如何防范员工泄露数据给 AI?2025年选型与落地实战版
  • Linux文本编辑三剑客之grep
  • Linux文本编辑三剑客之sed
  • 做了项目经理才发现:上台发言,其实都有套路
  • 占位符
  • 什么是IO多路复用?
  • 进程、线程和协程之间的区别和联系
  • 挣点小钱的副业(附带新手教程)0元的快乐
  • Linux文本编辑三剑客之awk
  • 软考~高效的系统规划与管理师考试—知识篇—V2.0—第四章 IT 服务规划设计 — 2017 年 2018 年 2020 年 2022 年 2023 年
  • 10.12