我正在阅读Andrej Karpathy 关于使用策略梯度进行强化学习的代码。我对代码有一些疑问。
计算概率的对数在哪里?我在代码中没有看到他在计算。
请给我解释一下
dlogps.append(y - aprob)
线的用途。我知道这是在计算loss
,但这在我们没有正确标签的强化学习环境中有何帮助?工作情况如何
policy_backward()
?权重如何变为上述损失函数?更具体地说,dh
这里有什么?
我正在阅读Andrej Karpathy 关于使用策略梯度进行强化学习的代码。我对代码有一些疑问。
计算概率的对数在哪里?我在代码中没有看到他在计算。
请给我解释一下dlogps.append(y - aprob)
线的用途。我知道这是在计算loss
,但这在我们没有正确标签的强化学习环境中有何帮助?
工作情况如何policy_backward()
?权重如何变为上述损失函数?更具体地说,dh
这里有什么?
logp
在代码中看到的实际上logit p
是有这个故事的:给定概率 p,相应的赔率计算为 p / (1 – p)。例如,如果 p=0.75,赔率是 3 比 1:0.75/0.25 = 3。
logit 函数只是几率的对数:logit(x) = log(x / (1 – x))。
Sigmoid nearlogp
如下:
logit 函数的反函数是 sigmoid 函数。也就是说,如果你有一个概率 p,sigmoid(logit(p)) = p。
资料来源:[1]
例如,在 Pong 中,我们可以等到游戏结束,然后获取我们获得的奖励(如果我们赢了,则为 +1,如果我们输了,则为 -1),然后输入该标量作为我们所采取行动的梯度(DOWN在这种情况下)。在下面的示例中,DOWN 最终导致我们输掉比赛(-1 奖励)。因此,如果我们将 DOWN 的对数概率填入 -1 并进行反向传播,我们会发现一个梯度会阻止网络在未来对该输入采取 DOWN 动作(这是正确的,因为采取该动作会导致我们输掉比赛)。
粗略地说,反向传播是在一轮完成后向后校正网络的权重。更详尽的解释在提到的评论部分。
资料来源: