一个AC类算法策略loss引出的思考

记录

在记录DDPG等AC算法的loss时,发现其loss如下图:
在这里插入图片描述
在这里插入图片描述

最开始的想法:策略pi的loss不是负的q值吗,如果loss_pi增大意味着q减小,pi不是朝着q增大的方向吗?

经过和别人的讨论以及自己的思考,得出如下结论:

  • 我的环境所有奖励都是负奖励,这是这个问题思考的基础点。
  • 由于都是负奖励,所以无论是什么策略下的Q值都是负数,最优策略下的Q值也是负数。
  • Critic网络在初始化后权重都是非常接近0的数,导致Critic网络的所有预测Q值都接近0,而loss_pi是batch_size个负Q的均值,因此此时loss_pi接近0,这解释了loss_pi的起点为什么是0。
  • 明确一个观点:loss_pi增大并不是策略网络不收敛,因为AC算法的Actor大都采用的是使用策略梯度进行网络更新,其loss仅仅是负Q的平均,而Q是在接近最优Q的(在纯负奖励环境下最优Q为负,这里严谨一点是在接近当前策略的Q,它也是一个负数),因此actor的loss收敛到0才是不正常的。这是我一开始觉得困惑的根源。
  • 在上面的训练过程中,actor要做的仅仅是在每次更新的时候在状态 s t s_t st下尽可能的让输出 μ ( s t ) \mu(s_t) μ(st)朝着能使critic网络输出更大的方向前进,而此时critic网络的输出整体都在减小(从0到一个负值)去逼近当前策略的Q值,因此actor的loss会因critic网络的更新而逐步上升(从0到一个正值)。
  • 为什么loss_pi最后趋于平缓?AC算法的更新时一种类似策略迭代的算法(注意是类似),actor网络和critic网络都在动态更新,actor一开始的策略是不好的,actor始终在慢慢根据critic网络改善策略,而critic网络也在逐步收敛到当前策略下的Q值,这至少是减小与最优Q值的距离,两个网络“对抗”(类似GANs),最终收敛。loss_pi趋于平缓说明Critic网络从最开始输出为0这种无论离何种策略的Q值都相去甚远的情况已经过渡到Critic网络接近当前actor策略的Q值。此时critic变化减缓,因此loss_pi也逐步平缓。在理想情况下,critic收敛到最优策略下的Q值,而actor为最优策略,此时Q值已经达到任何策略的最大值( Q ∗ Q^* Q的定义),因此loss_pi不会有上升或者下降的趋势。
  • 强化学习是无监督学习,不能用一些监督学习的思想来思考问题,loss并不是收敛到0才是正常的,反而有些时候收敛到0是很不正常的。actor是否学到东西并不能通过loss直观判断,只要critic网络在正常收敛,actor让每一个状态下critic输出最大的行为总会使策略逐渐变好。

猜你喜欢

转载自blog.csdn.net/weixin_43145941/article/details/115342794