深度学习入门知识梳理(三):学习相关技巧

前言

  本文涉及参数的最优化更新算法、权重参数的初始值、Batch Normalization、过拟合解决方法(正则化、Dropout)、超参数的设定方法。

1、优化器的选择(参数的更新算法)

1.1、随机梯度下降法(SGD)

  SGD:对随机选择的数据进行的梯度下降法。
x t + 1 = x t − η ∇ f ( x t ) (1-1) \bm x_{t+1}=\bm x_{t}-\eta\nabla \bm f(x_t)\tag{1-1} xt+1=xtηf(xt)(1-1)  缺点:
  (1) 选择适当的学习率困难,若选择太小,收敛速度会很慢;若选择太大,则损失函数的值将在极小值附近震荡,甚至偏离。
  (2) 高度非凸的损失函数中,如何避免陷入局部次优解、被困在鞍点。
  (3)当梯度不均匀时,参数移动路径易出现“之”字形移动现象,学习效率低下。

1.2、Momentum

m t + 1 = β m t − η ∇ f ( x t ) x t + 1 = x t + m t + 1 (1-2) \begin{aligned} &\bm m_{t+1}=\beta \bm m_{t}-\eta \nabla \bm f(x_t) \\ &\bm x_{t+1}=\bm x_{t}+\bm m_{t+1} &\end{aligned} \tag{1-2} mt+1=βmtηf(xt)xt+1=xt+mt+1(1-2)  改进之处:对比SGD优化器,加入了 β m \beta \bm m βm项,积累了之前梯度指数级衰减的平均。
  优点:若当前时刻的梯度与历史时刻梯度方向相似,参数更新趋势则会在当前时刻加强;若相反,则会削弱参数当前的更新趋势。

1.3、AdaGrad

x t + 1 = x t − η ∑ i = 1 t ( ∇ f ( x i ) ) 2 + ϵ ∇ f ( x t ) (1-3) \bm x_{t+1}=\bm x_{t}-\frac{\eta }{\sqrt {\sum_{i=1}^t(\nabla \bm f(x_i))^2}+\epsilon}\nabla \bm f(x_t)\tag{1-3} xt+1=xti=1t(f(xi))2 +ϵηf(xt)(1-3)   改进之处:对比SGD优化器,AdaGrad将 η \eta η设置为全局学习率,由全局学习率除以历史梯度平方和的平方根,得到当前时刻参数的学习率,使得每个参数的学习率不同,达到自适应的效果。其中 ϵ \epsilon ϵ是一个小常数。
  优点:学习率可以自适应的减小。
  缺点:学习率过早、过量的减少。

1.4、RMSProp

h t + 1 = β h t + ( 1 − β ) ( ∇ f ( x t ) ) 2 x t + 1 = x t − η h t + 1 + ϵ ∇ f ( x t ) (1-4) \begin{aligned} &\bm h_{t+1}=\beta\bm h_{t}+ (1-\beta) (\nabla f(x_t))^2 \\ &\bm x_{t+1}=\bm x_{t}-\frac{\eta }{\sqrt{\bm h_{t+1}}+\epsilon}\nabla f(x_t) &\end{aligned} \tag{1-4} ht+1=βht+(1β)f(xt))2xt+1=xtht+1 +ϵηf(xt)(1-4)  改进之处:对比AdaGrad优化器,以指数衰减的移动平均方式对梯度进行累积,逐渐遗忘掉历史梯度信息,衰减系数 β \beta β控制着历史信息的获取多少。

1.5、Adam

