2.4 DQN 变体(Rainbow)

news/2025/10/12 20:34:13/文章来源:https://www.cnblogs.com/zzzxx/p/19137203

DQN 变体(Rainbow)


双重 DQN(Double DQN)

在原始 DQN 中,经验回放与目标网络的引入使得 CNN 能够在强化学习中成功训练,但也带来了两个缺点:

  1. 学习速度显著降低,样本复杂度增高;
  2. 稳定性较差,不同运行结果可能不同。

@vanHasselt2015 提出了 Double DQN 以解决 Q 值的过估计(overestimation)问题。

在标准 DQN 中,目标值为:

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

由于 \(\max\) 操作,若某动作被高估,其 Q 值会被进一步放大,并传播至前面的状态。
@vanHasselt2010 证明这种高估在标准 Q-learning 中是必然的。

ddqn-results2

双重学习思想:使用两个网络——一个选择贪婪动作,另一个评估其 Q 值。

应用于 DQN 时,可直接利用已有的两个网络:

  • 训练网络 \(\theta\):用于选择贪婪动作
    \(a^* = \arg\max_{a'} Q_\theta(s', a')\)
  • 目标网络 \(\theta'\):用于评估该动作的 Q 值

目标更新为:

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

这一修改显著提升了性能与稳定性。


优先经验回放(Prioritized Experience Replay)

原始 DQN 的经验回放是均匀采样的,这意味着“无趣”样本与“重要”样本被选中的概率相同,浪费了训练资源。
@Schaul2015 提出优先经验回放(PER):按照 TD 误差大小优先采样。

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

采样概率为:

\[P(k) = \frac{(|\delta_k| + \epsilon)^\alpha}{\sum_k (|\delta_k| + \epsilon)^\alpha} \]

\(\alpha\) 控制采样强度。
这种机制更频繁地使用“出乎意料”的转移样本,从而加速学习。

per_results2


对偶网络(Dueling Network)

在经典 DQN 中,一个网络直接预测所有动作的 Q 值:

\[Q_\theta(s, a) \]

但动作值由两部分组成:

  • 状态本身的价值 \(V^\pi(s)\)
  • 动作相对于该状态的优势(advantage) \(A^\pi(s,a)\)

\[A^\pi(s, a) = Q^\pi(s, a) - V^\pi(s) \]

因此:

\[Q^\pi(s, a) = V^\pi(s) + A^\pi(s, a) \]

这种分解的好处:

  • 在“坏状态”下(\(V(s)\) 低)无需探索每个动作;
  • 优势函数的方差小于 Q 值,更易学习;
  • 网络可更稳定地收敛。

@Wang2016 在 Double DQN + PER 框架中引入对偶结构(Dueling DQN):

\[Q_{\theta, \alpha, \beta}(s,a) = V_{\theta,\beta}(s) + A_{\theta,\alpha}(s,a) \]

为避免歧义(任意常数偏移),对优势进行归一化:

\[Q_{\theta, \alpha, \beta}(s,a) = V_{\theta,\beta}(s) + (A_{\theta,\alpha}(s,a) - \frac{1}{|\mathcal{A}|}\sum_a A_{\theta,\alpha}(s,a)) \]

该结构在多数 Atari 游戏中显著优于 DDQN-PER。

dueling-result


分类 DQN(Categorical DQN / C51)

所有基于 Bellman 方程的 RL 方法都使用期望算子

\[Q^\pi(s,a) = \mathbb{E}[R(s,a)] \]

但这忽略了回报的方差。
@Bellemare2017 提出分布式 DQN(Distributional DQN):学习回报的概率分布而非均值。

distributionallearning

假设回报范围为 \([V_\text{min},V_\text{max}]\),划分为 \(N\) 个离散点(原子)\(z_i\)
网络输出每个原子的概率 \(p_i(s,a)\)(softmax 归一化):

\[p_i(s,a;\theta) = \frac{e^{f_i(s,a;\theta)}}{\sum_j e^{f_j(s,a;\theta)}} \]

则回报分布为:

\[\mathcal{Z}_\theta(s,a) = \sum_i p_i(s,a;\theta)\delta_{z_i} \]

对应的 Q 值即为其期望:

\[Q_\theta(s,a) = \sum_i p_i(s,a;\theta) z_i \]

学习目标是最小化预测分布与 Bellman 更新分布间的 KL 散度:

\[\mathcal{L}(\theta) = D_\text{KL}(\Phi \mathcal{T}\mathcal{Z}_{\theta'}(s,a) \| \mathcal{Z}_\theta(s,a)) \]

distributionallearning3

C51 在多数 Atari 游戏上优于 DQN,既提升性能又降低样本复杂度。


噪声 DQN(Noisy DQN)

传统 DQN 使用 \(\epsilon\)-greedy 或 softmax 探索机制,但这种全局噪声对所有状态一视同仁。
@Fortunato2017 提出在网络参数中注入噪声(参数噪声,Parameter Noise)。

假设参数服从高斯分布:

\[\theta \sim \mathcal{N}(\mu_\theta, \sigma_\theta^2) \]

在每次前向传播时采样:

\[\theta = \mu_\theta + \sigma_\theta \epsilon, \quad \epsilon \sim \mathcal{N}(0,1) \]

未访问状态的不确定性(\(\sigma_\theta\) 大)→ 更多探索;
已掌握状态的不确定性小 → 稳定利用。

ddpg-parameternoise

Noisy DQN 实现了自适应探索,无需额外调度,显著提升性能。

noisydqn2


彩虹 DQN(Rainbow DQN)

DQN 经过多年发展,形成了多种增强版本:

改进方法 关键思想
Double DQN [@vanHasselt2015] 分离动作选择与评估,避免 Q 值过估计
PER [@Schaul2015] 按 TD 误差加权采样经验
Dueling DQN [@Wang2016] 拆分状态值与优势值学习
Categorical DQN [@Bellemare2017] 学习回报分布而非均值
n-step Returns [@Sutton2017] 融合未来 \(n\) 步回报以降低偏差
Noisy DQN [@Fortunato2017] 参数层面噪声,实现自适应探索

@Hessel2017 将上述方法整合成统一架构——Rainbow DQN
其综合性能超过任一单独变体。

rainbow


深度循环 Q-learning(DRQN)

Atari 游戏是部分可观测 MDP(POMDP):单帧缺乏速度等信息。
DQN 通过堆叠最近4帧缓解此问题,但仍存在局限:

  1. 存储消耗大;
  2. 无法捕捉长期依赖;
  3. 在需规划的任务(如 Montezuma’s Revenge)上表现差。

drqn-architecture2

@Hausknecht2015 将 DQN 中的一层全连接层替换为 LSTM 层,输入为单帧,形成 DRQN
LSTM 学习保留关键历史信息,从而更好地处理部分可观测任务。

但 LSTM 仍受限于截断反向传播(Truncated BPTT),无法学习超出截断长度的依赖,并显著增加训练时间。
尽管如此,DRQN 提供了一种更优雅的解决方案,让网络自行决定长期依赖的时间跨度。

drqn4

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/935668.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux存储媒介devmount

Linux 存储媒介dev mount 挂载和卸载存储设备 管理存储设备的第一步是把设备连接到文件系统树中。这个叫做”挂载” 有一个叫做/etc/fstab 的文件可以列出系统启动时要挂载的设备。大多数文件系统是虚拟的,还有实际存…

单片机--概述 - 指南

单片机--概述 - 指南2025-10-12 20:18 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-f…

Emacs折腾日记(三十二)——org mode的基本美化

在上一篇,已经介绍了org mode的基础知识,它与markdown非常相似,并且也十分容易上手,但是它的可扩展性比markdown要强很多。如果将来打算重度使用org mode,那么此时可以对它进行一些基本的配置和美化 基本配置 org…

pp

ppimport numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns from sklearn.model_selection import train_test_split, KFold, cross_val_score from sklearn.linear_model imp…

2025 工业风机十大品牌全景解析报告:覆盖离心风机,防爆风机,矿用风机的最新推荐

本报告基于 2025 年行业权威数据,结合中国玻璃钢协会、美国国际空气运动及控制协会(AMCA)等机构的测评结果,从技术创新、性能表现、市场布局三大维度,对工业风机十大品牌进行全景解析,为企业选购适配冶金、石化、…

详细介绍:P3.7计算机视觉

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

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

深度 Q 网络(Deep Q-Network, DQN)深度神经网络在函数逼近中的局限性 值函数型深度强化学习的目标是使用深度神经网络(DNN)逼近每个状态–动作对的 Q 值。 网络可以有两种形式(见下图):以状态–动作对 \((s,a)\…

Linux系统目录(文件)结构

Linux系统目录(文件)结构下方表格转载自: http://billie66.github.io/TLCL/book/chap04.html/ 根目录,万物起源。/bin 包含系统启动和运行所必须的二进制程序。/boot 包含 Linux 内核、初始 RAM 磁盘映像(用于启动…

实用指南:如何读懂Mach-O:构建macOS和iOS应用安全的第一道认知防线

实用指南:如何读懂Mach-O:构建macOS和iOS应用安全的第一道认知防线pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: &qu…

vim配置使用

vim配置使用 大多数 Linux 发行版不包含真正的 vi;而是自带一款高级替代版本,叫做 vim。通常,vim 在 Linux 系统中是“vi”的符号链接(或别名)。是一个模式编辑器。(插入模式,命令模式) 配置 全局配置一般在/e…

shell高级

shell高级 组命令和子 shell bash 允许把命令组合在一起。可以通过两种方式完成;要么用一个 group 命令,要么用一个子 shell。 组命令: { command1; command2; [command3; ...] }子 shell: (command1; command2; […

shell流程控制

shell流程控制 if if commands; thencommands [elif commands; thencommands...] [elsecommands] ficommands可以是test表达式[ expression ] [expression]表达式(不推荐) 测试文件表达式表达式 如果下列条件为真则返…

shell展开shell数组

shell展开&shell数组 参数展开 大多数的参数展开会用在脚本中,而不是命令行中。 基本参数 The simplest form of parameter expansion is reflected in the ordinary use of variables. 最简单的参数展开形式反映…

shell排错

shell排错 常见语法错误 =当做== #!/bin/bash number=1 if [ $number = 1 ]; thenecho "Number is equal to 1." elseecho "Number is not equal to 1." fiecho字符表达式丢失引号 #!/bin/bash nu…

原木

短线大概率有个C5

格式化输出与文本处理

格式化输出与文本处理以下和vim都是程序,但是以下所讲述的都是命令行工具,vim是一个编辑器,是有本质区别的文本应用程序 到目前为止,我们已经知道了一对文本编辑器(nano 和 vim),看过一堆配置文件,并且目睹了许…

2025年10月镀锌卷板厂家最新推荐排行榜,有花镀锌卷板,无花镀锌卷板,高锌层镀锌卷板,批发镀锌卷板公司推荐

在工业制造与建筑建材领域,镀锌卷板作为基础防腐材料,其品质直接影响终端产品的使用寿命与安全性能。当前市场上,镀锌卷板厂家数量众多,产品质量参差不齐:部分厂商存在锌层厚度不达标、加工时锌层易脱落等问题,导…

React 19.2 重磅更新!这几个新特性终于来了

大家好,我是 Immerse,一名独立开发者、内容创作者、AGI 实践者。 关注公众号:沉浸式趣谈,获取最新文章(更多内容只在公众号更新) 个人网站:https://yaolifeng.com 也同步更新。 转载请在文章开头注明出处和版权…

Akka.NET高性能分布式Actor框架完全指南

Akka.NET是.NET平台上功能完整的Actor模型实现,提供高性能的分布式计算能力。该项目包含完整的Actor系统、集群管理、持久化、流处理等核心功能,支持构建高并发、高可用的分布式应用程序。Akka.NET - .NET平台的Acto…

基于Docker搭建MySQL Cluster

1.整体介绍 1.1整体结构1.2搭建步骤搭建3个MySQL实例. 将3个MySQL实例组建集群. 搭建MySQL Router.2.搭建MySQL 2.1 MySQL配置文件及数据文件目录结构 /data └── mysql├── 3301 #存放数据目录├── 3302├── …