从VGGNet后,CNN结构就从“卷积层+池化层”范式进化为了“卷积块+池化层”范式。
卷积块就是由1层或多层卷积层组成。
这个概念现在基本成为共识。注意,VGGNet提出后,后面网络对卷积层进行了各种“折腾”、“整活”和“进化”——GoogLeNet把普通卷积层进化成inception模块(实质取代普通传统卷积层——超级卷积层),ResNet也是,它对卷积层进化成了残差块。
因此,inception模块、残差块等都是特殊的卷积层,于是卷积块的组成就由传统卷积层组成或者特殊卷积层组成了——实质还是逃不出“卷积块是由卷积层组成”,因为incpetion模块,VGG模块,残差块等也可以看作是卷积层。
1 残差块
残差块分为2种——一种是两层的basicblock(用以搭建浅层网络,如resnet18,resnet34),另一种是三层的bottleneck(用以搭建深层网络,如resnet50,resnet101,resnet152)。
如下文章所讲。
【【深度学习】ResNet网络讲解 - CSDN App】https://blog.csdn.net/weixin_44001371/article/details/134192776
其图截取如下:
图中左边是2层的basicblock,右边是3层的bottleneck。
李沐等人《动手学深度学习》只是介绍了basicblock。
根据本章概念,这2种残差块也是属于卷积层的超级进化,可以当成卷积层。
2 网络结构
【深度学习】ResNet网络讲解 https://blog.csdn.net/weixin_44001371/article/details/134192776
该文章中的resnet34网络结构截图如下,
图中也对比了VGG19,你看VGG19有5个最大池化层,根据卷积块概念可知它就被最大池化层分割成了5个卷积块。再看每个卷积块分别由谁组成——VGGNet的5块卷积块里都是由串联的传统卷积层组成,我们也可以叫它GoogleNet提出的同样的名字——inception模块(盗梦空间——梦中梦,inception模块串联起来走向更深层的网络!),它也符合串联起来走向更深层。所以它第1块卷积块由2个串联的传统卷积层组成,同样方法,依次观察,第2块-第5块卷积块分别由2、4、4、4个传统卷积块组成。于是可以总结其结构为:
5个卷积块(2+2+4+4+4)+ 3个全连接层。
按照前面卷积块概念观察ResNet34网络结构,同样可以观察到ResNet34网络是由2个卷积块+GAP全局平均池化层组成,即1+16+GAP全局平均池化层——由1层传统卷积层组成的第1块卷积块 + 由16个basicblock组成的第2个卷积块 + GAP全局平均池化层。
【深度学习】ResNet网络讲解 https://blog.csdn.net/weixin_44001371/article/details/134192776
这篇文章还罗列了ResNet各网络结构设计,如下图:
其实从LeNet网络到如今的ResNet网络,各个网络团队研究出来的各自的什么模块都可以当成超级卷积层,你看各家论文都是把自己创造的模块当成卷积层来使用的。
从上表,可以通过前面的CNN网络结构组成范式概念,来重新解读下:
ResNet18就是2个卷积块+GAP全局平均池化层,具体是1+8+GAP全局平均池化层——由1层传统卷积层组成的第1块卷积块 + 由8个basicblock组成的第2个卷积块 + GAP全局平均池化层。
ResNet34就是2个卷积块+GAP全局平均池化层,具体是1+16+GAP全局平均池化层——由1层传统卷积层组成的第1块卷积块 + 由16个basicblock组成的第2个卷积块 + GAP全局平均池化层。
ResNet50就是2个卷积块+GAP全局平均池化层,具体是由1+16+GAP全局平均池化层——由1层传统卷积层组成的第1块卷积块 + 由16个bottleneck组成的第2个卷积块 + GAP全局平均池化层。
ResNet101就是2个卷积块+GAP全局平均池化层,具体是由1+33+GAP全局平均池化层——由1层传统卷积层组成的第1块卷积块 + 由33个bottleneck组成的第2个卷积块 + GAP全局平均池化层。
ResNet152就是2个卷积块+GAP全局平均池化层,具体是由1+50+GAP全局平均池化层——由1层传统卷积层组成的第1块卷积块 + 由50个bottleneck组成的第2个卷积块 + GAP全局平均池化层。
可以发现ResNet网络特殊,就用了2个池化层,第1个最大池化层,最后一个池化层是全局平均池化层,像之前的网络结构都是不少池化层的,而ResNet就2个,如果全局平均池化层不算的话,就只有一层池化层,也就是ResNet研究出的残差块进行串联都不会有最大池化层分隔——不像GoogLeNet网络中很多inception模块串联但是中间有不少最大池化层分隔。
也就是说上述表格里的conv2.x到conv5.x,这一区域属于一个卷积块——前面说的概念卷积块由池化层分割,它一共2个池化层。
根据人们之前实验探索出来的经验来推衍,卷积+池化组合应该在深层网络中是有效的,但是现实往往打脸——经过实验发现,哎呀,前面探索出来的经验推导出来的理论竟然失效了!!! 而ResNet网络探索发现是研究出来的模块——超级卷积层——不用最大池化层进行分割效果更好——这难以理解——我猜目前神经网络的结构理论是属于高维层次的理论,远远超出人类大脑理解的范畴吧。
同时又加深了我对于神经网络结构的演变是实验科学的论证。或者说神经网络属于实验科学。
3 革新点
【【深度学习】ResNet网络讲解 - CSDN App】https://blog.csdn.net/weixin_44001371/article/details/134192776
该文章所述:
1.超深的网络结构(超过1000层)。
2.提出residual(残差结构)模块。
3.使用Batch Normalization加速训练(丢弃dropout)。
4 影响
ResNet(残差网络)的探索实验是深度学习发展史上的一个里程碑,它通过引入残差连接(Skip Connection) 解决了深层网络训练中的梯度消失/爆炸问题,对后续网络架构产生了深远且根本性的影响。
以下是ResNet探索实验对后续网络发展的具体影响分析:
4.1 核心贡献:残差连接(Skip Connection)
ResNet的核心思想是“恒等映射”。它不再让网络层直接学习目标函数 H(x),而是学习残差函数 F(x)=H(x)−x。这样,原始函数就变成了 H(x)=F(x)+x。
解决了深度瓶颈:在此之前,网络深度增加(如超过20层)会导致训练误差反而增大(退化问题)。ResNet通过残差连接,使得梯度可以直接“跳过”某些层进行反向传播,确保了信息流的畅通,使得训练数百甚至上千层的网络成为可能。
缓解梯度消失:在深层网络中,梯度在反向传播时会逐层衰减。残差连接提供了一条“高速公路”,让梯度可以直接回传,有效缓解了梯度消失问题。
4.2 对后续网络架构的影响
a) 成为现代网络的“标准组件”
ResNet提出的残差块(Residual Block)已经成为现代深度网络架构的标配。无论是图像分类、目标检测还是语义分割,几乎所有的SOTA(State-of-the-Art)模型都内置了残差连接的思想。
DenseNet:在ResNet的基础上更进一步,提出了“密集连接”,即每一层都接收前面所有层的特征图作为输入,进一步增强了特征复用。
Inception-v4:将Inception模块与ResNet的残差连接结合,形成了Inception-ResNet-v2,性能显著提升。
Highway Networks:可以看作是ResNet的前身,但ResNet将其简化并推广,使其更易于训练和部署。
b) 启发了注意力机制与Transformer的架构
ResNet的“跳连”思想启发了后续神经网络对信息流路径的设计。
注意力机制:在Transformer中,残差连接与层归一化(LayerNorm)结合,构成了Transformer Block的基础结构(如Pre-Norm结构)。这种设计确保了深层Transformer模型(如BERT、GPT)的稳定训练。
U-Net:在图像分割领域,U-Net的跳跃连接(Skip Connection)将编码器的高分辨率特征与解码器的上采样特征拼接,这一设计灵感直接来源于ResNet对信息流的保护。
c) 推动了超深网络的研究
在ResNet之前,网络的深度被认为是有限的。ResNet(如ResNet-152)的成功证明了网络深度是提升性能的关键因素之一。这直接推动了后续对极深网络(如1000层以上)的探索,尽管后来的研究(如ResNeXt、EfficientNet)表明宽度和分辨率也同样重要,但深度始终是模型能力的基础。
4.3 小结
ResNet的探索实验不仅仅是提出了一个更好的网络结构,更是改变了深度学习社区对网络架构设计的认知。它证明了:
网络可以非常深:只要解决梯度传播问题,深度就是有效的。
捷径(Shortcut)是有效的:网络不需要学习完整的映射,学习残差往往更简单、更高效。
架构的通用性:残差思想不仅适用于CNN,也适用于RNN、Transformer等各类网络。
因此,ResNet被誉为“深度学习领域的经典之作”,其影响延续至今,是现代AI模型不可或缺的基石之一。
5 神经网络结构探索是实验科学
这个观点我始终坚持,原因是我猜神经网络结构的科学理论是高维科学理论,人类大脑理解不了,只能通过不断的实验探索、盲人摸象般地去一步一步靠近真相!
我觉得还有赖于人类对自己大脑的进一步认识,或者改变当前神经元的数学模型——使其更加贴近人类大脑神经元的真实活动规律,这样未来AI才有进化出意识的可能性。
6 探索的经验
原先的卷积+池化在浅层有效果,然后人们就觉得一定的卷积+池化交替出现,建立了这个理论,然后resnet打破打破这个理论了——它创造的超级卷积层的堆叠就没有按照卷积池化交替出现的规律,但是效果更好!
从此,ResNet的经验就是不需要最大池化层!这影响了很多,比如yolo受到它的思想的影响,在yolov3开始引入残差思想,其最大池化层被卷积层所代替效果更好!!
7 与控制理论的渊源
看到ResNet的结构有种似曾相识的感觉,就是控制理论的反馈系统,但是人家是负反馈。
残差块(Residual Block)的结构确实和控制理论中的反馈系统(尤其是负反馈系统)在形式上高度相似,甚至在信号处理的思想内核上也有共通之处。我们可以从结构映射和功能逻辑两个层面来解析这种相似性:
功能逻辑:残差学习 ≈ 负反馈的“误差修正”
控制理论中,负反馈系统的核心思想是:通过反馈信号与实际输出的差异(误差)来修正系统的行为,从而让输出更接近目标(比如稳定系统、跟踪输入、抑制干扰等)。
残差块的设计思想(残差学习)是:让网络学习“残差”(即 F(x) = H(x) - x,其中 H(x) 是理想输出,x 是输入),而不是直接学习 H(x)。这等价于:H(x) = F(x) + x也就是,网络的输出是“输入 x”加上“学习到的残差 F(x)”。
这和负反馈的逻辑高度相似:输入 x 相当于“目标值”(或期望输出);前向通路(两个卷积+ReLU)学习的是“误差修正量”(即残差 F(x),类似负反馈中“控制器根据误差计算的调整量”);加法器将“目标值 x”和“修正量 F(x)”叠加,得到“实际输出 H(x)”,相当于负反馈中“输出 = 目标 + 修正(或输出 = 前向输出 + 反馈量)”。
为什么残差块用“加法”而不是“减法”?(正反馈 vs 负反馈)
控制理论中负反馈通常用减法(\text{误差} = \text{目标} - \text{输出}),而残差块用的是加法(\text{输出} = x + F(x))。
这其实是因为残差学习的定义是 F(x) = H(x) - x,所以变形为 H(x) = x + F(x)——这里的“加法”本质上是“把输入作为基准,学习相对于输入的偏差”。
如果把残差块的逻辑反过来,让 F(x) = x - H(x),那就会变成减法,但本质还是“学习误差(偏差)来修正输出”。
残差块选择加法,是为了让梯度更容易传播(避免深层网络的梯度消失),但从反馈的思想来说,核心是“用输入作为参考,通过学习偏差来逼近目标”,和负反馈“用误差修正输出”的逻辑是一致的。
总结:形式相似,思想同源
残差块的结构(输入直连+前向变换+加法叠加)和功能(学习残差来修正输出,让网络更容易训练深层结构),都和控制理论中负反馈系统(反馈信号叠加修正、误差驱动学习)的思想高度呼应:结构上的“输入直连+加法器”对应反馈系统的“反馈通路+求和点”;功能上的“残差学习(修正输入以逼近目标)”对应负反馈的“误差修正(调整输出以接近目标)”。
这种相似性也体现了不同学科思想的互通:无论是深度学习(让网络学习更高效的表示)还是控制理论(让系统更稳定/精确),都需要解决“如何让系统(或网络)逼近目标”的问题,因此演化出了相似的“反馈+修正”逻辑。