【模型解读】resnet中的残差连接,你确定真的看懂了?

深度学习 | 关于残差连接你必须知道的20个知识点 除了典型的ResNet,它包括ResNeXt, Res2Net, SE-ResNet, Residual Attention Network等等。Res2Net是一种改进的ResNet,它使用多分支的残差结构,而不像ResNet只有单一的残差路径。在残差块的投影映射中,1x1卷积用来匹配输入和输出的通道数量。ResNet是基于残差网络的架构,它通过在很深的网络添加残差连接来获得很高的准确率。因为残差连接可以让梯度直接传递到很深的层,而不需要通过每一层的激活函数,所以可以避免在每层的激活函数中衰减太多。 阅读详情

文章首发于微信公众号《与有三学AI》

【模型解读】resnet中的残差连接,你确定真的看懂了?

这是深度学习模型解读第6篇,本篇我们将介绍深度学习模型中的残差连接。

作者&编辑 | 言有三

 

1 残差连接

想必做深度学习的都知道skip connect,也就是残差连接,那什么是skip connect呢?如下图

上面是来自于resnet【1】的skip block的示意图。我们可以使用一个非线性变化函数来描述一个网络的输入输出,即输入为X,输出为F(x),F通常包括了卷积,激活等操作。

当我们强行将一个输入添加到函数的输出的时候,虽然我们仍然可以用G(x)来描述输入输出的关系,但是这个G(x)却可以明确的拆分为F(x)和X的线性叠加。

这就是skip connect的思想,将输出表述为输入和输入的一个非线性变换的线性叠加,没用新的公式,没有新的理论,只是换了一种新的表达。

它解决了深层网络的训练问题,作者的原论文中达到了上千层。

残差连接是何的首创吗?当然不是,传统的神经网络中早就有这个概念,文【2】中则明确提出了残差的结构,这是来自于LSTM的控制门的思想。

y = H(x,WH)•T(x,WT) + X•(1- T(x,WT))

可以看出,当T(x,WT) = 0,y=x,当T(x,WT) = 1,y= H(x,WH) 。关于LSTM相关的知识,大家可以去其他地方补。

在该文章中,研究者没有使用特殊的初始化方法等,也能够训练上千层的网络。但为什么这篇文章没有resnet火呢?原因自然有很多了,何的文章做了更多的实验论证,简化了上面的式子,得了cvpr best paper,以及何的名气更大等等因素。

总之,为我们所知道的就是下面的式子

y = H(x,WH) + X,此所谓残差连接,skip connection。

 

2 为什么要skip connect

那为什么要这么做呢?首先大家已经形成了一个通识,在一定程度上,网络越深表达能力越强,性能越好。

不过,好是好了,随着网络深度的增加,带来了许多问题,梯度消散,梯度爆炸;在resnet出来之前大家没想办法去解决吗?当然不是。更好的优化方法,更好的初始化策略,BN层,Relu等各种激活函数,都被用过了,但是仍然不够,改善问题的能力有限,直到残差连接被广泛使用。

大家都知道深度学习依靠误差的链式反向传播来进行参数更新,假如我们有这样一个函数:

 

其中的f,g,k大家可以自行脑补为卷积,激活,分类器。

cost对f的导数为:

 

它有隐患,一旦其中某一个导数很小,多次连乘后梯度可能越来越小,这就是常说的梯度消散,对于深层网络,传到浅层几乎就没了。但是如果使用了残差,每一个导数就加上了一个恒等项1,dh/dx=d(f+x)/dx=1+df/dx。此时就算原来的导数df/dx很小,这时候误差仍然能够有效的反向传播,这就是核心思想。

我们举个例子直观理解一下:
假如有一个网络,输入x=1,非残差网络为G,残差网络为H,其中H=F(x)+x

有这样的一个输入输出关系:

在t时刻:

非残差网络G(1)=1.1, 

残差网络H(1)=1.1, H(1)=F(1)+1, F(1)=0.1

在t+1时刻:

非残差网络G’(1)=1.2, 

残差网络H’(1)=1.2, H’(1)=F’(1)+1, F’(1)=0.2

这时候我们看看:

非残差网络G的梯度  = (1.2-1.1)/1.1

而残差网络F的梯度 = (0.2-0.1)/0.1

