Inception-v4, Inception-ResNet论文综述

Inception-v4, Inception-ResNet论文综述

  1. 为什么要做这个研究(理论走向和目前缺陷) ?
    就是想结合resnet和inception的好处,resnet训练的很快,inception检测结果很准。
  2. 他们怎么做这个研究 (方法,尤其是与之前不同之处) ?
    做很多实验,设计了inception-resnet-v1/v2和inception-v4网络模型。训练时遇到了一些问题,比如残差连接时训练不稳定,在何凯明的resnet论文中是用对学习率warmup解决的,本文是对残差(resduals)进行缩小(0.1~0.3倍)来解决的,并认为这种解决方式比何凯明的解决方式更好。
  3. 发现了什么(总结结果,补充和理论的关系)?
    确实是结合了resnet能加快训练,但是不一定很深的网络就一定需要残差连接,比如inception-v4的设计就是为了证明很深的网络也可以不用残差,但是收敛的会很慢。

摘要
何恺明残差连接没用inception结构取得了相当好的结果,引发作者思考,能不能把resnet和inception合起来用?
可以。
加入resnet的收敛速度相当快,而且分类效果更好一点。

1介绍
两个想法:
1) 在inception中加入resnet连接,能同时收获二者好处(即训练快,计算效率高)
2) 能不能改进Inception使它更宽更深,从而更高效->inception V4。

2 相关工作
作者认为残差不一定是训练更深的网络的必要因素,但是有残差确实会训练得更快。

3 架构选择
3.1纯Inception块
之前设计结构时很保守,总想改一小块其他部分不变,导致该来改去模型看起来很复杂。另外,以前tensorflow多gpu训练,很麻烦,升级之后就省下了很多顾虑。总之就是可以放弃以前保守的做法,大操刀了。

3.2残差Inception块
inception-ResNet-v1跟inception-v3计算成本差不多。
inception-ResNt-v2更inception-v4计算成本差不到。
inception-v4每次迭代的时间很长,可能是因为层太多了。
为了使计算效率高,做了一些让步,比如,按理说可以再所有卷积层之后都可以使用BN,但是由于BN会占用很多显存,为了保证每个模型都能在单个gpu训练,仅仅在Inception-ResNet的每个分支的最后使用BN(不是相加之后的层)。
Inception-v4, Inception-ResNet论文综述_第1张图片
Inception-v4, Inception-ResNet论文综述_第2张图片

… (一堆图表示inception-resnet-v1/v2 、Inception V4的结构)

3.3 残差缩放
当把卷积核的数目调整到超过1000shi ,残差变种就呈现出不稳定,在训练早期就挂掉了,也就是说最后一层输出就只剩0了,无论通过在这一层之后BN或者调整学习率都无法避免这种情况。
实验发现,通过将残差加入到前一层激活之前进行缩小可以稳定训练过程,缩小的西索取到0.1和0.3之间,如下图所示。
在何凯明的残差网络中也出现过类似的情况,他当时是通过对学习率进行warm-up解决的,作者发现如果卷积核的数目相当大,即使初始学习率设为0.00001,也没办法稳定训练过程,还是这种对残差进行缩小的方式更加值得信赖。
Inception-v4, Inception-ResNet论文综述_第3张图片
4 训练方法
一些超参数设置

5实验结果
Inception-v4, Inception-ResNet论文综述_第4张图片

Inception-v4, Inception-ResNet论文综述_第5张图片
Inception-v4, Inception-ResNet论文综述_第6张图片

6 结论
提出了三种inception的变种
Inception-ResNet-v1:和Inception v3计算成本差不多,准确率差不多,但是收敛得更快。
Inception-ResNet-v2: 和Inception v4计算成本差不多,准确率差不多,但是收敛更快。
Inception v4和Inception-ResNet-v2比Inception-ResNet-v1和Inception v3计算成本要大,但是准确率也更高。
Inception v4的存在主要是为了证明不一定更深的网络要训练好就一定需要残差连接,不用残差连接也能训练得很准确,但是会收敛的很慢。

你可能感兴趣的:(Inception-v4, Inception-ResNet论文综述)