梯度下降法原理小结

提示:本篇文章是参考刘建平老师的博客,该文章只是作为个人学习的笔记.

文章目录

前言

一、梯度是什么?

二、梯度下降与梯度上升

三、梯度下降算法详解

1.梯度下降法的直观理解

2.梯度下降法的相关概念

3.梯度下降的详细算法

4.梯度下降的算法调优

四、梯度下降法大家族

1.批量梯度下降法(Batch Gradient Descent)

2.随机梯度下降法(Stochastic Gradient Descent)

3.小批量梯度下降法(Mini-batch Gradient Descent)

总结



前言

在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法。这里就对梯度下降法做一个完整的总结。例如上篇文章的感知机就是用梯度下降法来求解,今天就深入了解一下梯度下降法.

本篇文章参考刘建平老师博客,自己学习

梯度下降(Gradient Descent)小结 - 刘建平Pinard - 博客园 (cnblogs.com)


一、梯度是什么?

       梯度可以简单理解为多元函数的导数。 对于一个一元函数,它的导数告诉我们函数在某一点的变化率;对于一个多元函数,它的梯度告诉我们函数在某一点上每个自变量的变化率。 梯度的方向是函数在某一点上变化最快的方向,而梯度的大小则表示了变化的速度。具体来说,对于函数f(x,y),在点(x0,y0),沿着梯度向量的方向就是(∂f/∂x0, ∂f/∂y0)T的方向是f(x,y)增加最快的地方。或者说,沿着梯度向量的方向,更加容易找到函数的最大值。反过来说,沿着梯度向量相反的方向,也就是 -(∂f/∂x0, ∂f/∂y0)T的方向,梯度减少最快,也就是更加容易找到函数的最小值。

不理解的话可以看一下高等数学多元函数那块的知识.

二、梯度下降与梯度上升

  在机器学习算法中,在最小化损失函数时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数,和模型参数值。反过来,如果我们需要求解损失函数的最大值,这时就需要用梯度上升法来迭代了。

  梯度下降法和梯度上升法是可以互相转化的。比如我们需要求解损失函数f(θ)的最小值,这时我们需要用梯度下降法来迭代求解。但是实际上,我们可以反过来求解损失函数 -f(θ)的最大值,这时梯度上升法就派上用场了。

这里就比较好理解,就像人往高处走,水往低处流一样,当你要求函数f(x)的极大值,那么就可以反过来求-f(x)的极小值.

三、梯度下降算法详解

1.梯度下降法的直观理解

梯度下降法原理小结_第1张图片

梯度下降法原理小结_第2张图片

通过图来看就像是在空间面上任意位置放一颗珠子,梯度下降法则是珠子随着空间面滚落的过程,最终珠子达到底端.这里A点表示初始点,B点则代表最小值点.

2.梯度下降法的相关概念

这部分刘建平老师写的很详细,对于这些概念我在加点自己的理解

梯度下降法原理小结_第3张图片

1.步长:回到放珠子,珠子的滚落过程是一个连续的过程,而在梯度下降法中无法达到像珠子那样连续的过程只能规定每步走多少,当然如果要想模拟珠子滚落的过程可以将步长设的很小很小,但这样对于我们实际解决问题并没有帮助反而会增加模型的收敛时间当然这个步长很大的话也会像珠子那样在最值点滚来滚去收敛时间也会增加,所以一个合理的步长对于模型的收敛时间也是一个关键.

2.特征:就是指样本的输入,例如人有很多特征比如外貌,性格,爱好等等,当然这仅仅举一个例子让您了解一下这个概念.

3.假设函数:其实就是拟合函数比如一元线性回归那样的拟合函数

4.损失函数:当然有了拟合函数那么如何判断拟合的好坏呢?这就要用到损失函数来评价,也就是我们后续要找到一个参数使得损失函数最小,说明拟合程度比较好.

3.梯度下降的详细算法

梯度下降法的算法可以有代数法和矩阵法(也称向量法)两种表示,如果对矩阵分析不熟悉,则代数法更加容易理解。不过矩阵法更加的简洁,且由于使用了矩阵,实现逻辑更加的一目了然。这里先介绍代数法,后介绍矩阵法。

这里我就直接引用刘建平老师的博客.

梯度下降法原理小结_第4张图片

这里我解释一下为什么损失函数前面乘了个1/2m,因为我们要用到梯度那么就需要对函数进行求导,所以在这里乘个1/2m方便后续更好理解,毕竟对乘的是一个常数对损失函数来说并没有影响.

梯度下降法原理小结_第5张图片

这里与前面的感知机的求解方法就一样了,本来感知机的求解也是用的梯度下降法这种思想.

梯度下降法原理小结_第6张图片

我这里就介绍代数法方便大家理解,感兴趣可以读一下刘建平老师的矩阵法其实就是用矩阵表示,以及对矩阵求导的一些相关公式.

4.梯度下降的算法调优

梯度下降法原理小结_第7张图片

四、梯度下降法大家族

这部分我在编写感知机的时候非常迷惑根本就不知道是什么,其实学过现在一看挺简单的,大家千万别被这一长串英文吓蒙.

1.批量梯度下降法(Batch Gradient Descent)

批量梯度下降法,是梯度下降法最常用的形式,具体做法也就是在更新参数时使用所有的样本来进行更新,这个方法对应于前面的线性回归的梯度下降算法.

梯度下降法原理小结_第8张图片

2.随机梯度下降法(Stochastic Gradient Descent)

随机梯度下降法,其实和批量梯度下降法原理类似,区别在与求梯度时没有用所有的m个样本的数据,而是仅仅选取一个样本j来求梯度。对应的更新公式是:

随机梯度下降法,和4.1的批量梯度下降法是两个极端,一个采用所有数据来梯度下降,一个用一个样本来梯度下降。自然各自的优缺点都非常突出。对于训练速度来说,随机梯度下降法由于每次仅仅采用一个样本来迭代,训练速度很快,而批量梯度下降法在样本量很大的时候,训练速度不能让人满意。对于准确度来说,随机梯度下降法用于仅仅用一个样本决定梯度方向,导致解很有可能不是最优。对于收敛速度来说,由于随机梯度下降法一次迭代一个样本,导致迭代方向变化很大,不能很快的收敛到局部最优解。

那么,有没有一个中庸的办法能够结合两种方法的优点呢?有!就是下一个算法.

3.小批量梯度下降法(Mini-batch Gradient Descent)

这个就结合了上述两个优点.采取了适度原则不走极端.

小批量梯度下降法是批量梯度下降法和随机梯度下降法的折衷,也就是对于m个样本,我们采用x个样子来迭代,1


总结

在机器学习中的无约束优化算法,除了梯度下降以外,还有前面提到的最小二乘法,此外还有牛顿法和拟牛顿法。

    梯度下降法和最小二乘法相比,梯度下降法需要选择步长,而最小二乘法不需要。梯度下降法是迭代求解,最小二乘法是计算解析解。如果样本量不算很大,且存在解析解,最小二乘法比起梯度下降法要有优势,计算速度很快。但是如果样本量很大,用最小二乘法由于需要求一个超级大的逆矩阵,这时就很难或者很慢才能求解解析解了,使用迭代的梯度下降法比较有优势。

    梯度下降法和牛顿法/拟牛顿法相比,两者都是迭代求解,不过梯度下降法是梯度求解,而牛顿法/拟牛顿法是用二阶的海森矩阵的逆矩阵或伪逆矩阵求解。相对而言,使用牛顿法/拟牛顿法收敛更快。但是每次迭代的时间比梯度下降法长。

你可能感兴趣的:(机器学习,机器学习,人工智能,深度学习)