如何解决策略梯度中的零概率问题?
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]
这个问题严重影响了最终的性能,因为神经网络只会在几步之后尝试持续的动作。那么,有什么办法可以解决这个问题吗?
(顺便说一句,即使我尝试给神经网络一些负面奖励,它选择的动作仍然没有改变。)
我的训练曲线如下图:
- 据我所知,一般都是采用PG来处理连续动作。您可能需要尝试 Value-based 算法。
- softmax实现对了吗?在此处粘贴您的代码或一些学习过程的指标可能会有所帮助
事实上,没有确定的方法来解决这个问题,因为这是优化领域中一个古老的问题,称为“探索-利用困境”。具体来说,在强化学习中,有两种简单的方法可以解决这个问题:
- 首先,降低学习率是解决这个问题最简单的方法。使用较低的学习率,策略网络可以探索更多不同的动作,从而避免陷入局部最优。
- 其次,在损失函数中加入策略熵项是解决这个问题的另一种方法。这个想法的一个很好的例子是软演员评论家 (SAC) 算法。
这两种方法都在我的任务中得到了验证,都有效的缓解了早熟问题。但是两者都有一个参数需要手动调优,增加了我算法的复杂度。
顺便说一句,类似于Q-Learning,我们也可以使用epsilon-greedy机制来鼓励agent去探索更多的动作。但是,这不是解决此问题的优雅方法,因为很难确定 epsilon 值。
最近,我尝试将朴素的策略梯度方法应用于我的问题。但是,我发现最后一层神经网络的不同输出之间的差异很大,这意味着应用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]
这个问题严重影响了最终的性能,因为神经网络只会在几步之后尝试持续的动作。那么,有什么办法可以解决这个问题吗?
(顺便说一句,即使我尝试给神经网络一些负面奖励,它选择的动作仍然没有改变。)
我的训练曲线如下图:
- 据我所知,一般都是采用PG来处理连续动作。您可能需要尝试 Value-based 算法。
- softmax实现对了吗?在此处粘贴您的代码或一些学习过程的指标可能会有所帮助
事实上,没有确定的方法来解决这个问题,因为这是优化领域中一个古老的问题,称为“探索-利用困境”。具体来说,在强化学习中,有两种简单的方法可以解决这个问题:
- 首先,降低学习率是解决这个问题最简单的方法。使用较低的学习率,策略网络可以探索更多不同的动作,从而避免陷入局部最优。
- 其次,在损失函数中加入策略熵项是解决这个问题的另一种方法。这个想法的一个很好的例子是软演员评论家 (SAC) 算法。
这两种方法都在我的任务中得到了验证,都有效的缓解了早熟问题。但是两者都有一个参数需要手动调优,增加了我算法的复杂度。
顺便说一句,类似于Q-Learning,我们也可以使用epsilon-greedy机制来鼓励agent去探索更多的动作。但是,这不是解决此问题的优雅方法,因为很难确定 epsilon 值。