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

news2024/12/25 10:29:17

来源书籍:

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时需要奖励吗?

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

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

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

相关文章

JSP的文件扩展名必须是.jsp吗

并不是 打开Tomcat目录下conf目录下的web.xml 也就是说,映射路径为xxx.jsp或者xxx.jspx就会访问jsp 可以修改

前后端分离------后端创建笔记(上)

本文章转载于【SpringBootVue】全网最简单但实用的前后端分离项目实战笔记 - 前端_大菜007的博客-CSDN博客 仅用于学习和讨论,如有侵权请联系 源码:https://gitee.com/green_vegetables/x-admin-project.git 素材:https://pan.baidu.com/s/…

Mysql:Access denied for user ‘root‘@‘localhost‘ (using password:YES)解决方案

最近在配置Maven以及Mybatis时,连接localhost数据库时出现无法连接,用cmd测试时报错:Access denied for user ‘ODBC’‘localhost’ (using password: NO),这个意思就是不允许远程访问,一开始笔者进入mysql试了一下是…

计算机网络:网络字节序

目录 一、字节序1.字节序概念2.字节序的理解(1)大端模式存储数据(2)小端模式存储数据 二、网络字节序 一、字节序 1.字节序概念 字节序:内存中存储多字节数据的顺序。 难道存储数据还要看顺序吗? yes。内…

maven是什么?安装+配置

目录 1.什么是maven? 1.2.maven的核心功能是什么? 2.Maven安装配置 2.1Maven的安装 2.2Maven环境配置 1.配置 MAVEN_HOME ,变量值就是你的 maven 安装的路径(bin 目录之前一级目录) 2.将MAVEN_HOME 添加到Path系…

路由导航守卫中document.title = to.meta.title的作用以及路由跳转修改页面title

目录 🔽 document.title to.meta.title的作用 🔽 Vue路由跳转时如何更改页面title 🔽 document.title to.meta.title的作用 路由导航守卫如下: router.beforeEach(async (to, from, next) > {document.title to.meta.ti…

“一日之际在于晨”,欢迎莅临WAVE SUMMIT上午场:Arm 虚拟硬件早餐交流会

8月16日,盛夏的北京将迎来第九届WAVE SUMMIT深度学习开发者大会。在峰会主论坛正式开启前,让我们先用一份精美的元气早餐,和一场“Arm虚拟硬件交流会”,唤醒各位开发小伙伴的开发魂! 8月16日,WAVE SUMMIT大…

湘大 XTU OJ 1097 排序 题解:c++ 函数库的使用 快速排序 归并排序 冒泡排序

一、链接 1097 排序 二、题目 Description N个整数&#xff0c;将其排序输出。 输入 第一行是一个整数K&#xff08;1<K<20&#xff09;&#xff0c;表示有多少个样例&#xff0c;每个样例的第一行是一个整数N&#xff08;1<N<1,000&#xff09;和一个字符X&…

136.只出现一次的数字+26.删除有序数组中的重复项

目录 一、136.只出现一次的数字 二、代码 三、26删除有序数组中的重复项 四、代码 一、136.只出现一次的数字 136. 只出现一次的数字 - 力扣&#xff08;LeetCode&#xff09; 二、代码 交换律&#xff1a;a ^ b ^ c <> a ^ c ^ b 任何数与0异或为任何数 0 ^ n >…

第三篇|金融人数据来源有哪些

数据对于金融行业真的很重要&#xff0c;那么金融人有哪些途径查数据呢&#xff1f; 国内&#xff1a; 1. 国家统计局 这个应该是无论什么行业都使用最频繁的网站&#xff0c;每个月都会固定发上个月资产投资数据 、工业增加值和利润数据等常规数据&#xff0c;其他数据也会…

日常BUG—— maven编译报错

&#x1f61c;作 者&#xff1a;是江迪呀✒️本文关键词&#xff1a;日常BUG、BUG、问题分析☀️每日 一言 &#xff1a;存在错误说明你在进步&#xff01; 一、问题描述 一个maven项目在由于在代码中书写了如下代码&#xff1a; public static ConcurrentMap<…

若依如何使用(基本环境的配置)

本文章转载于公众号&#xff1a;王清江唷,仅用于学习和讨论&#xff0c;如有侵权请联系 QQ交流群&#xff1a;298405437 本人QQ&#xff1a;4206359 具体视频地址:8 跑后端_哔哩哔哩_bilibili 1、Ruoyi-Vue是什么&#xff1f; 借用官网原话来解释&#xff1a; 一直想做一款…

28.Netty源码之缓存一致性协议

Mpsc Queue 基础知识 Mpsc 的全称是 Multi Producer Single Consumer&#xff0c;多生产者单消费者。Mpsc Queue 可以保证多个生产者同时访问队列是线程安全的&#xff0c;而且同一时刻只允许一个消费者从队列中读取数据。 Netty Reactor 线程中任务队列 taskQueue 必须满足多个…

【input】关于input 元素的type类型及相关作用

传统类型&#xff1a; text&#xff1a;用于输入单行文本。 <input type"text" name"username">password&#xff1a;用于输入密码&#xff0c;输入的内容会被隐藏。 <input type"password" name"password">checkbox&a…

计算机网络 网络层 IPv4地址

A类地址第一位固定0 B类10 其下同理

matlab使用教程(13)—稀疏矩阵创建和使用

使用稀疏矩阵存储包含众多零值元素的数据&#xff0c;可以节省大量内存并加快该数据的处理速度。sparse 是一种属性&#xff0c;可以将该属性分配给由 double 或 logical 元素组成的任何二维 MATLAB 矩阵。通过 sparse 属性&#xff0c;MATLAB 可以&#xff1a; • 仅存储矩…

Vector - CAPL - 诊断模块函数(流控制帧续)

目录 CanTpGetFirstSequenceNumber & CanTpSetFirstSequenceNumber 代码示例 CanTpIsUseFlowControlSTmin & CanTpIsUseFlowControlSTmin & CanTpUseFlowControlSTmin CanTpIsUseFlowControlFrames & CanTpUseFlowControlFrames 代码示例 CanTpSetFlowC…

网神 SecGate 3600 防火墙任意文件上传漏洞

网神 SecGate 3600 防火墙任意文件上传漏洞 一、 产品简介二、 漏洞概述三、 影响范围四、 复现环境五、 漏洞复现PoC上传哥斯拉马子小龙POC检测: 六、 修复建议 免责声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具…

【网络编程·网络层】IP协议

目录 一、IP协议的概念 二、IP协议的报头 1、四位首部长度 2、16位总长度&#xff08;解包&#xff09; 3、8位协议&#xff08;分用&#xff09; 4、16位首部校验和 5、8位生存时间 6、32位源IP和32位目的IP 7、4位版本/8位服务类型 8、16位标识 9、3位标志 10、1…

聊一下互联网开源变现

(点击即可收听) 互联网开源变现其实是指通过开源软件或者开放源代码的方式&#xff0c;实现收益或盈利。这种方式越来越被广泛应用于互联网行业 在互联网开源变现的模式中&#xff0c;最常见的方式是通过捐款、广告、付费支持或者授权等方式获利。 例如&#xff0c;有些开源软件…