Lecture 2 What to do if my network fails to train

Lecture 2: What to do if my network fails to train

Chapter 2 What to do if my network fails to train

本章不讨论 o v e r f i t t i n g overfitting overfitting 出现的情况,仅讨论在做 o p t i m i z a t i o n optimization optimization 时如何将 g r a d i e n t   d e s c e n t gradient\ descent gradient descent 做得更好。

为什么 Optimization 会失败?

image-20220821151024054

在利用 n e u r a l   n e t w o r k neural\ network neural network 的时候,可能会出现上图中的两种情况。上图中蓝线,认为 t r a i n i n g   l o s s training\ loss training loss 下降得不够多,不能充分体现神经网络的优势;上图中橙线, t r a i n i n g   l o s s training\ loss training loss 从始至终都降不下来。

出现这两种情况的原因是 Loss Function \text{Loss Function} Loss Function 对参数求导已经趋于 0 0 0 (即梯度趋近于 0 \bf 0 0),这时我们往往想到 c r i t i c a l   p o i n t critical\ point critical point,即 l o c a l   m i n i m a local\ minima local minima(局部最小值)和 s a d d l e   p o i n t saddle\ point saddle point(鞍点)。

image-20220821152114487

当陷入局部最小值时,此时的梯度已经很难做出调整;当位于鞍点时,我们还有路可走,远离当前的鞍点。那么如何区分这两种情况呢?

区分 l o c a l   m i n i m a local\ minima local minima s a d d l e   p o i n t saddle\ point saddle point

利用泰勒级数逼近 L o s s Loss Loss
image-20220821155402586

当我们到达 c r i t i c a l   p o i n t critical\ point critical point 时,上图绿框部分为 0 0 0(梯度为 0 \bf 0 0),而从红色框中的这一项我们能判断出 e r r o r   s u r f a c e error\ surface error surface 的形状,从而判断当前的 c r i t i c a l   p o i n t critical\ point critical point 属于哪一类型。

image-20220821155745034

critical point,为了更简单地表示,做了如下的数学变换:

image-20220821160050394

结论如下:

image-20220821161318991

