深度强化学习

news/2025/1/11 17:37:56/文章来源:https://www.cnblogs.com/zcry/p/18665921

深度强化学习

表格来存储每一个状态state和Q值显然是不现实的,除了存储开销,搜索开销也非常巨大。深度强化学习(Deep Q Network)是强化学习与深度学习的结合,利用神经网络作为函数逼近器来解决高维或复杂状态空间下的强化学习问题。

其关键特征就是使用深度神经网络(DNN)代替表格化的值函数或策略。我们可以将状态和动作当成神经网络的输入,然后经过神经网络分析后得到动作的 Q 值,这样我们就没必要在表格中记录 Q 值,而是直接使用神经网络生成 Q 值。

image.png

参数的更新与强化学习里值函数近似相同,θ = θ + α * (VΠ(x) - Vθ(x)) * x ,梯度下降法,学习率乘以最小二乘误差的负导数。

DQN 2015(详见参考资料二)

这篇论文解决的是2D游戏场景下的决策问题,实现了端到端的模型,直接对游戏画面进行评估,输出Q值。这项工作弥合了高维感官输入和动作之间的鸿沟,从而产生了第一个能够学习在各种具有挑战性的任务中表现出色的人工代理。模型结构包括三层卷积层+两层全连接层,卷积层提取图片特征,全连接层作为动作-状态值函数计算每个动作的Q值。

image.png

算法详解

可以看到和Q-learning算法的思路是一致的,在当前状态下使用ε-贪心策略选择动作,使用下一个状态的状态-动作值函数的最大值更新当前状态的动作-状态值函数,然后再重复以上过程。

image.png

虽然叫QDN,但是这篇论文严格意义上只有MLP与NN有关的,前面的CNN只是对图像进行处理,换一个任务,输入不是图像,那么前面的三层CNN网络也就没有什么意义了。这篇工作不同于强化学习里的值函数近似,在于提出了经验回放Target Q-network。

克服非线性函数逼近的不稳定问题

  • 引入了两种核心技术:
    • 经验回放(Experience Replay):通过随机抽取回放记忆数据打破样本之间的相关性。
    • 目标网络(Target Network):使用延迟更新的目标网络来稳定目标值的计算,减少学习过程中的震荡和发散。

这里不再深究其设计的原理。

模型更新过程

分别有两个网络,一个是当前网络的参数θ,一个是目标网络的参数θ-,我们的目标是使当前网络无限接近于最优Q函数。

