我想在 keras 中剪辑奖励。我看到可以剪裁范数并将值剪裁为 sgd,如下所示:
sgd = optimizers.SGD(lr=0.01, clipnorm=1.)
sgd = optimizers.SGD(lr=0.01, clipvalue=0.5)
什么是削减标准和削减价值?
此外,如何实现对Adam的奖励削减?请让我知道我该怎么做?
我想在 keras 中剪辑奖励。我看到可以剪裁范数并将值剪裁为 sgd,如下所示:
sgd = optimizers.SGD(lr=0.01, clipnorm=1.)
sgd = optimizers.SGD(lr=0.01, clipvalue=0.5)
什么是削减标准和削减价值?
此外,如何实现对Adam的奖励削减?请让我知道我该怎么做?
在 Keras 中,梯度裁剪有两种主要形式:梯度范数缩放 ( clipnorm
) 和梯度值裁剪 ( clipvalue
)。
梯度范数缩放涉及当梯度向量的 L2 向量范数(平方值之和)超过阈值时,将损失函数的导数更改为具有给定向量范数。例如,我们可以指定范数为 1.0,这意味着如果梯度的向量范数超过 1.0,那么向量中的值将被重新缩放,使得向量的范数等于 1.0。
梯度值裁剪涉及如果梯度值小于负阈值或大于正阈值,则将损失函数的导数裁剪为具有给定值。例如,我们可以指定范数为 0.5,这意味着如果梯度值小于 -0.5,则将其设置为 -0.5,如果大于 0.5,则将其设置为 0.5。
自适应矩估计 (Adam) 的梯度裁剪语法非常简单,并遵循与上面显示的随机梯度下降 (SGD) 相同的语法:
opt_adam = optimizers.adam(clipnorm=1.)
opt_adam = optimizers.adam(clipvalue=0.5)