m t + 1 = β 1 m t − η ∇ f ( x t ) h t + 1 = β 2 h t + ( 1 − β 2 ) ( ∇ f ( x t ) ) 2 m ^ t + 1 = m t + 1 / ( 1 − β 1 t ) h ^ t + 1 = h t + 1 / ( 1 − β 2 t ) x t + 1 = x t − η h ^ t + 1 + ϵ m ^ t + 1 (1-5) \begin{aligned} &\bm m_{t+1}=\beta_1 \bm m_{t}-\eta \nabla f(x_t) \\ &\bm h_{t+1}=\beta_2\bm h_{t}+ (1-\beta_2) (\nabla f(x_t))^2 \\ &\hat \bm m_{t+1}=\bm m_{t+1}/(1-\beta_1^t) \\ &\hat \bm h_{t+1}=\bm h_{t+1}/(1-\beta_2^t) \\ &\bm x_{t+1}=\bm x_{t}-\frac{\eta }{\sqrt{\hat \bm h_{t+1}}+\epsilon}\hat \bm m_{t+1} &\end{aligned} \tag{1-5} mt+1=β1mtηf(xt)ht+1=β2ht+(1β2)f(xt))2m^t+1=mt+1/(1β1t)h^t+1=ht+1/(1β2t)xt+1=xth^t+1 +ϵηm^t+1(1-5)  Adam优化器可以看作经过修正后的Momentum算法和 RMSProp算法的结合。较为常用,一般取 η = 0.001 \eta= 0.001 η=0.001 β 1 = 0.9 \beta_1=0.9 β1=0.9 β 2 = 0.999 \beta_2=0.999 β2=0.999 ϵ = 1 0 − 8 \epsilon=10^{-8} ϵ=108

2、权重的初始值

  权重的初始值不适当时,可能造成网络层的激活值呈偏向0的分布,这时易发生梯度消失现象;也可能使网络层的激活值集中分布在某个值附近,造成网络的表现力不佳。故一般使用推荐的初始值。
  Xavier初始值:如果前一层的节点数为n,则初始值使用标准差为 1 n   \frac1{\sqrt n \ } n  1的高斯分布。(适用于激活函数为sigmoid、tanh等S型曲线函数时)
  He初始值:如果前一层的节点数为n,则初始值使用标准差为 2 n   \frac2{\sqrt n \ } n  2的高斯分布。(适用于激活函数为ReLU函数时)

3、Batch Normalization

  适当的权重初始值可以使网络层的激活值分布拥有适当的广度。为了使网络层的激活值分布拥有适当的广度,还可以强制调整激活值的分布,Batch Normalization基于此思想产生。
  Batch Normalization以batch为单位,对{ x 1 , x 2 , ⋯   , x m x_1,x_2,\cdots,x_m x1,x2,,xm}数据分布进行正规化,使数据变为均值为0、方差为1的分布{ x ^ 1 , x ^ 2 , ⋯   , x ^ m \hat x_1,\hat x_2,\cdots,\hat x_m x^1,x^2,,x^m},最后对正规化后的数据进行缩放和平移的变换。
μ B = 1 m ∑ i = 1 m x i σ = 1 m ∑ i = 1 m ( x i − μ B ) 2 x ^ i = x i − μ B σ B 2 + ϵ y i = γ x ^ i + β (3-1) \begin{aligned} &\mu_B=\frac1m\sum_{i=1}^mx_i \\ &\sigma=\frac1m\sum_{i=1}^m(x_i-\mu_B)^2 \\ &\hat x_i=\frac{x_i-\mu_B}{\sqrt{\sigma_B^2+\epsilon}} \\ &y_i=\gamma\hat x_i+\beta &\end{aligned}\tag{3-1} μB=m1i=1mxiσ=m1i=1m(xiμB)2x^i=σB2+ϵ xiμByi=γx^i+β(3-1)
  BN一般放在激活函数之前,其计算流程可简述如下:

  • (1) 计算样本均值。
  • (2) 计算样本方差。
  • (3) 样本数据标准化处理
  • (4) 进行平移和缩放处理。

  计算流程中,引入了γ和β两个参数。一开始 γ = 1 , β = 0 \gamma=1,\beta=0 γ=1,β=0,然后通过学习调整到合适的值。

  使用Batch Norm的优点

  • (1) 可以使学习快速进行(适当增大学习率)。
  • (2) 对参数的初始值依赖减小。
  • (3) 抑制过拟合(降低Dropout等的必要性)。

