为什么需要梯度下降?


10

当我们可以区分成本函数并通过求解通过对每个参数进行偏微分而获得的方程来找到参数时,找出成本函数最小的地方。另外,我认为有可能找到导数为零的多个位置,从而我们可以检查所有这些位置并找到全局最小值

为什么要执行梯度下降呢?


2
如何将一个函数的导数一般设置为0?借助算法,例如梯度下降。
悬崖AB

3
您可以将梯度下降视为解决您所参考方程式的方法。如果您认为可以通过巧妙的代数运算来一般求解此类方程式,我邀请您尝试进行逻辑回归。
马修·德鲁里



您无法解析所有问题。即使可以说(如果有的话)无数个零,那么您将花费很长时间检查所有关键点。
Pinocchio

Answers:


8

甚至在线性模型的情况下,如果您具有解析解,则仍然最好使用这种迭代求解器。

例如,如果我们考虑线性回归,则显式解需要将具有复杂度的矩阵求逆。在大数据的情况下,这变得令人望而却步。O(N3)

另外,机器学习中的许多问题都是凸的,因此使用梯度可以确保我们达到极值。

正如已经指出的那样,仍然存在相关的非凸问题,例如神经网络,其中梯度方法(反向传播)提供了有效的求解器。同样,这与深度学习的情况特别相关。


2
此处,将矩阵求逆有点麻烦,因为带有部分枢轴的QR分解更准确,更快,但是,QR仍然为。我同意对于足够大的系统(例如,> 10,000个变量)可能会开始成为问题。然后,现代的高科技方法是使用迭代Krylov子空间方法(例如共轭梯度,GMRES)来近似求解。O(n3)
马修·冈恩

1
有些人可能会感到困惑的一点是,如何解决线性系统的优化问题?当然,答案是可以将求解线性系统重构为最小化二次目标。从以迭代方式最小化二次目标的角度来看,一些求解线性系统的迭代方法更容易理解。(例如,Krylov子空间方法共轭梯度的阶跃方向是基于梯度的……它与梯度下降关系不大。)
马修·冈恩

12

不需要梯度下降。事实证明,梯度下降通常是效率极低的优化算法!对于迭代方法,通常可以找到比梯度最陡峭的方向更好的方向。

不过,这只是一个小小的回答。您的问题确实应该是:“为什么我们需要迭代方法?” 例如。如果问题是凸的,Slater条件成立,并且一阶条件是必要的,并且是最优的充分条件,为什么不直接解决呢?也就是说,当解决方案可以描述为方程组的解决方案时,为什么不简单地求解该系统呢?答案是:

  • 对于二次优化问题,一阶条件是线性方程组,我们可以直接解决问题,因为线性系统可以有效地求解!我们确实使用一阶条件并求解系统(例如,使用QR分解,在下面进行警告)。
  • 不过,更笼统地说,一阶条件定义了一个非线性方程组,非线性系统可能很难解决!实际上,您通常用数值方法求解非线性方程组的方法是将其重新构造为优化问题...
  • 对于非常大的线性系统,用QR分解和部分枢轴直接求解系统变得不可行。人们在做什么?迭代方法!(例如,迭代Krylov子空间方法...)

7

在微积分101中,我们学习了如何使用“分析方法”优化函数:我们只需要获取成本函数的导数并将导数设置为0,然后求解方程即可。这确实是一个玩具问题,在现实世界中几乎不会发生。

x7+x352+ex+log(x+x2)+1/x=0x=1.4786,但不知道解析解决方案)。我们必须使用一些数值方法(检查为什么在多项式情况下为Abel Ruffin定理)。

f(x)=x2x=0x=1.1234×1020

f(x1,x2)=x12+x22+|x1+x2|(1,1)4.0X1个X2X1个 X2Xÿ1个1个33α=0.001-0.003-0.0031个1个0.9970.997


更多信息可以在此相关文章中
Haitao Du

4

您提到的方法只能用于求解线性方程组,例如在线性回归的情况下,但是对于解决一组非线性方程式来说,例如在具有S型激活的神经网络的情况下,梯度下降是一种方法去。因此,梯度下降是一种更通用的方法。

即使对于线性方程,由线性方程组给定的矩阵的大小也很大,并且可能难以约束存储要求。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.