0%

ResNet

Deep Residual Learning for Image Recognition

研究动机

​ 如上图所示,单纯的堆叠卷积层有时候并不能取得更好的效果,比如上图中56层的卷积网络比20层的卷积网络在训练集和测试集上的error更多了。

​ 因为梯度消失和梯度爆炸的原因,阻碍了网络的收敛,该问题通过加入了中间层的正则化有所缓解,但是随着网络的深入,导至网络不按照预期进行收敛。并且该问题不是因为网络的过拟合产生的,仅仅堆叠网络层数并不能解决。

​ 作者提出了残差网络,来解决该问题。

网络模型

残差模块

​ 假设网络学习的拟合目标是H(x)\mathcal{H}(x)。我们改变非线性层转而去拟合一个新的函数:F(x):=H(x)x\mathcal{F}(x) :=\mathcal{H}(x)-x
​ 原始的映射H(x):=F(x)+x\mathcal{H}(x):=\mathcal{F}(x)+x。相比于原始的映射,这种新的映射更容易去学习。

因为残差的引入,导至随着网络的叠加,深层的网络不会出现梯度过小而产生的训练不动的问题。

模块实现

​ 如上图所示,残差模块实际上就是在input进入前,引一条边到output,进行相加,这个操作叫做Shortcut Connections

​ 实线的连接表示的是两个层之间的通道数相同,虚线连接表示的是两层之间通道数不同。该通道数可以通过1×11\times 1的卷积核来处理。

左图在论文中成为BasicBlock,右图称为Bottleneck,通过有图这种通道数的变换,可以有效的降低运算复杂度。

1×11 \times 1卷积核可以参考该文章 残差网络(Deep Residual Learning for Image Recognition)

代码

先摸了