强化学习中的Terminated 和 Truncated
深度强化学习的流程可以抽象为以下步骤的重复:
- 智能体与环境交互产生并存储经验
- 智能体从经验中进行学习
本文主要探讨在收集经验过程中,环境自然结束(Terminated,包括目标成功,失败等)和人为截断(Truncated,主要为达到一定步数结束)对经验收集和训练产生的影响,以及如何对其进行处理。并对其进行了部分实验来比较性能。
Q-Learning 简介
在Q-Learning系列算法中,智能体要学习估计每个状态
写在一起为:
1 | q_target = reward + self._gamma * max_next_q_value * (1 - done) |
截断问题
Q-Learning的关键在于对于值函数的准确估计,如果环境在推演过程中被人为截断,如果被当作环境终止来处理,则对
因此,在经验记录和reward设计时,除了要考虑环境自然结束(Terminated)外,也要考虑提前终止等人为截断(truncated)的情况。强化学习环境库gym
从0.26
版本开始,每个step都会返回这两个信息,从而方便训练。
考虑截断的情况下,
1 | q_target = reward + self._gamma * max_next_q_value * (1 - done + truncated) |
实验对比
本文在gym
的CartPole-v1
环境上进行测试,最大回合数设为200,训练步数为500,隐层网络为2层64节点的全连接网络,每步训练次数为8,buffer
size为100000,batch size为64,最小训练经验数为500,初始
1 | def cart_pole_v1(params): |
在DQN算法中实验结果如图1所示:
在Double DQN算法中实验结果如图2所示:
在Dueling DQN算法中实验结果如图3所示:
在D3QN算法中实验结果如图4所示:
上述实验结果表明,相比于不考虑截断,考虑截断情况之后,算法的训练更加稳定,最终收敛的结果方差较小。但考虑截断并不能明显提升Q-Learning系列算法的收敛速度或是表现性能。它更多的是提升了训练时的稳定性。
预览: