强化学习-信任区域策略优化和近端策略优化(第7章)

来源书籍:

TENSORFLOW REINFORCEMENT LEARNING QUICK START GUIDE

《TensorFlow强化学习快速入门指南-使用Python动手搭建自学习的智能体》

著者:[美]考希克·巴拉克里希南(Kaushik Balakrishnan)

译者:赵卫东

出版社:Packt    机械工业出版社

代码:https://github.com/x45w/TensorFlow-Reinforcement-Learning-Quick-Start-Guide-master/tree/main/PPOicon-default.png?t=N6B9https://github.com/x45w/TensorFlow-Reinforcement-Learning-Quick-Start-Guide-master/tree/main/PPO

目录

1.信任区域策略优化和近端策略优化

1.1 学习TRPO

1.2 学习PPO

2.思考题


1.信任区域策略优化和近端策略优化

第6章介绍了A3C和A2C的使用,前者是异步的,后者是同步的。本章将介绍另外的关于同步策略强化学习算法。准确地讲,这两个算法在数学上有很多相似之处,但在解决方法上却有所不同。一种称为信任区域策略优化(Trust Region Policy Optimization, TRPO),由OpenAI和加州大学伯克利分校的研究人员于2015年提出的。该算法在数学上很难求解,因为其涉及共轭梯度算法。请注意,一阶优化方法,如建立良好的Adam和随机梯度下降(SGD),不能用于求解TRPO方程。本章还介绍如何将求解策略优化方程合并为一个,从而产生近端策略优化(Proximal Policy Optimization, PPO)算法,并且可以使用一阶优化算法,如Adam或SGD。

1.1 学习TRPO

TRPO方程
TRPO涉及当前策略分配比例\pi _{\theta }与旧策略分配比例\pi _{\theta }^{old}(ji即较早的时间步长)的期望值的最大化,乘以优势函数A_{t},约束条件是新老策略分布的Kullback-Leibler(KL)散度的期望值不大于用户指定值\delta

 第一个方程是策略目标,第二个方程是一个附加约束。为了确保策略更新是渐进的,并且不会进行大的策略更新,从而将策略带到参数空间非常远的区域。

由于有两个需要联合优化的方程,Adam和SGD等一阶优化算法将不起作用。相反,用共轭梯度算法求解方程,对第一个方程进行线性逼近,对第二个方程进行二次逼近。然而,这涉及很多数学知识,所以不在本书中介绍。本书将使用PPO算法,它相对容易编程实现。

1.2 学习PPO

 PPO是TRPO的扩展,由OpenAI的研究人员于2017年引入。PPO也是一种同步策略算法,可以应用于离散动作问题和连续动作问题。它使用与TRPO中相同的策略分布比率,但不使用KL散度约束。具体来说,PPO使用三个损失函数,将它们合二为一。下面介绍三个损失函数。

PPO损失函数

第一个损失函数称为裁剪替代目标。用r_{t}(\theta )表示新旧策略概率分布的比率:

裁剪替代目标由以下方程给出,其中A_{t}是优势函数,\epsilon是超参数,通常使用ε=0.1或0.2: 

clip()函数将比率限制在1-ε和1+ε之间,从而使比率保持在范围内。min()函数是确保目标是未裁剪目标下限的最小化函数。 

第二个损失函数是状态值函数的L2范数:

第三个损失函数是策略分布的香农熵, 来源于信息论:

 把这三个损失函数组合起来。注意, 要最大化 L^{clip}  和L^{entropy}, 但是要最小化 L^{V}。其中 c1 和 c2 是用于缩放的常数将PPO 。总的损失函数定义为如下方程,

 注意,如果在策略和价值网络之间共享神经网络参数,那么前面L^{ppo}损失函数就可以最大化。另一方面,如果对策略和价值有单独的神经网络,那么就可以有单独的损失函数,那么就可以有单独的损失函数,如下面的方程所示,其中L^{policy}最大化,L^{value}最小化:

L^{policy}=L^{clip}+c_{2}L^{entropy}

L^{value}=L^{V}

注意,常量c_{1}在后一种设置中是不需要的,这里为策略和值提供了单独的神经网络。神经网络参数通过一批数据点上的多个迭代步骤进行更新,其中更新步骤的数量由用户指定为超参数。

