我一直在尝试了解soft actor critic上的博客,其中有一个神经网络,代表一个策略,该策略针对给定状态输出动作的高斯分布的均值和标准差。由于不可能通过随机节点进行直接反向传播,因此重新参数化技巧如下:
`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术语是如何派生的。任何帮助将不胜感激。