因为两者各自是对G的参数和F的参数进行更新,可以看出这一点变化对F的影响远远大于G,说明引入残差后的映射对输出的变化更敏感,输出是什么?不就是反应了与真值的误差吗?

所以,这么一想想,残差就应该是有效的,各方实验结果也证明了。

 

3 skip connect就只是这样吗

上面我们解释了skip connect改善了反向传播过程中的梯度消散问题,因此可以使得训练深层网络变得容易,但研究者们表示NoNoNo,没这么简单。

如今在国内的研究人员,大公司,产品,都醉心于将深度学习用于网络直播和短视频,把整个环境搞的浮躁不堪的情况下,国外有很多的大拿都在潜心研究深度学习理论基础,水平高低之分,可见一斑。文【3】的研究直接表明训练深度神经网络失败的原因并不是梯度消失,而是权重矩阵的退化,所以这是直接从源头上挖了根?

 

当然,resnet有改善梯度消失的作用,文中也做了实验对比如上:但不仅仅不如此,下图是一个采用残差连接(蓝色曲线)和随机稠密的正交连接矩阵的比对,看得出来残差连接并不有效。

 

结合上面的实验,作者们认为神经网络的退化才是难以训练深层网络根本原因所在,而不是梯度消散。虽然梯度范数大,但是如果网络的可用自由度对这些范数的贡献非常不均衡,也就是每个层中只有少量的隐藏单元对不同的输入改变它们的激活值,而大部分隐藏单元对不同的输入都是相同的反应,此时整个权重矩阵的秩不高。并且随着网络层数的增加,连乘后使得整个秩变的更低。

这也是我们常说的网络退化问题,虽然是一个很高维的矩阵,但是大部分维度却没有信息,表达能力没有看起来那么强大。

残差连接正是强制打破了网络的对称性。

第1种(图a),输入权重矩阵(灰色部分)完全退化为0,则输出W已经失去鉴别能力,此时加上残差连接(蓝色部分),网络又恢复了表达能力。第2种(图b),输入对称的权重矩阵,那输出W一样不具备这两部分的鉴别能力,添加残差连接(蓝色部分)可打破对称性。第3种(图c)是图b的变种,不再说明。

总的来说一句话,打破了网络的对称性,提升了网络的表征能力,关于对称性引发的特征退化问题,大家还可以去参考更多的资料【4】。

对于skip连接的有效性的研究【5-6】,始终并未停止,至于究竟能到什么地步,大家还是多多关注吧学术研究,也可以多关注我们呀!

我是言有三,有三,有你,有AI

 

参考文献

【1】He K, Zhang X, Ren S, et al. Deep residual learning for image recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 770-778.

【2】Srivastava R K, Greff K, Schmidhuber J. Highway networks[J]. arXiv preprint arXiv:1505.00387, 2015.

【3】Orhan A E, Pitkow X. Skip connections eliminate singularities[J]. arXiv preprint arXiv:1701.09175, 2017.

【4】Shang W, Sohn K, Almeida D, et al. Understanding and Improving Convolutional Neural Networks via Concatenated Rectified Linear Units[J]. 2016:2217-2225.

【5】Greff K, Srivastava R K, Schmidhuber J. Highway and Residual Networks learn Unrolled Iterative Estimation[J]. 2017.

【6】Jastrzebski S, Arpit D, Ballas N, et al. Residual connections encourage iterative inference[J]. arXiv preprint arXiv:1710.04773, 2017.

 

同时,在我的知乎专栏也会开始同步更新这个模块,欢迎来交流

https://zhuanlan.zhihu.com/c_151876233

注:部分图片来自网络

—END—

转载请留言,侵权必究

本系列的完整目录:

【模型解读】从LeNet到VGG,看卷积+池化串联的网络结构

【模型解读】network in network中的1*1卷积,你懂了吗

【模型解读】GoogLeNet中的inception结构,你看懂了吗

【模型解读】说说移动端基准模型MobileNets

【模型解读】pooling去哪儿了?

【模型解读】resnet中的残差连接,你确定真的看懂了?

【模型解读】“不正经”的卷积神经网络

【模型解读】“全连接”的卷积网络,有什么好?

【模型解读】从“局部连接”回到“全连接”的神经网络

