【动手学深度学习】从resnet中学到的深度学习

本文介绍了深度学习模型如何通过增加层来逼近理想函数,以及为何深度模型能更好地拟合数据。重点讨论了ResNet模型中的残差块概念,解释了其如何通过恒等映射实现嵌套函数,从而解决梯度消失问题,促进训练过程中的优化。此外,还阐述了ResNet结构中的1x1卷积层在保持形状一致性和调整通道数方面的重要性。
摘要由CSDN通过智能技术生成

1.学习模型的理解

对于一类神经网络模型(更多指完备的模型,而非cnn、rnn等类型,如resnet、vgg等),他可以拟合一定范围之内的函数,所有函数构成集合F。其中任意f是我们通过训练得到的,f*是我们所期望得到的函数,但是f*可能在模型函数集合F之中,也可能在F之外。

训练是求解以下优化问题:

X、Y为训练集中的输入输出,argmin表示返回Loss()函数最小的参数值

2.如何保证模型加深能够使结果更优?

怎样得到更近似真正f∗的函数呢?唯⼀合理的可能性是,我们需要设计⼀个更强⼤的架构F′,我们要保证更大的构架完全包含之前的构架,即嵌套函数类,复杂的函数类F_复杂完全包含较小的函数类F_简单,才能确保复杂的模型能够提高简单模型的性能,所以深度学习不一定是越深越好。

加深层数并希望实现恒等映射的目标:

对于深度神经⽹络,我们将其加深一层,如果我们能将新添加的层训练成恒等映射(identity function) f(x) = x,新模型和原模型将同样有效,即新模型完全包含旧模型。同时,由于新模型更深,可能得出更优的解来拟合训练数据集,因此添加层似乎更容易降低训练误差,因此在恒等映射基础上更有助于接近理想映射f*(x)

3.那么resnet是如何实现嵌套函数类的呢?

残差块!

resnet的核心思想在于每个附加层都应该更容易地将之前的层包含其中,也就是每个附加函数都将原始函数作为参数之一。

假设我们的原始输⼊为x,⽽希望学出的理想映射为f*(x)(作为图7.6.2上⽅激活函数的输⼊)。 图7.6.2左图虚线框中的部分需要直接拟合出该映射f(x),⽽右图虚线框中的部分则需要拟合出残差映射f(x) - x

在残差块中残差映射很容易实现恒等映射,只需要将所有所有权重与偏差设置为零。而在正常块中,权重偏差没有固定值实现恒等映射,因此正常块1)不能保证完全包含上一层的范围,2)更难以训练,3)会出现梯度消失现象

实际中,当理想映射f*(x)极接近于恒等映射时,残差映射也易于捕捉前一层的细微波动。即反向传播时,可以避免梯度消失,灵敏捕捉到优化反向。所以残差块具备优点:

1)能够在训练后期更精确地进行优化,得到更精确的结果。

2)输入可以通过跨层数据线路前向传播更多层。

4.resnet中的残差块

ResNet沿⽤了VGG完整的3 × 3卷积层设计。
通过跨层数据通路,跳过这2个卷积运算,将输⼊直接加在最后的ReLU激活函数前。分为两种类型:

  1. 这样的设计要求2个卷积层的输出与输⼊形状⼀样具有相同的输入和输出通道数、宽度、高度,从⽽使它们可以相加。如左图
  2. 如果想改变通道数,就需要引⼊⼀个额外的1 × 1卷积层来将输⼊变换成需要的形状后再做相加运算。如右图
  3. 如果想要改变宽度、高度,可以调整残差块中卷积层的步长stride及填充padding,此时也需要1*1的卷积层,否则无法正常相加,如右图

ResNet18的结构,共有18层构成,其中包含4个残差块。

 小结

  • 学习嵌套函数(nested function)是训练神经网络的理想情况。在深层神经网络中,学习另一层作为恒等映射(identity function)较容易(尽管这是一个极端情况)。

  • 残差映射可以更容易地学习同一函数,例如将权重层中的参数近似为零。

  • 利用残差块(residual blocks)可以训练出一个有效的深层神经网络:输入可以通过层间的残余连接更快地向前传播。

  • 残差网络(ResNet)对随后的深层神经网络设计产生了深远影响。


 


 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值