Py学习  »  机器学习算法

深度学习中的“捷径”:残差网络(ResNet)

新机器视觉 • 1 周前 • 178 次点击  

以下章来源于微信公众号:CppTeam

链接:https://mp.weixin.qq.com/s/N5JGJUySi3GYwWEcJjJ7dQ

本文仅用于学术分享,如有侵权,请联系台作删文处理


“当神经网络越来越深,性能反而下降?一个名为“残差连接”的巧妙设计,让深度神经网络突破了训练瓶颈,成为现代AI的基石之一。今天,我们就来聊聊这个简单却强大的思想。”



一、深度网络的困境:越深越差?

深度学习追求“深度”,理论上,层数越多,模型能学到的特征就越复杂、越抽象,效果应该更好。但现实却给了一个“反直觉”的答案:当网络深度超过某个点(比如20层),模型的性能(准确率)反而会下降图片图片图片

这种现象主要有两大“拦路虎”:

梯度消失/爆炸 图片图片图片训练时,反向传播的梯度信号在穿过很多层时会变得极其微弱(消失)或巨大(爆炸),导致底层参数难以有效更新。

优化困难: 超深的网络结构使得损失函数的“地形”异常复杂,优化器难以找到好的路径到达最优解。

深度,似乎成了难以逾越的障碍。



二、残差网络(ResNet)的诞生, 二战转折点!(bushi


2015年,何恺明及其团队提出了残差网络(Residual Network, ResNet),一举解决了深度网络的训练难题。其核心创新在于引入了一个极其简单的结构:残差连接(Shortcut Connection / Skip Connection)。

核心思想: 不再要求网络层必须直接拟合复杂的最终输出H(x),而是让它们去拟合残差(Residual)F(x)。

什么是残差? 假设我们期望的最终输出是H(x)输入是x。那么,F(x) = H(x) - x就是我们需要学习的“增量”或“修改量”。

如何实现? 在传统的层叠结构基础上,增加一条从输入“跳跃”到输出的恒等映射(Identity Mapping)路径。输出变为:

Output = F(x, {W_i}) + x

F(x, {W_i}): 网络层(如几个卷积层)需要学习的残差映射。

+ x: 输入 通过“捷径”直接加到 F(x, {W_i}) 的输出上。

关键点(快看这里快看这里): 如果最优的 H(x) 就是 x 本身(即什么都不需要改变),那么让网络层学习 F(x) = 0 比学习 F(x) = x要容易得多!网络不必再费劲地学习恒等变换,而是专注于学习必要的“调整”。


三、残差连接为何有效?

1.解决梯度消失: 反向传播时,梯度可以通过“捷径”(x 那条路)几乎无损地直接传递回更浅的层。这为底层参数提供了强而有效的梯度信号,确保了整个网络的协同训练。

2.降低优化难度: 学习残差 F(x) 通常比学习完整的输出H(x)更容易、更平滑。恒等路径的存在使得网络在初始化时就能达到一个不错的基准性能(即 H(x) ≈ x)。

3.保护信息完整性: “捷径”确保了原始输入信息不会被深层网络处理过程完全破坏或丢失,深层网络只需在其基础上进行“精修”。


四、残差块:构建ResNet的基石

残差网络就是由一个个残差块(Residual Block)堆叠而成。一个基础的残差块结构如下图:

图片

残差块通过 shortcut connection(捷径连接,图中  identity   对应的曲线),将输入  x  直接与网络层输出相加 。其中  weight layer  是权重层(如卷积层 ), relu  是激活函数, F(x)  是残差函数,最终输出为  F(x)+x  再经  relu  处理。


、ResNet的意义与影响

1.突破深度限制 ResNet 成功训练了前所未有的超深度网络(如152层的ResNet-152)图片图片图片(真的很厉害),并在ImageNet图像识别大赛中夺冠,错误率大幅降低。

2.成为基石架构: 残差连接的思想因其简单有效,迅速被广泛应用于计算机视觉(图像分类、目标检测、语义分割等)乃至自然语言处理等几乎所有深度学习领域。它是许多SOTA模型不可或缺的组件。

3.启发性设计: ResNet 证明了在构建复杂系统时,保留“原始信息”的快速通道(捷径)往往是提升性能和稳定性的关键。这是一种极具工程智慧的解决方案。


结语:

残差网络(ResNet)通过引入“捷径”连接的巧妙设计,解决了深度神经网络的训练难题,开启了深度学习的新篇章。它用相对简单的结构实现了巨大的性能飞跃,其核心思想——学习残差而非完整映射——已成为现代深度学习模型设计的重要范式。理解ResNet,是理解当今主流AI模型运作原理的一块重要拼图。

本文仅做学术分享,如有侵权,请联系删文。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/184519
 
178 次点击