【模型解读】深度学习网络只能有一个输入吗

【模型解读】从2D卷积到3D卷积,都有什么不一样

【模型解读】浅析RNN到LSTM

感谢各位看官的耐心阅读,不足之处希望多多指教。后续内容将会不定期奉上,欢迎大家关注有三公众号 有三AI!

 

 

跳跃连接(Skip Connection)与残差连接(Residual Connection) 跳跃连接是一种在深度神经网络中广泛应用的技术,它允许信息在网络中跨层直接传递。在传统的神经网络里,每一层的输出仅仅是前一层输出经过特定变换后的结果。而在具备跳跃连接的网络中,某一层的输出不仅能够包含前一层的变换结果,还可以直接包含更早层的输出。 阅读详情

相关推荐

ResNet(残差网络模型)原理解读-包括residual block与BN原理介绍

《Deep Residual Learning for Image Recognition》 《Identity Mappings in Deep Residual Networks》 ResNet(Residual Neural Network)由微软研究院的Kaiming He等四名华人提出,通过使用ResNet Unit成功训练出了152层的神经网络,并在ILSVRC2015比赛中取得冠军,在top5上的错误率为3.57%,同时参数量比VGGNet低,效果非常突出。ResNet的结构可以极快的加.

panghuzhenbang的博客 2万+

残差连接(Residual Connection)

残差连接(Residual Connection)是一种通过引入跨层的直接连接来优化深度神经网络的方法。

m0_73624835的博客 1万+

ResNet论文翻译及解读

ResNet论文翻译及解读

David Lee的博客 9586

深度学习相关概念整理

残差连接(Residual Connection)是一种在深度学习领域,特别是在深度神经网络架构设计中的关键技术。它最初由何凯明等人在2015年的论文《Deep Residual Learning for Image Recognition》中提出,并应用于ResNet(Residual Network)中,极大地推动了深度神经网络的发展,尤其是在图像识别任务上的突破。残差连接的核心思想是引入“捷径”或“跳过连接”,它允许输入信号可以直接传递到网络的较深层,而不仅仅依赖于逐层前向传播的计算结果。

不断进步的咕咕怪的博客 7846

残差网络ResNet源码解析——Pytorch版本

源码GitHub地址

万物并作,吾以观复 7376

【学习笔记】resnet-18 pytorch源代码解读

对于pytorch中预定义的ResNet-18的代码进行简单的分析

lcn463365355的博客 3万+

「模型解读」resnet中的残差连接,你确定真的看懂了?

https://www.toutiao.com/a6708715626782786061/ 1 残差连接 想必做深度学习的都知道skip connect,也就是残差连接,那什么是skip connect呢?如下图 上面是来自于resnet【1】的skip block的示意图。我们可以使用一个非线性变化函数来描述一个网络的输入输出,即输入为X,输出为F(x),F通常包括了卷积,...

喜欢打酱油的老鸟 1237

深度学习技巧应用2-神经网络中的‘残差连接’的应用技巧

残差连接通过直接将前一层的输出加到后一层的输入中,使得梯度能够更容易地传递到前一层,从而使得深度神经网络的训练更加容易。由于深层网络容易出现梯度消失或梯度爆炸的问题,因此可以通过残差连接的方式,将网络的深度扩展到数十层以上,从而提高模型的性能。残差连接的基本思想是,在网络的某些层中,将输入的信号直接连接到输出,从而在网络中引入“残差连接(Residual Connection)是指在神经网络中,将前一层的输出直接与后一层的输入相加,从而构成了一种跨层连接的方式。更多细节,可以关注微学AI,欢迎私信与合作。

微学AI的博客 8062

全连接层的输入和输出_【模型解读】resnet中的残差连接,你确定真的看懂了?...

这是深度学习模型解读第6篇,本篇我们将介绍深度学习模型中的残差连接。1 残差连接想必做深度学习的都知道skip connect,也就是残差连接,那什么是skip connect呢?如下图上面是来自于resnet【1】的skip block的示意图。我们可以使用一个非线性变化函数来描述一个网络的输入输出,即输入为X,输出为F(x),F通常包括了卷积,激活等操作。当我们强行将一个输入添加到函数的输出的...

weixin_39695241的博客 1914

4.7W防削顶单声道D类音频功率放大器HT6872介绍

HT6872是一款低EMI,防削顶失真,单声道免滤波D类音频功率放大器。在6.5V电源,10%THD+N,4Ω负载条件下,输出4.71W功率,在各类音频终端应用中维持高效率并提供AB类放大器的性能。

weichen_78的博客 4704

PINN内嵌物理知识神经网络入门及文献总结

内嵌物理知识深度学习方法(PINN)已经成功用于解决各类科学计算问题,其本质是将物理先验知识嵌入神经网络训练中,将一个求解PDE的问题转化为一个优化问题。这篇博客主要记录PINN相关论文

山里娃的博客 7万+

目标检测学习笔记2——ResNet残差网络学习、ResNet论文解读

一、前言 在学习Yolo v3的过程中,了解到它借鉴了残差网络的快捷链路(shortcut connection),因此为了更好的理解yolo3,我对ResNet展开了学习,并阅读其论文。 ResNet—— Residual Network残差神经网络,是何恺明大神(Faster RCNN的作者)于2015年提出,在当年多个大赛中用此网络获得了第一名。 为什么会提出ResNet? 在深度神经网络中存在一个问题,大家都知道,网络层数加深,参数增多,网络表现能力理应更好。但随着深度的不断增加,会出现网络退

Shadownow的博客 4156

AGI 之 【Dify】 之 Dify 在 Windows 端本地部署调用 Ollama 本地下载的大模型, API 形式 Python 调用 进行简单聊天接口测试

AGI,即通用人工智能(Artificial General Intelligence),是一种具备人类智能水平的人工智能系统。它不仅能够执行特定的任务,而且能够理解、学习和应用知识于广泛的问题解决中,具有较高的自主性和适应性。AGI的能力包括但不限于自我学习、自我改进、自我调整,并能在没有人为干预的情况下解决各种复杂问题。本节将介绍如何使用 Dify 平台调用 Ollama 部署的本地模型来创建一个聊天应用。通过 API 的方式发起聊天,可以让前端自由布置所需的聊天形式。

仙魁XAN 1万+

pytorch中残差网络resnet的源码解读

