ResNet和ResNext--网络架构、设计思路、主要差异

1.ResNet网络

1.1 ResNet解决的关键问题是什么?

是过拟合吗?是梯度消失吗?都不是,或者说不完全是。过拟合的最明显表征是方差大,即训练集上效果好,测试集上效果差,但是深层模型在训练和测试上效果都差。而梯度消失的问题在BN层(本质上控制了每一层的模值输入,将上一层的输出从饱和区拉到了非饱和区,使得每一层的梯度都维持在较合理的范围内)引入之后也解决了大半。
ResNet解决的最关键问题是:使得网络拥有了一定的恒等映射能力,加强了网络各层之间梯度的相关性。此外也可以从以下两个方面理解其改进点:

  • 1.那就是跳连接相加可以实现不同分辨率特征的组合,因
    为浅层容易有⾼分辨率但是低级语义的特征,⽽深层的特征有⾼级语义,但分辨率就很低了
  • 2.引⼊跳接实际上让模型⾃⾝有了更加“灵活”的结构,即在训练过程本⾝,模型可以选择在每⼀个部分是“更多进⾏卷积与⾮线性变换”还是“更多倾向于什么都不做”,抑或是将两者结合,模型在训练
    便可以⾃适应本⾝的结构,选择优势的一路进行优化。

1.2 为什么模型退化不符合常理?

理论上来说,较浅的模型既然都可以达到不错的效果,那么更深的模型即使什么都不做,效果也不会更差吧?
但是,问题就在于,模型不可能什么都不做?因为模型中非线性激活函数的原因,每一层的输出必定和上一层的输出不同。在MobileNet-v2中也有提到,因为ReLU非线性激活函数的存在,使得输入到输出的过程几乎是不可逆的,也就是存在信息损失
可以认为Residual Learning的初衷,其实是让模型的内部结构.少有恒等映射的能.。以保证在堆叠网络的过程中,.网络至少不会因为继续堆叠产生退化!

1.3 网络结构–跳级连接

在这里插入图片描述
此时网络寻找的不再是输入到输出的映射,而是输入到“输出-输入”的映射
问题:跳级连接如何解决网络某些层在维度上的不一致?
维度不一致体现在两个方面:

  • 一是特征图的空间尺度上不一致
  • 而是特征图的宽度(深度)上不一致
    空间尺度不一致通过线性映射解决,也就是downsample。
    宽度不一致可以通过1*1卷积进行升维,或者直接暴力补零。

2.ResNext网络

在这里插入图片描述
策略:分割-变换-融合
亮点:提出了基数C的概念,将模型从卷积层的叠加变成了自网络的叠加。而C概念的提出,也是模型从卷积核的宽度和网络的深度这两个方向之外,找到了一个新的方向对模型进行改进,这也是其被称作NeXt的“原因”吧。
核心公式
在这里插入图片描述
下面这张图高度概括性的说明了ResNet-v3网络的结构:
在这里插入图片描述
再贴几张图说明ResNeXt网络的演化过程:
v1版本的ResNeXt:
在这里插入图片描述
v2版本的ResNeXt:
在这里插入图片描述
v2.5版本的ResNeXt:
在这里插入图片描述
可以发现其基本的分割-变换-融合策略没有变化,只是在变换和融合的具体操作上有不同。

参考资料:

  1. zhuanlan.zhihu.com/p/77794592
  2. zhuanlan.zhihu.com/p/78019001