【深度学习】神经网络梯度优化

一、梯度问题

1.梯度弥散

【深度学习】神经网络梯度优化_第1张图片

  • 产生原因
    • 激活函数的"饱和"

      左饱和:
      当x趋向于负无穷时,函数的导数趋近于 0,此时称为左饱和
      
      右饱和:
      当x趋向于正无穷时,函数的导数趋近于 0,此时称为右饱和
      
      饱和函数和非饱和函数:
      当一个函数既满足右饱和,又满足左饱和,则称为饱和函数,否则称为非饱和函数
      
      常用的 饱和激活函数 和 非饱和激活函数:
      饱和激活函数有如 Sigmoid 和 tanh,非饱和激活函数有 ReLU;
      相较于饱和激活函数,非饱和激活函数可以解决 "梯度消失" 的问题,加快收敛
      
    • 样本中的奇艺样本引起模型无法收敛

    • 学习率过大导致模型震荡无法收敛

    • 反向传播算法传播梯度的时候,随着网络传播深度的增加,梯度的幅度急剧减小,导致浅层神经元的权重更新缓慢,无法有效学习

    • 从数学角度看,因为梯度连乘的问题,是梯度消失的问题所在


【深度学习】神经网络梯度优化_第2张图片

  • 造成问题
    • 靠近输出层的隐藏层梯度大,参数更新快,所以很快就会收敛
      靠近输入层的隐藏层梯度小,参数更新慢,几乎和初始状态一样,随机分布
    • 由于神经网络前几层权重更新过慢,或者没有更新,导致整个网络的学习性能下降,达不到训练标准

2.梯度爆炸

【深度学习】神经网络梯度优化_第3张图片

  • 产生原因
    • 一般是因为神经网络初始化的权值过大,每层网络反向求导的结果都大于1
    • 学习率非常大
  • 造成问题
    • 前面网络层梯度通过训练变大,后面网络层的梯度指数级增大
    • 神经网络模型无法收敛,达不到训练效果

二、梯度问题的处理

1.梯度弥散的处理

  • 激活函数引起的梯度弥散问题
    使用 ReLU,Leaky_ReLU 等激活函数代替 sigmoid 函数
  • 奇艺样本引起的梯度弥散问题
    • 批量标准化,为了消除指标之间的量纲影响,需要进行数据标准化处理以解决数据指标之间的可比性
    • 标准化的目的是使得预处理数据的数据被限定在一定范围内([-1, 1]),从而消除奇艺样本数据导致的不良影响
    • 标准化步骤
      【深度学习】神经网络梯度优化_第4张图片
      左图为原始数据,中间为中心化后的数据,右图为中心化后的数据除以标准化,得到标准化数据
    • 归一化加快梯度下降求最优解的速度归一化有可能提高精度

2.梯度爆炸的处理

  • 解决方法
    • 重设初始化权值(标准正态分布采样)
    • 学习率调小

3.多层网络中梯度连乘引起的梯度弥散

【深度学习】神经网络梯度优化_第5张图片

深度残差网络(ResNet)采用跳跃式的结构,打破了传统的神经网络 n-1 层的输出只能给 n 层作为输入的惯例,是某一层的输出可以直接跨过几层作为后面某一层的输入

三、数据标准化

1.数据标准化的方法

  • Batch Normalization
    • 把每个通道的 NHW 单独拿出来归一化
    • 针对每一个 channel 都有一组 γ γ γ β β β,可学习参数为 2×C
    • 当 batch size 越小,BN的表现效果也越不好,因为计算过程中得到的均值和方差不能代表全局
  • Layer Normalization
    • N 的计算就是把每个 CHW 单独拿出来归一化处理,不受 batch size 的影响
    • 常用在 RNN 网络中,但如果输入特征区别很大,那么就不建议使用它做归一化处理
  • Instance Normalization
    • IN 的计算就是把每个 HW 单独拿出来归一化处理,不受通道和 batch size 的影响
    • 常用在风格迁移,但如果特征图可以用到通道之间的相关性,那么就不建议使用它做归一化处理
  • Group Normalization
    • GN 的计算就是把通道 C 分成 G 组,然后把每个 GHW 单独拿出来归一化处理,最后把 G 组归一化之后的数据合并
    • GN 介于 LN 和 IN 之间,当然也可以说 LN、IN 就是 GN 的特例,比如 G 的大小为 1 或者 C
  • Switchable Normalization
    • 将 BN、LN、IN 结合,赋予权重,让网络自己去学习归一化层应该是用什么方法
    • 集万千宠爱于一身,但训练复杂

2.标准化方法公式

【深度学习】神经网络梯度优化_第6张图片

3.数据标准化的目的

使网络的输入层、隐藏层、输出层的数据直方图都在一个指定的范围内,有利于模型收敛

有时候为了方便输出结果更好地逼近真实结果,还会对标签数据也进行对应的标准化处理

4.数据标准化的优点

  • 可以使学习快速进行
  • 减弱对初始化的强依赖性
  • 防止梯度弥散、梯度爆炸
  • 保持隐藏层数据的均值、方差不变,让数值更稳定,为后面网络提供坚实的基础

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