4、抑制过拟合

  过拟合是深度学习中很常见的一个问题,过拟合指模型只能拟合训练数据,但不能很好地拟合不包含在训练数据中的其他数据。
  发生过拟合的原因,主要有以下两个:

  • (1) 模型拥有大量参数、表现力强。
  • (2) 训练数据少

4.1、正则化

  正则化是一种常用的抑制过拟合的方法。范数刻画着模型复杂程度,模型中大的权重对模型输出有较强的影响力,通过权值衰减,在学习过程中对大的权重进行惩罚,达到抑制过拟合的目的。
  L1范数:向量中每个元素绝对值的和  ∣ ∣ w ∣ ∣ 1 = ∑ i ∣ w i ∣ (4-1) ||w||_1=\sum_i|w_i|\tag{4-1} w1=iwi(4-1)
  加入L1范数,新的损失函数定义为
L = L 0 + λ ∑ i N w i (4-2) L=L_0+\lambda\sum_i^Nw_i\tag{4-2} L=L0+λiNwi(4-2)
  其中, L 0 L_0 L0代表原损失函数, λ \lambda λ为控制正则化强度的超参数。 λ \lambda λ越大,对大的权重施加的惩罚就越重。L1正则化项不可导,优化损失函数较为复杂。
  L2范数:向量中每个元素的平方和再开方  ∣ ∣ w ∣ ∣ 2 = ∑ i N w i 2 (4-3) ||w||_2=\sqrt{\sum_i^Nw_i^2}\tag{4-3} w2=iNwi2 (4-3)
  加入L2范数,新的损失函数定义为
L = L 0 + 1 2 λ ∑ i N w i 2 (4-4) L=L_0+\frac12\lambda\sum_i^Nw_i^2\tag{4-4} L=L0+21λiNwi2(4-4)
  其中, L 0 L_0 L0 λ \lambda λ意义同上。L2正则化项可导,优化简洁,较为常用。

4.2、DropOut

  当模型变得复杂时,还可以使用Dropout方法,以抑制过拟合。
  Dropout是一种在学习过程中随机删除神经元的方法。训练时,每传递一次数据,就会随机选出隐藏层的神经元,然后将其删除,被删除的神经元不再进行信号的传递。测试时,所有的神经元都保留,各个神经元的输出需要乘上训练时的删除比例。

5、超参数的设定

  超参数一般凭借经验设定,在不清楚的情况下,可凭借调参算法调参,常用的调参算法有:Grid search(网格搜索)、Random search(随机搜索)、Bayesian Optimization(贝叶斯优化)等。使用超参数学习过程中,epoch可以适当减小,能够缩短调参所需时间。
  网格搜索算法:

  • (1) 列出每一种超参数较可能的取值;
  • (2) 对不同超参数的取值进行排列组合;
  • (3) 使用组合得到的超参数进行学习,通过验证数据评估识别精度;
  • (4) 重复(3)过程,根据识别精度的结果,筛选超参数组合。

  随机搜索算法:

  • (1) 对每一种超参数设定取值范围;
  • (2) 在设定的范围中随机采样;
  • (3) 使用采样得到的超参数进行学习,通过验证数据评估识别精度;
  • (4) 重复(2)(3)过程,根据识别精度的结果,缩小超参数范围。

  贝叶斯优化算法:

  • (1) 随机产生几组超参数,分别使用这几组超参数进行学习,得到识别精度,构成初始化点(初始化点对应黑盒函数上的点,函数输入为各个超参数,函数输出为识别精度);
  • (2) 高斯过程回归(假设超参数间符合联合高斯分布);
  • (3) 取采集函数(Acquisition Function,简称AC函数)的最大值所对应的点,并使用该点对应的函数输入(即各个超参数)进行学习,得到识别精度,进而得到一个新的真实点,并将该点加入到初始化点之中;
  • (4) 重复(2)(3)过程(可设置识别精度的阈值,以便于跳出算法),筛选出合适的点,取出该点中的超参数信息。
    下一篇:深度学习入门知识梳理(四):卷积神经网络(CNN)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值