是过拟合吗?是梯度消失吗?都不是,或者说不完全是。过拟合的最明显表征是方差大,即训练集上效果好,测试集上效果差,但是深层模型在训练和测试上效果都差。而梯度消失的问题在BN层(本质上控制了每一层的模值输入,将上一层的输出从饱和区拉到了非饱和区,使得每一层的梯度都维持在较合理的范围内)引入之后也解决了大半。
ResNet解决的最关键问题是:使得网络拥有了一定的恒等映射能力,加强了网络各层之间梯度的相关性。此外也可以从以下两个方面理解其改进点:
理论上来说,较浅的模型既然都可以达到不错的效果,那么更深的模型即使什么都不做,效果也不会更差吧?
但是,问题就在于,模型不可能什么都不做?因为模型中非线性激活函数的原因,每一层的输出必定和上一层的输出不同。在MobileNet-v2中也有提到,因为ReLU非线性激活函数的存在,使得输入到输出的过程几乎是不可逆的,也就是存在信息损失。
可以认为Residual Learning的初衷,其实是让模型的内部结构.少有恒等映射的能.。以保证在堆叠网络的过程中,.网络至少不会因为继续堆叠产生退化!
此时网络寻找的不再是输入到输出的映射,而是输入到“输出-输入”的映射
问题:跳级连接如何解决网络某些层在维度上的不一致?
维度不一致体现在两个方面:
策略:分割-变换-融合
亮点:提出了基数C的概念,将模型从卷积层的叠加变成了自网络的叠加。而C概念的提出,也是模型从卷积核的宽度和网络的深度这两个方向之外,找到了一个新的方向对模型进行改进,这也是其被称作NeXt的“原因”吧。
核心公式:
下面这张图高度概括性的说明了ResNet-v3网络的结构:
再贴几张图说明ResNeXt网络的演化过程:
v1版本的ResNeXt:
v2版本的ResNeXt:
v2.5版本的ResNeXt:
可以发现其基本的分割-变换-融合策略没有变化,只是在变换和融合的具体操作上有不同。
参考资料: