尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
ResNet 论文阅读(二):用传话游戏理解残差学习为什么有效
论文信息论文标题Deep Residual Learning for Image RecognitionCVPR 官方页面CVPR 2016 Open Access PagearXiv 摘要页Deep Residual Learning for Image Recognition官方 PDFCVPR 2016 PDF上一篇文章里我们从 VGG 的加深思路出发讲到了 ResNet 要解决的核心问题普通网络继续加深以后可能出现退化问题也就是网络更深了训练误差反而更高。随后我们从公式角度理解了残差学习y F(x) x这篇文章换一种方式不再一上来盯着公式而是用一个更生活化的“传话游戏”来理解 ResNet。这个类比的目标不是替代数学推导而是帮助我们把残差学习的直觉真正吃透为什么保留原信息再学习一点修正量会比每一层都重新生成完整表示更容易。一、先把残差块翻译成传话规则假设有五个人参加传话游戏A - B - C - D - E原话是今天下午实验室窗外在下小雨但屋里很安静大家都在认真调试自己的模型。这句话里有一个核心主干大家都在认真调试自己的模型也有一些修饰信息今天下午 实验室窗外在下小雨 屋里很安静如果把这句话类比成网络里的特征表示那么主干信息就像是需要被保留下来的重要特征修饰信息则像是在不同层之间可以继续调整和增强的细节。现在我们分别看普通网络和 ResNet 会怎样完成这场传话。二、普通网络每个人都重新组织整句话在普通网络里可以粗略理解为每一层都要根据上一层输入重新生成一个完整输出。类比到传话游戏里就是每个人听到上一版后都要靠自己的理解重新说一遍整句话。传话过程可能变成这样A: 今天下午实验室窗外在下小雨但屋里很安静大家都在认真调试自己的模型。 B: 今天下午实验室外面在下雨屋里很安静大家都在调试模型。 C: 下午外面下着雨实验室里的人都在安静地做实验。 D: 下雨天大家都在实验室里做实验气氛很安静。 E: 雨天实验室里很安静大家都在工作。最后 E 说出来的句子并不是完全错误但和原句相比信息已经发生了明显变化认真调试自己的模型被压缩成了工作今天下午消失了实验室窗外在下小雨变成了笼统的雨天原句里“大家在调试模型”的专业语境被削弱了这就是普通深层网络里容易出现的一个直观问题每一层都在做完整变换原始信息每经过一层都可能被重新解释一次。层数少时这种偏差可能还不明显层数一多信息就容易在连续变换中被削弱、扭曲或丢失。用公式来表示普通网络更像是y F(x)也就是说输出完全依赖当前层学到的变换F(x)。如果当前层没有学好后面的层只能基于这个已经偏掉的表示继续加工。三、ResNet先保留上一版再做一点修改ResNet 的传话规则不一样。它不是要求每个人都重新组织整句话而是要求每个人先保留上一版然后只决定自己要不要做一点小修改。这时传话过程可能变成这样A: 今天下午实验室窗外在下小雨但屋里很安静大家都在认真调试自己的模型。 B: 我保留原句只把“在下小雨”说得更自然一点。 今天下午实验室窗外下着小雨但屋里很安静大家都在认真调试自己的模型。 C: 我保留主干只把“屋里很安静”改成“实验室里很安静”。 今天下午实验室窗外下着小雨实验室里很安静大家都在认真调试自己的模型。 D: 我觉得这句已经很好了不改。 今天下午实验室窗外下着小雨实验室里很安静大家都在认真调试自己的模型。 E: 我只补一点语气把“认真”换成“专心”。 今天下午实验室窗外下着小雨实验室里很安静大家都在专心调试自己的模型。这一次最后的句子仍然保留了原句最重要的含义大家都在调试自己的模型它只是对局部表达做了一些调整比如“小雨”的说法更自然“屋里很安静”更明确为“实验室里很安静”“认真”被换成了“专心”。这就是残差学习最重要的直觉新结果 旧结果 一点修正对应到 ResNet 的公式就是y F(x) x这里x就像上一版原话F(x)就像这一层给出的修改意见F(x) x就像“保留原话再加上一点修订”。所以 ResNet 并不是让每一层都推翻前面的表达而是在前一层的基础上做增量更新。四、为什么“不改”反而很重要这个传话规则里有一个看似不起眼但非常关键的能力如果某个人觉得上一版已经很好他可以选择不改。在传话游戏里D 的操作是我觉得这句已经很好了不改。翻译成 ResNet 的公式就是F(x) 0于是y F(x) x y 0 x y x这就表示当前残差块可以近似变成恒等映射也就是把输入原样传下去。这件事正好对应 ResNet 要解决的退化问题。理论上更深的网络至少应该可以模仿浅层网络因为新增的层只要不改变已有表示就行。但在普通网络中让一组卷积层精确学成“什么都不改”的恒等映射并不容易。而在 ResNet 里这件事被改写得更简单如果不需要改就让 F(x) 接近 0所以残差学习给深层网络提供了一个更容易达到的基线新增层不一定非要学出复杂变换它也可以先学会“少改一点”甚至“暂时不改”。五、反向传播错误信息怎么传回来传话游戏不只可以解释前向传播也可以帮助我们理解反向传播。假设老师最后检查 E 的结果发现 E 说的是今天下午实验室窗外下着小雨实验室里很安静大家都在专心调试自己的模型。原话是今天下午实验室窗外在下小雨但屋里很安静大家都在认真调试自己的模型。两句话的大方向没有错主要差别在于认真 - 专心 屋里很安静 - 实验室里很安静 在下小雨 - 下着小雨现在老师要把“哪里错了”这个反馈从 E 往回传给 D、C、B、A这就像神经网络里的梯度回传。六、普通网络的回传每个人都很难判断是谁改偏了在普通网络式传话里每个人都重新组织过整句话。于是最后出了偏差时反馈很难准确定位。E 会对 D 说最后这句话和原句有点不一样你看看是不是前面传偏了。D 再对 C 说好像意思整体有点变化但我也不确定是哪里开始变的。C 再对 B 说后面说法和原句不完全一致可能主干和细节都有点变化。传到越前面反馈越模糊。因为每一层都做过完整改写前面的层很难判断是我把主干改偏了是后面的人把细节改丢了是整体表达变化太大还是只有某个局部词语变化对应到普通网络的梯度公式就是dL/dx dL/dy * dF(x)/dx它表示前一层收到的梯度完全要经过F(x)这条复杂变换路径。如果网络很深这种变化率会一层层相乘。每层都缩小一点就可能梯度消失每层都放大一点就可能梯度爆炸。七、ResNet 的回传主干保留谁改了什么就检查什么在 ResNet 式传话里情况更清楚。因为每个人都保留上一版只做少量修改所以最后回传错误时可以更容易定位到每个人的修改。比如老师说主干“大家都在调试自己的模型”是对的只是部分修饰词发生了变化。那么 E 很容易知道我主要把“认真”改成了“专心”这个变化需要检查。D 也很容易知道我没有改所以我大概率没有引入新的偏差。C 会知道我把“屋里很安静”改成了“实验室里很安静”这是局部表达变化。B 会知道我把“在下小雨”改成了“下着小雨”这个变化也比较局部。也就是说ResNet 的回传更像是主干信息先保留重点检查每一层额外加的修改。对应到公式就是y F(x) x所以梯度回传时可以写成dL/dx dL/dy * dF(x)/dx dL/dy这行公式可以拆成两部分理解dL/dy * dF(x)/dx表示错误信号经过残差分支F(x)回传相当于检查“这一层具体改了什么”。dL/dy表示错误信号可以沿着 shortcut 直接回传相当于主干信息有一条更直接的反馈通路。这就是 ResNet 反向传播更顺畅的原因。它不是只靠复杂变换路径传梯度而是额外保留了一条恒等路径。这样即使残差分支在训练初期还不稳定前面的层也仍然能收到更直接的误差信号。八、这个类比对应到 ResNet 的哪些核心点这个传话游戏可以帮助我们抓住 ResNet 的几个关键直觉。第一普通网络更像“每一层都重写全文”y F(x)如果层数变多每一层的改写都会影响后续表达信息可能在不断变换中逐渐偏移。第二ResNet 更像“保留上一版再做少量修订”y F(x) x这样每一层不必从零生成完整表示而是学习相对于输入的增量。第三残差学习让恒等映射更容易实现如果 F(x) 0那么 y x这意味着当某些层暂时不需要做复杂变换时它们可以更容易接近“不改动输入”的状态。第四shortcut 让梯度回传多了一条直接路径dL/dx dL/dy * dF(x)/dx dL/dy多出来的dL/dy就是残差连接带来的直接回传项。九、这个类比也有边界虽然传话游戏很好理解但它毕竟只是类比不能把它当成神经网络训练的完整解释。真实的 ResNet 里每一层不是人在主动判断“我要不要改”而是通过损失函数和反向传播自动调整参数。网络也不是在处理自然语言句子而是在处理高维特征图。shortcut 是否能直接相加还要求两条路径的特征图尺寸和通道数能够匹配如果不匹配论文中会使用 projection shortcut 来调整维度。因此这个类比最适合帮助我们理解 ResNet 的直觉而不是替代严格的网络结构和优化分析。十、小结用一句话记住 ResNet如果用传话游戏来总结 ResNet我会这样说普通网络像是每个人都重新说一遍整句话ResNet 则像是每个人先保留上一版再只修改自己认为需要调整的部分。这句话背后的数学形式就是y F(x) x也正因为有了这个结构ResNet 在前向传播时更容易保留已有信息在反向传播时也能让梯度沿着 shortcut 更直接地传回前面。它解决退化问题的关键不是简单地“网络变深了”而是让深层网络的每一段都从“完整重建”变成了“增量修正”。上一篇文章更偏严谨地解释了残差学习的数学原理这一篇则用传话游戏把直觉补上。两篇合在一起看ResNet 最核心的思想就比较完整了深层网络不一定要每层都重新发明表示很多时候学会在已有表示上少量修正反而是更稳定、更高效的方式。参考文献He, K., Zhang, X., Ren, S., Sun, J. (2015).Deep Residual Learning for Image Recognition. arXiv:1512.03385.
RELATED

