为什么残差连接能解决梯度消失:恒等映射的梯度高速公路
深度神经网络的训练曾有一个拦路虎:当网络堆叠得非常深时,底层的参数几乎学不到东西。这被称为“梯度消失”。残差连接的出现,像为梯度修建了一条高速公路,一举解决了这个问题。
理解问题:传统网络中的“梯度消失”
在反向传播算法中,梯度是损失函数对网络参数的偏导数,它指导着参数如何更新。这个梯度需要从输出层一层层传回输入层。
想象一个简单的多层网络,每一层的输出是前一层的函数。根据链式法则,总梯度是各层局部梯度的连乘。如果每一层的局部梯度值小于1(例如,经过Sigmoid激活函数后),那么连乘的结果会指数级衰减。到了靠近输入的底层,梯度就变得微乎其微,参数无法有效更新,网络“学不动”了。这就是梯度消失。
传统深度网络就像一条很长的、没有任何捷径的盘山公路,梯度信号在传播过程中不断损耗,最终到达起点时几乎为零。
核心思想:让网络学习“修改”而非“重写”
残差连接(Residual Connection)或跳跃连接(Skip Connection)的核心思想极其简单:在网络的某些层之间,添加一条直接将输入与输出相加的恒等映射路径。
我们来看一个残差块。它通常包含两到三层卷积网络(或其他变换)。关键的变化是:输入x不仅经过这些网络层(设其变换为F(x)),还会直接与它们的输出相加,形成最终输出y。
用数学表达式表示就是:y = F(x) + x。
这里的F(x)被称为“残差函数”。现在,网络需要学习的不再是完整的映射H(x)(比如,从输入到理想输出的复杂映射),而是H(x) - x,也就是理想输出与输入之间的“残差”。当最优解接近恒等映射时(即H(x)近似于x),让网络学习一个接近零的残差F(x) ≈ 0,比从头学习一个完整的函数要容易得多。
把网络想象成一个编辑过程:传统网络要求一个学生从一张白纸开始,完全重写一篇文章。而残差网络允许学生拿着原稿(输入x),只需在上面做批注和修改(F(x)),然后将修改稿与原稿结合。这显然更轻松,而且原稿的内容(恒等映射路径)被完整保留了下来。
解决方案:梯度高速公路如何运作
这条直接相加的路径,就是我们所说的“梯度高速公路”。它如何解决梯度消失问题?我们通过反向传播来追踪梯度的流动。
考虑残差块 y = F(x) + x。在反向传播时,损失函数L对输入x的梯度为:
dL/dx = dL/dy * dy/dx = dL/dy * (dF(x)/dx + dx/dx) = dL/dy * (dF(x)/dx + 1)
这里的关键是 dx/dx = 1。这意味着,无论中间的变换F(x)的梯度dF(x)/dx是多大或多小,梯度高速公路都为来自输出层的梯度信号dL/dy提供了一条始终为1的旁路。
我们来对比一下:
- 传统层:梯度路径是
dL/dy * dF(x)/dx。如果dF(x)/dx很小(例如0.1),连续多层后梯度会指数衰减(0.1^n)。 - 残差块:梯度路径是
dL/dy * (dF(x)/dx + 1)。即使dF(x)/dx为0,梯度依然可以保持为dL/dy * 1,无损地流回前面的层。+1就像一个梯度放大器,确保了主干道的信号强度。
构建这条高速公路,就是在网络中每隔几层就添加一个这样的跳跃连接。这让梯度能够通过这些“短路”捷径,几乎无衰减地从输出端直达输入端,从而让深层网络的底层参数也能获得有效的训练信号。
逐步分析:梯度如何流动
我们通过一个简化的、包含两个残差块的网络,来具体看看梯度是怎么流动的。
定义网络:
- 输入为
x。 - 第一个残差块输出:
h1 = F1(x) + x。 - 第二个残差块输出:
h2 = F2(h1) + h1。 - 损失函数为
L。
反向传播求 dL/dx:
-
先计算
dL/dh1:根据链式法则,dL/dh1 = dL/dh2 * dh2/dh1。
根据h2 = F2(h1) + h1,得到dh2/dh1 = dF2(h1)/dh1 + 1。
所以dL/dh1 = dL/dh2 * (dF2(h1)/dh1 + 1)。 -
再计算
dL/dx:dL/dx = dL/dh1 * dh1/dx。
根据h1 = F1(x) + x,得到dh1/dx = dF1(x)/dx + 1。
将第一步的dL/dh1代入:
dL/dx = [dL/dh2 * (dF2(h1)/dh1 + 1)] * (dF1(x)/dx + 1)
观察这个展开的梯度公式:
它包含 (dF2/dh1 + 1) 和 (dF1/dx + 1) 两个因子。每个 +1 就是一条高速公路。梯度信号 dL/dh2 可以通过一条路径(经过两个 +1 的乘积,即 1*1=1)几乎直接地传回 x,而不必完全依赖 dF2/dh1 和 dF1/dx 这两条可能衰减严重的路径。
这就像同时开辟了多条路径:一条是蜿蜒曲折的山路(通过变换函数 F),另一条是贯穿全程的直梯(恒等映射)。即使山路崎岖难行(梯度小),直梯也能保证人员和物资(梯度信号)的持续供应。
总结优势:为什么它如此有效
残差连接通过引入恒等映射,从根本上改变了深度网络的学习方式和梯度流动。
- 缓解梯度消失:梯度高速公路(
+1项)保证了反向传播中至少存在一条不会衰减的梯度路径,使得训练百层甚至千层的网络成为可能。 - 降低学习难度:网络只需学习输入与输出之间的残差。当最优映射接近恒等映射时,学习一个接近零的残差比学习一个全新函数更容易优化。
- 避免性能退化:在足够深的网络中,传统网络即使增加层数,训练误差反而会上升(退化问题)。残差网络中,由于恒等映射的存在,增加的层只需要学习一个零残差,就不会破坏已有的特征表示,从而保证深度增加不会导致性能下降。
因此,残差连接并非一个复杂的数学技巧,而是一个极其深刻的工程直觉:让网络去学习对输入的“扰动”而非“替换”,并为梯度流提供一条阻力最小的“高速公路”。正是这条由 y = F(x) + x 所定义的、无处不在的恒等映射路径,疏通了深度神经网络的训练血脉。

暂无评论,快来抢沙发吧!