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:
可以发现其基本的分割-变换-融合策略没有变化,只是在变换和融合的具体操作上有不同。
参考资料:
- zhuanlan.zhihu.com/p/77794592
- zhuanlan.zhihu.com/p/78019001