Inception-ResNet v2 学习笔记

1.背景知识

Inception系列网络

在卷积操作中,输出特征图上某一个位置,其是与所有的输入特征图是相连的,这是一种密集连接结构。GoogLeNet基于这样的理念:在深度网路中大部分的激活值是不必要的(为0),或者由于相关性是冗余。因此,最高效的深度网路架构应该是激活值之间是稀疏连接的,GoogLeNet设计了一种称为inception的模块,这个模块使用密集结构来近似一个稀疏的CNN。同时,GoogLeNet使用了不同大小的卷积核来抓取不同大小的感受野
Inception模块使用了一种瓶颈层(实际上就是1x1卷积)来降低输入的通道数,从而降低计算量
GoogLeNet的另外一个特殊设计是最后的卷积层后使用全局均值池化层替换了全连接层,所谓全局池化就是在整个2D特征图上取均值。这大大减少了模型的总参数量。
Inception-ResNet v2 学习笔记_第1张图片

ResNet

随着网络深度增加,网络的准确度应该同步增加,当然要注意过拟合问题。但是网络深度增加的一个问题在于这些增加的层是参数更新的信号,因为梯度是从后向前传播的,增加网络深度后,比较靠前的层梯度会很小。这意味着这些层基本上学习停滞了,这就是梯度消失问题。深度网络的第二个问题在于网络退化,当网络更深时意味着参数空间更大,优化问题变得更难,因此简单地去增加网络深度反而出现更高的训练误差。残差网络ResNet设计一种残差模块让我们可以训练更深的网络。
Inception-ResNet v2 学习笔记_第2张图片
增加一个identity mapping(恒等映射),将原始所需要学的函数H(x)转换成F(x)+x,而作者认为这两种表达的效果相同,但是优化的难度却并不相同,作者假设F(x)的优化 会比H(x)简单的多。这一想法也是源于图像处理中的残差向量编码,通过一个reformulation,将一个问题分解成多个尺度直接的残差问题,能够很好的起到优化训练的效果。

这个Residual block通过shortcut connection实现,通过shortcut将这个block的输入和输出进行一个element-wise的加叠,这个简单的加法并不会给网络增加额外的参数和计算量,同时却可以大大增加模型的训练速度、提高训练效果,并且当模型的层数加深时,这个简单的结构能够很好的解决退化问题。

链接:https://www.jianshu.com/p/3d886e8a0eb9

2.Inception-ResNet-v2

ResNet的结构既可以加速训练,还可以提升性能(防止梯度弥散);Inception模块可以在同一层上获得稀疏(3x3,5x5)或非稀疏(1x1)的特征。
Christian Szegedy等人将两个模块的优势进行了结合,设计出了Inception-ResNet网络。
inception-resnet v2中的Inception-resnet模块如下图,分别为inception-resnet-A inception-resnet-B inception-resnet-C
Inception-ResNet v2 学习笔记_第3张图片
Inception-resnet模块之间特征图尺寸的减小如下图,分别为reduction A reduction B
Inception-ResNet v2 学习笔记_第4张图片
最终得到的Inception-ResNet-v2网络结构如图
Inception-ResNet v2 学习笔记_第5张图片
经过这两种网络的改进,使得模型对图像识别的错误率进一步得到了降低。

https://zhuanlan.zhihu.com/p/30756181

你可能感兴趣的:(Inception-ResNet v2 学习笔记)