深度学习笔记(二)(2)优化算法
2.1 Mini-batch 梯度下降(Mini-batch gradient descent)
2.2 理解 mini-batch 梯度下降法(Understanding mini-batch gradient descent)
你需要决定的变量之一是 mini-batch 的大小,𝑚就是训练集的大小,极端情况下:
如果 mini-batch 的大小等于𝑚,其实就是 batch 梯度下降法,在这种极端情况下,你就有了 mini-batch 𝑋{1}和𝑌{1},并且该 mini-batch 等于整个训练集,所以把 mini-batch 大小设为𝑚可以得到 batch 梯度下降法。
另一个极端情况,假设 mini-batch 大小为 1,就有了新的算法,叫做随机梯度下降法,每个样本都是独立的 mini-batch,当你看第一个 mini-batch,也就是𝑋{1}和𝑌{1},如果 minibatch 大小为 1,它就是你的第一个训练样本,这就是你的第一个训练样本。接着再看第二个 mini-batch,也就是第二个训练样本,采取梯度下降步骤,然后是第三个训练样本,以此类推,一次只处理一个。
随机梯度下降法的一大缺点是,你会失去所有向量化带给你的加速。
mini-batch 大小选取原则:
如果训练集较小,直接使用 batch 梯度下降法。
不然,样本数目较大的话,一般的 mini-batch 大小为 64 到 512,考虑到电脑内存设置和使用的方式,如果 minibatch 大小是 2 的𝑛次方,代码会运行地快一些。
最后需要注意的是在你的 mini-batch 中,要确保𝑋{𝑡}和𝑌{𝑡}要符合 CPU/GPU 内存,取决于你的应用方向以及训练集的大小。
2.3 指数加权平均数(Exponentially weighted averages)
所以指数加权平均数经常被使用,它在统计学中被称为指数加权移动平均值,我们就简称为指数加权平均数。通过调整这个参数(𝛽),或者说后面的算法学习,你会发现这是一个很重要的参数,可以取得稍微不同的效果,往往中间有某个值效果最好,𝛽为中间值时得到的红色曲线,比起绿线和黄线更好地平均了温度。
β一般取0.9。
2.4 理解指数加权平均数( Understanding exponentially weighted averages)
(0.1,0.1 × 0.9,0.1 × (0.9)^2,0.1 × (0.9)^3 …),相加起来为 1 或者逼近 1,我们称之为偏差修正.
0.9^10≈1/e,设
则
指数加权平均数公式的好处之一在于,它占用极少内存,电脑内存中只占用一行数字而已
2.5 指 数 加 权 平 均 的 偏 差 修 正 ( Bias correction in exponentially weighted averages)
了偏差。会发现随着𝑡增加,𝛽^𝑡接近于 0所以当𝑡很大的时候,偏差修正几乎没有作用,因此当𝑡较大的时候,紫线基本和绿线重合了。不过在开始学习阶段,你才开始预测热身练习,偏差修正可以帮助你更好预测温度,偏差修正可以帮助你使结果从紫线变成绿线。
在机器学习中,在计算指数加权平均数的大部分时候,大家不在乎执行偏差修正,因为大部分人宁愿熬过初始时期,拿到具有偏差的估测,然后继续计算下去。如果你关心初始时期的偏差,在刚开始计算指数加权移动平均数的时候,偏差修正能帮助你在早期获取更好的估测。
2.6 动量梯度下降法(Gradient descent with Momentum)
运行速度几乎总是快于标准的梯度下降算法,简而言之,基本的想法就是计算梯度的指数加权平均数,并利用该梯度更新你的权重.
计算方法
最后要说一点,如果你查阅了动量梯度下降法相关资料,你经常会看到一个被删除了的专业词汇,1 − 𝛽被删除了,二者都行,不过吴老师喜欢这个那就是这个了。
2.7 RMSprop
root mean square prop 算法,它也可以加速梯度下降。
实现细节:
要确保你的算法不会除以 0,如果𝑆𝑑𝑊的平方根趋近于 0 怎么办?得到的答案就非常大,为了确保数值稳定,在实际操练的时候,你要在分母上加上一个很小很小的𝜀,𝜀是多少没关系,10^−8是个不错的选择,这只是保证数值能稳定一些,无论什么原因,你都不会除以一个很小很小的数。
RMSprop 跟 Momentum 有很相似的一点,可以消除梯度下降中的摆动
2.8 Adam 优化算法(Adam optimization algorithm)
Adam 优化算法基本上就是将 Momentum 和 RMSprop 结合在一起.
除了第一个,其他的都有推荐常用值。
Adam 代表的是 Adaptive Moment Estimation,
𝛽1用于计算这个微分(𝑑𝑊),叫做第一矩,𝛽2用来计算平方数的指数加权平均数((𝑑𝑊)2),叫做第二矩,所以 Adam 的名字由此而来,但是大家都简称 Adam 权威算法
2.9 学习率衰减(Learning rate decay)
慢慢减少𝑎的本质在于,在学习初期,你能承受较大的步伐,但当开始收敛的时候,小一些的学习率能让你步伐小一些。
有时人们也会用一个离散下降的学习率,也就是某个步骤有某个学习率,一会之后,学习率减少了一半,一会儿减少一半,一会儿又一半,这就是离散下降(discrete stair cease)的意思。还有手动衰减的办法。。。
2.10 局部最优的问题(The problem of local optima)
W1,W2是想要优化的参数。
事实上,如果你要创建一个神经网络,通常梯度为零的点并不是这个图中的局部最优点,实际上成本函数的零梯度点,通常是鞍点。
局部最优不是问题,问题是平稳段会减缓学习,平稳段是一块区
域,其中导数长时间接近于 0,梯度会从曲面从从上向下下降,因为梯度等
于或接近 0,曲面很平坦,你得花上很长时间慢慢抵达平稳段的这个点。
第二点,平稳段是一个问题,这样使得学习十分缓慢。
因为你的网络要解决优化问题,说实话,要面临如此之高的维度空间,我觉得没有人有那么好的直觉,知道这些空间长什么样,而且我们对它们的理解还在不断发展,不过我希望这一点能够让你更好地理解优化算法所面临的问题。