人工神经网络笔记(二)梯度爆炸与消失、批量归一化、过拟合问题

人工神经网络笔记(二)梯度爆炸与消失、批量归一化、过拟合问题

  • Gradient exploding and vanishing
  • Mini-batch issue
  • Over-fitting issue

1、Gradient exploding and vanishing


1.1 模型训练过程

STEP0: 预设超参数

STEP1: 初始化模型参数

STEP2: 重复训练过程(次数为epoch)

STEP3: 保存模型

1.2 梯度爆炸与消失问题

人工神经网络笔记(二)梯度爆炸与消失、批量归一化、过拟合问题_第1张图片
在上图这个简单的神经网络模型中,由链式法则推导, ∂ l ∂ w 1 = ∂ l ∂ h l ( ∂ h l ∂ u l ∂ u l ∂ h l − 1 ) . . . . . . ( ∂ h 1 ∂ u 1 ∂ u 1 ∂ w 1 ) = ∂ l ∂ h l ( g ′ ( u l ) w l ) . . . . . . ( g ′ ( u 1 ) x ) \frac{\partial l}{\partial w_1}=\frac{\partial l}{\partial h_l}(\frac{\partial h_l}{\partial u_l}\frac{\partial u_l}{\partial h_{l-1}})......(\frac{\partial h_1}{\partial u_1}\frac{\partial u_1}{\partial w_1})=\frac{\partial l}{\partial h_l}(g^{'}(u_l)w_l)......(g^{'}(u_1)x) w1l=hll(ulhlhl1ul)......(u1h1w1u1)=hll(g(ul)wl)......(g(u1)x)

