强化学习笔记-13 Policy Gradient Methods

2023-11-10

强化学习算法主要在于学习最优的决策,到目前为止,我们所讨论的决策选择都是通过价值预估函数来间接选择的。本节讨论的是通过一个参数化决策模型\pi(a|s,\theta )来直接根据状态s选择动作,而不是根据价值预估函数v(s|w)来间接选择。

我们可以定义如下Policy Gradient更新策略,来求解参数化决策模型\pi(a|s,\theta )的参数,其中J(\theta_t)表示用于衡量决策模型优劣的损失函数。

\theta_{t+1} = \theta_{t} + \partial_{\theta_{t}} J(\theta_t)

1. Policy Approximation and its Advantages

对于参数化决策模型\pi(a|s,\theta )存在两种建模方式:生成式或判别式。

当动作空间是离散且较小时,可以采用判别式模型h(s,a,\theta ),表示状态-动作对s,a的优劣得分,此时\pi(a|s,\theta )可以表示为下式,这种通过softmax求得选择动作概率,兼顾了ε-greedy动作探索的功能。另一方面在很多情况下随机动作也是最优的,softmax方式具备这种特性。

\pi(a|s,\theta )=\frac{e^{h(s,a,\theta)}}{\sum_{a'\neq a}e^{h(s,a',\theta)}}

当动作空间是连续时,生成式模型是一个比较好选择,一种简单方式是将决策动作分布\pi(a|s,\theta )建模为一个高斯分布,由于动作分布方差的存在,因此也兼顾了动作探索的特性。

\pi(a|s,\theta)=\frac{1}{\sigma(s,\theta)\sqrt{2\pi}}\text{exp}(-\frac{(a-\mu(s,\theta))^2}{\sigma(s,\theta)^2})

2. The Policy Gradient Theorem

接下来关键在于如何找到一个衡量决策模型优劣的损失函数J(\theta_t)。直观上理解,在最优决策下,各状态价值应该也是最优的,因此可以定义:

J(\theta)=\sum_s \mu(s) \sum_a \pi(a|s,\theta) Q(s,a)

此时有

\partial J(\theta)\\=\sum_s \mu(s) \sum_a Q(s,a) \partial_{\theta}\pi(a|s,\theta) \\=\sum_s \mu(s) \sum_a Q(s,a)\pi(a|s,\theta) \frac{\partial_{\theta}\pi(a|s,\theta)}{\pi(a|s,\theta) }\\=E[G(s,a)\frac{\partial_{\theta}\pi(a|s,\theta)}{\pi(a|s,\theta)}]

可以定义如下SGD更新参数式子:

\theta_{t+1}=\theta_{t} + \beta G_t(s,a) \frac{\partial_{\theta}\pi(a|s,\theta_t)}{\pi(a|s,\theta_t)}

根据上式,同MC结合的Policy Gradient Methods:

3. Baseline

因为参数化决策模型中参数\theta在不同s,a下会同步更新,因此某些状态s下其累积收益G远大于其他状态,而决策模型是根据状态来选择动作,所以不同状态s下其累积收益G不同,会引入偏差,这个偏差会影响模型的影响。

因此可以对累积收益G减去状态带来的偏差,即

\hat{G_t(s,a)}=G_t(s,a)-v_t(s)

此时参数更新可以变为:

\theta_{t+1}=\theta_{t} + \beta (G_t(s,a) - v_t(s))\frac{\partial_{\theta}\pi(a|s,\theta_t)}{\pi(a|s,\theta_t)}

另外也可以看出虽然减去状态带来的偏差因子,原来同损失函数J(\theta_t)也是等价的。

\partial J(\theta)\\=\sum_s \mu(s) \sum_a (G(s,a) -v(s))\partial_{\theta}\pi(a|s,\theta)\\=\sum_s \mu(s) (\sum_a G(s,a)\partial_{\theta}\pi(a|s,\theta) - v(s)\sum_a \partial_{\theta}\pi(a|s,\theta))\\ =\sum_s \mu(s) \sum_a G(s,a)\partial_{\theta}\pi(a|s,\theta)

4. Actor–Critic Methods 

