深度学习常见算法之梯度下降法

1.梯度下降算法
梯度:如果函数是一维变量,则梯度就是倒数的方向
如果是大于一维的,梯度就是在这个点的法向量,并指向数值最高的等值线,这就是求最小值的时候要用负梯度的原因
深度学习常见算法之梯度下降法_第1张图片

梯度下降法是最早也是最简单,最常用的最优化算法。当目标函数是凸函数时,梯度下降算法的解是全局解,一般情况下,其解 不保证是全局最优解,梯度下降的速度也未必是最快的。梯度下降法的最优化思想也是用当前位置负梯度方向最为搜索方向,因为该方向为当前位置的最快下降方向,梯度下降法越接近目标值步长越长,前进越慢。

深度学习常见算法之梯度下降法_第2张图片
深度学习常见算法之梯度下降法_第3张图片

梯度下降法的缺点:
1 靠近极小值时收敛速度减慢
2.直线 搜索时可能会产生一些问题
3.可能会‘之’字形下降
深度学习常见算法之梯度下降法_第4张图片

利用梯度下降法求解需要很多次的迭代,在机器学习中,基于基本的梯度下降法发展了一下三种梯度下降的方法:

1.1 批量梯度下降法(BGD)
深度学习常见算法之梯度下降法_第5张图片

1.2 随机梯度下降法(SGD)
深度学习常见算法之梯度下降法_第6张图片

1.3 SGD和BGD的比较
可以看到SGD和BGD是两个极端 SGD由于每次参数的更新仅仅需要计算一个样本的梯度,训练的速度很快,及时在样本的量很大的情况下,可以只需要其中一部分就能迭代到最优解,由于每次迭代并不是都想着整体最有的方向,导致梯度下降的波动很大,很容易从一个局部最优解跳到另一个局部最优解 ,准确度下降
BGD:最小化所有的训练样本的损失函数,使得最终求解的是 全局最优解,即使得求解的风险函数最小,但是对于大规模的样本效率太低。
SGD:最小化每条样本的损失函数,虽然不是每次迭代得到的损失函数都是想着全局最优解的方向但是大方向是全局最优解的方向,最终的结果往往在最优解的附近,适用于大规模的训练样本情况。

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