REINFORCE 算法中使用的损失让我感到困惑。
来自Pytorch 文档:
loss = -m.log_prob(action) * reward
我们希望尽量减少这种损失。
如果采取以下示例:
- 行动 #1 给予低奖励(例如 -1)
- 行动 #2 给予高回报(例如 +1)
为了简单起见,让我们比较每个动作的损失,考虑到两者具有相同的概率:
p(a1) = p(a2)
= >m.log_prob(a1) = m.log_prob(a2)
然后loss(a1) = -m.log_prob(a1) * reward(a1) = m.log_prob(a1)
然后loss(a2) = -m.log_prob(a2) * reward(a2) = -m.log_prob(a2) = -m.log_prob(a1)
因为loss(a1) < loss(a2)m.log_prob(X) < 0
在这里我不明白这个结论:损失被最小化,这意味着与高损失相比,小损失是好的。
所以这意味着行动#1 与行动#2 相比是好的?但奖励却说反了!