pytorch的resnet模块在torchvision的models中。 里面可以选择的resnet类型有: _all_列表的每一个resnet都提供了实现的函数: def resnet18(pretrained=False, progress=True, **kwargs): """Constructs a ResNet-18 model. Args: ...

ZJE 2万+

手把手调试Android 14 ShellTransitions:用Log追踪ActiveTransition与Handler匹配过程

本文详细介绍了在Android 14中调试ShellTransitions机制的方法,重点通过Log追踪ActiveTransition与Handler的匹配过程。文章提供了关键日志点植入策略、Handler匹配机制解析及实战调试案例,帮助开发者解决窗口转场动画中的卡顿和错乱问题,提升系统动画性能。

weixin_42652674的博客 432

ABAP调用启信宝API

方法参数定义如下 源代码如下 method qxb_http_get. data:lv_url type string. "===============初始化=============================================== "获取http实例 cl_http_client=>create_by_destination( exporting destination = space importing

u012232542的博客 1313

残差网络ResNet代码解读

残差网络效果 卷积神经网络CNN的发展历史如图所示: 从起初AlexNet的的8层网络,到ResNet的152层网络,层数逐步增加。当网络层数增加到一定程度之后,错误率反而上升,其原因是层数太多梯度下降变得越发困难。而ResNet解决了这一问题。 目前ResNet是应用最广的图像相关深度学习网络,图像分类,目标检测,图片分割都使用该网络结构作为基础,另外,一些迁移学习也使用ResNet训...

谢彦的技术博客 4651

微信小程序推送微信服务号模板消息

微信小程序中发送微信服务号模板消息,无需用户手动确认订阅,无需绑定开放平台,无需使用UnionId。

qq_20751269的博客 1562

ResNet 残差、退化等细节解读

说实话ResNet的网络结构参数真没有什么可以解读的,在本博客中我们主要了解(1)传统深度学习网络的退化问题(2)残差结构(3)残差结构如何解决退化问题(4)残差结构还有什么其他作用

xiao_ling_yun的博客 4899

卷积码Viterbi译码算法原理及C语言实现

具体而言,卷积码的编码过程是将输入数据和编码器中的状态进行异或操作,输出码字为各个状态对应的结果。Viterbi译码算法是一种最大似然译码算法,根据接收到的含有噪声的码字,寻找出最有可能的原始数据序列。(2) 递推计算:根据接收到的码字和当前状态,计算下一时刻各个状态的路径度量,并记录每个状态的前驱状态。以上代码实现了一个简单的卷积码Viterbi译码算法,通过接收到的码字进行译码,并输出解码结果。(1) 初始化:将所有状态的路径度量初始化为一个很大的值,选择路径度量最小的状态作为起始状态。

2301_79331421的博客 827

9 硬件工程师笔面试高频知识考点真题解析——运算放大器

运算放大器(运放)摘要 运放是一种高增益、差分输入的模拟集成电路,具有虚短(线性区输入电压相等)和虚断(输入电流为零)特性,支持负反馈(线性放大)和开环/正反馈(饱和区比较)两种工作模式。关键特性包括高输入阻抗、低输出阻抗,理想运放参数(如无限增益)与实际参数(如有限带宽)的差异。 选型要点: 信号特性:直流/低频信号关注失调电压(Vos)、温漂;高频信号侧重带宽(GBW)和压摆率(SR)。 电源条件:单/双电源供电、电压范围及功耗需求(如电池设备需低静态电流)。 精度与噪声:微弱信号需低噪声运放,高精度场

XU157303764的博客 1677

resnet中的残差连接

本文转自微信公众号“言有三”:【模型解读】resnet中的残差连接,你确定真的看懂了? 一、残差连接 想必做深度学习的都知道skip connect,也就是残差连接,那什么是skipconnect呢?如下图 上面是来自于resnet【1】的skip block的示意图。我们可以使用一个非线性变化函数来描述一个网络的输入输出,即输入为X,输出为F(x),F通常包括了卷积,激活等操作。 ...

AnneQiQi的博客 1535

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Resnet中的残差连接

1 Skip Connect 想必做深度学习的都知道skip connect,也就是残差连接,那什么是skip connect呢?如下图 上面是来自于resnet【1】的skip block的示意图。我们可以使用一个非线性变化函数来描述一个网络的输入输出,即输入为X,输出为F(x),F通常包括了卷积,激活等操作。 当我们强行将一个输入添加到函数的输出的时候,虽然我们仍然可以用G(x...

J~的博客 1493

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

大数据深度学习ResNet深度残差网络详解:网络结构解读与PyTorch实现教程

深度残差网络(Deep Residual Networks,简称ResNet)自从2015年首次提出以来,就在深度学习领域产生了深远影响。通过一种创新的“残差学习”机制,ResNet成功地训练了比以往模型更深的神经网络,从而显著提高了多个任务的性能。深度残差网络通过引入残差学习和特殊的网络结构,解决了传统深度神经网络中的梯度消失问题,并实现了高效、可扩展的深层模型。梯度消失问题发生在神经网络的反向传播过程中,具体表现为网络中某些权重的梯度接近或变为零。这导致这些权重几乎不会更新,从而阻碍了网络的训练。

专注 AI、大数据、Python、爬虫、数据分析可视化、机器学习、推荐算法、知识图谱、大模型应用与全栈系统开发,长期沉淀真实项目案例、源码解析、系统设计、部署经验与工程化实践,分享可运行、可复用、可落地的技术方案。 5497

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

pytorch源码解读之resnet.py的实现

文章目录调用pytorch内置的模型的方法解读模型源码Resnet.py包含的库文件该库定义了6种Resnet的网络结构,包括每种网络都有训练好的可以直接用的.pth参数文件Resnet中大多使用3*3的卷积定义如下如何定义不同大小的Resnet网络Resnet18resnet34Resnet类我们来看看网络的forward过程layer层的实现在理解Resnet之前,我们先要理解一下Blocki...

博客 5620
上一篇: 【模型解读】pooling去哪儿了?
下一篇: 【模型解读】“全连接”的卷积网络,有什么好?
言有三
言有三 领域专家: 人工智能技术领域 领域专家: 人工智能技术领域
博客等级 码龄15年 3635粉丝 976原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

言有三

三人行必有AI

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值