第2次课改善深层神经网络:超参数优化、正则化以及优化

来源:互联网 发布:gif制作软件 编辑:程序博客网 时间:2024/06/05 19:01

1. mini-batch,小批量梯度下降法

  • 批量(Batch)和小批量(mini-batch)梯度下降法

向量化输入输出

  • 输入:(nx,m),n个特征,m个样本
    X=[x(1)x(2) ... x(m)]
  • 输出:(1,m)
    Y=[y(1)y(2) ... y(m)]

Batch & mini-batch定义

  • 批量:一次迭代整个数据集,计算出一个误差然后更新权值和偏置(w,b)
  • 小批量:一次迭代mini-batch size个样本,计算一个误差然后更新参数

算法步骤

  • 假设样本集大小为500万,mini-batch size为1000,则有5000个mini-batch
  • repeat
    • For t=1…5000
      • Forward prop on X{t}
        • Z[1]=W[1]X{t}+b[1]
        • A[1]=g[1](Z[1])
        • A[L]=g[L](Z[L])
      • Compute cost J{t}=11000Li=1L(y^(i),y(i))+λ21000L||w[l]||2F
      • Backprop to compute gradients using J{t}(X{t},Y{t})
        • W[L]:=W[L]αdW[L],b[L]:=b[L]αdb[L]
    • epoch: 遍历一次训练集,使用batch,一次epoch只能更新一次参数,mini-batch如上例,可以更新5000次参数

J下降

  • batch: 一直下降
  • mini-batch: 局部波动,整体下降

选择mini-batch size

  • mini-batch size=m: Batch gradient descent
  • mini-batch size=1: Stochastic gradient descent
  • 优点和缺点
    • Batch gradient descent: 可以很好的取到最好的参数,但是如果数据集太大会导致迭代一次耗时很长
    • Stochastic gradient descent: 有噪声,虽然可以通过减小学习率减少噪声,但是不会取到最好的参数,而且失去了向量化带来的速度优化
    • mini-batch: 可以向量化,不需要一次性遍历整个训练集
  • 选择mini-batch size的原则
    1. 如果训练集很小,比如样本数小于2000,mini-batch size=m
    2. mini-batch size取2的整数倍,比如说64,128,256,512等,有助于计算机加快运算
    3. 确保CPU/GPU能够加载一个mini-batch

2. 指数加权平均(Exponentially weight average)

计算公式

  • 给定一个时间序列,比如伦敦一年的每天气温θ1,θ2,...,θ365

    v0v1vt===00.9v0+0.1θ10.9vt1+0.1θt

  • 维基百科上的定义

    St={Y1,αYt+(1α)St1,t=1t>1

其中α是权值,Yt是实际值,St是加权平均后的值

平均过去多少天

11β

  • 如上β=0.9,则约等于10天
  • β越大,过去的影响越多,曲线越平滑,即时反应越弱

算法本质

v100=0.1θ100+0.10.9θ99+0.10.92θ98 ...

  • 0.9101e,相当于把过去10天的气温指数加权平均作为当日的气温,因为10天后权重下降到当日的三分之一不到

算法步骤

  • v = 0
  • repeat
    • get θi
    • v := βv+(1-β)θi
  • 好处,节省内存,尤其对于数据大的情况,和移动窗求加权平均稍微差一点

偏差修正(bias correction)

  • 注意到加权平均的第一个值被初始化为0,所以前几个值和实际值会相差很大,使用偏差修正来改变
  • 将上述算法计算后的值做如下处理

    vt:=vt1βt

  • 对于第一个值

    v1=βv0+(1β)θ1=(1β)θ1v1:=v11β=θ1

  • 对于第二个值

    v2=βv1+(1β)θ2=(1β)θ2+β(1β)θ1v2:=v21β2=11βθ2+β1βθ1

  • 越往后偏差修正的影响越小

3. 动量梯度下降法(gradient descent with momentum)

  • 计算梯度的指数加权平均数,并利用该梯度更新权重

算法步骤

  • On iteration t:
    • Compute dw, db on current mini-batch
    • vdw=βvdw+(1β)dw
    • vdb=βvdb+(1β)db
    • w:=wαvdw,b:=bαvdb
  • 另一个版本: vdw=βvdw+dw,vdb=βvdb+dbvdw,vdb减小了1β倍,所以α需要相应改变
  • 效果:在抵达最小值的路径上减少了摆动,通过累加,减少摆动的误差,增大向极小值的梯度
  • 一般β=0.9

4. RMSprop(root mean square prop)

算法步骤

  • On iteration t:
    • Compute dw, db on current mini-batch
    • Sdw=β2vdw+(1β2)dw2
    • Sdb=β2vdb+(1β2)db2
    • w:=wαvdwSdw+ϵ,b:=bαvdbSdb+ϵ
  • 效果:在抵达最小值的路径上减少了摆动,比较大的dwi,会被一个大的vdwi除,所以可以减少摆动,同时可以增大学习速率来加快学习
  • ϵ=108,防止分母太小导致变化太大

5. Adam(Adaptive moment estimate) optimization algorithm

  • 整合了momentum和RMSprop

算法步骤

  • On iteration t:
    • Compute dw, db on current mini-batch
    • momentum
    • vdw=β1vdw+(1β1)dw,vdb=β1vdb+(1β1)db
    • RMSprop
    • Sdw=β2vdw+(1β2)dw2,Sdb=β2vdb+(1β2)db2
    • bias correction
    • vcorrectiondw=vdw/(1βt1),vcorrectiondb=vdb/(1βt1)
    • Scorrectiondw=Sdw/(1βt2),Scorrectiondb=Sdb/(1βt2)
    • change the w and b
    • w:=wαvcorrectiondwScorrectiondw+ϵ,b:=bαvcorrectiondbScorrectiondb+ϵ

参数设置

  • alpha: 需要调参
  • β1: 影响dw,db,作者设置为0.9,一般不需要改
  • β2: 影响dw2,db2,作者设置为0.999,一般不需要改
  • ϵ: 一般设置为108

6. 学习率衰减(learning rate decay)

  • 随时间慢慢减少学习率,在学习初期步长较大,能够比较快的接近最小值,后期步长减小,帮助收敛

算法步骤

  • 1 epoch: 迭代一次训练集
    • α=11+decayrateepochnumα0
    • 或者α=0.95epochnumα0或者α=kepochnumα0,α=ktα0或者离散下降(discrete staircase),阶梯函数,过几代就减少,例如减小一半

7. 局部最优问题

  • 不太可能碰到局部最优,J对w,b求导为0的点一般都是鞍点,w的维度很高,只要有一个是凹函数,就是鞍点
  • plateaus: 导数长时间接近于0的区域,因为导数很小,所以需要长时间的迭代才能走出来

课程地址:http://mooc.study.163.com/course/deeplearning_ai-2001281003?tid=2001391036#/info

阅读全文
0 0
原创粉丝点击