g ′ ( u i ) w i > 1 g^{'}(u_i)w_i>1 g(ui)wi>1恒成立,那么 ∣ ∂ l ∂ w 1 ∣ > > 1 |\frac{\partial l}{\partial w_1}| >>1 w1l>>1,出现梯度爆炸(gradient exploding);

g ′ ( u i ) w i < 1 g^{'}(u_i)w_i<1 g(ui)wi<1恒成立,那么 ∣ ∂ l ∂ w 1 ∣ < < 1 |\frac{\partial l}{\partial w_1}| <<1 w1l<<1,出现梯度消失(gradient vanishing);

1.3 梯度爆炸的解决方案

g ′ ( u i ) w i > 1 g^{'}(u_i)w_i>1 g(ui)wi>1恒成立,出现梯度爆炸现象,使得训练过程不稳定,为了避免此类情况的发生,需要保证: ∣ g ′ ( u i ) ∣ < = 1 , ∣ w i ∣ < = 1 ; |g^{'}(u_i)|<=1,|w_i|<=1; g(ui)<=1wi<=1

对于 ∣ g ′ ( u i ) ∣ |g^{'}(u_i)| g(ui),使用激活函数,将范围缩小,其中蓝线代表激活函数曲线,绿线代表其导函数曲线:

人工神经网络笔记(二)梯度爆炸与消失、批量归一化、过拟合问题_第2张图片
对于 ∣ w i ∣ |w_i| wi,初始化权重时设置值不要超过1,同时在训练过程中做标准化处理,保证 ∣ w i ∣ < = 1 |w_i|<=1 wi<=1

1.4 梯度消失的解决方案

g ′ ( u i ) w i < 1 g^{'}(u_i)w_i<1 g(ui)wi<1恒成立,出现梯度消失现象,使得训练过程极为缓慢,为了避免此类情况的发生,需要保证: ∣ g ′ ( u i ) w i ∣ |g^{'}(u_i)w_i| g(ui)wi不能过小;

对于 ∣ g ′ ( u i ) ∣ |g^{'}(u_i)| g(ui),当 ∣ u i ∣ > 0 |u_i|>0 ui>0使用ReLU激活函数;当 ∣ u i ∣ > > 1 |u_i|>>1 ui>>1,使用Sigmoid或tanh激活函数;

对于 w i w_i wi,初始化过程: w i ∈ N ( 0 , σ 2 ) 或 U ( − a , a ) w_{i} \in N(0, \sigma^2)或U(-a, a) wiN(0,σ2)U(a,a),同时在训练过程中做标准化处理;

1.5 权重初始化:Xavier’s method

人工神经网络笔记(二)梯度爆炸与消失、批量归一化、过拟合问题_第3张图片
Xavier’s method’ goal:为了使得网络中信息更好的流动,每一层输出的方差应该尽量相等;

如图是 l l l层的网络结构,我们假设 g ( u l , k ) g(u_l,k) g(ul,k)大致是 u l , k u_{l,k} ul,k的线性组合,那么在 l l l层, h l , k = ∑ h l − 1 , j w j , k h_{l,k}=\sum{h_{l-1,j}}{w_{j,k}} hl,k=hl1,jwj,k


根据上述公式, V a r ( h l , k ) = ∑ j = 1 n V a r ( h l − 1 , j ) V a r ( w j , k ) ≈ n V a r ( h l − 1 ) V a r ( w ) Var(h_{l,k})=\sum_{j=1}^{n}{Var(h_{l-1,j})}{Var(w_{j,k})} \approx nVar(h_{l-1})Var(w) Var(hl,k)=j=1nVar(hl1,j)Var(wj,k)nVar(hl1)Var(w);

为了保证 V a r ( h l , k ) ≈ V a r ( h l − 1 ) Var(h_{l,k})\approx Var(h_{l-1}) Var(hl,k)Var(hl1),则 n V a r ( w ) = 1 , V a r ( w ) = 1 n nVar(w) = 1,Var(w)=\frac{1}{n} nVar(w)=1Var(w)=n1;

类似地,考虑后向传播过程: V a r ( w ) = 1 m Var(w)=\frac{1}{m} Var(w)=m1;

由于输出层和输出层的数量常常不同,作为妥协,得到: V a r ( w ) = 2 m + n Var(w)=\frac{2}{m+n} Var(w)=m+n2;

基于 E ( w ) = 0 , V a r ( w ) = 2 m + n E(w)=0,Var(w)=\frac{2}{m+n} E(w)=0Var(w)=m+n2,可从Gaussian distribution中采样,或从uniform distribution U [ − 6 m + n , + 6 m + n ] U[-\frac{\sqrt{6}}{\sqrt{m+n}},+\frac{\sqrt{6}}{\sqrt{m+n}}] U[m+n 6 +m+n 6 ]中采样;

1.6 权重初始化:He’s method

基于 E ( w ) = 0 , V a r ( w ) = 2 n E(w)=0,Var(w)=\frac{2}{n} E(w)=0Var(w)=n2,可从Gaussian distribution中采样,或从uniform distribution U [ − 6 n , + 6 n ] U[-\frac{\sqrt{6}}{\sqrt{n}},+\frac{\sqrt{6}}{\sqrt{n}}] U[n 6 +n 6 ]中采样;



2、Batch normalization


训练过程采用随机的批量数据,然而,不同的批量数据往往具有不同的分布,一个小批的分布随着时间的推移而改变一层,每层都需要不断地适应新的数据的分布:
人工神经网络笔记(二)梯度爆炸与消失、批量归一化、过拟合问题_第4张图片
为此,我们需要让不同的小批量输入有相似的分布,即批量归一化(Batch normalization),

对任意的{ x n x_n xn}的每个维度进行规范化:

x ^ k = x k − E ( x k ) V a r ( x k ) + ϵ \hat x_k=\frac{x_k-E(x_k)}{\sqrt{Var(x_k)+\epsilon}} x^k=Var(xk)+ϵ xkE(xk)

这种规范化使得所有小批量数据具有相同的分布,但是降低了数据携带的信息的多样性和表达能力,需要在训练完成后进行数据的恢复:

y k = γ x ^ k + β k = B N γ k , β k ( x k ) y_k=\gamma \hat x_k+\beta_k=BN_{\gamma_k,\beta_k}(x_k) yk=γx^k+βk=BNγk,βk(xk)

完成BN操作后的mini-batch分布如下:
人工神经网络笔记(二)梯度爆炸与消失、批量归一化、过拟合问题_第5张图片

在预激活时进行BN操作,得到更准确的结果:
人工神经网络笔记(二)梯度爆炸与消失、批量归一化、过拟合问题_第6张图片



3、Overfitting issue


3.1 过拟合的定义

人工神经网络笔记(二)梯度爆炸与消失、批量归一化、过拟合问题_第7张图片
模型在训练集上的准确度过高,导致它的泛化能力不强,不能准确地反应新数据的情况(过犹不及),例如图中红色虚线所示;

3.2 如何阻止过拟合

(1)提前终止训练

人工神经网络笔记(二)梯度爆炸与消失、批量归一化、过拟合问题_第8张图片
当模型在验证集(Validation Set)上的预测错误没有减少时,停止训练;


(2)正则化:引入LP范数

人工神经网络笔记(二)梯度爆炸与消失、批量归一化、过拟合问题_第9张图片
当模型参数过少时,如灰线,造成更大的训练损失;

当模型参数过多时,如红线,造成过拟合问题;

因此,需要在过拟合与误差之间进行折中权衡,得到较好的结果,为此,引入LP范数;


LP正则化过程:

L ( θ ) = 1 N ∑ n = 1 N l ( y n , f ( x n ; θ ) ) + λ ∣ ∣ θ ∣ ∣ p L(\theta)=\frac{1}{N}\sum_{n=1}^Nl(y_n,f(x_n;\theta))+\lambda||\theta||_p L(θ)=N1n=1Nl(yn,f(xn;θ))+λθp

其中, ∣ ∣ θ ∣ ∣ p = ( ∑ i ∣ θ i ∣ p ) 1 p ||\theta||_p=(\sum_i{|\theta_i|^p})^{\frac{1}{p}} θp=(iθip)p1 λ \lambda λ是超参数,用于平衡两组损失值;

p = 2 p=2 p=2,会导致 θ \theta θ不断地减小;

p = 1 p=1 p=1,会导致 θ \theta θ中权重分量趋于0;


(3)正则化:Dropout

在训练过程中,每个神经元以概率 p p p保留,因此不同mini-batch可以训练出不同结构的神经网络;

人工神经网络笔记(二)梯度爆炸与消失、批量归一化、过拟合问题_第10张图片
左图是一般情况下的神经网络,右图为使用dropout之后的情况,可以看到一部分神经元未参与训练;

在测试过程中,每个神经元都保留,但神经元上的权重 w w w p p p为概率衰减,替换为 p w pw pw

人工神经网络笔记(二)梯度爆炸与消失、批量归一化、过拟合问题_第11张图片

Dropout工作原理:

  • 在训练过程中,每个保留的神经元都致力于在缺少某些其他神经元帮助的情况下完成任务;

  • 在测试过程中,权重以 p p p衰减,相当于训练过程中以 p p p为概率保留神经元;

  • 缺陷:比一般过程多耗费2-3倍时间用于训练;

你可能感兴趣的:(深度学习)