\theta_{t+1}=\theta_{t} + \beta (R_{t+1} + \gamma v(s_{t+1}|w_t) - v_t(s|w_t))\frac{\partial_{\theta_t}\pi(a|s,\theta_t)}{\pi(a|s,\theta_t)} \\ w_{t+1}=w_t + \alpha (R_{t+1} + \gamma v(s_{t+1}|w_t) - v_t(s|w_t))\partial_{w_t} v(s|w_t)

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

强化学习笔记-13 Policy Gradient Methods 的相关文章

  • aso优化师是什么_aso是什么意思 aso优化师是啥

    aso是什么意思 aso优化师是啥 年已过完 要收心工作学习了 今天李鑫自媒体就从头过滤一下aso方面的知识 用文字总结表述出来 加深自己理解的同时也帮助一些新手小伙伴了解aso aso是什么意思 ASO是App store Optimiz
  • element 的 this.$message( ) 消息提示实现

    在vue项目中 直接通过js代码 this message 就可以调出消息提示组件 这是如何实现的呢 主要分为以下几步 1 用 Vue extend 创建组件的模板 构造函数 2 创建一个函数 在函数内部 实例化组件并进行挂载到相应元素上
  • 【开发记录01】开发环境副本/页的导入&带用户权限管理系统

    在蒋老师的指导下大概了解了 1 开发环境的数据导入 导出 共享组件的同步 因为应用程序277是应用程序100的子程序 所以共享组件必须和100保持一致 但是会出现一个小问题 在APEX开发过程中同时打开两个不同的应用程序 但是编辑过程中经常
  • CVE-2017-12149

    春秋云镜 CVE 2017 12149 JBoss反序列化漏洞 靶标介绍 2017年8月30日 厂商Redhat发布了一个JBOSSAS 5 x 的反序列化远程代码执行漏洞通告 该漏洞位于JBoss的HttpInvoker组件中的 Read

