当有封闭式数学解决方案可用时,为什么要使用梯度下降进行线性回归?

机器算法验证 回归 机器学习 梯度下降
2022-01-24 18:58:34

我正在在线学习机器学习课程,并了解了梯度下降以计算假设中的最佳值。

h(x) = B0 + B1X

如果我们可以通过以下公式轻松找到值,为什么我们需要使用梯度下降?这看起来很简单也很容易。但是GD需要多次迭代才能获得价值。

B1 = Correlation * (Std. Dev. of y/ Std. Dev. of x)

B0 = Mean(Y) – B1 * Mean(X)

注意:取自https://www.dezyre.com/data-science-in-r-programming-tutorial/linear-regression-tutorial

我确实检查了以下问题,对我来说还不清楚。

为什么需要梯度下降?

为什么用梯度下降而不是解析解来解决优化问题?

上面的答案比较了 GD 与使用导数。

4个回答

梯度下降用于线性回归的主要原因是计算复杂性:在某些情况下使用梯度下降找到解决方案的计算成本更低(更快)。

您编写的公式看起来非常简单,甚至在计算上也是如此,因为它仅适用于单变量情况,即当您只有一个变量时。在多变量的情况下,当你有很多变量时,公式在纸上会稍微复杂一些,当你在软件中实现它时需要更多的计算: 在这里,你需要计算矩阵然后反转它(见下面的注释)。这是一个昂贵的计算。供您参考,(设计)矩阵 X 有 K+1 列,其中 K 是预测变量的数量和 N 行观察值。在机器学习算法中,您最终可能会得到 K>1000 和 N>1,000,000。矩阵本身需要一点时间来计算,然后你必须反转

β=(XX)1XY
XXXXK×K矩阵 - 这很昂贵。

因此,梯度下降可以节省大量计算时间。此外,它的完成方式允许微不足道的并行化,即将计算分布在多个处理器或机器上。线性代数解决方案也可以并行化,但它更复杂且仍然昂贵。

此外,当您只将一部分数据保留在内存中时,还有一些梯度下降版本,从而降低了对计算机内存的要求。总体而言,对于超大问题,它比线性代数解决方案更有效。

随着维度的增加,当你有成千上万的变量时,这变得更加重要,就像机器学习一样。

备注Ng 的讲座中对梯度下降的关注程度让我感到惊讶。他花了很多时间谈论它,也许是整个课程的 20%。对我来说,这只是一个实现细节,它是你如何找到最佳的。关键在于制定优化问题,以及您如何找到它是无关紧要的。我不会担心太多。把它留给计算机科学人员,专注于对你作为统计学家来说重要的事情。

话虽如此,我必须说理解解算法计算复杂性和数值稳定性确实很重要。我仍然认为您不必知道算法的实现和代码的细节。通常,这不是您作为统计学家的最佳时间利用方式。

注 1我写道,出于教学目的,您必须反转矩阵,而不是您通常如何求解方程。在实践中,线性代数问题是通过使用某种因式分解(例如 QR)来解决的,在这种情况下,您不直接反转矩阵,而是进行一些其他数学上等效的操作来获得答案。您这样做是因为在许多情况下,矩阵求逆是一项昂贵且数值不稳定的操作。

这带来了梯度下降算法的另一个小优势作为副作用:即使设计矩阵存在共线性问题,它也可以工作。通常的线性代数路径会爆炸,即使对于共线预测变量,梯度下降也会继续进行。

首先,我强烈建议您阅读以下两篇文章(如果不重复)

请检查JM的答案

线性回归使用什么算法?

请检查马克的答案(从数值稳定性的角度来看)

我们需要梯度下降来找到线性回归模型的系数吗?


简而言之,假设我们要解决平方损失的线性回归问题 我们可以将导数设置为,它正在解决线性系统

minimize Axb2
2AT(Axb)0
ATAx=ATb

在高层次上,有两种方法可以求解线性系统。直接法和迭代法。注意直接方法是解决,梯度下降(一个示例迭代方法)是直接解决ATAx=ATbminimize Axb2

与直接方法相比(比如QR / LU分解)。当我们有大量数据或数据非常稀疏时,迭代方法有一些优势。

另一方面,我相信 Andrew Ng 强调它的原因之一是因为它是一种通用方法(机器学习中使用最广泛的方法),可以用于其他模型,例如逻辑回归或神经网络。

Sycorax 是正确的,在估计线性回归时不需要梯度下降。你的课程可能会使用一个简单的例子来教你梯度下降来为更复杂的版本做序。

不过,我想补充的一件巧妙的事情是,目前有一个小型研究领域涉及尽早终止梯度下降以防止模型过度拟合。

如果我没记错的话,我认为您指的是 Andrew Ng 教授提供的 MOOC。要找到最佳回归系数,大致有两种方法可用。一种是使用正规方程,即通过简单地找出,第二种是通过最小化最小平方标准,它源自您引用的假设。顺便说一下,第一种方法即正规方程是第二种方法即优化方法的产物。(XTX)1XTy

您提到的方法即使用相关性,它仅适用于一个预测器和一个截距量。只要注意表格。那么,当预测变量的数量超过一个时,出路是什么?然后必须求助于其他方法,即正规方程或优化。

现在为什么优化(这里是梯度下降)虽然可以使用直接法线方程。请注意,在正规方程中,必须反转矩阵。现在反转矩阵的计算成本为,其中矩阵中的行数,即观察值。此外,如果是病态的,那么它将在估计中产生计算错误。所以,梯度下降这种优化算法可以让我们摆脱这类问题。另一个问题是回归系数估计中的过拟合和欠拟合。O(N3)NXX

我对你的建议是不要仅仅为了解决问题。尝试理解理论。Ng 教授是世界上最好的教授之一,他在 MOOC 中亲切地教授机器学习。所以,他这样教导的时候,肯定是有一些潜意的。我希望你不会介意我的话。

祝一切顺利。