【ShuQiHere】从残差思想到 ResNet:深度学习的突破性创新

2024-09-07 12:44

本文主要是介绍【ShuQiHere】从残差思想到 ResNet:深度学习的突破性创新,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【ShuQiHere】引言

在深度学习的迅速发展中,卷积神经网络(CNN)凭借其在计算机视觉领域的出色表现,已经成为一种主流的神经网络架构。然而,随着网络层数的增加,研究人员逐渐发现了一个关键问题:梯度消失 😖 和 梯度爆炸 💥,这使得训练非常深的网络变得极其困难。为了解决这一问题,残差思想 💡 被提出,并在 2015 年由 Kaiming He 等人正式引入 ResNet 中。这一创新不仅有效解决了深层网络的训练问题,还为神经网络的进一步发展铺平了道路。

为了帮助大家更好地理解这些概念,我们将以手写数字识别为例,带大家直观地看到 ResNet 的构建过程,并深入理解其背后的核心思想。

深层网络的挑战

1.1 递增的深度,递减的效果

在深度学习的早期阶段,研究人员发现,通过增加神经网络的层数,模型能够提取更加抽象和复杂的特征,理论上应该可以显著提升模型的表现。然而,随着网络层数的增加,实际训练时却遇到了显著的困难,特别是梯度消失和梯度爆炸问题😱。这些问题使得深层网络中的梯度难以有效地从输出层传递到输入层,导致网络难以训练,性能也随之下降。

梯度消失的数学解释

为了更清晰地理解梯度消失问题,我们可以从数学的角度进行分析。假设一个具有 L 层的深度网络,每一层的输入为 ( x_l ),输出为 ( h_l ),层间的关系为:

h l = σ ( W l ⋅ h l − 1 + b l ) h_l = \sigma(W_l \cdot h_{l-1} + b_l) hl=σ(Wlhl1+bl)

其中,( W_l ) 是第 l 层的权重矩阵,( b_l ) 是偏置向量,( \sigma ) 是激活函数。对于反向传播过程,损失函数 ( L ) 对第 l 层参数的梯度为:

∂ L ∂ W l = ∂ L ∂ h L ⋅ ∂ h L ∂ h L − 1 ⋅ ⋯ ⋅ ∂ h l + 1 ∂ h l ⋅ ∂ h l ∂ W l \frac{\partial L}{\partial W_l} = \frac{\partial L}{\partial h_L} \cdot \frac{\partial h_L}{\partial h_{L-1}} \cdot \dots \cdot \frac{\partial h_{l+1}}{\partial h_l} \cdot \frac{\partial h_l}{\partial W_l} WlL=hLLhL1hLhlhl+1Wlhl

由于每一层的梯度是链式法则(chain rule)的结果,它依赖于每层激活函数的导数。如果使用的激活函数如 Sigmoid 或 Tanh,它们的导数在大部分输入值区域会非常小(接近 0),因此当网络层数 L 增加时,梯度的乘积会导致非常小的梯度值,从而造成梯度消失🌀。这使得网络无法有效更新靠近输入层的参数。

以手写数字识别为例,假设我们设计了一个 50 层的传统卷积神经网络来识别 0 到 9 之间的数字📉。当我们对网络进行反向传播时,由于梯度消失问题,靠近输入层的梯度几乎为 0,导致这些层的权重几乎不会更新,模型的学习效果大大受限,性能表现也因此停滞甚至下降。

1.2 残差思想的提出

为了解决深层网络难以训练的问题,残差思想应运而生⚙️。其核心在于将复杂的映射函数 ( H(x) ) 分解为一个简单的映射 ( F(x) ) 和输入 ( x ) 之间的和:

H ( x ) = F ( x ) + x H(x) = F(x) + x H(x)=F(x)+x

在传统网络中,模型直接学习输入 ( x ) 与输出 ( y ) 之间的映射函数 ( H(x) )。然而,残差思想的创新在于假设 ( H(x) ) 可以被分解为一个更易学习的残差函数 ( F(x) = H(x) - x ),从而将学习目标转化为学习残差部分 ( F(x) )🤓。这种分解方式有两个显著的好处:

  1. 简化了学习目标🧠:网络仅需学习输入和输出之间的微小差异,而不是完整的映射关系。这使得即使网络层数很深,也能有效地更新权重参数。
  2. 缓解梯度消失问题🔄:由于残差连接中的梯度可以直接反向传播到前面的层,梯度衰减的风险大大降低,保证了深层网络的有效训练。

对于手写数字识别任务,这意味着网络不再需要直接学习如何将每一个像素映射到一个具体的数字,而是通过学习像素之间的偏差来优化预测结果。这样,模型在训练时更加稳定,也更容易达到更好的表现📈。

ResNet 的结构与创新

2.1 残差块的设计

ResNet 的基本单元是 **残差块(Residual Block)**🔧。它的核心在于引入了快捷连接(skip connection),使得输入能够直接跳过中间的卷积层并与输出相加。具体结构如下:

   输入 x↓卷积层1 -> BN -> ReLU↓卷积层2 -> BN↓残差连接↓ReLU -> 输出 y = F(x) + x

在手写数字识别任务中,假设我们使用了一个残差块来处理输入图像的特征👁️。输入 ( x ) 可能是图像经过初步卷积后的一组特征图。残差块通过两层卷积进一步提取这些特征,然后将它们与原始输入 ( x ) 相加,生成新的输出 ( y )。这种设计的优点在于,即使卷积层无法有效学习到特征,输入 ( x ) 仍然可以通过残差连接直接传递到输出,确保了梯度的顺利传播🎯。

2.2 残差块的数学解释

在残差块中,网络的输出可以表示为:

y = F ( x , { W i } ) + x y = F(x, \{W_i\}) + x y=F(x,{Wi})+x

其中:

  • ( F(x, {W_i}) ) 表示通过卷积操作提取到的特征,由参数 ( {W_i} ) 控制。
  • ( x ) 是输入。

为了进一步解析其工作原理,我们来看一下反向传播过程中梯度的计算🔢。在传统网络中,梯度在层间的传播可以用链式法则来表示,但在残差块中,由于引入了直接的残差连接,梯度的计算会有所不同。

对于残差块中的输出 ( y ):

∂ L ∂ x = ∂ L ∂ y ⋅ ( ∂ y ∂ F ( x ) ⋅ ∂ F ( x ) ∂ x + ∂ y ∂ x ) \frac{\partial L}{\partial x} = \frac{\partial L}{\partial y} \cdot \left(\frac{\partial y}{\partial F(x)} \cdot \frac{\partial F(x)}{\partial x} + \frac{\partial y}{\partial x}\right) xL=yL(F(x)yxF(x)+xy)

因为 ( y = F(x) + x ),所以 ( \frac{\partial y}{\partial x} = 1 )。因此梯度表达式可以简化为:

∂ L ∂ x = ∂ L ∂ y ⋅ ( ∂ F ( x ) ∂ x + 1 ) \frac{\partial L}{\partial x} = \frac{\partial L}{\partial y} \cdot \left(\frac{\partial F(x)}{\partial x} + 1\right) xL=yL(xF(x)+1)

这种形式表明,即使 ( \frac{\partial F(x)}{\partial x} ) 接近于 0,梯度依然可以通过 ( 1 ) 直接传递到前面的层,从而有效缓解了梯度消失问题👌。

对于手写数字识别任务,输出 ( y ) 代表网络对输入图像特征的进一步处理结果🖼️。通过残差连接的设计,网络能够更容易捕捉到输入图像的细微特征,这种结构让训练更加稳定。

2.3 ResNet 的成功

在手写数字识别任务中,传统的深层卷积神经网络在层数增加到一定程度后,模型性能往往会出现下降。然而,ResNet 通过引入残差块,成功训练了超过 100 层的深度网络💯,并且在 ImageNet 等大型图像识别任务中表现优异🏅。ResNet 的成功不仅展示了残差思想的有效性,也证明了深层网络的潜力。ResNet-152,作为当时最深的网络,在图像分类任务中取得了显著成绩,并且极大地影响了后续深度学习模型的设计🎓。

残差思想的广泛应用

3.1

循环神经网络中的应用

残差

思想并不仅限于卷积神经网络📚。在 循环神经网络(RNN) 及其变体 LSTM 和 GRU 中,残差连接也被引入,以缓解梯度消失问题。

以手写数字识别的序列任务为例,如果我们希望网络能够识别一系列手写数字,那么引入残差连接的 RNN 结构可以帮助网络更好地在时间维度上传递信息,确保每一层的梯度顺利传递到更深的层次,从而提升模型的识别能力🚀。

3.2 生成对抗网络中的应用

生成对抗网络(GANs) 也从残差思想中获益匪浅🧠。GANs 的生成器和判别器通常需要非常深的网络结构来生成高质量的图像或其他数据。在这些深层网络中,梯度消失问题同样存在。通过引入残差块,GANs 的训练过程变得更加稳定,生成图像的质量也得到了提升📸。

例如,基于残差块的生成器可以逐步改进生成图像的细节,使得生成的手写数字更加逼真🖊️。

3.3 Transformer 模型中的应用

在自然语言处理领域,Transformer 模型依赖残差连接来构建其多层结构📜。每个自注意力层和前馈网络都通过残差连接确保梯度能够顺利传播,从而支持 Transformer 的高效训练。

虽然 Transformer 主要用于文本处理,但残差思想帮助模型在复杂任务中捕捉到更丰富的特征,确保每一层的信息能够有效传递🌐。

未来展望

残差思想的引入为深度学习的进一步发展奠定了基础🔮。未来,随着深度学习的不断演进,残差结构将继续在多个领域发挥作用,推动人工智能技术的发展。具体来说,残差思想可能会在以下几个方面继续产生深远影响:

  • 自动化神经网络结构搜索(NAS):残差思想作为基础设计元素,将在通过自动化方式优化网络结构时,继续发挥重要作用🤖。
  • 多任务学习:在多任务学习中,残差连接可以帮助模型在不同任务之间共享特征,提升整体性能🔗。
  • 边缘计算:随着边缘设备计算能力的增强,如何在资源受限的环境下训练深层网络成为关键,残差网络在这种场景下也有广泛的应用前景🌍。

结语

从残差思想到 ResNet,深度学习领域经历了一场革命性变革✨。通过引入残差连接,ResNet 成功克服了深层网络中的梯度消失问题,使得训练超深层网络成为可能。本文通过手写数字识别的例子,详细阐述了残差网络的构建过程及其在不同领域的应用🎨。随着深度学习的不断发展,残差结构的创新仍将持续推动该领域向前迈进🚀。

这篇关于【ShuQiHere】从残差思想到 ResNet:深度学习的突破性创新的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1145096

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

hdu1496(用hash思想统计数目)

作为一个刚学hash的孩子,感觉这道题目很不错,灵活的运用的数组的下标。 解题步骤:如果用常规方法解,那么时间复杂度为O(n^4),肯定会超时,然后参考了网上的解题方法,将等式分成两个部分,a*x1^2+b*x2^2和c*x3^2+d*x4^2, 各自作为数组的下标,如果两部分相加为0,则满足等式; 代码如下: #include<iostream>#include<algorithm

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个