【残差连接】--- skip connect避免梯度消失及网络(矩阵)退化

残差连接的思想被人们熟知且应用主要是何凯明大神将之应用到ResNet网络的深度上面, 即解决因为传统网络因为深度的增加造成的 梯度消失矩阵退化 等问题, 使之避免层数越多, 拟合程度越差的问题.


  • 一. 概念
  • 二. 算术表达
    • 2.1. 残差块
    • 2.2. 残差网络
  • 三. 有效性验证
    • 3.1. 避免梯度消除的有效性
    • 3.2. 避免矩阵退化的有效性
  • 四. 总结
  • 五. 参考

一. 概念

如下图所示, 是一个残差块的基本结构.


残差块结构图

其实做法很简单, 就是在输入和输出层之间添加了一个快捷连接, 使得仅仅做恒等映射, 至少确保了网络的精度不下降.

二. 算术表达

2.1. 残差块

残差单元(通常每个残差单元包含多层结构)
H ( x ) = F ( x ) + x y = R E L U ( H ( x ) ) H(x)=F(x)+x \\y={\rm RELU}(H(x)) H(x)=F(x)+xy=RELU(H(x))
其中,

  • x x x是残差单元的输入
  • y y y是残差单元的输出
  • F ( x ) F(x) F(x)是残差函数,表示学习到的残差
  • H ( x ) H(x) H(x)是一中间变量, 表示残差连接
  • R E L U ( H ( X ) ) {\rm RELU}(H(X)) RELU(H(X))指对连接结果进行RELU激活

2.2. 残差网络

假设是从浅层 l l l到深层 L L L的特征学习, 为了简化说明, 假设所有的 H ( x ) H(x) H(x)都大于0, 则可以消去 R E L U ( ) \rm RELU() RELU():
y L = R E L U ( H ( X ) ) = x l + ∑ i = l L − 1 F ( x i ) y_L={\rm RELU}(H(X))=x_l+\sum_{i=l}^{L-1}F(x_i) yL=RELU(H(X))=xl+i=lL1F(xi)

然后根据链式法则,反向传播过程中的梯度:
∂ l o s s ∂ x l = ∂ l o s s ∂ x L ⋅ ∂ x L ∂ x l = ∂ l o s s ∂ x L ⋅ ( 1 + ∂ ∂ x l ∑ i = l L − 1 F ( x i ) ) \frac{\partial loss}{\partial x_l}=\frac{\partial loss}{\partial x_L} \cdot \frac{\partial x_L}{\partial x_l}=\frac{\partial loss}{\partial x_L} \cdot\left ( 1+\frac{\partial }{\partial x_l} \sum_{i=l}^{L-1}F(x_i) \right ) xlloss=xLlossxlxL=xLloss(1+xli=lL1F(xi))

  • ∂ l o s s ∂ x L \frac{\partial loss}{\partial x_L} xLloss表示loss function的梯度
  • 括号中的 1 1 1表明该方法可无损传播梯度,保证不会出现梯度消失的现象
    • (因为若是普通的连接话, 一旦上述某个梯度很小, 在不断梯度连乘的作用下, 总梯度会变得越来越小, 这就是常说的梯度消失, 二我们的残差连接至少确保了一个 1 1 1, 避免了 梯度消失)

三. 有效性验证

3.1. 避免梯度消除的有效性

接下来我们将残差网络和普通无skip connect的网络进行梯度上的比对, 如下:

【残差连接】--- skip connect避免梯度消失及网络(矩阵)退化_第1张图片
引用自该处例子

从结果上看, 残差网络能较有效的消除 梯度消失 这一现象.

3.2. 避免矩阵退化的有效性

何为网络(矩阵)退化?

每个层中只有少量的隐藏单元对不同的输入改变它们的激活值,而大部分隐藏单元对不同的输入都是相同的反应,此时整个权重矩阵的秩不高。并且随着网络层数的增加,连乘后使得整个秩变的更低

即虽然是一个高纬矩阵, 但大部分维度却没有信息(秩变小), 造成表达能力并没有那么强.

而残差连接打破了神经网络的对称性, 恢复了网络的表达能力(经过实验证明, 此处不再论述).

四. 总结

通过使用残差连接能使得网络深度够深的同时, 也能确保一定的拟合度, 是一个很实用的想法!


五. 参考

[1]. https://www.jianshu.com/p/09643588f373

你可能感兴趣的:(机器学习)