当前位置: 首页 > news >正文

吴恩达《深度学习》之看懂 ResNet

在深度学习的发展史上,2015 年是一个分水岭。那一年,何恺明(He Kaiming)提出了ResNet(残差网络),一举斩获了当年 ImageNet 竞赛的所有冠军。

在各种技术面试中,关于 ResNet 的经典问题层出不穷:

问题:为什么在普通深层网络中增加层数有时会导致训练误差反而上升?残差块(Residual block)是如何通过“恒等函数”逻辑解决这个问题的?

很多死记硬背的同学只能答出:“因为 ResNet 解决了梯度消失,能训练更深的模型。”

但如果面试官追问:“为什么层数更深时,普通网络的训练误差会‘反常’地比浅层网络还要高?这真的是梯度消失的锅吗?”很多同学就卡壳了。

今天,我们依然像剥洋葱一样,带你一步步看清何恺明当年那个极其优雅的数学直觉。

第一步:直面那个令人抓狂的反直觉现象

在理想的数学世界里,我们总是理所当然地认为:模型越深,参数量越大,拟合能力就越强。

提问:假设我们有一个20 层的网络,它已经训练得非常完美了,训练误差很低。现在,我无聊地在它后面硬生生加上了 36 层毫无用处的“废话层”,把它变成了一个56 层的网络。
如果这后加的 36 层能够完全原封不动地复制前 20 层的输出(即输入是什么,输出就是什么),那么这个 56 层网络的训练误差,理论上会比 20 层更差吗?

