残差连接最先由何凯明在2015的ResNet提出,主要用于解决深层网络模型中的梯度消失/爆炸导致的训练困难问题。本次带来的论文实际上都是在这一架构基础上做出改进,下面开始上公式,深入浅出的探讨在反向传播的过程中,残差链接是如何影响我们模型训练,以及mHC解决了哪些核心问题。

1. ResNet 的求导:

前向公式:

$x_{l+1} = x_l + F(x_l)$

反向求导(链式法则): 想求 $\frac{\partial \mathcal{L}}{\partial x_l}$,根据链式法则,它等于后一层梯度乘以此层的雅可比矩阵(Jacobian)

$\frac{\partial \mathcal{L}}{\partial x_l} = \frac{\partial \mathcal{L}}{\partial x_{l+1}} \cdot \frac{\partial x_{l+1}}{\partial x_l}$

算出关键的局部导数 $\frac{\partial x_{l+1}}{\partial x_l}$:

$\frac{\partial x_{l+1}}{\partial x_l} = \frac{\partial (x_l + F(x_l))}{\partial x_l} = \mathbf{I} + \frac{\partial F}{\partial x_l}$

递归展开(从 $L$ 层传回 $I$ 层): 如果把所有项连起来:

$\frac{\partial \mathcal{L}}{\partial x_l} = \frac{\partial \mathcal{L}}{\partial x_L} \cdot \prod_{i=l}^{L-1} \left( \mathbf{I} + \frac{\partial F}{\partial x_i} \right)$

数学性质: 将 $\prod (\mathbf{I} + \epsilon)$ 展开时,如果不看高阶项,它近似于:

$\prod_{i=l}^{L-1} \left( \mathbf{I} + \frac{\partial F}{\partial x_i} \right) \approx \mathbf{I} + \sum_{i=l}^{L-1} \frac{\partial F}{\partial x_i}$

结论: ResNet 的梯度主要是加法结构。梯度信号可以顺着那个 $\mathbf{I}$ 高速公路,无损地从第 $L$ 层“加”回第 $\mathbf{I}$ 层。即使 $\frac{\partial F}{\partial x}$ 很乱,只要有 $\mathbf{I}$ 在,梯度就不会消失。

为什么总说ResNet是为梯度开了一条**“高速通道”**?

可以理解为,如果没有对 $x$ 求导的环节,我们的梯度就是单纯的对 $F(x_i)$ 求导,一旦函数中某一层的输出不稳定,造成了梯度值极大/极小 的问题,就会导致梯度无法正确的被传递到初始层。

而一旦加上了 $x$ 求导后的到的1,无论梯度值的多少,这些差值总能够被正确的带回初始层。

不太贴切的例子:假设出门吃饭,扫了老板给你的二维码,如果你: 1.发现自己中了3块红包,开心了一个中午(梯度爆炸) 2. 发现自己中了0.001红包,感觉中了和没中一样(梯度消失)

但如果二维码每次都给你1元左右的红包,金额波动幅度不超过0.1元(想起来了集五福),你还会有这些情绪吗(梯度平稳)?


2. HC (Hyper-Connections) 的求导:

前向公式:

$x_{l+1} = H_l \cdot x_l + F(x_l)$

(注:这里忽略了原文中的 $H_{pre/post}$,因为它们不影响主干梯度的爆炸性质)