2.思考题

(1)可以在TRPO中应用Adam或SGD优化吗?

答:信任区域策略优化(TRPO)具有目标函数和约束。因此,它需要二阶优化,例如共轭梯度。SGD和Adam不适用于TRPO。

(2)熵项在策略优化中的作用是什么?

答:熵项有助于正则化。它允许agent探索更多机会。

(3)为什么要削减策略比率?如果裁减参数\epsilon很大会发生什么?

答:缩减策略比率以限制一个更新步骤更改策略的量。如果裁剪参数\epsilon很大,则每次更新时策略都会发生巨大变化,这可能导致次优策略,因为agent的策略噪声较大且波动太多。

(4)为什么对mu使用激活函数tanh,而对sigma使用激活函数softplus?能用激活函数tanh来计算sigma吗?

答:这个动作被限制在负值和正值之间,因此激活函数tanh被用于mu。softplus用作sigma,并且总是正的。激活函数tanh不能用于sigma,因为tanh会导致sigma的负值,这是没有意义的。

(5)奖励在训练中总是有帮助吗?

答:奖励重新设计通常有助于训练。但是,如果做得不好,也无益于训练。必须确保完成奖励,以保持奖励功能的密集以及在适当的范围内。

(6)当测试一个已经训练好的agent时需要奖励吗?

答:不,奖励重新设计仅用于训练。

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

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

相关文章

Kendo UI for jQuery,一个现代的jQuery UI组件!

Kendo UI for jQuery是什么? Kendo UI for jQuery是完整的jQuery UI组件库,可快速构建出色的高性能响应式Web应用程序。Kendo UI for jQuery提供在短时间内构建现代Web应用程序所需要的工具,从多个UI组件中选择,并轻松地将它们组…

图像多目标跟踪

目标跟踪(Object Tracking)是自动驾驶中常见的任务,根据跟踪目标数量的不同,目标跟踪可分为: 单目标跟踪(Single Object Tracking,SOT)多目标跟踪(Multi-Objects Tracki…

餐馆包厢隔断装修该怎么去设计

餐馆包厢隔断装修设计需要综合考虑以下几个方面: 1. 功能布局:根据包厢的面积和形状来确定餐桌、椅子、电视等家具的摆放方式,保证客人的用餐舒适度和便利性。 2. 音响设备:安装合适的音响设备,提供一定的音乐背景&…

SQL 相关子查询 和 不相关子查询、Exists 、Not Exists、 多表连接(包含自连接)

不相关子查询 子查询的查询条件不依赖于父查询,称不相关子查询。子查询可以单独运行的 select stu_id,sex,age from student t where sex(select sexfrom studentwhere stu_id10023 )相关子查询 关联子查询 子查询的查询条件依赖于父查询,称为 相关子…

【c语言】 -- 指针进阶

📕博主介绍:目前大一正在学习c语言,数据结构,计算机网络。 c语言学习,是为了更好的学习其他的编程语言,C语言是母体语言,是人机交互接近底层的桥梁。 本章来学习指针进阶。 让我们开启c语言学习…

家电用PCM板:市场现状研究分析与发展前景预测

家电PCM板属于一种兴起不久的功能性复合材料。属于家电复合外观材料中占比较大的一种。家电复合外观材料主要分为覆膜板(VCM)系列和有机涂层板(PCM)系列两大类:VCM系列表面复合各类功能性薄膜,可根据需要实…

与传统IT开发相比,低代码开发具备哪些优势?

目录 一、低代码来源 二、低代码开发的特征 1、可视化建模 2、组件丰富 3、完整应用生命周期支持 4、私有化部署 三、对比传统系统开发,低代码开发具备哪些优势? 01.使需求方参与开发过程 02.助力开发人员节省更多时间 03.跨平台部署多端应用 04.助力企业…

c刷题(二)

目录 加减混合运算 计算n的k次方 计算非负整数各位之和 字符串逆序 双指针 递归 矩阵计算 矩阵转置 加减混合运算 题目:计算1 / 1 - 1 / 2 1 / 3 - 1 / 4 1 / 5 …… 1 / 99 - 1 / 100 的值,打印出结果。 一般情况我们可以写个循环然后在用条…

win10 安装ubuntu子系统并安装宝塔

1、安装子系统 2、ubuntu 中安装宝塔 这里需要注意的: 大部分文章上写的是“面板账户登录信息”不能直接访问,要改成127.0.0.1:8888去访问。 这种情况适合“面板账户登录信息”端口就是8888。 想我的就是32757 这时你就要用 http://127.0.0…

开启想象翅膀:轻松实现文本生成模型的创作应用,支持LLaMA、ChatGLM、UDA、GPT2、Seq2Seq、BART、T5、SongNet等模型,开箱即用

开启想象翅膀:轻松实现文本生成模型的创作应用,支持LLaMA、ChatGLM、UDA、GPT2、Seq2Seq、BART、T5、SongNet等模型,开箱即用 TextGen: Implementation of Text Generation models 1.介绍 TextGen实现了多种文本生成模型,包括&a…

Leetcode 977. 有序数组的平方

题目: Leetcode 977. 有序数组的平方 描述: 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序 思路: 双指针法 数组其实是有序的, 只不过负数平方之…

Unity使用C# Protobuf源码

目录 第一步:下载源码 第二步:运行C#构建文件 第三步:处理报错(如果你已安装对应的SDK则不会报错) 第四步:复制库文件到你的工程 第一步:下载源码 protobuf github源码https://github.com/p…

pom文件---maven

027-Maven 命令行-实验四-生成 Web 工程-执行生成_ev_哔哩哔哩_bilibili 27节.后续补充 一.maven下载安装及配置 1)maven下载 2) settings文件配置本地仓库 3)settings配置远程仓库地址 4)配置maven工程的基础JDK版本 5)确认JDK环境变量配置没问题,配置maven的环境变量 验证…

