强化学习过程中对产生的无效动作应该如何进行屏蔽处理?(强化学习中可变的动作空间怎么处理)
最近在做强化学习的过程中,由于动作的设置问题,在某些状态下,某一些动作是不能选择的,比如,在之前提到的一篇文献:
论文阅读|《强化学习在加工时间可变的机器人流水车间调度中的应用》_太剧烈的快乐与太剧烈的悲哀是有相同之点的——同样地需要远离人群!-CSDN博客https://blog.csdn.net/crazy_girl_me/article/details/120862356 这个描述的是一个机器人流水车间的调度问题,它的动作空间设定为机器人可到达的机器,动作空间的数量为机器总数+输入/输出缓冲区数,由于是流水车间,但到比较后面的状态时,有的机器已经不再参加加工过程,那么这个时候机器人选择不再进行加工的机器显然不合理的,这样的话就要禁止再选择这些机器了。
解决方法如果想要soft constraint,即直接训练,当算法给到不能选的动作就给一个很差的收益,如果想要hard constraint, 那就是“屏蔽”(”mask out“)无效的操作,仅从有效操作中进行采样,然而这一过程仍未得到充分的研究。
最近看的这篇论文《A Closer Look at Invalid Action Masking in Policy Gradient Algorithms》证明了无效操作屏蔽的标准工作机制对应于有效的策略梯度更新,并证明当无效动作空间较大时,无效动作掩蔽具有很好的伸缩性,而通常的对无效动作给予负奖励的方法将会失败当无效动作空间较大时,无效动作掩蔽具有很好的伸缩性,而通常的对无效动作给予负奖励的方法将会失败。
1 文章简介
这篇文章证明了无效动作掩蔽可以看作是在计算动作概率分布时应用状态相关的可微函数来产生行为策略。接下来,设计了实验来比较无效动作掩饰和无效动作惩罚的性能。
无效动作惩罚:这是一种常见的方法,对无效动作给予负奖励,以便Agent学习通过不执行任何无效动作来最大化奖励。
我们的经验表明,当无效行动的空间扩大时,无效行动掩蔽的规模很大,Agent解决了我们想要的任务,而无效行动惩罚甚至难以探索第一个奖励。
然后,设计了实验来回答两个问题:
(1)一旦用掩码训练Agent,去除无效操作掩码会发生什么?
(2)当我们通过从屏蔽的动作概率分布中采样动作,但使用未屏蔽的动作概率分布来更新策略梯度时,当我们单纯地实施无效动作屏蔽时,Agent的性能如何?
最后,出于可重现性的目的,在GitHub上提供了源代码:
vwxyzjn/invalid-action-masking: Source Code for A Closer Look at Invalid Action Masking in Policy Gradient Algorithms (github.com)https://github.com/vwxyzjn/invalid-action-masking
2 无效动作掩蔽
首先,让我们看看离散操作是如何通过策略梯度算法生成的。
大多数策略梯度算法都使用神经网络来表示策略,输出非标准化分数(logits),然后使用softmax 操作或等效操作将它们转换为动作概率分布,本文的其余部分以此作为假定的框架。为了说明的目的,考虑具有动作集A={a0,a1,a2,a3}和S={s0,s1}的MDP,其中MDP在初始状态s0中采取动作之后立即到达终端状态s1,并且奖励始终为+1。此外,考虑由πθ=[l0,l1,l2,l3]=[1.0,1.0,1.0,1.0]参数化的策略,出于本例的目的,该策略直接生成θ作为输出logit。那么我们就有了:
此时,常规策略梯度算法将对πθ(·|s0)中的操作进行采样。假设a0取自πθ(·|s0),策略梯度计算如下:
现在假设a2对于状态s0是无效的,并且唯一有效的动作是a0、a1、a3。无效操作屏蔽通过“屏蔽”对应于无效动作的logit来帮助避免采样无效动作。这通常是通过用一个大的负数M(例如M=−1×108)替换要屏蔽的动作的逻辑来实现的。让我们使用来表示该屏蔽过程,并且我们可以如下计算重新归一化的概率分布:
其中是屏蔽无效操作的结果概率,应该是一个很小的数字。如果选择为足够负,则选择屏蔽的无效动作a2的概率实际上为零。该episode结束后,策略将根据以下梯度进行更新,我们将其称为无效操作策略梯度:
这个例子强调了无效动作屏蔽似乎不仅仅是“重新规范化概率分布”;实际上,它使对应于无效动作的logit的梯度为零。
3 无效动作掩蔽会生成有效的策略梯度
动作选择过程受计算掩蔽的πθ外部进程的影响。因此,自然会想知道策略梯度是如何适用的?
分析表明,无效动作掩蔽过程可以看作是一个状态相关的可微函数,适用于的计算,因此无效动作策略可以看作是的策略梯度更新。
建议1:无效操动作策略是策略π0θ的策略。
证明:假设s∈S是任意的,并将无效动作掩蔽的过程视为一个可微函数,该函数被应用于由策略给定状态输出的Logits 。那么我们就有:
显然,对logit中的元素应用标识函数或常量函数。因为这两类函数是可微的,所以可导。因此,对于其参数θ是可微的。也就是说,对任意a∈A,s∈S存在,它满足策略梯度定理的假设。因此,无效操作策略是策略的策略梯度
4 实验
强化学习过程中对产生的无效动作应该如何进行屏蔽处理?(强化学习中可变的动作空间怎么处理)相关推荐
- 深度学习中的梯度下降优化算法综述
1 简介 梯度下降算法是最常用的神经网络优化算法.常见的深度学习库也都包含了多种算法进行梯度下降的优化.但是,一般情况下,大家都是把梯度下降系列算法当作是一个用于进行优化的黑盒子,不了解它们的优势和劣 ...
- 【ThinkGame】我对动作游戏的思考,以及一个游戏程序能为动作游戏做什么?
终于,我决定进入游戏行业,并踏进去了一只脚. 2019年的游戏<只狼>,让我看到了东方文化在动作游戏中的完美诠释,中国本应可以在以东方文化为卖点的电子游戏行业中大放光彩,却因为不可抗的力量 ...
- UI设计培训学习中必须掌握的设计原则
不管是刚开始学习UI设计或者已经在学习UI设计同学中,UI设计的设计原则都是非常重要的,需要大家去重点关注的,下面小编就为大家详细的介绍一下UI设计培训学习中必须掌握的设计原则. UI设计培训学习中必 ...
- java学习中,异常和错误的简介、捕获异常、抛出异常、自定义异常、finally关键字(java 学习中的小记录)
java学习中,异常和错误的简介.捕获异常.抛出异常.自定义异常.finally关键字(java 学习中的小记录) 参考文章: (1)java学习中,异常和错误的简介.捕获异常.抛出异常.自定义异常. ...
- 深度学习中:epoch、batch size和iterations之间的关系
机器学习中:epoch.batchsize和iterations之间的关系 在深度学习中,epoch.batchsize和iterations是在训练模型时,一定用到的一些概念.那么分别是什么意思呢? ...
- 深度学习中的卷积操作
本文从信号处理中的互相关运算引入深度学习中的卷积. 然后介绍了不同的卷积类型,以及如何在pytorch中使用这些卷积层. (在看pytorch文档中的Conv1D/2D/3D的时候感到比较困惑,又很好 ...
- 强化学习中状态价值函数和动作价值函数的理解
考虑这样的一个选路径问题 从s点出发,有0.6的概率到a点,0.4的概率到b点,sa路径的回报是1,sb路径的回报是2,后面同理,箭头下面的选择这条路的概率,上面的数字是这条路的回报.目的地是g点. ...
- 【机器学习】带你轻松理解什么是强化学习中的状态动作函数 ?
系列文章目录 第十八章 Python 机器学习入门之强化学习 目录 系列文章目录 前言 一.状态动作函数的定义 二.直观理解 三.将状态动作函数与回报和策略联系起来 总结 前言 强化学习中的状态动作函 ...
- 《强化学习周刊》第26期:UCL UC Berkeley发表深度强化学习中的泛化研究综述、JHU推出基于强化学习的人工决策模型...
No.26 智源社区 强化学习组 强 化 学 习 研究 观点 资源 活动 关于周刊 强化学习作为人工智能领域研究热点之一,其研究进展与成果也引发了众多关注.为帮助研究与工程人员了解该领域的相关进展和 ...
- 最新综述 | 强化学习中从仿真器到现实环境的迁移
©PaperWeekly 原创 · 作者|李文浩 学校|华东师范大学博士生 研究方向|强化学习 最近 survey 了一下 sim2real 领域最近的相关工作,先整理个第一版(共有七篇论文)的总结. ...
最新文章
- think组合查询AND和OR一起用
- RPM包管理命令rpm
- 字节 字符 utf-8 unicode 以及提交表单验证字符长度 .......
- 计算机硬件知识竞赛题库,电脑知识竞赛题库.pdf
- React开发(200):三种截取字符串的方法
- fastify 后台_如何使用Fastify启动和运行
- 深入理解ArrayList
- python读写配置文件使用总结与避坑指南
- iOS 开发中,单款应用程序的最大可用内存是多少?
- M1升级MacOS Monterey后,如何使用空间音频?
- 数据分析为何能指导商业决策?
- SWF 学习笔记 ——《如何在内存中提取出加密的SWF》
- 计算机磁盘坏道怎么隔离,小科普 | 硬盘坏道就凉凉?把它隔离出去吧!(DLC)...
- 苹果在新西兰的所得税都缴纳给了澳大利亚
- 国家省、市、县、镇/街道地址
- 做完系统回来计算机连接不上网络,电脑重装win7系统后连不上网怎么办_win7重装系统连不上网如何解决...
- OpenCV C++入门,读取和显示一张图片
- python实现微信接龙统计
- 浅谈:UEO就是SEO的一种
- 孤独是上天的礼物 | 真北读书