Cousera - Deep Learning - 课程笔记 - Week 6

2018年9月版本

Week 6

小批量梯度下降 Mini-batch Gradient Descent (MGD)

  • 使用向量化算法,我们可以同时计算m个实例的相关数据
  • 但是在m非常大的情况下,这一过程仍然会非常慢
  • 对于梯度下降,在每一次迭代中,完整地处理一次数据将变得非常麻烦,整体达到最优变得不太实际
  • mini-batch,即对于整个巨大的数据集,将其拆分成更小的训练集,称之为小批量训练集
  • 对每一个小集,记为 X { t } X^{\{t\}} X{t},对应的y也进行类似处理
  • 规定一个小集内含有 m x m_x mx个实例,那么一个小集 X { t } X^{\{t\}} X{t}的维数为 n x × m x n_x \times m_x nx×mx,对应 Y { t } Y^{\{t\}} Y{t}的维数为 1 × m x 1 \times m_x 1×mx
  • 相应的,对原始的GD算法是为一个大的batch上的GD操作(BGD)

MGD的具体操作

  • 针对每一组小集:

    • 使用一组小集进行正向传播(注意输入是 X { t } X^{\{t\}} X{t}
    • 针对这个小集计算代价函数(注意 m m m现在是 m x m_x mx
    • 针对这个小集进行梯度下降操作
    • 更新参数
  • 遍历(epoch):对训练集完成一次遍历

  • 在原始GD中,一次epoch只能实现一次步进,但是对于MGD,则可以实现 m m x \frac{m}{m_x} mxm次步进

  • 由于不同组数据之间可能有些许不同,MGD的代价函数整体随迭代次数增加会逐渐下降,但是中间可能会出现大量的噪声

选择mini-batch的大小

  • m x = m m_x = m mx=m,MGD就是原始的BGD(数据量巨大,耗时长)
  • m x = 1 m_x=1 mx=1,MGD就变成了SGD(Stochastic Gradient Descent,随机梯度下降)(失去了向量化加速的机会,且很难收敛)
  • 因此,应当选择一个介于1和m之间的一个位置(耗时较短,同时能够很快地收敛,噪声较SGD小)
  • 选择方式:
    • 对于一个比较小(小于2000)的训练集:直接使用BGD
    • 一般的mini-batch大小:2的6次方到2的9次方(或其他2的次方)
    • 应当确保一组小集的内容可以被加载到内存中

指数加权平均 Exponentially Weighted Averages

  • V t = β V t − 1 + ( 1 − β ) θ t ,    V 0 = 0 V_t=\beta V_{t-1} + (1-\beta)\theta_t ,\; V_0=0 Vt=βVt1+(1β)θt,V0=0
  • 在这里,可以认为 V t V_t Vt大约是前 1 1 − β \frac{1}{1-\beta} 1β1项的平均值

偏差修正 Bias Correction

  • 直接使用EWA可能出现起点过低的情况(对 t = 1 t=1 t=1,就是一个非常不准确的值)

  • 解决方法:使用 V t 1 − β t \frac{V_t}{1-\beta^t} 1βtVt代替 V t V_t Vt

  • 在计算初期,该方法能够有效矫正偏差,并在后期逐渐消除影响( β t \beta^t βt会趋近于0),有助于还原数值,同时辅助前期进行更加精确的估计

动量梯度下降 Gradient Descent with Momentum

  • 比传统GD更快
  • 基本思想:使用梯度的指数加权平均更新权重
  • 在第t次迭代中:
    • 计算当前mini-batch的dW和db
    • 计算 V d W = β V d W + ( 1 − β ) d W V_{dW}=\beta V_{dW}+(1-\beta)dW VdW=βVdW+(1β)dW以及 V b d = β V d b + ( 1 − β ) d b V_{bd}=\beta V_{db}+(1-\beta)db Vbd=βVdb+(1β)db
    • 使用 V d W V_{dW} VdW V d b V_{db} Vdb更新权重
  • 整个过程就像是小球在碗内向下滚动,获得了一个动量,变得更快,但是存在摩擦(β)不至于无限加速
  • 实践中,β常取值0.9
  • 在使用GDM的时候,不需要考虑偏差矫正

均方根传递 Root Mean Square prop (RMSprop)

  • 加速梯度下降
  • 在第t次迭代中:
    • 计算当前mini-batch的dW和db
    • 计算 S d W = β S d W + ( 1 − β ) d W ∗ ∗ 2 S_{dW}=\beta S_{dW} + (1-\beta)dW**2 SdW=βSdW+(1β)dW2(保存了导数平方的指数加权平均数)
    • 计算 S d b = β S d b + ( 1 − β ) d b ∗ ∗ 2 S_{db}=\beta S_{db} + (1-\beta)db**2 Sdb=βSdb+(1β)db2
    • 更新参数 W : = W − α d W S d W + ϵ    b : = b − α d b S b d + ϵ W:=W-\alpha \frac{dW}{\sqrt{S_{dW}}+\epsilon} \; b:=b-\alpha \frac{db}{\sqrt{S_{bd}}+\epsilon} W:=WαSdW +ϵdWb:=bαSbd +ϵdb
  • 减弱垂直方向(b)的震荡,并适度放大水平方向(W)的震荡
  • 此处的β和GDM不是一个参数
  • ε是防止分母过于接近0出现除零问题

Adam优化算法

  • 动量和RMSprop的结合

  • 初始化: V d W = 0 , S d W = 0 , V d b = 0 , S d b = 0 V_{dW}=0,S_{dW}=0,V_{db}=0,S_{db}=0 VdW=0,SdW=0,Vdb=0,Sdb=0

  • 在第t次迭代中:

    • 计算当前mini-batch的dW和db

    • 计算 V d W = β 1 V d W + ( 1 − β 1 ) d W ,    V d b = β 1 V d b + ( 1 − β 1 ) d b V_{dW}=\beta_1 V_{dW} + (1-\beta_1) dW,\;V_{db}=\beta_1 V_{db} + (1-\beta_1) db VdW=β1VdW+(1β1)dW,Vdb=β1Vdb+(1β1)db

    • 计算 S d W = β 2 S d W + ( 1 − β 2 ) d W ∗ ∗ 2 ,    S d b = β 2 S d b + ( 1 − β 2 ) d b ∗ ∗ 2 S_{dW}=\beta_2 S_{dW} + (1-\beta_2) dW**2,\;S_{db}=\beta_2 S_{db} + (1-\beta_2)db ** 2 SdW=β2SdW+(1β2)dW2,Sdb=β2Sdb+(1β2)db2

    • 需要偏差校正 V d W c o r r e c t e d = V d W 1 − β 1 t ,    V d b c o r r e c t e d = V d b 1 − β 1 t V_{dW}^{corrected}=\frac{V_{dW}}{1-\beta_1^t},\;V_{db}^{corrected}=\frac{V_{db}}{1-\beta_1^t} VdWcorrected=1β1tVdW,Vdbcorrected=1β1tVdb

    • 还要在S上进行校正 S d W c o r r e c t e d = S d W 1 − β 2 t ,    S d b c o r r e c t e d = S d b 1 − β 2 t S_{dW}^{corrected}=\frac{S_{dW}}{1-\beta_2^t},\;S_{db}^{corrected}=\frac{S_{db}}{1-\beta_2^t} SdWcorrected=1β2tSdW,Sdbcorrected=1β2tSdb

    • 更新参数 W : = W − α V d W c o r r e c t e d S d W c o r r e c t e d + ϵ ,    b : = b − α V d b c o r r e c t e d S d b c o r r e c t e d + ϵ W:=W-\alpha \frac{V_{dW}^{corrected}}{\sqrt{S_{dW}^{corrected}}+\epsilon},\;b:=b-\alpha \frac{V_{db}^{corrected}}{\sqrt{S_{db}^{corrected}}+\epsilon} W:=WαSdWcorrected +ϵVdWcorrected,b:=bαSdbcorrected +ϵVdbcorrected

  • α需要自行进行调整,β1通常取0.9,β2建议取0.999,ε常取1e-8

  • Adam意取“自适应矩估计”(Adaptive Moment Estimation),两个β分别为一阶矩和二阶矩

学习率衰减 Learning Rate Decay

  • 使用mini-batch时,由于噪声和固定的α,梯度下降最终可能会在最小值徘徊而不收敛

  • 一种思路:随着训练不断深入,逐渐减小α,让梯度下降无限逼近最小值点

  • 学习率设定 α : = 1 1 + d e c a y r a t e × e p o c h α 0 \alpha:=\frac{1}{1+decayrate \times epoch}\alpha_0 α:=1+decayrate×epoch1α0

  • 其他方法 α : = 0.9 5 e p o c h α 0 \alpha:=0.95^{epoch}\alpha_0 α:=0.95epochα0

  • 其他方法 α : = k e p o c h α 0 \alpha:=\frac{k}{\sqrt{epoch}}\alpha_0 α:=epoch kα0

  • 其他方法 α : = k t α 0 \alpha:=\frac{k}{\sqrt{t}}\alpha_0 α:=t kα0

  • 其他方法,α以离散的阶梯递减,不同的t阶段使用上一阶段值的一半

局部最优解 Local Optima

  • 鞍点(Saddle Point):一些参数局部最小,但一些参数局部最优的情况
  • 停滞区(Plateaus):降低学习速度,指导数长时间接近0的一段区域
  • 被局部最优解困住的情况一般很少出现在大量参数的模型中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值