梯度下降法在机器学习中常常用来优化损失函数,是一个非常重要的工具。其实,说的这么高大上不如用更加通俗的方式来解释。在高中阶段一定都学习过「极值」的概念,那么什么是极值呢?用非常形象的方式来说极值点,那么看下图中的函数
。这张图片中有多个极值点。梯度下降法的作用就是寻找一个 「极小值点」 (在本篇文章讨论极小值,顾名思义:梯度下降法),从而让函数的值尽可能地小。相信你也发现了,这么多个极值点,那么梯度下降法找到的是哪一个点呢?关于这个问题就要看运气了,算法的最开始会 「随机」 寻找一个位置然后开始搜索「局部」的最优解,如果运气好的话能够寻找到一个最小值的极值点,运气不好或许找到的就不是最小值的那个极小值点了。
梯度下降分三类:批量梯度下降BGD(Batch Gradient Descent)、小批量梯度下降MBGD(Mini-Batch Gradient Descent)、随机梯度下降SGD(Stochastic Gradient Descent)。
三种梯度下降有什么不同呢?我们从梯度下降步骤开始讲起,梯度下降步骤分一下四步:
1、随机赋值,Random 随机数生成 $\theta$,随机一组数值 $w_0、w_1……w_n$
2、求梯度 g ,梯度代表曲线某点上的切线的斜率,沿着切线往下就相当于沿着坡度最陡峭的方向下降
3、if g < 0, $\theta$ 变大,if g > 0, $\theta$ 变小
4、判断是否收敛 convergence,如果收敛跳出迭代,如果没有达到收敛,回第 2 步再次执行2~4步
收敛的判断标准是:随着迭代进行损失函数Loss,变化非常微小甚至不再改变,即认为达到收敛
三种梯度下降不同,体现在第二步中:
- BGD是指在每次迭代使用所有样本来进行梯度的更新
MBGD是指在每次迭代使用一部分样本(所有样本500个,使用其中32个样本)来进行梯度的更新
SGD是指每次迭代随机选择一个样本来进行梯度更新