Policy Gradient策略梯度算法详解

1. 基本思想

Policy Gradient策略梯度(PG),是一种基于策略的强化学习算法,不少帖子会讲到从基于值的算法(Q-learning/DQN/Saras)到基于策略的算法难以理解,我的理解是两者是完全两套思路,在学习一种的时候先不要考虑另一种,更容易接受算法基本思想,了解了算法原理推导过程之后再比较两者不同之处那么更容易理解了

策略执行
Policy Gradient算法是学习策略概率密度函数 π ( a ∣ s ) \pi(a|s) π(as),它表示当前状态 s s s下执行动作 a a a的概率,策略执行的时候根据 π ( a ∣ s ) \pi(a|s) π(as)抽样一个动作 a a a,这里容易混淆的地方是,抽样得到的动作 a a a不一定是概率最大的,某一次抽样的结果是随机的,随机性服从的是 π ( a ∣ s ) \pi(a|s) π(as)策略概率密度

这里回顾基于值的算法(Q-learning/DQN/Saras)学习动作价值函数 Q ( s , a ) Q(s,a) Q(s,a),策略执行的时候一般采用epsilon-greedy策略,也就是选择最大 Q Q Q值对应的动作,是不是理解了Q-learning和Policy Gradient的一个区别

策略学习
Policy Gradient算法的思想是先将策略表示成一个和奖励有关的连续函数,然后用连续函数的优化方法去寻找最优的策略,优化目标是最大化连续函数,最常用的是优化方法是梯度上升法(与最小化loss的梯度下降相对)。

巧妙之处在于,它利用reward奖励直接对选择动作的可能性进行增强和减弱,好的动作会被增加下一次被选中的概率,不好的动作会被减弱下次被选中的概率。

这是Policy Gradient和Q-learning算法的又一次区别,Q-learning算法每步都可以更新Q值,更新是基于梯度下降的, 它的loss是TD Target,也就是当前状态下执行动作的Q值(完全是估计的),与假设再执行一步之后Q值(一部分是真实观测)的差值。

Policy Gradient的目标函数有以下三种情况
(1)最简单的优化目标就是初始状态收获的期望
(2)但是有的问题是没有明确的初始状态的,那么我们的优化目标可以定义平均价值
(3)或者定义为每一时间步的平均奖励

2. 算法动机

已经存在Q-learning/DQN/Saras这样基于值的好用的算法,为什么需要Policy Gradient呢?基于值的算法不能处理连续动作,对于高维离散动作,Q-learning更新每个值也需要大量的时间,是不可行的

Policy Gradient算法的优势和劣势总结如下

优势:

  • 连续的动作空间(或者高维空间)中更加高效;
  • 可以实现随机化的策略;
  • 某种情况下,价值函数可能比较难以计算,而策略函数较容易。

劣势:

  • 通常收敛到局部最优而非全局最优
  • 评估一个策略通常低效(这个过程可能慢,但是具有更高的可变性,其中也会出现很多并不有效的尝试,而且方差高)

3. 原理伪代码及数学推导

Policy Gradient算法原理伪代码如下,采用的目标函数是上面讲到的第(1)种形式——最简单的优化目标就是初始状态收获的期望
图1

图1. REINFORCE算法流程
伪代码Policy Gradient算法学习策略函数$\pi(a|s)$,它可以是神经网络,称之为策略网络,网络参数是$\theta$,策略函数记作$\pi(a|s, \theta)$

接下来推导伪代码中的 log ⁡ π θ ( s t , a t ) \log\pi_\theta(s_t, a_t) logπθ(st,at)是如何得来的

首先,将状态价值函数 V V V写成动作价值函数 Q Q Q关于动作 A A A的期望,再对状态价值函数对S做积分得到目标函数 J ( θ ) = E s [ V ( S ; θ ) ] J(\boldsymbol{\theta})=\mathbb{E_s}[V(S;\boldsymbol{\theta})] J(θ)=Es[V(S;θ)],可以理解成上述提到的第(2)种形式,此时目标函数只和策略网络参数 θ \boldsymbol{\theta} θ有关

在这里插入图片描述

