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

问题描述 投票:0回答:2

最近,我尝试将朴素的策略梯度方法应用于我的问题。然而,我发现神经网络最后一层的不同输出之间的差异是巨大的,这意味着应用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]

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

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

我的训练曲线如下:

reinforcement-learning policy-gradient-descent
2个回答
1
投票

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

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

这两种方法都在我的任务中得到了验证,并且都有效缓解了早熟问题。然而,它们都有一个需要手动调整的参数,这增加了我算法的复杂性。

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


-1
投票
  1. 据我所知,PG通常用来处理连续动作。您可能需要尝试基于值的算法。
  2. softmax 实施正确吗?将您的代码粘贴到此处或学习过程的一些指标可能会有所帮助
© www.soinside.com 2019 - 2024. All rights reserved.