吴恩达DL系列02#Lesson2Week2-3学习提纲~自用

优化算法

优化算法能够帮助你快速训练模型,让神经网络运行得更快

mini-batch

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

随机梯度下降法缺点:失去向量化带来的加速,一次处理一个训练样本

指数加权平均数

指数加权移动平均

vt代表到第t天的平均温度值,θt代表第t天的温度值 , β代表可调节的超参数值

假如,我们可以得到指数平均公式下的平均值求法如下

img preview

本质就是以[指数式]递减加权的移动平均。各数值的加权而随时间而指数式递减,越近期的数据加权越重,但较旧的数据也给予一定的加权。

指数加权平均要求从0到某一时刻(n)的平均值的时候,我并不需要像普通求解平均值的作为,保留所有的时刻值,类和然后除以n。

而是只需要保留0-(n-1)时刻的平均值和n时刻的温度值即可。也就是每次只需要保留常数值,然后进行运算即可,这对于深度学习中的海量数据来说,是一个很好的减少内存和空间的做法。

vt大概是1/(1-β)的每日温度,如果β是0.9,你会想,这是十天的平均值,也就是红线部分。

将β设置为接近1的一个值,比如0.98,计算,这就是粗略平均了一下,过去50天的温度,这时作图可以得到绿线

这个高值要注意几点,你得到的曲线要平坦一些,原因在于你多平均了几天的温度,所以这个曲线,波动更小,更加平坦,缺点是曲线进一步右移,因为现在平均的温度值更多,要平均更多的值,指数加权平均公式在温度变化时,适应地更缓慢一些,所以会出现一定延迟,因为当,相当于给前一天的值加了太多权重,只有0.02的权重给了当日的值,所以温度变化时,温度上下起伏,当 较大时,指数加权平均值适应地更缓慢一些

指数加权平均的偏差修正指数加权平均的偏差修正

偏差修正可以让平均数运算更加准确

修改这一估测,让估测变得更好,更准确,特别是在估测初期,也就是不用vt,而是使用vt/(1-β^t),t就是现在的天数.也就是加权平均数,并去除了偏差。

随着t增加,β^t接近于0,所以当t很大的时候,偏差修正几乎没有作用,因此当t较大的时候,紫线基本和绿线重合了.

如果关心初始时期的偏差,在刚开始计算指数加权移动平均数的时候,偏差修正能帮助你在早期获取更好的估测

动量梯度下降法

Momentum动量梯度下降法:运行速度几乎总是快于标准的梯度下降算法。基本的想法就是计算梯度的指数加权平均数,并利用该梯度更新权重!

上下波动减慢了梯度下降法的速度,结果可能会偏离函数的范围,为了避免摆动过大,你要用一个较小的学习率。

在纵轴上,你希望学习慢一点,因为你不想要这些摆动,但是在横轴上,你希望加快学习,你希望快速从左向右移,移向最小值,移向红点

在上几个导数中纵轴上的摆动平均值接近于零,所以在纵轴方向,你希望放慢一点,平均过程中,正负数相互抵消,所以平均值接近于零。但在横轴方向,所有的微分都指向横轴方向,因此横轴方向的平均值仍然较大

动量梯度下降法,最终纵轴方向的摆动变小了,横轴方向运动更快,因此你的算法走了一条更加直接的路径,在抵达最小值的路上减少了摆动

动量梯度下降法能够最小化碗状函数

RMSprop

加速梯度下降,减缓方向的学习,即纵轴方向,同时加快,至少不是减缓横轴方向的学习

将微分进行平方,然后最后使用平方根

学习率衰减

拆分成不同的mini-batch,第一次遍历训练集叫做第一代。第二次就是第二代,依此类推

局部最优的问题

局部最低点与鞍点,相类似的一点是:在这个点的(一阶)导数为0

如果你在2万维空间中,那么想要得到局部最优,所有的2万个方向都需要是这样,但发生的机率也许很小

你更有可能遇到有些方向的曲线会这样向上弯曲,另一些方向曲线向下弯,而不是所有的都向上弯曲,因此在高维度空间,你更可能碰到鞍点,而不会碰到局部最优。

所以:在训练较大的神经网络,存在大量参数,并且成本函数被定义在较高的维度空间时,不太可能困在极差的局部最优中

平稳段使得学习十分缓慢,在这些情况下,更成熟的优化算法,如Adam算法,能够加快速度,尽早往下走出平稳段。

系统组织超参数

调试处理

为超参数选择合适的范围

P72 不理解

超参数训练

熊猫方式。当熊猫有了孩子,他们的孩子非常少,一次通常只有一个,然后他们花费很多精力抚养熊猫宝宝以确保其能成活,所以,这的确是一种照料,一种模型类似于一只熊猫宝宝

鱼子酱方式。在交配季节,有些鱼类会产下一亿颗卵,但鱼类繁殖的方式是,它们会产生很多卵,但不对其中任何一个多加照料,只是希望其中一个,或其中一群,能够表现出色

这两种方式的选择,是由你拥有的计算资源决定的,如果你拥有足够的计算机去平行试验许多模型,那绝对采用鱼子酱方式,尝试许多不同的超参数,看效果怎么样

归一化网络的激活函数

Batch归一化会使你的参数搜索问题变得很容易,使神经网络对超参数的选择更加稳定,超参数的范围会更加庞大,工作效果也很好,也会是你的训练更加容易,甚至是深层网络。

归一化x1,x2,x3,会帮助你更有效的训练w和b。

实践中,经常做的是归一化z[2],即在激活函数之前应该将z值归一化

Batch归一化

把这些z值标准化

通过赋予γ和β其它值,可以使你构造含其它平均值和方差的隐藏单元值。

将 Batch Norm 拟合进神经网络

无论的值是多少,b[l]都是要被减去的,因为在Batch归一化的过程中,你要计算z[l]的均值,再减去平均值,在此例中的mini-batch中增加任何常数,数值都不会改变,因为加上的任何常数都将会被均值减去所抵消。

Batch Norm 为什么奏效?

通过归一化所有的输入特征值,以获得类似范围的值,可以加速学习

Batch归一化起的作用的原因,直观的一点就是,它在做类似的工作,但不仅仅对于这里的输入值,还有隐藏单元的值,

Batch归一化有效的第二个原因是,它可以使权重比你的网络更滞后或更深层,

P76不理解

Softmax 回归

用来处理两种(Logistic回归)或多种分类问题

没有隐藏层时候,Softmax代表多种分类之间的这些类型的线性决策边界

当然更深的神经网络会有,然后是一些隐藏单元,以及更多隐藏单元等等,你就可以学习更复杂的非线性决策边界,来区分多种不同分类

hardmax会把向量z变成这个向量[1,0,0,0]T

训练softmax分类器

  1. 计算损失函数

posted @   Lu西西  阅读(28)  评论(0编辑  收藏  举报
相关博文:
点击右上角即可分享
微信分享提示