从缓冲区拿到批量(s, a, r, s'),将s'作为输入给目标网络θ-得到s'Q值,找到最大的Q(s', a')值计算目标值y

s作为当前网络θ的输入得到Q值,找出其中的Q(S, a),计算Loss,对梯度进行更新。

PS:这里一个很有趣的地方就是,正常理解的最小二乘损失是对网络所有的输出计算欧氏距离,即MLP网络输出了所有动作的Q值,但是这里只会计算Q(S, a)和y的最小二乘损失,用于梯度更新。而梯度更新的参数也不会是网络的全部参数,只会是参与了Q(s, a) 判断的参数。

深度强化学习参考资料

  • 什么是 DQN | 莫烦Python
  • 论文理解【RL经典】 —— 【DQN】Human-level control through deep reinforcement learning-CSDN博客

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

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

相关文章

接上文,卸载ib网卡、显卡驱动、coda

嗨嗨嗨 亲们!!小橘又来啦,今天分享的干货是卸载 ib 网卡、显卡驱动、coda,昨天咱们学习了安装,有啥不明白的欢迎留言,我会知无不答。言归正传,当宝子们需要升级ib网卡、显卡驱动、coda时,先把旧版本的卸载后再安装新版本!

Windows下Dll在Unity中使用的一般方式

Unity中虽然已经有广泛的库和插件,但是相较于C++的库生态而言,还是有一定的差距;因此本篇博文记录Windows下将C++函数打包成动态链接库在Unity中使用的一般方法。Windows下Dll在Unity中使用的一般方式 Unity中虽然已经有广泛的库和插件,但是相较于C++的库生态而言,还是有一…

C# WinForm 托盘程序

添加控件 将NotifyIcon和一个ContextMenuStrip控件。拖到主窗体中本文来自博客园,作者:VipSoft 转载请注明原文链接:https://www.cnblogs.com/vipsoft/p/18665897

中考英语优秀范文-热点话题-传统文化-002 Spreading Traditional Chinese Culture 传播中国传统文化

1 写作要求 近日,在公共场所,人们身着汉服拍照,演奏古筝、二胡等传统乐器;校园里,学生吟诵古典诗词,写毛笔字……处处彰显着中国传统文化的魅力。你校英文报正在组织题为Spreading Traditional Chinese Culture 的征文活动,请你选择下表中的一种传统文化的形式,写一篇短…

Rider 报错 Error MSB4216 : 无法运行“GenerateResource”任务

Rider 打开设计器界面报错: rider Error MSB4216 : 无法运行“GenerateResource”任务,..... 打开设置,搜索 ms build另选一个版本试下发现可以了。

在 Rider 中使用 C# 创建 Windows 窗体应用 Winforms

1,创建项目 new solution 创建一个解决方案2,打开设计器 在 Form1.cs 上右键打开设计器认识一下 Rider 的界面参考微软官方的例子,添加如下属性:注:这里 Listbox 的大小设置成 120, 94 失败,默认的是 120, 89。可以将 DrawMode 改为 OwnerDrawVariable,就可以更改大小,…

BurpSuite实操之对比器功能使用

通常是通过一些相关的请求和响应得到两项数据的一个可视化“差异“,此功能主要用于执人行任意两个请求,响应或任何其他形式的数据之间的比较。使用的场合有:枚举用户名的过程,对比分析登录和失败时,服务器端返回结果的区别 使用Intruder进行攻击时,对于不同的服务器端响应…

Jmeter 的常用基础配置,看这一篇就够了 ~

在使用Jmeter工具时,因为一些默认的背景颜色、字体图标大小等,导致操作并不是非常便利,因此需要掌握一些必要的基础配置。📝 博主首页 : 「码上生花」 ,同名公众号 :「伤心的辣条」📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库…

SQL Server性能优化(3)使用SQL Server Profiler查询性能瓶颈

关于SQL Server Profiler的使用,网上已经有很多教程,比如这一篇文章:SQL Server Profiler:使用方法和指标说明。微软官方文档:https://msdn.microsoft.com/zh-cn/library/ms179428(v=sql.105).aspx有更详细的介绍。 经过使用Profiler进行监视,得到监视结果。============…

SQL Server性能优化(2)获取基本信息

以下常用的SQL语句有利于我们分析数据库的基本信息,然后根据查询的结果进行优化。 1. 查看索引碎片无论何时对基础数据执行插入、更新或删除操作,SQL Server 数据库引擎都会自动维护索引。随着时间的推移,这些修改可能会导致索引中的信息分散在数据库中(含有碎片)。当索引…

【floorplan_mesh_project】运行Distributed package doesnt have NCCL built in处理

Distributed package doesnt have NCCL built in报错:修改E:\develop\anaconda3\envs\meshgpt\lib\site-packages\torch\distributed\distributed_c10d.py init_process_group,手动设置后端为gloo(第1116行)

[P3899 [湖南集训] 更为厉害]

P3899 [湖南集训] 更为厉害 [湖南集训] 更为厉害 题目描述 设 \(\text T\) 为一棵有根树,我们做如下的定义:设 \(a\) 和 \(b\) 为 \(\text T\) 中的两个不同节点。如果 \(a\) 是 \(b\) 的祖先,那么称“\(a\) 比 \(b\) 更为厉害”。 设 \(a\) 和 \(b\) 为 \(\text T\) 中的两…