【强化学习】Policy Gradient原理

1.Policy Gradient和DQN系列强化算法最大的区别在于:
DQN系列基于Value,也就是说执行完所有的动作并保存所得到的价值,根据这些价值计算出最优价值函数,并以此选择动作,最终获得一个特定的策略。
Policy Gradient基于策略来选择动作,Value Based方法中将动作价值函数进行近似,引入了一个动作价值函数q^,状态s和动作a为输入,价值函数输出,得到近似的动作价值。
PG中采用类似的思路,将策略表示成一个连续的函数之后,使用连续函数的优化方法寻找最优策略。

2.Policy Gradient要想得到最优策略需要经过这么几个步骤:
1.得有一个连续的函数,有了连续的函数才能使用连续 函数的优化方法寻找最优策略。我们类比DQN中的方法,将策略Π表示为一个连续的函数(这里只是把她表示出来,具体是需要详细的设计的):
在这里插入图片描述

2.找到一个可以优化的函数目标。最简单的优化目标是初始状态收获的期望
在这里插入图片描述

但有的问题没有明确的初始状态,这时可以将优化目标定义为平均价值
在这里插入图片描述

或者每一步的平均奖励
在这里插入图片描述

得到这个目标函数之后,我们要对他求一个梯度,为啥要求梯度呢,特意去翻了翻高数知识,梯度是指方向导数的最大值,梯度向量的方向即为函数值增长最快的方向,所以。有了梯度之后我们就可以随时找到函数值变化最大的方向,就可以实时的更新策略函数的参数从而找到最优策略了。
在这里插入图片描述

其中,我们把在这里插入图片描述
这块称为分值函数

这大概就是PG的大概思路,所以我们接下来只要设计一个合适的策略函数,前面的就通了。

关于设计合适的策略函数,最常用的策略函数就是softmax策略函数了,它主要应用于离散空间,使用描述状态和行为的特征 ϕ(s,a)和参数
θ的线性组合来权衡一个行为发生的几率
在这里插入图片描述

策略函数表示出来了!接下来就按照前面的流程,求导得对应的分值函数:
在这里插入图片描述

好了我们现在想要的东西都得到了,接下来我们设计策略梯度算法,给它把数学符号和公式想办法变成代码就完工了!
下面这个就是一种最简单的策略梯度算法:
在这里插入图片描述

3.Softmax是什么?
https://blog.csdn.net/bitcarmanlee/article/details/82320853?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161853644116780366579767%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=161853644116780366579767&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-82320853.pc_search_result_no_baidu_js&utm_term=softmax
如果将max看成一个分类问题,就是非黑即白(两个变量a,b,如果a>b,则max为a,fan’zhi),最后的输出是一个确定的变量。更多的时候,我们希望输出的是取到某个分类的概率,或者说,我们希望分值大的那一项被经常取到,而分值较小的那一项也有一定的概率偶尔被取到,所以我们就应用到了soft的概念,即最后的输出是每个分类被取到的概率。
在这里插入图片描述

4.交叉熵损失函数
https://blog.csdn.net/bitcarmanlee/article/details/105619286
图片参考:
刘建平Pinard
https://www.cnblogs.com/pinard/p/10137696.html

下一篇是我的PG代码注释版本

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

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

相关文章

ajax的url怎么将后缀补上_蜂蜜杏仁怎么做?杏仁和蜂蜜腌制方法

蜂蜜杏仁怎么做?杏仁和蜂蜜腌制方法蜂蜜杏仁是一种非常好吃的小零食,很多小可爱都喜欢吃蜂蜜杏仁。不过有些时候忘记补货,就会断粮,于是大家都想要在家里自制蜂蜜杏仁。不过你知道蜂蜜杏仁应该怎么做吗?蜂蜜杏仁的做法其实并不难&#xff0…

【强化学习】Actor Critic原理

PG算法是一种只基于policy的一种方法,存在的问题就是该算法需要完整的状态序列,且单独对策略函数进行迭代更新,不太容易收敛。 Actor-critic方法呢是一种将 策略(Policy Based)和价值(Value Based)相结合的方法。下面继续来理一下AC方法的思路…

【强化学习】A3C原理

先解释一下什么叫异步、什么叫并发: **异步:**和同步相对,同步是顺序执行,而异步是彼此独立,在等待某个事件的过程中继续做自己的事,不要等待这一事件完成后再工作。线程是实现异步的一个方式,异…

jboss eap 7.0_创建委托登录模块(用于JBoss EAP 6.1)

jboss eap 7.0[如果只想查看代码,请向下滚动] 动机 在RHQ中,我们需要一个安全域,该域可用于通过容器管理的安全性来保护REST-api及其Web应用程序。 过去,我只是使用经典的DatabaseServerLoginModule对DatabaseServerLoginModule进…

【强化学习】可视化学习tensorboard

