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

【深度学习】深度学习和强化学习算法——深度 Q 网络DQN

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

  • 什么是DQN
    • DQN 的背景
    • DQN 训练流程
  • 2 DQN 的核心思想
    • 2.1 经验回放(Experience Replay)
    • 2.2 目标网络(Target Network)
    • 2.3 ε-贪心策略(ε-Greedy Policy)
    • 2.4 误差裁剪(Clipping the Loss)
  • 总结
  • 参考

深度 Q 网络(DQN)是一种结合 深度学习 和 强化学习 的算法,主要用于解决高维状态空间的强化学习问题。DQN 由 Google DeepMind 在 2015 年提出,并成功应用于 Atari 游戏,使 AI 能够超越人类玩家。

什么是DQN

Q-learning是一种经典的强化学习算法,而DQN(Deep Q-Network),即深度Q网络,是一种基于深度学习的Q-Learing算法和强化学习算法,它是首个成功将深度学习应用于解决强化学习任务的算法之一。
在这里插入图片描述

DQN基于值迭代(Value Iteration)的思想,通过估计每个状态动作对的价值函数Q值来指导智能体在每个状态下选择最佳的动作。简单来说,就是通过深度学习训练,得到一个函数Q(s,a)可以根据输入状态s,得到最佳动作a。
在这里插入图片描述

DQN 的背景

在 Q-learning 传统强化学习算法中,我们使用 Q 表(Q-table) 存储每个状态-动作对的 Q 值。然而,当状态空间变得巨大甚至是连续的时,Q 表的方法变得不可行,因为:

  • 状态数量过多,导致 Q 表存储需求爆炸。
  • 许多状态可能没有被访问过,导致学习效率低。

为了解决 高维状态空间 问题,DQN 使用 深度神经网络(Deep Neural Network, DNN) 来逼近 Q 值函数。这使得 DQN 能够处理复杂的环境,如图像输入(Atari 游戏)或高维控制任务。

DQN 训练流程

在这里插入图片描述

2 DQN 的核心思想

DQN 主要基于 Q-learning,但引入了深度神经网络来逼近 Q 值函数 Q(s,a),并使用了以下关键技术:

  • 经验回放(Experience Replay)
  • 目标网络(Target Network)
  • ε-贪心策略(ε-Greedy Policy)
  • 误差裁剪(Clipping the Loss)

2.1 经验回放(Experience Replay)

在标准 Q-learning 中,每次状态转移后立即更新 Q 值,这可能导致:

  • 数据相关性高(连续状态高度相关),影响神经网络训练。
  • 训练数据利用率低。

在这里插入图片描述

DQN 通过引入 经验回放缓冲区(Replay Memory) 来存储过去的经验 (s,a,r,s′ ),并在训练时 随机采样 进行学习,从而:

  • 去相关性(Decorrelation),避免连续样本影响学习。
  • 提高数据利用率,减少样本浪费。

经验回放示意图:
1、代理与环境交互,生成经验 (s,a,r,s′ )。
2、将经验存入回放缓冲区(FIFO 队列)。
3、随机采样一批经验训练神经网络。

2.2 目标网络(Target Network)

在这里插入图片描述

2.3 ε-贪心策略(ε-Greedy Policy)

为了平衡 探索(Exploration) 和 利用(Exploitation),DQN 使用 ε-贪心策略:

  • 以概率 ϵ 选择随机动作(探索)
  • 以概率 1−ϵ 选择 Q 值最大的动作(利用)
  • ε 会随着训练逐渐减少,初始探索较多,后期更倾向于利用已有经验。

2.4 误差裁剪(Clipping the Loss)

在这里插入图片描述
这样可以减少异常值对梯度的影响,提高训练稳定性。

总结

DQN 通过使用 深度神经网络 逼近 Q 值,解决了高维状态空间问题,并通过 经验回放 和 目标网络 提高训练稳定性。它是强化学习领域的里程碑,为后续如 Double DQN, Dueling DQN, Rainbow DQN 等方法奠定了基础。

参考

http://www.dtcms.com/a/20676.html

相关文章:

  • 【SQL SERVER】sqlserver 该表字段如果被用作其他表的外键不能被truncate table
  • 掌握xtquant实时行情订阅:量化交易的关键一步
  • 强化学习笔记7——DDPG到TD3
  • 速度与激情:4.5吨轻卡阻力与刹车力模型的终极拆解——从仿真台架到真实路况的硬核对话
  • 2025年2月16日(numpy-deepseek)
  • 【云原生】SpringCloud-Spring Boot Starter使用测试
  • Spring源码分析のBean创建流程(上)
  • OpenCV简介
  • 用命令模式设计一个JSBridge用于JavaScript与Android交互通信
  • Python —— format函数的使用
  • Copilot in OneNote(WebTeams)功能提升效率加倍
  • open3d绘制平面
  • kamailio的伪变量
  • 2.2 反向传播:神经网络如何“学习“?
  • 从Vec3实现复习运算符重载
  • Deepseek R1模型本地化部署与API实战指南:释放企业级AI生产力
  • 如何在 Vue 3 中使用 Vue Router 和 Vuex
  • 联想小新 510S-14IKB (80UX) 原厂Win10系统oem镜像下载
  • Hive查询之排序
  • 面试题整理:操作系统
  • Python 用户输入和While循环(使用while 循环来处理列表和字典)
  • PerfMonitor高效处理器性能监控与分析利器
  • [实现Rpc] 客户端划分 | 框架设计 | common类的实现
  • React AJAX:深入理解与高效实践
  • Java 数据类型
  • pptx2md - 将PPT文件转换成Markdown
  • 从零搭建微服务项目(第7章——微服务网关模块基础实现)
  • 如何解决DeepSeek服务器繁忙的问题?
  • JUC并发-4.wait和notify以及Atomic原理
  • 【JavaWeb学习Day16】