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]

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

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

我的训练曲线如下图所示: 训练曲线

4

2 回答 2

1

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

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

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

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

于 2020-11-12T11:24:14.817 回答
-1
  1. 据我所知,通常采用PG来处理连续动作。您可能需要尝试基于价值的算法。
  2. softmax 的实现是否正确?在此处粘贴您的代码,或者一些学习过程的指标可能会有所帮助
于 2020-11-03T12:45:19.727 回答