带有action mask动作掩码的PPO算法(附代码实现)

news/2024/5/19 1:12:14 标签: 强化学习, PPO算法

Actor神经网络输出的动作概率是全部动作的概率,而在应用PPO算法解决实际问题的时候,经常会遇到动作action受到限制的情形,也就是部分动作action是合理的,智能体动作采样select_action的时候也就只能从那些合理的动作action集合中采样。

常见的解决方案有两种,一种是给非法动作action增加惩罚奖励,另一种是动作掩码action mask。动作掩码action mask的基本想法是,给actor神经网络输出的动作概率加上一层掩码,合法动作的掩码是1意味着输出对应的动作概率, 非法动作的掩码是0意味着不输出对应的动作概率。

下面逐渐介绍动作掩码action mask原理以及在PPO算法上的实现,以截取几份讲解中肯的参考资料关键部分的形式进行介绍~

一般而言,动作掩码action mask方法相比于方法一训练时给非法action增加penalty的做法,效果要好很多(参考资料:DRL算法落地笔记 - 知乎 https://zhuanlan.zhihu.com/p/412520739)
在这里插入图片描述

动作掩码action mask原理讲解

强化学习中无效动作应该如何屏蔽(mask)处理? - 知乎 https://zhuanlan.zhihu.com/p/538953546
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

PPO算法使用动作掩码action mask的方法

以离散动作的PPO算法为例,Actor网络输出仍然是全部动作的动作概率,有两处需要增加动作掩码action mask,一处是选择动作select action采样时候,另一处是训练actor网络,经常容易忘记的是第二处训练actor网络的时候也是同样要带上采样时的action mask(参考资料:腾讯人工智能绝悟的action mask是什么意思? - 知乎 https://www.zhihu.com/question/446176024#)
在这里插入图片描述

动作掩码action mask代码实现

最初,我在实现动作掩码action mask的时候,是这样操作的:采样时logits层非法action对应位置换成一个绝对值很大的负数,再经过softmax函数以后非法动作的概率就变成0(参考资料:Softmax如何进行mask操作 - 知乎 https://zhuanlan.zhihu.com/p/543736799)。它会遇到报错:神经网络输出nan。一般来说,神经网络输出nan大概是因为梯度更新时除数遇到0、log函数遇到0的原因。

解决方法是不使用手工的softmax函数,采用torch.distributions.Categorical自带函数库(参考资料:PPO 实践指南 - 知乎 https://zhuanlan.zhihu.com/p/627389144)

参考资料

特别感谢以上参考资料博主的真诚分享!!!


http://www.niftyadmin.cn/n/1200279.html

相关文章

基于ArcGIS10.0和Oracle10g的空间数据管理平台十七(C#开发)-空间数据编辑(下)...

我的新浪微博:http://weibo.com/freshairbrucewoo。 欢迎大家相互交流,共同提高技术。 上一篇介绍了空间数据编辑一部分实现,今天继续完成剩余的部分实现。 1.根据选择编辑任务的不同显示不同形状的鼠标,以便指示相应任务方便编辑…

LinkedIn热 国内职业社交网络市场在哪里

美国最大的职业社交网站LinkedIn去年5月首次公开招股,在其近期发布的2011年第四季财报中显示其第四季营收为1.677亿美元,超过了市场分析师平均预计的1.598亿美元。目前LinkedIn的股价较去年5月首次公开招股的发行价上涨了70%。随着国外职业社…

c语言树莓派摄像头追踪球,树莓派超声波测距+蜂鸣器(c语言)

今天我们就来看看怎么把两个模块全都应用起来,做一个防盗装置。先来看一下各个引脚的连接方式(需要七根母对母的杜邦线):超声波模块:1.Vcc:接5V电源(接1号引脚)2.Trig:输出端口(接16号引脚)3.Echo:输入端口…

EJB事务管理

EJB事务处理: Reference: Enterprise JavaBean 3.0. 涉及业务:ATM存款、取款、转账;在线图书的订购;医疗系统对于患者的病情的记录。 EJB事务特征:ACID (原子性Atomic、一致…

c语言 怎么对百位数求余量,PLC题

5、PLC输出接口电路( B )响应时间最长。A、SSRB、继电器C、双向可控硅D、晶体管6、OUT指令对于( A )是不能使用的A、输入继电器B、输出继电器C、辅助继电器D、状态继电器7、串联电路块并联连接时,分支的结束用( C )指令A、AND/ADIB、OR/ORIC、ORBD、ANB8、使用(B )指…

XSS处理(转)

最近看到一些防范XSS方面比较好的文章,和大家分享一下: 解析如何防止XSS跨站脚本攻击: http://security.ctocio.com.cn/wpsummary/26/8710026.shtml ESAPI: Enterprise Security: http://www.cnblogs.com/coderzh/archive/2009/01/16/1377140.html 一些…

javascript 控制文本框输入格式

1、只允许输入数字 <input name"username" type"text" οnkeyup"valuethis.value.replace(/\D/g,’’)"> 2、只允许输入英文字母、数字和下划线(以下二种方法实现) <input name"username" type"text" style"i…

c程序设计语言k rpdf,《C程序设计语言》(KR)中文高清非扫描件

php SPL学习数据结构 SplDoublyLinkedList - 该SplDoublyLinkedList类提供了一个双向链表的主要功能 SplStack - 该SplStack类提供了一种使用双向链表实现栈的主 ...Lucas的数论&lpar;math&rpar;Lucas的数论(math) 题目描述 去年的今日,Lucas仍然是一个热爱数学的孩子.…