(202401)深度强化学习基础与实践1:马尔科夫过程、DNQ算法回顾

文章目录

  • 序言
  • 马尔科夫决策过程
    • 含义
    • 性质
    • 回报
    • 状态转移矩阵
  • DQN算法
    • 深度网络
    • 经验回放
    • 目标网络
    • 实战DQN算法
  • DQN 算法进阶
    • Double DQN
    • Dueling DQN
    • Noisy DQN
    • PER DQN
    • C51 算法

序言

本文章记录Datawhale开源学习组织2024年第一期学习,《深度强化学习基础与实践》第二期的任务一。这项课程是有第一期的,但是由于那段时间本人学校课程比较多,同时又有一摊子的事情需要去完成,因此没有参与,本月直接参与第二次,任务一实际上也就是对于第一期任务的复习和缓冲。
课程开源地址如下:(https://github.com/datawhalechina/joyrl-book)
任务一的内容是:第二章、第七章、第八章,也就是第一期任务中的核心部分。
对于我这种第一期没有参加的来说任务还挺重的哈,其余几章不在要求中,但是还是过一遍比较合适。

马尔科夫决策过程

含义

马尔科夫决策过程是强化学习中基本的表达方式,将机器决策的过程用数学的方式表达出来,从而使得可能对其参数进行优化。
也就是针对状态作出动作,动作改变状态,依据状态的改变给出reward。

性质

而马尔科夫决策过程的前提是满足马尔科夫决策性质:环境下一步的状态只与当前的采取的动作有关而与历史动作无关。这在大多数实际情况中都是不成立的。因此在必要的情况下可以使用其他的方法来辅助马尔科夫决策过程。

回报

经过上面的描述之后自然而然的,前面提到的给出reward就是判断任务完成好坏的指标。暂且不提如何根据任务的完成情况来给出reward,我们的最终目标显然是将回报总值最大化。
但是在实际情况中,除了一些能够在有限步骤中完成的任务外,还有很多无法完成的任务,这时如果考虑总的奖励量就是有问题。给出了一个折扣因子 γ \gamma γ来应对这种情况。
G t = r t + 1 + γ r t + 2 + γ 2 r t + 3 + . . . = r t + 1 + γ G t + 1 G_t = r_{t+1}+\gamma r_{t+2}+\gamma^2 r_{t+3}+...=r_{t+1}+\gamma G_{t+1} Gt=rt+1+γrt+2+γ2rt+3+...=rt+1+γGt+1
γ \gamma γ为0时,只关注当前奖励;当 γ \gamma γ为1时,同等关注未来全部奖励;当 γ \gamma γ为0到1之间时,体现了在未来奖励和当前奖励之间权衡。

状态转移矩阵

状态或者说环境会发生变换,并且这些变化不是由于智能体的行为导致的,描述这个的特点的矩阵就是状态转移矩阵,状态转移矩阵是环境的一部分。矩阵的每个元素表示当前状态在下一“步”转变成另一状态的概率,因此很显然,状态转移矩阵的行和列之和都是1.

DQN算法

啊哈哈哈,我还是跳了,中间跳过的章节有:动态规划、免模型预测、免模型控制、深度学习基础。

DQN算法的主要贡献就是在Q-learning算法的基础上引入了深度神经网络来近似动作价值函数Q(s,a),从而能够处理高维的状态空间。

深度网络

该节主要阐述DQN对于Q表来近似动作价值函数的优势。神经网络只是用了两个维度的输入就表示了原来Q表中的无穷多个状态。参数的求解也使用深度学习中常用的梯度下降的方式来求解。

经验回放

由于强化学习的每次迭代的样本都是从环境中实时交互获得的,因此样本是关联的,并不满足独立同分布的要求;并且是但个传入的,这样迭代网络参数容易导致训练的不稳定。

采用小批量梯度下降类似的方式可以有效解决这种问题。如果将之前获得的样本都存起来,然后每次得到新数据时从之前的样本中随机抽取一部分与当前样本一起传入就可以近似独立同分布。

不过经验回放的容量应当是有限的,不是由于成本导致的,而是因为在训练初期的样本数据质量相对于后面是不好的,所以应当从更新的样本中抽取样本进行训练。

目标网络

目标网络就是每个一定步骤再更新其参数(从当前网络中复制),这样做的好处是保证训练的稳定,避免Q值的估计发散。

实战DQN算法

作者在这里提醒读者应该养成先写伪代码再变成的习惯,有助于提高对算法的理解。
先去实战一下再继续学习第八章(但是可能要先装环境)
作者专门提醒不能使用镜像源安装joyrl哦,所以安装时间挺久的,继续往下学了先。

诶呀,连接超时了,依赖包还是就镜像源装吧,指定个版本。

DQN 算法进阶

介绍基于DQN改进的一些算法。改进角度各有不同,但是本质上都是通过提高预测精度和控制过程中的探索独来改善DQN算法的性能,这些算法用到的技巧也都是比较通用的,说要是学得好可以根据需求灵活组合。

Double DQN

前面提到过,跟上面所说的目标网络有相似的地方。但这个算法的是将动作选择和动作评估分开。一个网络给出使得Q最大的动作,然后将这个动作带入到目标网络计算Q值。

不过在实际中效果和复制网络参数到目标网络的方式(Nature DQN)效果差不多,所以一般就用后者。

Dueling DQN

与Double DQN不同,这个算法是通过优化神经网络的结构而不是改进目标Q值的计算来优化算法的。dueling这个词语的意思就是分流。原本的网络结构是输入层、隐藏层、输出层;现在的结构是从隐藏层分流出了价值层(用于估计每个状态的价值)和优势层(用于估计每个动作带来的优势)。

看不明白,说与这个Actor-Critic算法是类似的,在后面具体展开。

这个算法分开评估每个状态的价值以及采取某个动作的Q值。

有助于降低方差并提高学习鲁棒性。

Noisy DQN

也是优化网络结构来提升算法的性能的。但是并不是为了提高Q值的估计,而是为了增强网络的探索能力。

这是通过添加噪声层来实现的。可以认为强化学习炼丹比深度学习炼丹更加容易过拟合或者说陷入局部最优解的困境中。将随机性应用到神经网络中的擦桉树或者说权重,增强了Q网络对于状态和动作空间的探索能力,从而提高收敛速度和稳定性。

PER DQN

这是一种进一步优化了梯度下降方式的算法,也可以翻译为“优先经验回放DQN”算法。

采样时对于经验回放中的样本赋予不同优先级,使用TD误差来判断,因为TD误差越大,损失函数的值也就越大,那么对于法相传播的作用也就越大。

但是这种方式会导致原本和被选中的样本TD误差相差不大的样本不能够被选择上:选择那个TD误差更大的样本之后,该样本的误差就会随之减小,但是并不能够确定这个样本没有重要信息。所以引入了“随即优先级采样”和“重要性采样”(重要性采样是以后总用于估计某一分布性质的方法,它的基本思想是,我们可以通过与带古迹分布不同的另一个分布中采样,然后通过采样样本的权重来估计待估计分布的性质)的技巧。

C51 算法

分布式DQN算法,Distributed DQN。和PER一样也是可以将这种改进算法的方法用到其他强化学习算法中的方法。

该算法的核心思想是将Q值换成了Q值的分布,从而能够更好地处理值函数估计不准确以及离散动作空间的问题。

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

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

相关文章

金属由液体凝固成液体,由于液体凝固为固体时,体积会缩小,导致金属铸造不可避免出现缩孔现象吗?

问题描述:金属由液体凝固成液体,由于液体凝固为固体时,体积会缩小,导致金属铸造不可避免出现缩孔现象吗? 问题解答: 在金属铸造过程中,确实存在由于液态金属凝固成为固态时体积收缩而导致缩孔…

mysql Linux系统云服务器配置远程访问

mysql Linux系统云服务器配置远程访问 1.安装mysql 服务器 2.配置远程登录用户权限 3.进行远程登录,并访问数据库 1.安装mysql 服务器 首先先安装一下云服务器 sudo apt-get install mysql-server安装好之后,我们直接以root用户登录: …

java set集合和list集合的区别

Java 中的 Set 集合和 List 集合都是用于存储一组元素的容器,但它们之间存在一些重要的区别。 元素唯一性:Set 集合中的元素是唯一的,不允许重复。而 List 集合中的元素可以重复。元素顺序:List 集合中的元素保持了它们被添加的顺…

大学生应该优先学技术还是准备考研

最近看到过不少人问这个问题,说实话哪一个优先级更高其实是要根据不同行业具体分析的,例如医药或者师范这类文凭跟工资直接挂钩的行业自然是考研优先级要高一些,但是CSDN这边的用户应该是计算机之类的技术专业较多,一般这种工作更…

EXEC sp_addlinkedserver 指定服务器ip

要使用 sp_addlinkedserver 存储过程在 SQL Server 中指定服务器 IP 地址,你可以在 datasrc 参数中提供服务器 IP 地址。以下是一个示例: EXEC sp_addlinkedserver server LinkToServer2, provider SQLNCLI, datasrc 192.168.0.1, -- 这里是目标服务器…

Vim一键配置指南,打造高效率C++开发环境

文章目录 前言安装与卸载功能演示gcc/g升级问题 前言 Vim作为当下最受欢迎的文本编译器之一,不仅具有强大的文本编辑功能,还提供了高度的可定制性。用户可以根据自己的喜好自定义配置,并且通过自己编写插件或者使用现有的插件来扩展Vim的功能…

【STM32】STM32学习笔记-I2C通信外设(34)

00. 目录 文章目录 00. 目录01. I2C简介02. I2C外设简介03. I2C框图04. I2C基本结构05. 主机发送06. 主机接收07. 软件/硬件波形对比08. 预留09. 附录 01. I2C简介 I2C(Inter-Integrated Circuit)总线是一种由NXP(原PHILIPS)公司开发的两线式…

黑马程序员——javase基础——day02——运算符选择语句

目录: 运算符 算术运算符案例数值拆分操作的三种情况 数字相加(类型转换)字符相加字符串相加赋值运算符选择语句 顺序结构Debug的基本使用选择语句之if if语句格式1if语句格式2和格式3案例1(交通信号灯)关系运算符案例2(奇偶数)案例3(手机以旧换新)案例4(你是青年人…

The Parade

Berland军队正在为一场大型阅兵式做准备。已经决定,参与其中的士兵将被分为k行,所有行都将包含相同数量的士兵。 当然,并不是每一次把士兵排成k排都是合适的。同一排中所有士兵的身高差异不应超过1。每个士兵的身高是一个介于1和n之间的整数。…

OpenCV-Python(42):摄像机标定

目标 学习摄像机畸变以及摄像机的内部参数和外部参数根据摄像机相关参数对畸变图像进行修复 基础说明 今天的低价单孔摄像机(照相机)会给图像带来很多畸变。畸变主要有两种:径向畸变和切向畸变。如下图所示用红色直线将棋盘的两个边标注出来,但是你会发现棋盘的边…

小程序样例1:简单待办列表

基本功能: 显示所有待办列表(点击不同的文本进行显示) 没完成的待办 已完成的待办 新建待办test 清除待办foo 代码js文件: //index.js //获取应用实例 const app getApp(); Page({data: {todo: ,todos: [{"id": 1474…

NanoPi NEO Air 配置指南

近期淘了块非常小巧的开发板 NaoPi NEO Air,这块板子仅有 40mm x 40mm 大小,除了一个 MicroUSB OTG 接口外如果想要扩展USB口就得使用左侧排针增加USB接口了。 关于 NanoPi NEO Air NanoPi NEO Air是一款基于全志H3四核A7主控的开源无线创客板&#xff…

SDRAM小项目——命令解析模块

简单介绍: 在FPGA中实现命令解析模块,命令解析模块的用来把pc端传入FPGA中的数据分解为所需要的数据和触发命令,虽然代码不多,但是却十分重要。 SDRAM的整体结构如下,可以看出,命令解析模块cmd_decode负责…

打造舒适的终端环境:我的.tmux.conf配置分享

打造舒适的终端环境:我的.tmux.conf配置分享 大家好,今天我来和大家分享一下我个人的 tmux 配置文件(.tmux.conf),通过这份配置文件,你可以在终端中获得更加愉悦的使用体验。废话不多说,让我们…

springcloud-cloud provider-payment8001微服务提供者支付Module模块

文章目录 IDEA新建project工作空间cloud-provider-payment8001微服务提供者支付Module模块建表SQL测试 IDEA新建project工作空间 微服务cloud整体聚合父工程Project 写pom文件 <?xml version"1.0" encoding"UTF-8"?><project xmlns"htt…

一文就知道uniapp等跨端开发的使用场景,学习成本,如何快速使用,基本语法等

文章目录 一、简介二、uniapp用在哪些企业三、学习成本四、本次课程概括五、相关文档和学习资料六、快速使用七、Uni-app的基本语法八、项目实战 一、简介 是一个跨平台开发各种各样应用的一套框架。只需要写一套代码&#xff0c;可以适配多达14种产品类型&#xff0c;比如H5移…

1月16日,每日信息差

​第一、苹果将推出欧盟特供版App Store。由于这些变化&#xff0c;App Store将被一分为二&#xff0c;欧盟国家有一个版本&#xff0c;世界其他地区将是另一个版本。欧盟的新法规《数字市场法案》&#xff08;DMA&#xff09;要求苹果允许开发者在App Store之外发布他们的iOS应…

[足式机器人]Part2 Dr. CAN学习笔记-Advanced控制理论 Ch04-9 可观测性与分离原理

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-Advanced控制理论 Ch04-9 可观测性与分离原理

Dubbo应用连接Zookeeper问题与解决方案

最近&#xff0c;遇到了一个关于Dubbo应用启动的问题&#xff0c;在部署应用的过程中&#xff0c;应用无法成功连接到ZooKeeper进行服务注册。尽管telnet端口显示正常&#xff0c;排除了网络问题&#xff0c;但问题仍然存在。 首先&#xff0c;查看日志获取线索分析问题。日志…

vue知识-07

ref # 放在组件上&#xff1a; this.$refs.名字 ---组件对象.组件对象.属性 # 在vue项目中使用: // 写在组件上 <HelloWorld ref"my_hello_world"></HelloWorld>handleClick() {console.log(this.$refs)this.$refs.my_hello_world.name # 获取子组件中…