我一直在尝试理解关于软演员评论家的博客,其中我们有一个神经网络表示一个策略,该策略输出给定状态下动作的高斯分布的均值和标准差。由于无法通过随机节点直接反向传播,因此应用了重新参数化技巧,如下所示:
`normal = Normal(0, 1)
z = normal.sample()
action = torch.tanh(mean+ std*z.to(device))
log_prob = Normal(mean, std).log_prob(mean+ std*z.to(device)) - torch.log(1 - action.pow(2) + epsilon)
return action, log_prob, z, mean, log_std`
我想知道 log_prob 术语是如何得出的。任何帮助将不胜感激。