A2C中的梯度计算
Gradient calculation in A2C
在 A2C 中,演员和评论家算法,权重通过等式更新:
delta = TD 误差和
theta = theta + alpha*delta*[Grad(log(PI(a|s,theta)))] 和
w = w + beta*delta*[Grad(V(s,w))]
所以我的问题是,当使用神经网络来实现这个时,
梯度是如何计算的
我是否更正了权重是通过 TensorFlow 或 PyTorch 中的优化 fmethods 更新的?
谢谢,乔恩
我不太清楚你用 w
更新的意思,但我会回答 theta
的问题,假设它表示演员模型的参数。
1) 梯度可以通过多种方式计算,但如果专注于 PyTorch,则可以在 f(x)=alpha 上调用 .backward()
* delta * log(PI(a|s,theta),它将 df/dx 对于每个通过 autograd 链接到 f(x) 的参数 x。
2) 你确实是正确的,权重是通过 Pytorch 中的优化方法(具体来说,autograd)更新的。但是,为了完成优化步骤,您必须使用您想在网络参数(例如权重和偏差)上使用的任何优化器来调用 torch.optim.step
。
在 A2C 中,演员和评论家算法,权重通过等式更新:
delta = TD 误差和
theta = theta + alpha*delta*[Grad(log(PI(a|s,theta)))] 和
w = w + beta*delta*[Grad(V(s,w))]
所以我的问题是,当使用神经网络来实现这个时,
梯度是如何计算的
我是否更正了权重是通过 TensorFlow 或 PyTorch 中的优化 fmethods 更新的?
谢谢,乔恩
我不太清楚你用 w
更新的意思,但我会回答 theta
的问题,假设它表示演员模型的参数。
1) 梯度可以通过多种方式计算,但如果专注于 PyTorch,则可以在 f(x)=alpha 上调用 .backward()
* delta * log(PI(a|s,theta),它将 df/dx 对于每个通过 autograd 链接到 f(x) 的参数 x。
2) 你确实是正确的,权重是通过 Pytorch 中的优化方法(具体来说,autograd)更新的。但是,为了完成优化步骤,您必须使用您想在网络参数(例如权重和偏差)上使用的任何优化器来调用 torch.optim.step
。