削减 keras 中亚当优化器的奖励

数据挖掘 神经网络 深度学习 喀拉斯 优化 梯度下降
2021-10-02 15:47:45

我想在 keras 中剪辑奖励。我看到可以剪裁范数并将值剪裁为 sgd,如下所示:

sgd = optimizers.SGD(lr=0.01, clipnorm=1.)
sgd = optimizers.SGD(lr=0.01, clipvalue=0.5)

什么是削减标准和削减价值?

此外,如何实现对Adam的奖励削减?请让我知道我该怎么做?

1个回答

在 Keras 中,梯度裁剪有两种主要形式:梯度范数缩放 ( clipnorm) 和梯度值裁剪 ( clipvalue)。

1. 梯度范数缩放

梯度范数缩放涉及当梯度向量的 L2 向量范数(平方值之和)超过阈值时,将损失函数的导数更改为具有给定向量范数。例如,我们可以指定范数为 1.0,这意味着如果梯度的向量范数超过 1.0,那么向量中的值将被重新缩放,使得向量的范数等于 1.0。

2.梯度值裁剪

梯度值裁剪涉及如果梯度值小于负阈值或大于正阈值,则将损失函数的导数裁剪为具有给定值。例如,我们可以指定范数为 0.5,这意味着如果梯度值小于 -0.5,则将其设置为 -0.5,如果大于 0.5,则将其设置为 0.5。

3. Keras 语法

自适应矩估计 (Adam) 的梯度裁剪语法非常简单,并遵循与上面显示的随机梯度下降 (SGD) 相同的语法:

opt_adam = optimizers.adam(clipnorm=1.)
opt_adam = optimizers.adam(clipvalue=0.5)