随机推荐

  • 【教程】Github快速学习

    教程 Github快速学习 备注 一 Git基础 1 安装 2 git原理 3 基本配置 4 Gitignore 二 Git分支 1 基础命令 三 学习Github Github Docs官方文档 gt Github漫游指南 gt 开源指北
  • 毕业设计-基于大数据技术的旅游推荐系统-python

    目录 前言 课题背景和意义 实现技术思路 实现效果图样例 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的毕设项目越来越难 有不少课题是研究生级别难度
  • 大数据常用采集工具

    1 Flume Flume作为Hadoop的组件 是由Cloudera专门研发的分布式日志收集系统 尤其近几年随着Flume的不断完善 用户在开发过程中使用的便利性得到很大的改善 Flume现已成为Apache Top项目之一 Flume提
  • [转]一文读懂PID控制算法(抛弃公式,从原理上真正理解PID控制)

    一文读懂PID控制算法 抛弃公式 从原理上真正理解PID控制 PID控制应该算是应用非常广泛的控制算法了 小到控制一个元件的温度 大到控制无人机的飞行姿态和飞行速度等等 都可以使用PID控制 这里我们从原理上来理解PID控制 PID pro
  • AcWing 1603. 整数集合划分

    给定一个包含 N 个正整数的集合 请你将它们划分为两个不相交的集合 A1 和 A2 其中 A1 包含 n1 个元素 A2 包含 n2 个元素 用 S1 表示集合 A1 内所有元素之和 S2 表示集合 A2 内所有元素之和 请你妥善划分 使得
  • 前端技术栈

    https juejin cn post 7036581158670303240 做了一份前端面试复习计划 保熟 掘金 1 Vue和React的区别 Vue和React的比较 布里渊区 CSDN博客 2 CI CD 做了哪些实践 什么是 C
  • LASlib 读写点云

    一 参考链接 1 LASlib LAStools 2 LASlib库将PCL库点云类型数据转换为las格式保存 3 las数据转 pcd并显示 las格式详解 1 孙爱怡 王健 LAS格式的解析与转换 J 全球定位系统 2016 41 02
  • 分布式搜索elasticsearch高级配置之(二)------线程池设置

    原文 http blog csdn net laigood article details 7943630 一个Elasticsearch节点会有多个线程池 但重要的是下面四个 索引 index 主要是索引数据和删除数据操作 默认是cach
  • Tensorrt下的Yolox部署

    这里写目录标题 一 Ubuntu系统的安装与显卡驱动安装 二 Tensorrt的安装 三 YOLOX的安装 四 torch2trt的安装 五 engine文件的准备 根据设备修改源文件 引擎生成 六 运行demo 先改一下CMakeList
  • 终于搞懂了,用大白话给你解释Zookeeper的选举机制,包教会

    号外号外 死磕 Java 并发编程 系列连载中 大家可以关注一波 死磕 Java 并发编程05 阿里面试失败后 一气之下我图解了Java中18把锁 死磕 Java 并发编程04 说说Java Atomic 原子类的实现原理 死磕 Java
  • Android导出aar时嵌套引用的那些坑

    http www jianshu com p 7a532de0b111 最近写了个Android SDK工程 在代码 测试统统完成后 居然在导出的一步折腾了两三天 在此总结下查找资料的过程和结果 引以借鉴 首先 这次趟坑解决了以下问题 导出
  • 替换word中手动换行(软回车)为段落标记(硬回车)

    在字处理软件中 由Enter键按下去导致一行文字换行的叫硬回车 程序自动换行的叫做软回车 软回车是用 Shift Enter 产生的 它换行 但是并不换段 即前后两段文字在 Word 中属于同一 段 word中遇到网页粘贴过来的内容会有大量
  • Unity背景移动特效

    每日一句 嘴角上扬的时候 任何事物都变得可爱起来了 第一步 确保所要滚动的图像 Wrap Made Repeat 第二步 画布下滚动图像使用 Raw Image组件 可以访问UV 第三步 创建脚本ScrollControl挂载在滚动图像上
  • 增强型pmos电路符号_MOS管:管脚判定与符号画法

    MOS管是我们在电路设计中经常用的一种无源器件 下面介绍下MOS管在原理图 PCB以及实物PCBA上如何辨别其各个管脚 方便调试 管脚判定 1 MOS管GSD在原理图和PCB上怎样判别 G极 gate 栅极 不用说比较好认 封装上左下角为G
  • 【EMC笔试题】N个整数中找出三个数,使其和的绝对值最小

    题目描述 给定包含N个数的无序数组S 可能包含负数 0 正数 求三个数A B C 使其和的绝对值最小 例如 S 9 0 1 3 6 A 9 B 3 C 6 MIN 0 算法解析 解法一 枚举3个数 O N N N 解法二 对S排序后枚举其中
  • Java中如何实现动态代理

    想要实现Java中的动态代理首先应 动态生成接口实现类 interface 接口不能实例化 但是 interface 类型的引用 可以指向任何一个实现类对象实例 但前提是 在编译期必须存在该接口的实现类 如果在编译期无法编写或提供实现类 而
  • 【深度学习】利用tensorflow2.0卷积神经网络进行卫星图片分类实例操作详解

    本文的应用场景是对于卫星图片数据的分类 图片总共1400张 分为airplane和lake两类 也就是一个二分类的问题 所有的图片已经分别放置在2 class文件夹下的两个子文件夹中 下面将从这个实例的详细拆解中 理解tensorflow2
  • spark+项目总结

    做项目基本流程 1 梳理数据流程 2 解决关键性问题 3 串联整个流程过程即标准化以及正式上线 解决关键性问题 对比差异点 数据的文件组织形式不同 数据的格式不同 相同点 数据流程一样 数据目标也是一样 曝光 Exposure 广告领域专业
  • python读写文本老是报错?codecs模块统一编码 一行代码搞定py字符读写

    在python程序中 经常要用到字符文本的读和写 用py自带的 读read 写write 定义字符编码比较麻烦 而用第三方 codecs 模块 在读写字符文本时 可以指定字符编码 就好用很多 下面 我用 codecs 模块 自己编写了一个d
  • 强化学习笔记-13 Policy Gradient Methods

    强化学习算法主要在于学习最优的决策 到目前为止 我们所讨论的决策选择都是通过价值预估函数来间接选择的 本节讨论的是通过一个参数化决策模型来直接根据状态选择动作 而不是根据价值预估函数来间接选择 我们可以定义如下Policy Gradient