可以转换为对海森矩阵 H \bf H H 的研究:

  • H \bf H H 是正定的,其所有特征值都为正,此时 L ( θ ′ ) L(\theta^{'}) L(θ) 是局部最小;
  • H \bf H H 是负定的,其所有特征值都为负,此时 L ( θ ′ ) L(\theta^{'}) L(θ) 是局部最大;
  • H \bf H H 的特征值有正有负,此时 L ( θ ′ ) L(\theta^{'}) L(θ) 是鞍点。
举例

如下图所示,模型是 y = w 1 w 2 x y=w_1w_2x y=w1w2x,并且训练数据只有 ( x , y ^ ) = ( 1 , 1 ) (x,\hat y)=(1,1) (x,y^)=(1,1) 这一组。

image-20220821162058887

通过计算不同 w 1 ,   w 2 w_1,\ w_2 w1, w2 时的 L o s s Loss Loss,画出如下的 e r r o r   s u r f a c e error\ surface error surface c r i t i c a l   p o i n t critical\ point critical point 都用黑点标出:

image-20220821163336674

如果不用上图这种穷搜法,应该如何判断呢?

image-20220822111634948
  1. 写出 l o s s   f u n c t i o n loss\ function loss function
  2. 求偏导;
  3. 求驻点;
  4. 计算海森矩阵 H \bf H H
  5. 计算海森矩阵 H \bf H H 的特征值(eigenvalue);
  6. 得结论。
image-20220822154609429

遇到鞍点时,通过海森矩阵 H \bf H H 也许能找到更新方向。找到海森矩阵 H \bf H H 的一组特征值 λ < 0 \lambda<0 λ<0 与特征向量 u \bf u u,再通过上图的数学处理找到新的参数 θ = θ ′ + u \theta=\theta^{'}+\bf u θ=θ+u 使得 L ( θ ) < L ( θ ′ ) L(\theta)<L(\theta^{'}) L(θ)<L(θ)

接上例,取 λ 2 = − 2 ,   u = ( 1 , 1 ) T \lambda_2=-2,\ {\bf u}={(1,1)}^{\rm T} λ2=2, u=(1,1)T。我们应该沿着 u = ( 1 , 1 ) T {\bf u}={(1,1)}^{\rm T} u=(1,1)T 的方向更新参数,这样 L o s s Loss Loss 就会减小从而逃离鞍点,如下图所示。然而,这种方法在实际应用中很少用到。

image-20220822155954658

l o c a l   m i n i m a local\ minima local minima v.s. s a d d l e   p o i n t saddle\ point saddle point

在更高的维度去找到解决 l o c a l   m i n i m a local\ minima local minima 的方法。存在一种可能 —— 存在一点,该点在二维空间是 l o c a l   m i n i m a local\ minima local minima,而在三维空间该点是 s a d d l e   p o i n t saddle\ point saddle point,如下图所示。

image-20220822160810735

在经验上,我们是支持 “参数(属性、维度)越多, l o c a l   m i n i m a local\ minima local minima 就越少” 这一说法的。

image-20220822161346065

Small Gradient

image-20220822161441214

Batch and Momentum

回顾

image-20220822171335255

Small Batch v.s. Large Batch

image-20220822191801057

在不考虑并行计算的前提下,Full Batch 和 mini Batch 的优缺点如上图所示。

如下图所示,存在并行计算的情况下,大批次不一定需要更多的时间计算梯度(相比于小批次);小批次在一个 epoch 训练中可能需要更长的时间

image-20220822192754384 image-20220822193216640

在实际情况中,大批次并没有像想象中的那么吃亏,反而效率更高;而采用小批次来训练,模型效果往往比大批次要好,如下图所示。

image-20220822193612098

出现上述结果的可能原因如下图所示。

image-20220822193946020

采用小批次训练,在 testing 时效果可能会更好,如下图所示。

image-20220822194256737

原因是使用大批次时,如果存在下图所示的 s h a r p   m i n i m a sharp\ minima sharp minima 此时在 testing 阶段会出现较大的误差

image-20220822194637229
Summary
image-20220822195310525

是否存在使用大批次结果又优秀的情况呢?

image-20220822195532718

Momentum(动量)

image-20220822233451806

如上图所示,在真实世界中,有一个小球从高处沿着一个斜坡落下,由于重力的原因小球能够一直沿着斜坡滚下去,哪怕遇到了凹陷( l o c a l   m i n i m a local\ minima local minima)只要小球的速度够快,它就能离开当前凹陷( l o c a l   m i n i m a local\ minima local minima)。那么,我们是否能够设计出一种参数更新策略来模仿这一物理现象呢?—— 我们引入 Momentum(动量)。

(Vanilla) Gradient Descent
image-20220822234222551

如上图所示,为了更新参数 θ \theta θ,记参数初始值为 θ 0 \theta^0 θ0,计算此时的梯度 g 0 {\bold g}^0 g0,接下来沿着梯度 g 0 \bf {g}^0 g0 的反方向更新参数,即 θ 1 = θ 0 − η g 0 \theta^1=\theta^0-\eta {\bf g}^0 θ1=θ0ηg0…,如此迭代更新下去。

Gradient Descent + Momentum
image-20220822235426500

如上图所示,在引入动量后,为了更新参数 θ \theta θ,记参数初始值为 θ 0 ,   m 0 = 0 \theta^0,\ {\bf m}^0=0 θ0, m0=0,计算梯度 g 0 {\bold g}^0 g0,第一次参数 θ 0 \theta^0 θ0 更新与传统梯度下降策略一致(因为 m 0 = 0 ,   m 1 = λ m 0 − η g 0 ,   θ 1 = θ 0 + m 1 = θ 0 − η g 0 {\bf m}^0=0,\ {\bf m}^1=\lambda {\bf m}^0-\eta{\bold g}^0,\ \theta^1=\theta^0+{\bf m}^1=\theta^0-\eta{\bf g}^0 m0=0, m1=λm0ηg0, θ1=θ0+m1=θ0ηg0);接下来计算梯度 g 1 ,   m 2 = λ m 1 − η g 1 {\bold g}^1,\ {\bf m}^2=\lambda {\bf m}^1-\eta{\bf g}^1 g1, m2=λm1ηg1,更新参数 θ 2 = θ 1 + m 2 \theta^2=\theta^1+{\bf m}^2 θ2=θ1+m2…,如此迭代更新下去。

也就是说,参数 θ \theta θ 的每一次更新,其方向由当前梯度的反方向( − g i -{\bf g}^i gi)与引入的新参数 m i {\bf m}^i mi 共同决定(两个向量做向量加法)。也可以这么说,参数 θ \theta θ 的每一次更新,都考虑到了之前迭代更新中的每一个梯度(原因如下图所示, m i {\bf m}^i mi g i {\bold g}^i gi 的线性组合)。

image-20220823000823889

Adaptive Learning Rate

Training Stuck ≠ \ne = Small Gradient

我们总是习惯性地认为训练效果不佳是因为参数到达了 c r i t i c a l   p o i n t critical\ point critical point 附近,而实际情况不总是如此

如下图所示,当 l o s s loss loss 不再大幅度地减少时,梯度的范数仍然再波动,不总是处于 S m a l l   G r a d i e n t Small\ Gradient Small Gradient 的状态。出现这种状况的原因可能是遇到了下图左边的 e r r o r   s u r f a c e error\ surface error surface

image-20220826092450171
Training can be difficult even without critical points
image-20220826093756270

如上图 ① 所示,这是一个凸的 e r r o r   s u r f a c e error\ surface error surface,我们期待参数从图中的黑点调整到图中橙色的×处。图 ② 和 ③ 分别采用了不同大小的学习率用梯度下降法来更新参数。当学习率较大时,数值震荡情况较为明显;当学习率较小时,虽然能较为稳定的趋近理想结果,但是效率低下。由此引出不同的参数需要不同的学习率

Different parameters need different learning rate

image-20220826095251347

我们期待当梯度变化较为陡峭时,使用较小的学习率;而当梯度变化较为平坦时,使用较大的学习率。

我们先只考虑更新一个参数的情况,最初的 G r a d i e n t   D e s c e n d Gradient\ Descend Gradient Descend
θ i t + 1 ← θ i t − η g i t g i t = ∂ L ∂ θ i ∣ θ = θ t \theta_i^{t+1}\leftarrow \theta_i^t-\eta {\bf g}_i^t\\ {\bf g}_i^t=\left.\frac{\partial L}{\partial \theta_i}\right|_{\theta=\theta_t} θit+1θitηgitgit=θiL θ=θt
客制化学习率后:
θ i t + 1 ← θ i t − η σ i t g i t \theta_i^{t+1}\leftarrow \theta_i^t-\frac{\eta}{\sigma_i^t} {\bf g}_i^t θit+1θitσitηgit
不同的参数会有不同的 σ \sigma σ,不同的迭代更新也会有不同的 σ \sigma σ。接下来,我们讨论计算 σ \sigma σ 的方法

Root Mean Square

一种常用的计算 σ \sigma σ 的方法是计算梯度的均方根

image-20220826100636362

如下图所示,参数 σ \sigma σ 实现了梯度大时使用小学习率,梯度小时使用大学习率。图中蓝线,计算出的梯度小,等到更小的 σ \sigma σ,因此 η / σ \eta/\sigma η/σ 的值就大,即学习率大;图中绿线,计算出的梯度大,等到更大的 σ \sigma σ,因此 η / σ \eta/\sigma η/σ 的值就小,即学习率小。

image-20220826101209203

e r r o r   s u r f a c e error\ surface error surface 往往较为复杂,我们期待学习率能够动态地调整

image-20220826101922111
RMSProp

为了实现学习率的动态调整,我们引入 RMSProp,与求梯度的均方根略有不同

image-20220826102509758

通过引入参数 α ,   0 < α < 1 \alpha,\ 0<\alpha<1 α, 0<α<1 来控制 σ \sigma σ 在多大程度上取决于现在算出来的梯度 g \bf g g

image-20220826103019988

在坡度(梯度)较为陡峭(大)时,调小 α \alpha α,从而 σ \sigma σ 较大,得到更小的学习率;反之,同理。

image-20220826103816808
Adam: RMSProp + Momentum

Original paper: Adam

image-20220826104409711

接[上例](#Training can be difficult even without critical points),采用 Adagrad (即采用了均方根的方法),结果如下图所示:

image-20220826111706591

图中红圈部分出现的原因: σ \sigma σ 的计算涉及到了全部的梯度,而最初的几个梯度波动较大,因此出现了这样的结果。如何避免?—— 引入 Learning Rate Scheduling

Learning Rate Scheduling

让学习率与训练时间相关联
θ i t + 1 ← θ i t − η t σ i t g i t \theta_i^{t+1}\leftarrow \theta_i^t-\frac{\eta^t}{\sigma_i^t} {\bf g}_i^t θit+1θitσitηtgit

Learning Rate Decay
image-20220826112055700
Warm up
image-20220826112813117

Summary of Optimization

image-20220826113239867
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值