【Yolo的学习笔记二】梯度下降法三种形式BGD、SGD、MBGD比较

【Yolo的学习笔记二】梯度下降法三种形式BGD、SGD、MBGD比较

本人是刚刚接触计算机视觉的小白Yolo,目前还处于这个领域的摸索阶段。为了记录自己的学习历程,我在这里把自己的学习内容进行总结.在写这个系列笔记的过程中参考了很多大牛前辈的文章(在文章结尾附链接),在此深表感谢。

目录

梯度下降法是一种被广泛应用于机器学习中的优化方法,用于迭代求解模型中的相关参数。与其他优化方法相比,梯度下降法只需要求解损失函数的一阶导数,计算量相对较小,因此这种方法在大型数据集上具有很大的优势。

梯度下降法的理解

直观理解

它的计算过程就是沿梯度下降的方向求解极小值。为了便于理解这个过程,我们可以考虑如下的情景:有一个人在大雾天被困在山上,天气原因导致视野可见度过低,无法快速找到一条下山的路,为了尽快回到山脚下,那么可以以他当前所在的位置为基准,寻找最陡峭的地方,从这个方向出发,每走一步都按照此法重新确定最陡峭的地方出发,依此法就可以顺利到达山下。

数学理解

在线性回归问题中,假设函数为

hΘ(x)=Θ0+Θ1x1+Θ2x2...
为了方便计算,我们常常把上式写成:

h(x)=i=0nΘixi
损失函数为
J(Θ)=m2i=1m(hΘ(x(i))y(i))2

J(Θ)关于Θ的梯度就是目标函数下降最快的方向,,J(Θ)即为梯度,在最小化的优化问题中,我们只需要将参数沿着梯度相反的方向前进一个步长,就可以实现目标函数的下降。而这个“步长”,我们称为学习率,用α表示。
综上,参数的更新公式如下:
Θ=ΘαJ(Θ)

分类

根据每次迭代过程中所用训练数据的不同,我们可以将梯度下降法分类为:批梯度下降法(Batch Gradient Descent, BGD)、随机梯度下降法(Stochastic Gradient Descent, SGD)、小批量梯度下降法(Mini-Batch Gradient Descent, MBGD),下文将对三种梯度下降法进行说明。

梯度下降法的分类

批梯度下降法(Batch Gradient Descent, BGD)

定义

如果在迭代过程中,我们用所有样本的数据用于求解的目标函数的梯度,一次迭代训练所有的样本,则这种方法称为批梯度下降法。

原理
在批梯度下降法中,损失函数为

J(Θ)=12mi=1m(hΘ(x(i))y(i))2

在对参数进行随机初始化后,我们计算梯度并进行参数的更新,具体的过程如下:

Θj=Θjα1mi=1m(hΘ(x(i))y(i))xj(i)
重复运行该过程直至收敛

特点
这种方法是梯度下降法的基本类型,它使用整个数据集进行求解。每个参数的更新都需要用到全部数据,这个下降过程非常缓慢,不适用于大数据集。在理想状况下,经过足够次数的迭代之后,可以达到全局最优。

随机梯度下降法(Stochastic Gradient Descent, SGD)

定义

在每次迭代过程中,仅选择一个训练样本去计算代价函数的梯度,然后更新参数。

原理
在随机梯度下降法中,参数的更新公式为:

Θj=Θj+(yihΘ(xi))xji

在参数更新过程中,我们随机选择一个样本进行迭代,具体的过程如下:
【Yolo的学习笔记二】梯度下降法三种形式BGD、SGD、MBGD比较

  • 第一步:进入内循环(inner loop)
  • 第二步:挑选第一个训练样本并更新参数
  • 第三步:选第二个训练样本,继续更新参数
  • 第四步:然后进行第三步…直到第n步
  • 第五步:直到达到全局最小值

    特点
    SGD更加适合于大数据集的优化,但由于其每次只用一个样本来更新参数,会给这个过程带来一些噪声,不稳定性变大,每次迭代不都是朝着最优化的方向移动

小批量梯度下降法(Mini-Batch Gradient Descent, MBGD)

定义

介于批量梯度下降法和随机梯度下降法之间。在迭代过程中,使用m个训练样本去计算代价函数的梯度,不是用所有的样本,也不是随机选取一个样本进行迭代。随机梯度下降法可以看成是一种batch size为1的特殊小批量梯度下降法。

原理
在每次迭代过程中,选择b个训练样本进行损失函数的梯度计算。具体过程如下:【Yolo的学习笔记二】梯度下降法三种形式BGD、SGD、MBGD比较

特点
迭代过程相对比较平滑,但缺点是增加了一个超参数batch_size需要进行调节,。


参考文献:
1、机器学习中的常见问题——几种梯度下降法
2、梯度下降法的三种形式BGD、SGD以及MBGD
3、深入浅出–梯度下降法及其实现
4、一文看懂常用的梯度下降算法
5、纯干货 | 机器学习中梯度下降法的分类及对比分析(附源码)
6、详解梯度下降法的三种形式