Ng深度学习笔记 改善深层神经网络 优化算法

本文详细介绍了深度学习中优化算法的进展,从Mini-batch梯度下降法开始,讨论了其原理和优势。接着,探讨了指数加权平均数在优化中的应用,以及动量梯度下降法和RMSprop如何改善优化过程。最后,重点介绍了广泛使用的Adam优化算法,它是动量和RMSprop的结合,有效解决了局部最优问题,加速了学习过程。
摘要由CSDN通过智能技术生成

Mini-batch 梯度下降(Mini-batch gradient descent)

向量化能够有效地对所有个样本进行计算而无需某个明确的公式。所以我们要把训练样本放大巨大的矩阵当中去。

但如果m很大的话,处理速度仍然缓慢。必须处理整个训练集,然后才能进行一步梯度下降法,然后你需要再重新处理训练样本,才能进行下一步梯度下降法。

所以如果你在处理完整个500万个样本的训练集之前,先让梯度下降法处理一部分,算法速度会更快:

把训练集分割为小一点的子集训练,这些子集被取名为mini-batch,假设每一个子集中只有1000个样本,那么把其中的到取出来,将其称为第一个子训练集,也叫做mini-batch,然后你再取出接下来的1000个样本,从到,然后再取1000个样本,以此类推。

x ( 1 ) x^{(1)} x(1) x ( 1000 ) x^{(1000)} x(1000)称为 x { 1 } x^{\{1\}} x{ 1} x ( 1001 ) x^{(1001)} x(1001) x ( 2000 ) x^{(2000)} x(2000)称为 x { 2 } x^{\{2\}} x{ 2},如果训练样本一共有500万个,每个mini-batch都有1000个样本,也就有5000个mini-batch.对y也要进行相同处理。
在这里插入图片描述
在这里插入图片描述
符号总结:

  • 使用了上角小括号表示训练集里的值, x ( i ) x^{(i)} x(i)是第个训练样本。
  • 上角中括号来表示神经网络的层数, z [ l ] z^{[l]} z[l]表示神经网络中第l层的值
  • 大括号来代表不同的mini-batch, x { t } 和 y { t } x^{\{t\}}和 y^{\{t\}} x{ t}y{ t}.

x { t } 和 y { t } x^{\{t\}}和 y^{\{t\}} x{ t}y{ t}的维数:对于有1000个样本的训练集, X 1 X^{ {1}} X1维数应该是 ( n x , 1000 ) (n_{x},1000) (nx,1000) X 2 X^{ {2}} X2的维数应该是 ( n x , 1000 ) (n_{x},1000) (nx,1000),以此类推。因此所有的子集维数都是 ( n x , 1000 ) (n_{x},1000) (nx,1000),而这些( Y t Y^{ { t}} Yt)的维数都是 ( 1 , 1000 ) (1,1000) (1,1000)

mini-batch梯度下降法的原理: 在训练集上运行mini-batch梯度下降法,因为我们有5000个各有1000个样本的组, 运行for t=1……5000,因为我们有5000个各有1000个样本的组,在for循环里你要做得基本就是对 X t X^{ {t}} Xt Y t Y^{ {t}} Yt执行一步梯度下降法。
在这里插入图片描述

这是使用mini-batch梯度下降法训练样本的一步,也可被称为进行“一代”(1 epoch)的训练。一代这个词意味着只是一次遍历了训练集。

使用batch梯度下降法,一次遍历训练集只做一个梯度下降,使用mini-batch梯度下降法,一次遍历训练集,能做5000个梯度下降

理解mini-batch梯度下降法(Understanding mini-batch gradient descent)

在这里插入图片描述

使用batch梯度下降法时,每次迭代都需要历遍整个训练集,每次迭代成本都会下降,成本函数 J J J会随着每次迭代而减少,如果 J J J在某次迭代中增加了,也许是因为学习率太大。

使用mini-batch梯度下降法,则并不是每次迭代都是下降的,特别是在每次迭代中,如果要作出成本函数 J t J^{ { t}} Jt的图,而 J t J^{ {t}} Jt只和 X t X^{ { t}} Xt Y t Y^{ {t}} Yt有关,很可能会看到这样的结果:走向朝下,但有更多的噪声

mini-batch的大小:
两种极端下成本函数的优化情况

  • 如果mini-batch的大小等于训练集的大小 m m m,则就是batch梯度下降法。
  • mini-batch大小为1,就随机梯度下降法,每个样本都是独立的mini-batch。

batch梯度下降法从某处开始,相对噪声低些,幅度也大一些。
在这里插入图片描述

随机梯度下降法中,每次迭代,只对一个样本进行梯度下降,大部分时候向着全局最小值靠近,有很多噪声,平均来看它最终会靠近最小值。随机梯度下降法永远不会收敛,而是会一直在最小值附近波动,但它并不会在达到最小值并停留在此。

用mini-batch梯度下降法,不会总朝向最小值靠近,但它比随机梯度下降要更持续地靠近最小值的方向,它也不一定在很小的范围内收敛或者波动,如果出现这个问题,可以慢慢减少学习率。
在这里插入图片描述

m的选择:

  1. 如果训练集较小,直接使用batch梯度下降法;样本数目较大的话,一般的mini-batch大小为64到512
  2. 考虑到电脑内存设置和使用的方式,如果mini-batch大小是2的 n n n次方,代码会运行地快一些
  3. 3.mini-batch中,要确保 X t ​ X^{ { t}}​ Xt Y t ​ Y^{ {t}}​ Yt要符合CPU/GPU内存,取决于你的应用方向以及训练集的大小。

指数加权平均数(Exponentially weighted averages)

指数加权平均数的关键方程:

v t = β v t − 1 + ( 1 − β ) θ t { {v}{t}}=\beta { {v}{t-1}}+(1-\beta ){ {\theta }_{t}} vt=βvt1+(1β)θt
β \beta β在统计学中被称为指数加权移动平均值,我们就简称为指数加权平均数。

β \beta β较大时得到的曲线要平坦一些,原因在于多平均了前面的数据,所以这个曲线,波动更小,更加平坦,缺点是曲线进一步右移。

β \beta β较小时,如0.5,平均的数据太少,所以得到的曲线有更多的噪声,有可能出现异常值,但是这个曲线能够更快适应变化。

β = 0.9 \beta=0.9 β=0.9的时候,得到的结果是红线,如果它更接近于1,比如0.98,结果就是绿线,如果 β \beta β小一点,如果是0.5,结果就是黄线。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

进一步地分析,来理解如何计算出每日温度的平均值。

同样的公式, v t = β v t − 1 + ( 1 − β ) θ t { {v}{t}}=\beta { {v}{t-1}}+(1-\beta ){ {\theta }_{t}} vt=βvt1+(1β)θt

使 β = 0.9 \beta=0.9 β=0.9,写下相应的几个公式,所以在执行的时候, t t t从0到1到2到3, t t t的值在不断增加,为了更好地分析,我写的时候使得 t t t的值不断减小,然后继续往下写。

v 100 = 0.1 θ 100 + 0.9 v 99 v_{100}= 0.1\theta_{100} + 0.9v_{99} v100=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值