【发布时间】:2021-03-22 09:26:27
【问题描述】:
在OpenAI Five paper 中提到,“每个参数的梯度被额外裁剪到 ±5√v 之间,其中 v 是(未剪裁的)渐变的第二个时刻。”。这是我想在我的项目中实现的东西,但我不知道如何在理论上和实践中做到这一点。
从wikipedia 我发现“第二个中心矩是方差。方差的正平方根是标准差 [...]”。关于“运行估计”,我最好的猜测是它是指数移动平均线。网络的梯度可以通过this comment suggests 访问。
据此,我假设 √v 是标准开发的指数运行平均值。的梯度,可以通过以下方式计算:
estimate = alpha * torch.std(list(param.grad for param in model.parameters())) + (1-alpha) * estimate
我的理论正确吗?有更好的方法吗? 提前致谢。
编辑:在Mr. For Example"s 回答之后固定梯度收集。
【问题讨论】:
-
这个问题不仅与pytorch有关,还与机器学习等其他更通用的领域有关,建议您在上面添加更多标签。
标签: machine-learning pytorch reinforcement-learning