【原创】深度学习学习笔记(三)-神经网络训练过程(2)

文章目录

    • 5.参数更新
      • 5.1 简表
      • 5.2 学习率
      • 5.3 小批量
      • 5.4 寻优方法
        • 5.4.1 SGD系列
        • 5.4.2 Momentum(动量)
        • 5.4.3 NAG (Nesterov Acceleration Gradient)
    • 6. 批归一化 Batch Normalization
    • 7. 正则化
      • 7.1 惩罚项 R ( w ) R(w) R(w)
      • 7.2 数据增强
      • 7.3 随机失活
      • 7.4 模型集成

5.参数更新

5.1 简表

概念 寻找能使损失函数最小的参数矩阵w的过程
主体思路 迭代优化
常见方法 梯度下降,SGD,Momentum, NAG,AdaGrad,RMsprop,Adam…
如 torch下:
torch.optim.Adam

5.2 学习率

目的: 加快收敛速度
常用方法:
1)先用一个大的值,等损失不在下降再用一个小的值
2)为每一个参数使用不同的学习率
3)或使用二阶导数

5.3 小批量

过程:

  1. 先选择n个训练样本(n
  2. 分别训练n个样本得到n个梯度
  3. 对n个样本加权平均求和作为这次小批量的下降梯度
  4. 重复上面直到周期完整数据集都输入网络

迭代:指一个周期中小批量的数目
小批量大小:超参数 可以是 32,64,128 (一般为2的幂)

5.4 寻优方法

5.4.1 SGD系列

  1. 批量梯度下降(Batch Gradient Descent)
  2. 随机梯度下降(Stochastic Gradient Descent)
  3. 以及小批量梯度下降(Mini-Batch Gradient Descent)
    N个样本,当小批量大小n
    n=N时为BGD
    n=1时为SGD
    n>1,n

用当前位置的负梯度方向作为搜索方向
w ← w + η w w\leftarrow w+\eta w ww+ηw
w 梯度来自小批量
缺点:

  1. 可能是嘈杂的导致参数更新慢,且易收到局部最优点或者鞍点的干扰。
  2. 在梯度为0时,梯度详见会被卡住

5.4.2 Momentum(动量)

为随机梯度下降增加一个动量项
将梯度估计值加到原来速度上,沿着速度方向走而不是梯度方向
v t = ρ v t − 1 + η ∇ E ( w ) v_t=\rho v_{t-1}+\eta \nabla E(w) vt=ρvt1+ηE(w) w = w − v t w=w-v_t w=wvt
v t v_t vt v t − 1 v_{t-1} vt1分别表示本次和上次参数更新的速度,E损失函数, ρ \rho ρ为摩擦常数,通常设置为0.9,会使当前速度衰减。

5.4.3 NAG (Nesterov Acceleration Gradient)

动量计算前瞻梯度,并将其与速度混合
v t = ρ v t − 1 + η ∇ E ( w − ρ N t − 1 ) v_t=\rho v_{t-1}+\eta\nabla E(w-\rho N_{t-1}) vt=ρvt1+ηE(wρNt1)
可减少无用迭代,把梯度计算放在对参数施加当前速度之后

6. 批归一化 Batch Normalization

对每一批数据进行归一化处理,通常放在激活函数前
做法:让数据通过一个模块进行预处理,使其服从标准高斯分布,实现层面在全连接或卷积层与激活函数之间添加一个批归一化层,也叫BN层。
输入:小批量输入 x = { x 1 , x 2 . . . x n } x=\{x_1,x_2...x_n\} x={x1,x2...xn}
输出:BN层输出 y i y_i yi
μ = 1 n ∑ i = 1 n x i \mu=\frac1n \sum_{i=1}^nx_i μ=n1i=1nxi — 均值
σ 2 = 1 n ∑ i = 1 n ( x i − y i ) 2 \sigma^2=\frac1n\sum_{i=1}^n(x_i-y_i)^2 σ2=n1i=1n(xiyi)2 — 方差
x ^ i = x i − μ σ 2 − ϵ \hat x_i=\frac{x_i-\mu}{\sqrt{\sigma^2-\epsilon}} x^i=σ2ϵ xiμ — 归一化
y i = γ x ^ i + β = B N γ , β ( x i ) y_i=\gamma \hat x_i+\beta=BN_{\gamma,\beta}(x_i) yi=γx^i+β=BNγ,β(xi)
ϵ \epsilon ϵ为避免除数为0使用的微小整数, γ \gamma γ尺度因子, β \beta β平衡因子,训练自己学到
γ \gamma γ= σ \sigma σ,且 β \beta β= μ \mu μ时,BN层无效
BN层作用:
①增加了增个网络的梯度流
②支持更高的学习率,可以更快的训练网络
③减少算法对合理初始化的依赖性
④正则化作用

7. 正则化

不适定问题,指解不存在或解不唯一,或解的条件多,求解不适定问题方法
用一组与原不适定问题相邻近的适定问题的解去逼近原问题的解,这种方法叫正则化
过拟合:过于完美的训练数据反而不能有效的预测新样本
常用正则化方法
①为损失函数增加正则化惩罚项 R ( w ) R(w) R(w)
②数据增强
③随机失活
④模型集成
⑤其他,弹性正则化,随机失联,最大范数约束等

7.1 惩罚项 R ( w ) R(w) R(w)

L ′ = L ( f ( x , w ) , Y ) + λ R ( w ) L'=L(f(x,w),Y)+\lambda R(w) L=L(f(x,w),Y)+λR(w)
其中 λ \lambda λ:正则化强度
L 1 L_1 L1正则化, R ( w ) = ∑ k ∑ l ∣ W k , l ∣ R(w)=\sum_k\sum_l|W_{k,l}| R(w)=klWk,l其中 W第l层中第k个参数
L 2 L_2 L2正则化, R ( w ) = ∑ k ∑ l W k , l 2 R(w)=\sum_k\sum_lW_{k,l}^2 R(w)=klWk,l2
L 1 L_1 L1会使得网络稀疏,W中一些参数为0
L 2 L_2 L2通过对所有参数平方来抑制大数值的参数,对大参数给予高惩罚,会使参数矩阵w取值更平均。

7.2 数据增强

水平翻转、随机选择图像、截图、颜色抖动、随机旋转、伸缩变换

7.3 随机失活

每次训练只有一部分发挥作用,减少了每次训练过程中涉及参数数目,降低了训练时的网络表达能力,只用于训练过程中

7.4 模型集成

分别训练几个独立的神经网络,在测试时平均所有神经网络的预测结果。可将准确率提升几个百分点
方法:
a. 训练过程中保持神经网络的多个快照集成
b. 不同的初始化集成
c. 训练过程中不同时间点的集成

你可能感兴趣的:(深度学习,神经网络,深度学习,神经网络)