从DQN到Double DQN:分离动作选择与价值评估,解决强化学习中的Q值过估计问题

本文涉及的产品
实时计算 Flink 版,1000CU*H 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时数仓Hologres,5000CU*H 100GB 3个月
简介: 2015年DQN在Atari游戏中突破,但Q值过估计问题浮现。因max操作放大噪声,智能体盲目自信“黄金动作”。根源在于动作选择与价值评估由同一网络完成,导致最大化偏差。

2015年DQN在Atari游戏上取得突破性进展,从此以后强化学习终于能处理复杂环境了,但没多久研究者就注意到一些奇怪的现象:

Q值会莫名其妙地增长到很大,智能体变得异常自信,坚信某些动作价值极高。实际跑起来却发现这些"黄金动作"根本靠不住,部分游戏的表现甚至开始崩盘。

问题出在哪?答案是DQN更新机制里隐藏的最大化偏差(maximization bias),这是个很微妙的统计学陷阱。

DQN的偏差来源

我们先看DQN的目标函数:

这里有个致命问题:用同一套Q值既做动作选择又做价值评估。

当Q值本身带噪声时(神经网络近似必然有噪声),max操作会系统性地挑出那些被高估的值。就像让10个人猜股价,真实价格50块,猜测结果分散在45到55之间,取最大值55肯定会偏高。

设 \hat{Q}(s, a) 是真实值 Q^*(s, a) 的噪声估计,噪声项 ε_a 均值为零。

DQN的目标值:

这个不等式源于序统计量的经典结果——噪声估计的最大值天然向上偏移。

Double Q-learning的核心思路

Double Q-learning给出了解法:把选择和评估分开。

用一个网络选动作而用另一个网络评估这个动作的价值,这样就避免了单个网络自我强化误差的问题。

Double DQN的更新规则

改进后的目标函数:

具体分工是:

  • 在线网络 Q(·; θ) 负责选动作
  • 目标网络 Q(·; θ^-) 负责评估价值
  • 网络结构完全相同,只是在公式里扮演不同角色

整个训练过程如下:

初始化经验池D,在线网络 Q(s, a; θ) 和目标网络 Q(s, a; θ^−)。

每个episode里循环执行:用ε-greedy策略从在线网络选动作,执行后观察奖励r和新状态s′,把这条经验存进池子。然后从池里随机采样一批数据,用DDQN规则算目标值,对下面这个损失做梯度下降:

隔C步同步一次参数:θ^− ← θ。

数值例子说明

1、原始DQN的过估计

假设下个状态的Q值估计:

在线网络/目标网络给出:

  • Q(s′, a_1) = 5.0
  • Q(s′, a_2) = 6.0

而真实价值其实是:

  • Q^∗(s′, a_1) = 5.0
  • Q^∗(s′, a_2) = 5.5

取奖励r = 1,折扣因子γ = 0.9。

DQN计算的目标:

真实应该是:

偏差达到 6.4 − 5.95 = 0.45,智能体认为动作比实际好得多。

2、Double DQN如何修正

同样的场景DDQN分离了选择和评估过程。

第一步,在线网络选出最优动作:

第二步,目标网络评估这个动作的价值:假设目标网络估计 Q(s′, a_2; θ^−) = 5.5。

第三步,计算DDQN目标:

这次结果完全准确,过估计消失了。

总结

这个看似简单的改动带来了明显的提升:Atari游戏分数大幅上涨,智能体不再出现那种"幻觉式"的高估,训练稳定性也改善不少。

强化学习就是这样,一个很小的数学调整可能就能解决大问题。

DQN的过估计源于max操作符偏好噪声中的高值。Double DQN把动作选择(在线网络θ)和价值评估(目标网络θ^−)分开处理,让目标值更接近真实情况,稳定性和性能都得到改善。前面两个数值例子清楚展示了偏差是如何被消除的。

作者:Satyam Mishra

目录
相关文章
|
5天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!
|
16天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1316 5
|
3天前
|
监控 JavaScript Java
基于大模型技术的反欺诈知识问答系统
随着互联网与金融科技发展,网络欺诈频发,构建高效反欺诈平台成为迫切需求。本文基于Java、Vue.js、Spring Boot与MySQL技术,设计实现集欺诈识别、宣传教育、用户互动于一体的反欺诈系统,提升公众防范意识,助力企业合规与用户权益保护。
|
15天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
1371 87
|
3天前
|
JavaScript Java 大数据
基于JavaWeb的销售管理系统设计系统
本系统基于Java、MySQL、Spring Boot与Vue.js技术,构建高效、可扩展的销售管理平台,实现客户、订单、数据可视化等全流程自动化管理,提升企业运营效率与决策能力。
|
4天前
|
弹性计算 安全 数据安全/隐私保护
2025年阿里云域名备案流程(新手图文详细流程)
本文图文详解阿里云账号注册、服务器租赁、域名购买及备案全流程,涵盖企业实名认证、信息模板创建、域名备案提交与管局审核等关键步骤,助您快速完成网站上线前的准备工作。
206 82
2025年阿里云域名备案流程(新手图文详细流程)