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

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

目录

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

梯度下降法的理解

直观理解

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

数学理解

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

hΘ(x)=Θ0+Θ1x1+Θ2x2... h Θ ( x ) = Θ 0 + Θ 1 x 1 + Θ 2 x 2 . . .
<script id="MathJax-Element-1" type="math/tex; mode=display">h_{\Theta }\left ( x \right )= \Theta _{0}+\Theta _{1}x_{1}+\Theta _{2}x_{2}...</script>为了方便计算,我们常常把上式写成:

h(x)=i=0nΘixi h ( x ) = ∑ i = 0 n Θ i x i
<script id="MathJax-Element-2" type="math/tex; mode=display">h\left ( x\right )=\sum_{i=0}^{n}\Theta _{i}x_{i}</script>损失函数为
J(Θ)=m2i=1m(hΘ(x(i))y(i))2 J ( Θ ) = m 2 ∑ i = 1 m ( h Θ ( x ( i ) ) − y ( i ) ) 2
<script id="MathJax-Element-3" type="math/tex; mode=display">J\left ( \Theta \right )=\frac{m}{2}\sum_{i=1}^{m}\left ( h_{\Theta }\left ( x^{\left ( i \right )} \right )-y^{\left ( i \right )} \right )^{2}</script>
J(Θ) J ( Θ ) <script id="MathJax-Element-4" type="math/tex">J\left ( \Theta \right )</script>关于 Θ Θ <script id="MathJax-Element-5" type="math/tex">\Theta </script>的梯度就是目标函数下降最快的方向,, J(Θ) ▽ J ( Θ ) <script id="MathJax-Element-6" type="math/tex">\triangledown J\left ( \Theta \right )</script>即为梯度,在最小化的优化问题中,我们只需要将参数沿着梯度相反的方向前进一个步长,就可以实现目标函数的下降。而这个“步长”,我们称为学习率,用 α α <script id="MathJax-Element-7" type="math/tex">\alpha </script>表示。
综上,参数的更新公式如下:
Θ=ΘαJ(Θ) Θ ′ = Θ − α ▽ J ( Θ )
<script id="MathJax-Element-8" type="math/tex; mode=display">{\Theta}'=\Theta -\alpha \bigtriangledown J\left ( \Theta \right )</script>

分类

根据每次迭代过程中所用训练数据的不同,我们可以将梯度下降法分类为:批梯度下降法(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 ( Θ ) = 1 2 m ∑ i = 1 m ( h Θ ( x ( i ) ) − y ( i ) ) 2
<script id="MathJax-Element-9" type="math/tex; mode=display">J\left ( \Theta \right )=\frac{1}{2m}\sum_{i=1}^{m}\left ( h_{\Theta }\left ( x^{\left ( i \right )} \right )-y^{\left ( i \right )} \right )^{2}</script>
在对参数进行随机初始化后,我们计算梯度并进行参数的更新,具体的过程如下:

Θj=Θjα1mi=1m(hΘ(x(i))y(i))x(i)j Θ j ′ = Θ j − α 1 m ∑ i = 1 m ( h Θ ( x ( i ) ) − y ( i ) ) x j ( i )
<script id="MathJax-Element-16" type="math/tex; mode=display">{\Theta _{j}}'=\Theta _{j}- \alpha \frac{1}{m}\sum_{i=1}^{m}\left ( h_{\Theta }\left ( x^{\left ( i \right )} \right )-y^{\left ( i \right )} \right )x_{j}^{\left ( i \right )}</script>重复运行该过程直至收敛

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

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

定义

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

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

Θj=Θj+(yihΘ(xi))xij Θ j ′ = Θ j + ( y i − h Θ ( x i ) ) x j i
<script id="MathJax-Element-54" type="math/tex; mode=display">{\Theta _{j}}'=\Theta _{j}+\left ( y^{i}-h_{\Theta } \left ( x^{i} \right )\right )x_{j}^{i}</script>
在参数更新过程中,我们随机选择一个样本进行迭代,具体的过程如下:

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

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

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

定义

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

原理
在每次迭代过程中,选择b个训练样本进行损失函数的梯度计算。具体过程如下:这里写图片描述

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


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

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