解析:你的直觉一定会告诉你:当然不会。最差的情况也就是那 36 层什么都不干,模型和 20 层一模一样嘛。这种“输入等于输出,不做任何改变”的函数,在数学上叫做恒等映射(Identity Mapping,即f(x)=xf(x) = xf(x)=x

然而,在 2015 年前,科学家们在做实验时却发现天塌了:56 层的普通网络(Plain Network),其训练误差居然比 20 层还要高得多!

这被称为退化问题(Degradation Problem)。它不是过拟合(因为训练误差也变高了),也不是梯度消失(因为在使用了 Batch Norm 确保梯度能传回来的情况下,它依然存在)。

既然只要把后面 36 层学成f(x)=xf(x)=xf(x)=x就能维持原状,为什么拥有超强拟合能力的深度网络,连这么简单的“什么都不做”都学不会?


第二步:为什么普通深层网络学不会“什么都不做”?

让我们来看看普通网络(Plain Network)的物理结构。数据xxx灌进去,经过第一层矩阵乘法、激活函数,再经过第二层、第三层……

提问:假设这一层网络用F(x)F(x)F(x)来表示。如果神经网络想让这一层实现“恒等映射”(即输出等于输入:F(x)=xF(x) = xF(x)=x),它必须把里面的权重参数矩阵WWW调整成什么精准的鬼样子?在经过 ReLU 激活函数(把负数全变成 0)的摧残后,它还能完好无损地吐出原本的xxx吗?

解析:答案是极其困难,几乎不可能!

在非线性激活函数(如 ReLU)和层层矩阵乘法的堆叠下,让网络去精准配置权重,使得一长串复杂的数学变换恰好全部抵消,不多不少正好输出xxx,这概率简直比在沙滩上用风吹出一座城堡还要低。

换句话说,在普通的堆叠网络里,“什么都不做(恒等映射)”其实是一个极度复杂的特技动作。网络层数越深,这个特技就越难演。最后,网络不仅没有学到新特征,反而把前面好不容易学好的特征全给传丢了,导致训练误差不降反升。

第三步:ResNet 的神来之笔——把特技变成“本能”

何恺明说,既然网络学不会恒等映射,那我们为什么不从物理结构上直接帮它一把?

于是,他设计了著名的残差块(Residual Block),在原有的普通网络旁边,拉了一条无条件通行的“小路”(Skip Connection / Shortcut):

看这个结构,现在最终的输出变成了:

Y=F(x)+xY = F(x) + xY=F(x)+x

这里的F(x)F(x)F(x)是原本那层网络要学的变换(即残差),而那个挂在加号后面的+x+x+x,就是那条直接滑过去的“快捷通道”。

提问:现在,假设我们又遇到了刚才的困境——后加的这些层其实不需要学新特征了,网络只需要维持原状(即输出YYY应该等于输入xxx)。
看着这个公式Y=F(x)+xY = F(x) + xY=F(x)+x,神经网络要付出多大的努力,才能让输出YYY恰好等于xxx呢?

推导过程:
网络根本不需要费尽心机去让某些矩阵相乘刚好抵消。它只需要偷懒,把这一层网络F(x)F(x)F(x)的权重全部缩减到 0(这只需要把权重WWW乘以一个趋近于 0 的数即可,对反向传播算法来说轻而易举)。

F(x)=0F(x) = 0F(x)=0时:

Y=0+x=xY = 0 + x = xY=0+x=x

恒等映射,诞生了!

总结:用结构改变数学的难易度

你注意到这个精妙的心理学/数学转换了吗?

  • 在普通网络中:网络要拼尽全力把参数调得极度精细,才能勉强让F(x)=xF(x) = xF(x)=x。这叫逆水行舟
  • 在残差网络中:网络只要偷懒躺平,把参数全躺成 0(F(x)=0F(x) = 0F(x)=0),天然就能得到Y=xY = xY=x。这叫顺流而下

我们用一条完整的因果链来复盘全貌:

普通深层网络 ⟹ 极难通过复杂矩阵和激活函数学到 F(x)=x ⟹ 特征在深层丢失,误差变糟(退化)\text{普通深层网络} \implies \text{极难通过复杂矩阵和激活函数学到 } F(x)=x \implies \text{特征在深层丢失,误差变糟(退化)}普通深层网络极难通过复杂矩阵和激活函数学到F(x)=x特征在深层丢失,误差变糟(退化)

ResNet (残差网络) ⟹ 引入跳跃连接 Y=F(x)+x ⟹ 网络只需令 F(x)=0 即可轻易实现恒等映射 ⟹ 确保深层网络性能有保底,绝不退化\text{ResNet (残差网络)} \implies \text{引入跳跃连接 } Y = F(x) + x \implies \text{网络只需令 } F(x)=0 \text{ 即可轻易实现恒等映射} \implies \text{确保深层网络性能有保底,绝不退化}ResNet (残差网络)引入跳跃连接Y=F(x)+x网络只需令F(x)=0即可轻易实现恒等映射确保深层网络性能有保底,绝不退化

残差块的本质,就是把“恒等映射”变成了网络的默认保障(保底机制)。如果这一层学不到更有用的新特征,那就什么都别做,把前面的成果原封不动传过去。

这样,网络哪怕叠到 1000 层,其性能也绝不会比 20 层更差。这就是用结构改变数学难易度的最高境界。

欢迎在评论区留下你的思考:既然 ResNet 这么强大,是不是意味着我们可以无限无脑地叠加层数了呢?大模型时代它又扮演了什么角色?

http://www.cnnetsun.cn/news/2931976.html

相关文章:

  • 深入解析FlexCAN消息缓冲区与数据一致性机制
  • HCIP面试官最爱问的10个网络协议问题,附详细答案与避坑指南
  • 组织竞争力 = 人才密度 x AI杠杆 / 组织摩擦
  • SpringBoot+Vue美食网站源码+论文
  • ComfyUI ControlNet预处理架构解析:从模块化设计到企业级部署的完整技术指南
  • AI生产力中枢搭建指南:5个真实场景验证的工具组合
  • 从盘古石杯CTF赛题出发:手把手教你用Navicat+SSH隧道连接Docker内网数据库(附实战避坑点)
  • 3步快速上手Upkie开源双足轮式机器人:从零到实机的完整教程
  • C标准库硬核函数解析:数学计算、进程线程与信号处理实战
  • MPC860 CPM定时器与通信处理器架构详解:精准时序与高效通信的硬件协同
  • Java计算机毕设之基于SpringBoot的校园设备故障排查与报修系统面向高校后勤的设备报修运维系统(完整前后端代码+说明文档+LW,调试定制等)
  • Social Maze:多智能体社会推理与隐式规则逆向工程实战
  • 嵌入式eDMA架构深度解析:从DMA原理到高性能数据流优化实战
  • 3大场景解析:如何用TranslucentTB提升Windows桌面美观度与工作效率?
  • 网易NeoX引擎NPK文件逆向工程:5个实用技巧与完整解包实战指南
  • DS4Windows手柄校准终极指南:3步解决漂移,5分钟提升游戏体验
  • 当前最严重的社会问题,就是定义域混乱的有毒思想的渗透与污染
  • 7天精通:鸣潮自动化工具ok-ww完整实战指南
  • 3个步骤掌握Upkie开源轮式双足机器人:从零开始构建智能平衡机器人
  • 深入解析QuadSPI控制器:从SPI总线到高性能串行闪存接口
  • PXD10 eMIOS200定时器模块详解:架构、配置与实战应用
  • eTSEC以太网控制器核心机制解析:从FIFO接口到DMA与地址过滤实战
  • 低温与户外复杂工况下,MUKONI对讲设备的稳定性与适配能力解析
  • GitHub启用双重认证(2FA)
  • 计算机毕业设计之基于Python的智能菜谱推荐系统
  • 终极指南:5分钟用AI翻唱工具制作专业歌曲翻唱
  • 手把手复现致远OA wpsAssistServlet文件上传漏洞(附完整请求包与修复建议)
  • 渗透入门第一步:Burp Suite 安装配置疑难问题一站式解决
  • 穿梭矿山油田各类复杂场景DXG-800光缆普查仪成为通信运维好帮手
  • 解放双手:ok-ww鸣潮自动化工具从入门到精通