在这里插入图片描述

🤵‍♂️ 个人主页: @AI_magician
📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。
👨‍💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!🐱‍🏍
🙋‍♂️声明:本人目前大学就读于大二,研究兴趣方向人工智能&硬件(虽然硬件还没开始玩,但一直很感兴趣!希望大佬带带)

在这里插入图片描述

该文章收录专栏
[✨— 《深入解析机器学习:从原理到应用的全面指南》 —✨]

残差连接 & 跳跃连接 (Skip connection)

跳跃连接指的是将输入数据直接添加到网络某一层输出之上。这种设计使得信息可以更自由地流动,并且保留了原始输入数据中的细节和语义信息。 使信息更容易传播到后面的层次,避免了信息丢失。跳跃连接通常会通过求和操作或拼接操作来实现。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZsRhf9bZ-1691997448878)(classical algorithm.assets/skip-connection.png)]

以图像分类任务为例,假设我们使用卷积神经网络进行特征提取,在每个卷积层后面都加入一个池化层来减小特征图尺寸。然而,池化操作可能导致信息损失。通过添加一个跳跃连接,将原始输入直接与最后一个池化层输出相加或拼接起来,可以保留原始图像中更多的细节和语义信息。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UCy6ExHq-1692606382233)(classical algorithm.assets/dense-block.png)]

如果感兴趣了解更多,建议越多文章:

非常经典的文章《All You Need to Know About Skip Connections》: https://www.analyticsvidhya.com/blog/2021/08/all-you-need-to-know-about-skip-connections/

残差网络(Residual Network),也被称为ResNet,是一种深度神经网络架构,旨在解决梯度消失和训练困难的问题。它的核心思想是通过引入残差块(residual blocks)来构建网络,并通过跳跃连接将输入直接添加到层输出上。

它的核心思想是通过引入残差块(residual blocks)来构建网络,并通过跳跃连接将输入直接添加到层输出上。(残差块就是包含了跳跃连接的block,扑捉偏差(残差))。具体而言,在每个块或子模块内部,输入被加到该块/子模块计算后得到的输出上,并且这两者尺寸必须相同。然后再将此结果送入下一个块/子模块进行处理。

下面是详细解释残差网络的步骤:

  1. 基本结构:每个残差块由两个主要部分组成——主路径和捷径。主路径包含了一系列卷积、批归一化和非线性激活函数等操作,用于学习特征表示。捷径是一个直接连接,将输入数据“跳过”了主路径中的所有操作。

  2. 捷径连接:在传统的卷积神经网络中,信息必须从前向后依次通过每个层进行传递并逐渐轻微地改变。而在残差网络中,捷径连接允许信息更快地流动,在不同层之间形成了短路路径。

  3. 残差学习:对于每个残差块,在主路径内部会发生特征图尺寸缩小或通道数变化等情况。这样可能导致信息丢失或降低模型性能。为了解决这个问题,残差网络采用了跳跃连接将输入直接添加到输出上,使得模型可以学习到相对于期望输出的微小调整。

  4. 深度扩展:残差网络允许非常深的层次堆叠,因为捷径连接提供了一个快速通道来传播梯度和信息。通过增加更多的残差块,网络可以逐渐变得更深,并且在一定程度上能够减少过拟合现象。

  5. 预训练与微调:由于残差网络具有良好的初始化特性在大规模数据集上进行预训练后往往能够获得较好的性能。然后可以使用迁移学习(transfer learning)技术,在其他任务或数据集上进行微调以达到更好的效果。

总结起来,残差网络通过引入捷径连接和利用残差学习机制来改善深层神经网络中的梯度消失、信息流动等问题。这些方法使得网络能够更轻松地训练,并且在图像分类、目标检测和语义分割等计算机视觉任务中取得了显著成果。

写到这,我突然想到那这种反向传播又如何训练呢?

其实ResNet的反向传播和训练过程与其他神经网络相似,只是引入了残差连接~~(多计算了一步~~,具体步骤还是如下

  1. 前向传播:将输入数据通过网络从前到后进行前向传播。每个残差块中包含了多个卷积层、批归一化层和激活函数等操作。捷径连接将输入直接添加到主路径输出上。

  2. 损失计算:在最后一个残差块或全局池化层之后,将得到的特征图作为输入并进行适当的降维操作(例如平均池化)。然后,利用分类器(如全连接层)对提取到的特征进行分类,并计算预测结果与真实标签之间的损失。(似乎都是这样,利用ResNet提取特征,迁移学习后进行分类)

  3. 反向传播:根据损失值,在整个网络中执行反向传播来计算梯度。这样可以确定每个参数对于使损失最小化所起到的作用大小,并且梯度会沿着网络方向回溯以更新权重。

  4. 权重更新:使用优化算法(如随机梯度下降SGD)根据计算出来的梯度来更新所有网络参数(包括主路径和跳跃连接中使用到节点的参数)。其实只是多计算更新了捷径这里多出来的参数并没有多算参数跳跃连接只是添加将数据添加到后面的神经元,总体参数并没有变化。

  5. 迭代训练:重复执行前向传播、损失计算、反向传播和权重更新等步骤,直到达到预设的迭代次数或满足停止条件为止。每个迭代周期称为一个epoch。

在这里插入图片描述

						  🤞到这里,如果还有什么疑问🤞
					🎩欢迎私信博主问题哦,博主会尽自己能力为你解答疑惑的!🎩
					 	 🥳如果对你有帮助,你的赞是对博主最大的支持!!🥳

更多推荐