tensorflow定义了一个图结构: 代码: a tf.constant(3.0, name"a")b tf.constant(4.0, name"b")c tf.add(a, b, name"add")var tf.Variable(tf.random_normal([2, 3], mean0.0, stddev1.0), name"variable"…

面向初学者的JSF 2.0教程

1.什么是JSF? JSF是Java Server Faces的首字母缩写。 它是一种服务器端处理技术,它允许将服务器端代码嵌入到网页中。 由于可以将服务器端处理和呈现代码嵌入网页本身,因此使项目的整体编码更加简单。 减少总体数量以及文件大小。 JSF包含2个…

华为nova7保密柜_华为发布nova8系列新品 轻松拍出Vlog黄金脸占比

2020年12月23日,华为nova8系列手机正式发布。作为深受年轻人喜爱的手机品牌之一,华为nova8系列此次延续其强大的前置视觉实力、强悍的设计性能以及独特的设计美学,带来业内首款专为Vlog拍摄设计的5G手机。随着短视频和Vlog的崛起,…

26.0.0-alpha1_WildFly 8.0.0.Alpha1的发布和一些历史

26.0.0-alpha1自从我们发布WildFly 8.0.0.Alpha1版本以来, 已经过去了大约2周。 该下载位于WildFly下载页面上 。 我敢肯定,你们中的许多人可能会想知道WildFly是什么,而其中一些知道它是什么的人可能不会知道已经发布了。 我将尝试回答其中的…

单机最大负载_分布式高可靠之负载均衡,今天看了你肯定会

到目前为止,我已经为你介绍了分布式起源、分布式协调与同步、分布式资源管理与负载调度、分布式计算技术、分布式通信技术和分布式数据存储。可以说,掌握了这些内容,基本上就掌握了分布式的关键技术。然而,只有可靠的分布式系统才…

【强化学习】一文带你理清强化学习

整理不易,希望留个赞再走哦!! 学习路线 这个图描述的比较清晰,蓝框里是整个强化学习的一些概念基础了,橙色是一些学习方法,可以针对性的选择一些,废话不多说,接下来就按照这个路线图…

了解Java缓冲池

了解Java缓冲池 缓冲池空间位于垃圾收集器管理的内存之外。 这是分配本地堆外内存的一种方法。 使用缓冲池有什么好处? 为了回答这个问题,让我们首先了解什么是字节缓冲区。 字节缓冲区 非直接缓冲区 ByteBuffer类附带了java.nio包。 它允许我们分配直接…

java 循环拼接字符串用分号隔开_Java 8中字符串拼接新姿势:StringJoiner

在为什么阿里巴巴不建议在for循环中使用””进行字符串拼接一文中,我们介绍了几种Java中字符串拼接的方式,以及优缺点。其中还有一个重要的拼接方式我没有介绍,那就是Java 8中提供的StringJoiner ,本文就来介绍一下这个字符串拼接…

doctrine find的对象转换成数组_「ES6基础」Array数组的新方法(上)

在日常工作中我们经常会与数组打交道,因此需要熟练掌握数组操作的相关方法,ES6中关于数组的操作,又给我们带来了哪些惊喜呢,Array数组操作又添加了哪些新方法?本篇文章将从以下几个方面进行介绍:Array.from…

No module named ‘__main__.common‘; ‘__main__‘ is not a package

今天在调通代码时遇到一个难缠的bug,源代码如下: from .common import _FLOATX, _EPSILON结果报错: 问题原因: 也就是说,这是相对导入,只有在父模块在当前运行环境中被导入过才能用。 这揭示了报错的缘由&#xff0…

ValueError( Shape(4, ?, 1, 20) and () are incompatible

报错: 解决: 将文件中的return tf.concat(axis, tensors) 改为:return tf.concat(tensors, axis)问题完美解决

adadelta算法_对C++用户比较友好的机器学习算法库

由于疫情影响,这几天在家学习编程,整理了基于c语言的机器学习算法库。目前大部分机器学习库都是面向pyhton语言的,尽管很python包的底层语言是c,但c用户使用起来很麻烦,这里整理了一些对c比较优化的机器学习算法库&…

不解析,使用解析对象

将面向对象的后端与外部系统集成的传统方式是通过数据传输对象 ,这些对象在外出之前先序列化为JSON,然后在返回时反序列化。 这种方法很流行,而且是错误的。 序列化部分应该由打印机代替,我在前面已经解释过。 这是我对反序列化的…

yaml报错TypeError: load() missing 1 required positional argument: ‘Loader‘

添加一下命令即可: 我的操作: return yaml.load(config)改为 return yaml.full_load(config)问题完美解决

3d制作中需要注意的问题_珠宝首饰工艺篇-戒指3D造型设计制作注意要点

1、戒指的常规手寸数据和戒指外围周长计算公式应用参考如下图:戒指手寸内直径大小说明图1、戒指手寸规格有14号、15号、16号、17号、18号、19号、20号、,但是从开发角度来说比较常见规格是17号18号19号这几种规格比较多,那我们电脑3D建模的时…

微信推送封面尺寸_连封面图都搞不明白,做什么新时代的新媒体人?

嘿,胖友们大家好呀,我是三儿。又是精(bu)神(xiang)满(shang)满(ban)的周一啦,胖友们准备好开始迎接新的一周了吗!为了迎接这个崭新的周一,三儿特意为你们准备的一些实用的小工具教学,帮助你们快速的完成工作…