Adagrad 可以用来优化不可微函数吗?

数据挖掘 神经网络 优化
2022-02-15 13:37:10

我正在读一本书(TensorFlow For Dummies,Matthew Scarpino),这里说:

Adagrad 方法计算次梯度而不是梯度。次梯度是适用于不可微函数的梯度的泛化。这意味着 AdaGrad 方法可以优化可微和不可微函数。

但我在其他任何地方都没有看到过这样的说法。所以我想知道:

我们真的可以仅仅因为使用 Adagrad 就优化不可微的损失函数吗?

1个回答

这本书有一个误解(但它的来源是可以理解的)。

如果您可以计算次梯度,则可以使用梯度下降。您不必使用 AdaGrad——您可以使用任何您喜欢的渐变方法。基本上,您只需在更新步骤中使用次梯度代替梯度。参见例如https://en.wikipedia.org/wiki/Subgradient_method

AdaGrad是对梯度下降的调整,它调整更新步骤。我相信 AdaGrad 与您在更新步骤中使用子梯度还是梯度是正交的。

我可以看出误会是从哪里来的。关于 AdaGrad 的原始论文谈到了次梯度方法。但是,如果您仔细阅读介绍,您将认识到那里发生了什么。次梯度方法是一个更广泛的类别,包括普通梯度下降和次梯度下降。因此,本文只是试图尽可能笼统。他们的方法既适用于普通梯度下降,也适用于次梯度下降。