强化学习:并行强化学习——"terminated"和"truncated"是否有必要进行区分
强化学习(并行强化学习)一般都不会对"terminated"和"truncated"进行区分,可以说默认是不进行区分的,但是也有人提出了不同的观点,也就是认为应该进行区分,本文就对这个问题进行一定的分析。
"terminated",代表着episode的结束,也就是end状态;
"truncated",代表着episode过长,然后被环境强行阶段;
在并行强化学习中一般默认不对这二者进行区分,也就是说将"truncated"默认当作"terminated"进行处理,这样在实际的操作中都是将新的episode的reset的observation作为"terminated"和"truncated"的下一个step的observation,但是由于在使用"terminated"进行折扣奖励和的计算时对下一个step的observation也就是next_observation的函数估计的value是需要乘以mask的,这时的mask是False,因此"terminated"状态是不会有什么计算误差的,因为"terminated"的状态是一个episode的结束状态,其计算时本身也不需要对next_observation的value进行计算,但是"truncated"状态却不是这样。
也就是说如果将"truncated"状态按照"terminated"的状态进行一样的value的计算,必然会导致这个 "truncated" 状态在进行value计算时出现计算错误或者说是计算误差。于是就出现了这个问题,那就是如果"truncated" 状态按照这种方式进行计算必然导致其他相关的状态observation的value估计出现误差,这里假设折扣因子为0.95,于是我们可以知道该种计算方法会导致"truncated" 状态的前11个左右的状态在估计value时出现明显误差(错误),当然这里其实暗含一个假设的,那就是"truncated" 状态如果不按照"terminated"的状态的方式计算value的话其真实的value值也不会是一个极大的数值,否则如果"truncated" 状态真实value是一个极大的数值的话,那么其所影响的前面的observation的value估计将不止11个。由于我们在进行强化学习计算时一般都是会对每一步的reward进行规范化,这样的话就可以保证每一个状态observation的真实的value估计值不至于过大,同时这也是受episode的长度所制约的,因为如果episode的不被截断的长度过长的话也必然出现某些状态的value的真实估计值为一个较大的数值。
(根据强化学习的梯度策略的定理可以知道,对reward进行规范化是不会影响RL计算的,毕竟在梯度策略定理中真实的参与计算的其实不是q,也不是value,而是advantage)
经过上面的分析可以知道,在并行强化学习中将"terminated"和"truncated"状态不进行区分是一般不会对整体计算有严重影响的。当然也是存在会出现显著误差,或者影响RL算法性能的情况,比如截断的长度并不是很长的情况下,同时截断的状态会频繁的出现在其他episodes的非截断的step下,这样的情况下就会导致“truncated”状态直接当作“terminated”状态计算时带来严重的性能影响了,不过该种情景在现实的RL问题中并不是很常见,或者说以我个人的经验来说就没有遇到过,或者说目前我所遇到的RL问题都是可以在并行采样是将“truncated”状态直接当作“terminated”状态计算的。
为了减少“truncated”状态直接当作“terminated”状态计算所带来的误差影响,我们可以适当的将截断的长度放长,以减少“truncated”状态的这种计算方式带来的性能影响。
posted on 2025-04-04 18:34 Angry_Panda 阅读(165) 评论(0) 收藏 举报
浙公网安备 33010602011771号