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


73

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

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与使用导数。


5
您不需要梯度下降即可估计线性回归系数。
Sycorax

8
@Sycorax“不需要”是一个强有力的声明。迭代方法可能对海量数据有用。说数据矩阵很大,无法容纳在内存中。
海涛杜

8
@ hxd1011感谢您阐明问题的实际范围。我在纯粹用数学的角度思考。
Sycorax

Answers:


89

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

您编写的公式看起来非常简单,甚至在计算上也很简单,因为它仅适用于单变量情况,即只有一个变量时。在多因素情况下,当你有很多变数,该公式是在纸上稍微复杂一些,需要更多的计算,当你实现它的软件: 在这里,你需要计算矩阵X ' X

β=XX-1个Xÿ
XX然后将其反转(请参见下面的注释)。这是一个昂贵的计算。供您参考,(设计)矩阵X具有K + 1列,其中K是预测变量数和N行观测值。在机器学习算法中,您可以得到K> 1000和N> 1,000,000。该矩阵本身需要一些时间来计算,那么你必须反转矩阵-这是昂贵的。ķ × ķXXķ×ķ

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

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

当您像机器学习中那样拥有成千上万个变量时,随着维数的增加,这一点变得更加重要。

备注。Ng的演讲对梯度下降给予了如此多的关注,令我感到惊讶。他花了很短的时间来谈论它,可能占整个课程的20%。对我来说,这只是实现细节,这是您找到最佳方案的确切方式。关键在于制定优化问题,而您发现它的精确程度无关紧要。我不会为此担心太多。将其交给计算机科学人员,并专注于对您作为统计学家重要的事情。

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

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

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


17
但是Ng 计算机科学的人。
变形虫

21
关于您的评论:作为数学家,我曾经同意。但是我现在的理解是,在现代机器学习中,优化方法与要优化的目标固有地联系在一起。某些形式的正则化(如辍学)可以用算法而不是目标更清晰地表达。简而言之:如果您使用深层网络,保留目标函数但更改优化方法,则可能会获得截然不同的性能。实际上,有时更好的优化程序在实践中会产生更差的结果...
A. Rex

14
未成年人挑剔:你肯定不是反转 ; 代替你解决线性方程系统X ' X β = X ' ýβ。从抽象上讲,它是相同的,但从数字上讲,它要稳定得多,甚至可能更便宜。XXXXβ=Xÿβ
斯蒂芬·科拉萨

3
另一方面,具有QR因式分解的@AnderBiguri解决方案向后稳定,因此在输入数据不确定的情况下,它提供的解决方案尽可能准确。
费德里科·波洛尼

7
我想大家应该都停止写作和只写X 牛逼 X β = X 牛逼 Ÿ所有的时间。β=XŤX-1个XŤÿXŤXβ=XŤÿ
马修·德鲁里

21

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

请检查JM的答案

线性回归使用什么算法?

请检查Mark的答案(从数值稳定性的角度)

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


最小化 一种X-b2
2一种Ť一种X-b0
一种Ť一种X=一种Ťb

在高层次上,有两种解决线性系统的方法。直接法和迭代法。注意直接方法是求解,而梯度下降(一种示例迭代方法)是直接求解。一种Ť一种X=一种Ťb最小化 一种X-b2

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

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


你是绝对正确的。SGD在处理大量数据时非常有帮助。吴教授演示的方法是最经典,最纯正的方法。应该从这一点开始有一个明确的想法。如果可以理解其座右铭,那么整个线性估计对他/她将是显而易见的。
桑迪潘·卡玛卡(Sandipan Karmakar)

1
X T X X T yXŤX=X一世X一世ŤXŤXXŤÿX

6

Sycorax是正确的,您在估计线性回归时不需要梯度下降。您的课程可能使用一个简单的示例来教您梯度下降,以介绍更复杂的版本。

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


2
对于过度拟合的陈述,您可以提供链接吗?加入正则项比限制迭代次数好吗?
海涛杜

您可以查看Goodfellow等人的“深度学习”的第7章,其中提到了尽早停止以防止神经网络过度拟合。
蝙蝠侠

2
尽早停止正则化绝不是一项新技术;例如,这是Landweber迭代中的一项众所周知的技术:en.wikipedia.org/wiki/Landweber_iteration
cfh

3

XŤX-1个XŤÿ

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

Øñ3ñXX

我对您的建议是不要仅仅解决问题。尝试理解理论。Ng教授是这个世界上最好的教授之一,在MOOC中善于教授机器学习。因此,当他以这种方式进行教学时,必须有一些潜在的意图。我希望你不会介意我的话。

祝一切顺利。


5
强烈建议不要“反转矩阵”。QR在数值上更稳定以求解线性系统。
海涛杜

1
我同意计算论点。但是,过度拟合或欠拟合与GD与正态方程无关,而与(回归)模型的复杂性无关。两种方法(如果GD可以正常工作)都会找到相同的最小二乘解(如果存在),因此将使数据过拟合或过拟合的数量相同。
鲁宾·范·卑尔根

2

首先,是的,真正的原因是蒂姆·阿特雷德斯(Tim Atreides)提出的理由。这是一个教学练习。

但是,有可能(尽管不太可能)希望对从网络套接字流进来的数万亿个数据点进行线性回归。在这种情况下,对解析解决方案进行单纯评估是不可行的,而随机/自适应梯度下降的某些变体将以最小的内存开销收敛到正确的解决方案。

(对于线性回归,可以将分析解决方案重新构造为递归系统,但这不是一般技术。)


2

另一个原因是梯度下降是一种更通用的方法。对于许多机器学习问题,成本函数不是凸函数(例如,矩阵分解,神经网络),因此您不能使用封闭形式的解决方案。在那些情况下,使用梯度下降来找到一些好的局部最优点。或者,如果您要实施在线版本,则必须再次使用基于梯度下降的算法。

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.