简单强化学习算法的损失函数

2024-09-28 03:13:55 发布

您现在位置:Python中文网/ 问答频道 /正文

这个问题来自于观看下面的来自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代表失败作为奖励。在所提供的代码中,任何交叉熵损失乘以负回报都会非常低?如果训练操作是用优化器来最小化损失,那么算法是训练成损失的?在

或者我缺少一些基本的东西(可能是因为我的数学能力有限)


Tags: 代码httpscom算法视频youtubetensorflowwww
1条回答
网友
1楼 · 发布于 2024-09-28 03:13:55

好问题科里。我还想知道这个在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

现在,如果你有一个巨大的负回报,它将转化为一个非常大的损失。在

我希望这有道理。在

相关问题 更多 >

    热门问题