训练策略网络采用的是梯度上升算法,下面推导出状态价值函数的导数 ∂ V ( s ; θ ) ∂ θ \frac{\partial V(s;\boldsymbol{\theta})}{\partial \boldsymbol{\theta}} θV(s;θ)策略梯度
在这里插入图片描述

下面推导策略梯度计算方法,Form1适用于离散动作,Form2适用于连续动作
在这里插入图片描述
在这里插入图片描述

这样得到了策略梯度的两种形式,如下面所示
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后,Policy Gradient算法流程,它和图1流程的区别在于,图1采用REINFORCE算法估计动作价值Q
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4. 参考资料

这里分享条理非常清晰的两份讲解
https://zhuanlan.zhihu.com/p/165439436
https://blog.csdn.net/qq_30615903/article/details/80747380

另外一份博客讲解着重列举示意示例,有助于形象化理解
https://zhuanlan.zhihu.com/p/110881517

大神老师的讲解

  • 王树森课程https://www.bilibili.com/video/BV12o4y197US/?p=3&vd_source=1565223f5f03f44f5674538ab582448c
  • 莫烦Python

5. 小预告

下一份博客分享将会介绍Policy Gradient算法操作流程中,另一种估计动作价值函数 Q Q Q的方法,也就是用Actor网络估计,动作网络和策略网络同时使用的方法称之为Actor-Critic(AC)算法

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在 oracle 中执行 sql 语句时,报错:“ORA-00001: 违反唯一约束条件 SYS_C0024202”

在 oracle 中执行 sql 语句时,报错:“ORA-00001: 违反唯一约束条件 SYS_C0024202” 报错信息如下: 表为“WK_ADMIN_USER” 解决方法: 1、查看违反约束的序列对应的数据库表与字段 select a.constraint_name,a.constraint_type,b…

签名预售活动圆满结束!各位敬等快递,第一个付款的兄弟来领取大礼!

我的新书经过千难万险终于上架, 为了感谢众多老铁的支持, 所以上周日搞了签名预售的活动,挂了300本, 一上线很快就被大家买光了, 留言需要单独写一些话的老铁,我也都尽量满足了, 如果一楼还…

日撸 Java 三百行day50

文章目录 说明day50 小结1.比较分析各种查找算法.2.比较分析各种排序算法3.描述各种排序算法的特点和基本思想4.设计一个自己的 Hash 函数和一个冲突解决机制 说明 闵老师的文章链接: 日撸 Java 三百行(总述)_minfanphd的博客-CSDN博客 自己…

Scala字符串常用函数

Scala字符串常用函数 1. 子字符串-substring2. 字符串切分-split3. 去掉首尾空格-trim4. 与数值之间的转换完整代码参考链接 Scala中的字符串为String类型,其实就是Java中的java.lang.String。其常用函数如下: 1. 子字符串-substring substring()方法返…

4月份公司测试部门来了个卷王之王,让人奔溃...

前段时间公司新来了个同事,听说大学是学的广告专业,因为喜欢IT行业就找了个培训班,后来在一家小公司干了三年,现在跳槽来我们公司。来了之后把现有项目的性能优化了一遍,服务器缩减一半,性能反而提升4倍&am…

C. Classy Numbers(dfs构造 + 组合数学)

Problem - C - Codeforces 让我们称某个正整数为“优美的”,如果它的十进制表示中不超过3个数字不为零。例如,数字4、200000、10203是优美的,而数字4231、102306、7277420000则不是。 给定一个区间[L;R],请计算在此区间内有多少个…

Camtasia2023.0.1CS电脑录制屏幕动作工具新功能介绍

Camtasia Studio是一款专门录制屏幕动作的工具,它能在任何颜色模式下轻松地记录 屏幕动作,包括影像、音效、鼠标移动轨迹、解说声音等等,另外,它还具有即时播放和编 辑压缩的功能,可对视频片段进行剪接、添加转场效果。…

删除二叉搜索树中的节点

1题目 给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。 一般来说,删除节点可分为两个步骤&#xff1a…

我的服务器被挖矿了,原因竟是。。。

「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 挖矿木马应急响应 一、什么是挖矿二、被挖矿主机现象三、挖矿木马处置思路1)隔…

