如何使用交叉熵损失函数处理策略梯度中的负奖励?

人工智能 强化学习 政策梯度 奖励 交叉熵 随机梯度下降
2021-11-15 23:18:59

我在我的强化学习算法中使用策略梯度,有时我的环境会在做出错误的举动时提供严重的惩罚(即负奖励)。我正在使用具有随机梯度下降的神经网络来学习策略。为此,我的损失本质上是动作分布的交叉熵损失乘以折扣奖励,其中奖励通常是正数。

但是我该如何处理负面奖励呢?由于损失偶尔会变为负数,它会认为这些动作非常好,并会加强惩罚方向的权重。这是正确的,如果是,我能做些什么呢?


编辑:

再想一想,SGD 不一定会直接削弱权重,它只会加强梯度方向的权重,并且作为副作用,梯度之外的其他状态的权重会减小,对吗?所以我可以在奖励为负数时简单地设置reward=0,而这些状态将在梯度更新中被忽略。不考虑那些非常糟糕的状态似乎仍然是徒劳的,最好以某种方式将它们包括在内。除非我在这里误解了一些基本的东西。

2个回答

这取决于您的损失函数,但您可能需要对其进行调整。

如果您正在使用类似 的更新规则loss = -log(probabilities) * reward,那么当您意外获得大笔奖励时,您的损失会很大——策略将更新以使该操作更有可能实现该收益。

相反,如果你以高概率获得负奖励,这将导致负损失——然而,在最小化这种损失时,优化器将尝试通过使对数概率更负(即通过使该动作的可能性较小) - 所以它有点像我们想要的那样。

然而,当我们可能想要相反的情况时,现在不可能的大负损失比可能的损失更大。因此,loss = -log(1-probabilities) * reward当奖励为负时可能更合适。

交叉熵损失将始终为正,因为概率在范围内[0,1], 所以-ln(p)将永远是积极的。