吴恩达老师深度学习视频课笔记:优化算法

        优化算法能够帮助你快速训练模型。

        mini-batch梯度下降法:把训练集分割(split)为小一点的子训练集,这些子集被叫做mini-batch。

        batch梯度下降法指的是:同时处理整个训练集,只有处理完整个训练集才更新一次权值和偏置。并且预期每次迭代的成本都会下降,如果成本函数(cost function)J是迭代次数的一个函数,它应该会随着每次迭代而减少,如果J在某次迭代中增加了,那肯定在某处出现了问题。

        mini-batch梯度下降法指的是:每次同时处理的是单个mini-batch,而不是同时处理整个训练集,每处理完单个子集时都会更新一次权值和偏置。但是与batch梯度下降法不同的是,如果成本函数(cost function)J是迭代次数的一个函数,则并不是每次迭代J都是下降的,它的趋势是向下,但是也带有更多的噪声;在mini-batch梯度下降法中,没有每次迭代J都是下降的也是可以的,但是走势应该是向下的,如下图:


        选择mini-batch的大小:假设m为整个训练集的大小。一种极端情况下,如果mini-batch的大小为m,其实就是batch梯度下降法。另一种极端情况下,如果mini-batch的大小为1,则叫做随机梯度下降法(stochastic gradient descent),每个样本都是一个独立的mini-batch。随机梯度下降法永远不会收敛,而是会一直在最小值附近波动,但是并不会在达到最下值时停留下来。实际中,mini-batch的大小应该在1和m之间选择,1太小而m太大,如下图:


        如果训练集较少,直接使用batch梯度下降法,样本集较少就没必要使用mini-batch梯度下降法。一般说的少是指样本集总数小于2000.如果样本集数目较大的话,一般的mini-batch大小在64至512之间,如64、128、256、512。考虑到电脑内存布局和访问的方式,有时mini-batch的大小为2的n次方,code会运行的较快一些。

        指数加权平均(exponentially weighted averages):关键公式vt=βvt-1+(1-β)θt,如下图,以计算一年中第t天的平均温度为例,图中的v100就是一年中第100天计算的数据。有偏差修正(biascorrection)的指数加权平均。


        偏差修正(bias correction):可以让平均数计算更加准确。如果你关心初始时期的偏差,在刚开始计算指数加权平均数的时候,偏差修正能帮助你在早期获得更好的估计。即用vt/(1-βt)= (βvt-1+(1-β)θt)/ (1-βt)替代之前vt=βvt-1+(1-β)θt,你会发现,随着t的增加,β的t次方将接近于0,所以当t很大的时候,偏差修正几乎没有作用,如下图:


        动量梯度下降法(gradient descent with momentum):运行速度几乎总是快于标准的梯度下降算法。基本的想法就是计算梯度的指数加权平均并利用该梯度更新你的权值。在mini-batch或batch梯度下降法中,第t次迭代过程中,你会计算导数dw,db,如下图:


        这样就可以减缓梯度下降的幅度。不像梯度下降法,每一步都独立于之前的步骤。超参β控制着指数加权平均(exponentially weighted average),β最常用的值是0.9。实际中,在使用梯度下降法或momentum时并不强制(bother)使用偏差修正,因为10次迭代以后,你的移动平移(your moving average)已经过了初始阶段不再是一个具有偏差的预测。vdw的初始值为0,vdw和w具有相同的维数。vdb的初始值也为0和b具有相同的维数。有时会使用vdw=βvdw+dw替代vdw=βvdw+(1-β)dw,一般不这么做。

        RMSprop(root mean square prop,均方根):也可以加速梯度下降,如下图。在第t次迭代中,RMSprop会照常计算dw,db,保留指数加权平均,使用sdw替代vdw, sdw=βsdw+(1-β)dw2,这样做能够保留导数平方的加权平均数(an exponentially weighted average of thesquares of the derivatives)。sdb类似。接着,RMSprop会这样更新参数值:w=w-αdw/(square root(sdw)),参数b类似。RMSprop和momentum一样,可以消除梯度下降中的摆动,并允许你使用一个更大的学习率α。


        Adam(Adaptive Moment Estimation):将momentum和RMSprop结合在一起,如下图。一般使用Adam时,要计算偏差修正。Adam能有效适用于不同的神经网络。在使用Adam时,人们经常赋值超参数β1为0.9, β2为0.999,ε为10-8,经常使用这些缺省值即可,然后尝试不同的α值,看看哪个效果更好。


        Learning rate decay(学习率衰减):加快学习算法的一个办法就是随时间慢慢减少学习率,称之为学习率衰减,公式如下图。如果使用学习率衰减,需要调的超参包括:α0即初始学习率;衰减率(decay  rate);k等。有时人们还会手动衰减,一般只有模型数量小的时候有用。



        局部最优的问题:创建一个神经网络,通常梯度为零的点,并不是局部最优点,实际上成本函数J的零梯度点通常是鞍点,如下图。一个具有高维空间的函数,如果梯度为0,那么在每个方向它可能是凸函数,也可能是凹函数,在高维度空间更有可能碰到鞍点而不会碰到局部最优。


GitHubhttps://github.com/fengbingchun/NN_Test  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值