它的问题在于之前默认在训练过程,agent做出动作之后,环境的state立刻做出了相对于动作的改变,reward也是针对于该action的。
而CDMDP中,要么是action会被延迟才有作用,要么是环境的state和reward要延迟。总之都是在t时刻,Atcion_t和State_t、Reward_t不是对应的关系。针对我们的情况state_t和reward_t是和action_t-50对应的。
之前游戏的例子、围棋的例子三者都是对应的,只是设置奖励是需要在最后给予大的奖励。
CDMDP也是强化学习为什么在真实世界中应用较少的一个原因,现实世界中延迟是很常见的,而基于虚拟器创建的模型在面对现实的延迟之后性能会变得很差。
假设CDMDP就是MDP,需要延迟时间较短。
按照韩楚的论文,延迟在2ms-5ms,之前都用的5ms,改为2ms后效果依然不好
参考:Markov Decision Processes With Delays andAsynchronous Cost Collection
使用一个预测模型P来预测延迟之后的状态。 参考:
Learning and planning in envs with delayed feedback, (2008)[5]
At Human Speed: Deep RL with action delay, (2018)[6]
Recurrent PPO 是一种基于 PPO 的变体,它引入了循环神经网络(RNN)以处理时序数据和状态之间的时序关系。
Recurrent PPO 通常用于处理需要考虑先前状态的任务,例如部分可观察的环境或需要记忆的序列性任务。
RNN 在 Recurrent PPO 中用于捕捉状态之间的时序依赖性,以帮助智能体更好地理解环境的动态性,并在长时间跨度内进行决策。
效果还不行
在没有连接jupyter的情况下,运行两次以上后,报错:无法识别 update_on_minor_steps 参数;
定制模块不能显示icon
定制模块多个参数的情况下,重写的set_parameters函数只被调用了一次(除了针对update_on minor_step参数),且前端的参数无法传入后端。
本文章使用limfx的vscode插件快速发布