React Native连接Zebra斑马打印机通过发送CPCL指令打印(Android 和 iOS通用)

自 2015 年发布以来,React Native 已成为用于构建数千个移动应用程序的流行跨平台移动开发框架之一。通常,我们有开发人员询问如何将 Link-OS SDK 与 React Native 应用程序集成,以便在 Zebra 打印机上打印标签。在本教程中,我们将…

Linux基础与应用开发系列九:各类系统函数

open_close函数 OPEN函数 头文件&#xff1a; #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> 函数原型&#xff1a; 当文件存在时 int open(const char* pathname,int flags) 当文件不存在时 int open (const char* pathname,int f…

使用 React Native CLI 创建项目

React Native 安装的先决条件和设置 需要掌握的知识点 掌握 JavaScript 基础知识掌握 React 相关基础知识掌握 TypeScript 相关基础知识 安装软件前需要首先安装Chocolatey。Chocolatey 是一种流行的 Windows 包管理器。 安装 nodejs 和 JDK choco install -y nodejs-lts …

【Docker】Docker中network的概要、常用命令、网络模式以及底层ip和容器映射变化的详细讲解

&#x1f680;欢迎来到本文&#x1f680; &#x1f349;个人简介&#xff1a;陈童学哦&#xff0c;目前学习C/C、算法、Python、Java等方向&#xff0c;一个正在慢慢前行的普通人。 &#x1f3c0;系列专栏&#xff1a;陈童学的日记 &#x1f4a1;其他专栏&#xff1a;CSTL&…

Centos7.9编写分布式集群大数据系统_自启动脚本---Linux工作笔记058

由于为了方便,系统在启动的时候,设置成系统所有的,集群软件都自动启动,这样,可以减少,运维成本,要不然,这么多,工具,有的还不知道放到什么位置了,一个个去启动,非常麻烦. 首先编辑: 编辑这个文件: 然后编辑这个文件,写上自己,自启动脚本的位置,然后保存 :wq 然后再给这个文件…

VSCode-Python传参数进行Debug

新建demo.py import argparse def parse_args():description "debug example" parser argparse.ArgumentParser(descriptiondescription) help "The path of address"parser.add_argument(--host,help help) parser.add_ar…

火车头采集伪原创插件【php源码】

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;python代码大全和用法&#xff0c;python代码大全简单&#xff0c;现在让我们一起来看看吧&#xff01; 火车头采集ai伪原创插件截图&#xff1a; 1、题目&#xff1a;列表转换为字典。 程序源代码&#xff1a; 1 #!/us…