单链表你别再找我了,我怕双向链表误会

目录 带头双向循环链表的创建和初始化 创建一个新的结点(方便复用) 链表判空 链表打印 链表尾插 链表尾删 链表头插 链表头删 任意插入 任意删除 链表查找 链表销毁 完整代码 😎前言 之前我们讲了结构最简单,实现起来…

Spring —— Spring Boot 配置文件

JavaEE传送门 JavaEE Spring —— Bean 作用域和生命周期 Spring —— Spring Boot 创建和使用 目录 Spring Boot 配置文件Spring Boot 配置文件格式properties配置文件properties 基本语法properties 缺点 yml 配置文件yml 基本语法yml 配置不同类型数据及 nullyml 配置对象…

方案设计——食物测温仪方案

食物测温仪,在食物烹饪时,温度和时间至关重要,所以食物测温仪孕育而生,当用户使用时只需将食物测温仪的探头插入食物中,即刻能得到当前食物温度数据,不必用经验判断。做为一款食物测温仪,运用场…

Extra Finance 主网测试版上线,完成任务领空投

DeFi 的广泛应用将上一轮牛市推向顶峰,也让区块链具有了更多的拓展性。经过熊市的洗礼,DeFi 应用开始升级和优化,并且衍生出更多更加具有实用性和创新性的新产品。DeFi 已经成为区块链的基础设施,为更多的应用和创新提供帮助。下一…

“AI孙燕姿”们侵了谁的权?

“2003年大火的歌手:孙燕姿;2023年大火的歌手:AI孙燕姿”。在B站,这条评论获赞2800多,而被网友们集体点赞的是用AI克隆孙燕姿声音后演唱其他歌曲的视频。 截止目前,Up主们打造的“AI孙燕姿”已翻唱了百余首…

cam_lidar_calibration标定速腾激光雷达和单目相机外参

目录 一、资源链接二、代码测试2.1安装依赖2.2代码下载和修改2.2.1 optimiser.h文件2.2.2 feature_extractor.h文件 2.3编译代码2.4测试数据集2.4.1迭代计算2.4.2查看校准结果 三、标定自己激光雷达和相机3.1修改代码3.1.1camera_info.yaml配置文件3.1.2params.yaml配置文件3.1…

【Linux】Linux编辑神器vim的使用

目录 一、Vim的基本概念 二、Vim的基本操作 1、进入vim 2、正常模式切换至插入模式 3、插入模式切换至正常模式 4、正常模式切换至底行模式 5、退出Vim编辑器 三、Vim正常模式命令集 1、移动光标 2、删除文字 3、复制 4、替换 5、撤销 四、Vim底行模式命令集 1、列出行号 2、光…

Spring MVC:常用参数(注解)的使用和参数绑定的验证

Spring MVC:常用参数(注解)的使用和参数绑定的验证 一、学习资源二、基础源码三、实验结果3.1 Spring MVC常用参数Controller和RequestMappingRequestMappingRequestParamPathVariableCookie ValueRequestHeader 3.2 Spring MVC参数绑定3.2.1…

JavaScript实现贪吃蛇小游戏(网页单机版)

文章目录 项目地址项目介绍游戏开始游戏暂停游戏模式游戏死亡重新开始 结尾 今天使用 JavaScript 实现了一个网页版的贪吃蛇小游戏。 项目地址 Github: https://github.com/herenpeng/snakeGitee: https://gitee.com/herenpeng/snake线上体验:https://herenpeng.g…

在线未注册域名批量查询-域名注册批量查询

域名批量注册查询 域名批量注册查询是一种工具,可以帮助用户批量查询并注册多个域名。这种工具通常被域名管理者、品牌专家、互联网营销人员等使用。 以下是域名批量注册查询工具的优点: 提高效率:与手动单独注册域名相比,域名批…

计算机网络实验(ensp)-实验1:初识eNSP仿真软件

目录 实验报告: 实验操作 1.建立网络拓扑图并开启设备 2.配置路由器 1.输入命名:sys 从用户视图切换到系统视图 2.输入命名:sysname 姓名 修改路由器名字 3.输入命名:interface g0/0/0 进入端口视图g0…