如何解决策略梯度中的零概率问题?

How to solve the zero probability problem in the policy gradient?

最近,我尝试将朴素的策略梯度方法应用于我的问题。但是,我发现最后一层神经网络的不同输出之间的差异很大,这意味着应用softmax层后,只有一个动作会被标记为1,其他动作都会被标记为0。例如,最后一层的输出如下图:

[ 242.9629, -115.6593,   63.3984,  226.1815,  131.5903, -316.6087,
 -205.9341,   98.7216,  136.7644,  266.8708,   19.2289,   47.7531]

应用softmax函数后,很明显只会选择一个动作。

[4.1395e-11, 0.0000e+00, 0.0000e+00, 2.1323e-18, 0.0000e+00, 0.0000e+00,
 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0000e+00, 0.0000e+00, 0.0000e+00]

这个问题严重影响了最终的性能,因为神经网络只会在几步之后尝试持续的动作。那么,有什么办法可以解决这个问题吗?

(顺便说一句,即使我尝试给神经网络一些负面奖励,它选择的动作仍然没有改变。)

我的训练曲线如下图:

  1. 据我所知,一般都是采用PG来处理连续动作。您可能需要尝试 Value-based 算法。
  2. softmax实现对了吗?在此处粘贴您的代码或一些学习过程的指标可能会有所帮助

事实上,没有确定的方法来解决这个问题,因为这是优化领域中一个古老的问题,称为“探索-利用困境”。具体来说,在强化学习中,有两种简单的方法可以解决这个问题:

  1. 首先,降低学习率是解决这个问题最简单的方法。使用较低的学习率,策略网络可以探索更多不同的动作,从而避免陷入局部最优。
  2. 其次,在损失函数中加入策略熵项是解决这个问题的另一种方法。这个想法的一个很好的例子是软演员评论家 (SAC) 算法。

这两种方法都在我的任务中得到了验证,都有效的缓解了早熟问题。但是两者都有一个参数需要手动调优,增加了我算法的复杂度。

顺便说一句,类似于Q-Learning,我们也可以使用epsilon-greedy机制来鼓励agent去探索更多的动作。但是,这不是解决此问题的优雅方法,因为很难确定 epsilon 值。