梯度消失和梯度爆炸
- 梯度消失就是指在反向传播中由于梯度在链式求导法则中不断地累积导致的梯度趋向于零的现象。如果当前梯度小于1,当其经过若干层求导后,这个梯度的值就会由于累乘效应(小于1的数字连乘)而变得很小,最终导致参数更新很小或者基本不更新。
- 梯度爆炸与梯度消失现象相反。当梯度大于1的时候就可能会导致若干层之后参数更新的梯度非常大。
残差结构
在没有使用残差结构的情况下,我们要求解的映射为H(x) = F(x)。假设在网络的某一层中我们已经求得的映射H(x)已经达到最优,如果不加以约束随着网络的加深,H(x)的梯度更新会导致其产生退化现象并且链式影响下一层网络,最终导致梯度消失或者梯度爆炸。
一个最基本的残差块,引入了一个跳线连接将 x 与输出F(x)相加。
残差在数理统计中是指实际观察值与估计值(拟合值)之间的差
在残差结构中,设输出F(x) + x = H(x),我们将求解的映射变成了F(x) 即 H(x) - x。H(x)就是残差定义中的实际观察值,x就是估计值。我们最终要求解的映射就变成了残差 H(x) - x = F(x)。
现在假设一种理想情况,输入x已经达到最优。残差结构只需要让 F(x) = 0 就可以让输出等于最优解x,从而解决网络退化的现象。这个过程就相当于删除了这一个结构。
例如一个1000层的ResNet网络中,在80层的时候 x 已经达到了最优,由于残差结构的存在,后面的各个残差块的输入和输出都是x,此时这个1000层的网络就相当于一个80层的网络。