相关推荐

Prism Launcher离线版实测:不用正版账户,3步解锁Minecraft全版本离线畅玩

Prism Launcher离线版实测:不用正版账户,3步解锁Minecraft全版本离线畅玩

Prism Launcher离线版实测:不用正版账户,3步解锁Minecraft全版本离线畅玩 【免费下载链接】PrismLauncher-Cracked This project is a Fork of Prism Launcher, which aims to unblock the use of Offline Accounts, disabling the restriction of havin…

📅 2026/10/13 12:41:53
游戏角色动画中的JiggleBone技术:从弹簧质点模型到实战调优

游戏角色动画中的JiggleBone技术:从弹簧质点模型到实战调优

1. 项目概述:从“硬邦邦”到“Q弹”的物理革命 如果你在游戏开发或者三维动画领域摸爬滚打过一段时间,尤其是接触过角色动画,那你一定对“JiggleBone”这个词不陌生。简单来说,它就是让模型上特定骨骼(比如角色的耳朵、…

📅 2026/10/7 19:29:28
python数据可视化技巧的100个练习 -- 87. 使用 Plotly 绘制漏斗图

python数据可视化技巧的100个练习 -- 87. 使用 Plotly 绘制漏斗图

重要性★★★☆☆ 难度★★★☆☆ 一家数字营销机构希望可视化其销售漏斗的转化率。 他们有以下阶段:“Website Visits”(网站访问)、“Sign-Ups”(注册)、“Free Trials”(免费试用)和 “Purchases”(购买)。 每个阶段的用户数量分别为:5000、1500、800 和 200。…

📅 2026/10/6 19:53:52
MORE NEWS

更多资讯

📰

C++运算符重载实战:从零实现健壮可靠的Date日期类

看到这个题目,我第一反应是:经典。只要是学 C 运算符重载,日期类几乎是绕不开的标配练习,课程作业里有它,笔试面试的机考题里也常有它的变体。A同学前几天把题目拍给我看,要求就是标题里那几句:…

📰

STM32+WiFi智能插座定时功能实战:本地RTC与云端同步避坑指南

简介:这份资源面向嵌入式开发初学者与智能家居DIY爱好者,提供基于STM32单片机实现WiFi控制家电插座开关及定时功能的完整工程方案,帮助读者理解从硬件选型到固件开发的整体流程。压缩包共224个文件,约101.37MB,包含32个…

📰

PHP实现weixin://跳转:APP唤起微信的完整方案

简介:APP跳转神器是一套基于PHP的微信跳转源码,核心解决从手机APP或浏览器端唤起微信并跳转到指定网页的需求,适用于公众号文章推广、营销二维码落地页、微信内打开任意网址等场景。使用者只需点击链接即可唤起微信,无需复制粘贴&…

📰

纯原生HTML5音乐播放器:零依赖、可嵌入、真可用

1. 项目概述:一个真正能用、能改、能嵌入的轻量级音乐播放器 “HTML简单音乐播放器”这八个字,乍看平平无奇,但在我过去十年带过的几十个前端入门项目里,它几乎是新手跨过“静态页面”门槛、第一次触摸“交互逻辑”的关键跳板。不…

📰

Docker Compose 一键部署教程:从单体到微服务完整实践

微服务 / 单体项目 Docker Compose 一键部署教程(完整版) 1. 这方案到底解决什么问题 先聊个场景。你手里有一个单体项目,或者一套微服务集群,本地跑得正欢,但要交付给同事联调、部署到测试服务器、或者换一台新机器&…

📰

微信小程序图片视频上传Flask后端存储完整demo与避坑指南

简介:面向微信小程序开发者与Flask后端初学者,这份demo完整演示了图片和视频从前端采集、预览到后端接收存储的链路。前端是不需要复杂配置的微信小程序工程,可直接用微信开发者工具打开,涵盖照片/视频选择、预览与上传交互&#…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