这个问题来自于观看下面的来自googlei/o18的TensorFlow和强化学习视频:https://www.youtube.com/watch?v=t1A3NTttvBA
在这里,他们训练了一个非常简单的RL算法来玩乒乓球游戏。在
在他们使用的幻灯片中,损耗定义如下(约为11m 25s):
loss = -R(sampled_actions * log(action_probabilities))
此外,它们还显示以下代码(约为20m 26s):
^{pr2}$现在我的问题是:他们用+1表示胜利,-1代表失败作为奖励。在所提供的代码中,任何交叉熵损失乘以负回报都会非常低?如果训练操作是用优化器来最小化损失,那么算法是训练成损失的?在
或者我缺少一些基本的东西(可能是因为我的数学能力有限)
好问题科里。我还想知道这个在RL中流行的损失函数到底意味着什么。我已经看到了它的许多实现,但是很多都是相互矛盾的。据我所知,这意味着:
损失=-log(pi)*A
其中A是与基线情况相比的优势。在Google的例子中,他们使用的基线是0,所以a=R。这个值乘以那个特定时间的特定动作,所以在上面的例子中,动作被热编码为[1,0,0]。我们忽略0,只取1。因此我们得到了上面的等式。在
如果你凭直觉计算出负回报的损失:
损耗=(-1)*对数(p)
但对于任何小于1的p,该值的log将为负。因此,你有一个负损失,可以解释为“非常好”,但实际上没有物理意义。在
正确的方法:
但是在我看来,请别人纠正我,如果我错了,你不要直接计算损失。你取损失的梯度。也就是说,取-log(pi)*A的导数
因此,您可以:
-(d(π)/pi)*A
现在,如果你有一个巨大的负回报,它将转化为一个非常大的损失。在
我希望这有道理。在
相关问题 更多 >
编程相关推荐