为什么在共轭梯度法上使用梯度下降法?

人工智能 机器学习 优化 梯度下降 共轭梯度法
2021-11-10 10:45:44

根据一些初步研究,共轭梯度法与梯度下降法几乎完全相同,只是搜索方向必须与上一步正交。

从我读到的内容来看,这个想法往往是共轭梯度法比常规梯度下降法更好,所以如果是这样,为什么要使用常规梯度下降法?

此外,我知道诸如Powell 方法之类的算法使用共轭梯度法来查找最小值,但我也知道 Powell 方法在查找参数更新时计算量很大,因为它可以在任意函数上运行,而无需查找计算图。更具体地说,当在神经网络上运行梯度下降时,每个参数的梯度都是在后向传递中计算的,而 Powell 方法只是根据我的理解在这一步计算整个函数的梯度。(请参阅scipy 的最小化,从技术上讲,您可以将整个神经网络传递给该函数并对其进行优化,但没有比反向传播更快的世界)

然而,考虑到梯度下降与共轭梯度方法的相似程度,我们能否不将每个参数的梯度更新替换为与其上一次更新正交的梯度更新?那不是更快吗?

2个回答

在处理优化问题时,根本区别在于目标是(确定性)函数还是某个函数的期望。我将这些情况分别称为确定性和随机设置。

机器学习问题几乎总是处于随机环境中。这里没有使用梯度下降(事实上,它的性能很差,这就是为什么没有使用它);相反,它是随机梯度下降,或者更具体地说,小批量随机梯度下降 (SGD) 是“香草”算法。然而,在实践中,ADAM(或相关方法,如 AdaGrad 或 RMSprop)或具有动量的 SGD 等方法优于 SGD。

确定性情况应该单独考虑,因为那里使用的算法完全不同。有趣的是,确定性算法比随机算法复杂得多。平均而言,共轭梯度肯定会比梯度下降更好,但是它是准牛顿方法,例如 BFGS(及其变体,例如 l-BFGS-b)或截断方法,目前被认为是最先进的。

这是一篇 NIPs 论文,它说 CG 不能很好地概括。准牛顿方法也有类似的结果。如果你想要比 SGD 更好的东西,你应该研究像 ADAM 这样的方法,它是为随机设置而设计的。CG 和 ADAM 都使用来自过去梯度方向的信息来改进当前的搜索方向。CG 是假设过去的梯度是精确的梯度而制定的。ADAM 假设过去的梯度是梯度估计,这是随机设置的情况。

根本问题是人们并不真正想找到一个优化问题的最优值。我们真的对泛化感兴趣- 而不是最优性。而且我们仍然很难理解神经模型如何以及为什么能够很好地泛化。

现在,看起来神经模型的泛化特性与其优化环境的结构以及它们的泛化极小值的某些特定特性有关。根据经验,SGD 类优化器更擅长找到这种泛化最小值。

本文通过讨论“宽平”最小值来说明这些想法,并展示如何使用带有随机权重平均的 SGD 来提高泛化和收敛性。