强化学习:如何计算被环境系统截断的terminated state的value值 —— (Bootstrap returns from value estimates if episode is terminated by timeout)
本文主题:如何计算强化学习中被环境系统截断的terminated state的value值
首先解释一下什么是强化学习中的terminated state的value值,强化学习就是一个智能体(agent)不断和环境交互的过程,而这个交互的过程分为无限步数和有限步数,即使面对有限步数的情况下往往由于步数过长我们也是将其视作无限步数的情况来对待处理的,也正是因此我们才需要对agent与环境的交互过程进行截断,于是便有了截断的terminated state的value值。
被截断的状态,即episode的最后一个状态的state的value值就是截断的terminated state的value值。
对待该问题的讨论分为两个情况,一种是非并行采样的情况,即agent与环境的交互是非并行的,另一种则是并行采样的情况。
串行采样(交互)/非并行情况:
环境系统返回给agent的截断terminated state是真实的 terminated state,此时我们可以根据state value的状态值估计函数获得估计值,比如在actor-critic算法总critic部分的拟合函数给出的值;但是在很多论文中在这种串行的环境下很多时候是不对terminated state是否被环境系统截断作区分的,如果这个terminated state是episode的自然结束的state,那么对应的state value为0,如果
个人在处理这个问题的时候习惯于不对截断的terminated state作区分,也就是默认认为terminated state的
不过必须要说的是,虽然做串行采样的论文是不对截断状态作区分的,但是有一小群的人却坚持对截断的terminated state作区分,并坚持使用这种减少方差的方法。
说下个人观点:
对不对这个截断的terminated state作区分主要看这个不作区分的话对算法性能是否有影响,如果这个episode的长度比较长,比如一个episode的长度是50,100,更或者是200,并且被截断的状态数量所占比例不是很高,那么不对截断的terminated state作区分也不会对算法性能有太多影响;但是如果episode长度比较短,比如步数在5步内,10步内这种,并且大比例的episode的最终状态是被截断的,并且截断的状态很有可能在其他的episode中以非终点状态的形式出现,那么不对截断的terminated state作区分就会明显影响强化学习算法性能。不过以我个人的经验来说,极少会遇到episode长度短,并且episode的最终状态大比例的是截断的terminated state,因此在我个人的应用环境背景下来说不对截断的terminated state作区分是完全可以接受和允许的。
并行采样(交互)/并行情况:
该种情况下与串行的情况最大的不同在于各大强化学习算法框架和加速库为了追求更高的计算效率和编码的模块性,于是把episode的初始化放在了并行环境的自动处理的环节中,也就是说该种情况下强化学习计算框架默认不返回信息显示状态是否为episode的最终结尾状态还是截断的terminated state,并且在不区分episode的最终状态和截断的terminated state的同时在返回状态信息时会自动返回下一个episode初始化时的状态;并且即使有的算法框架在自动对环境进行重新初始化并返回新episode的初始state的同时会返回上一个episode是否是被截断的信息,比如在返回的info信息中带有is_timeout的信息,如果这个字段为true,那么意味着上个episode的结束是被环境截断的,如果在done=true的同时is_timeout=false那么则意味着上个episode是自然终止的而不是因为超时而被环境截断的。
在强化学习的经典环节cart-pole的小车平衡杆问题中默认的limited time=200,也就是说如果一个episode的步数/长度小于200,那么这个episode必然是自然终止的,但是如果episode长度为200,那么大概率是被环境截断的,至于是不是一定是被环境截断的就需要看info信息中是否有is_timeout的信息。
本文讨论的并行采样的情况下是基于上述的并行强化学习算法的背景的,也就是说不论上一个episode是自然结束还是被环境截断的,返回的next state均为下一个episode的初始状态。
关于并行采样情况下如何处理截断状态的
Bootstrap returns from value estimates if episode is terminated by timeout. More info here: https://github.com/Denys88/rl_games/issues/128
注意,以下内容讨论的都是并行采样情况下区分截断的terminated state,如果不区分的话那么和串行采样时一样可以将最终state的
对于一些特定的环境问题,被环境截断是有一定比例,因此这种情况下就需要对截断状态作区分的。
地址:
https://github.com/Denys88/rl_games/issues/128
这里主要是讨论上面这个GitHub上的一个讨论帖子,这个帖子就并行采样时如何处理在区分terminated state时处理
为了解决在并行采样时大多数强化学习算法设计时为提高计算效率而不返回episode最后state的问题所导致无法正确使用bootstrap方法计算value return的问题,上面帖子中给出了https://github.com/Denys88/rl_games/blob/92525ce54da0c8a6f60c9d3f88e21ef47e5b24e7/rl_games/common/a2c_common.py#L618中的一个解决方法,那就是使用episode最后状态的前一个状态进行计算,也就是上面帖子中不使用
由于根据bootstrap value的计算方法可以知道:
因此episode最后一步reward平滑是指
那么也就是说最后一步reward平滑时
因此必有:
又由于:
可以得到:
而上面的这个表达就是在进行bootstrap value计算时使用后一个state替代前一个state时低偏差所要求的reward的平滑形式。
在实际的应用问题中,能完美符合上面的这种平滑形式的还是比较少的,但是一般待解决的问题的episode长度较长,从而导致根据episode最后一个state的
posted on 2024-09-26 22:32 Angry_Panda 阅读(43) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
2023-09-26 大连人工智能计算中心——高性能计算平台使用指南
2023-09-26 【转载】联合发布|面向眩晕诊疗的中文医疗对话大模型MedChat发布!
2023-09-26 品读论文《她为什么换了导师》—— 研究“她为什么换了导师”,华东师大一硕士学位论文走红
2022-09-26 在强化学习算法性能测试时使用训练好的模型运行游戏,此时如何控制实时游戏画面的帧数