【Network Architecture】Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learn...

【Network Architecture】Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning(转)

文章来源: https://www.cnblogs.com/shouhuxianjian/p/7786760.html

Feature Extractor[Inception v4]


0. 背景

随着何凯明等人提出的ResNet v1,google这边坐不住了,他们基于inception v3的基础上,引入了残差结构,提出了inception-resnet-v1和inception-resnet-v2,并修改inception模块提出了inception v4结构。基于inception v4的网络实验发现在不引入残差结构的基础上也能达到和inception-resnet-v2结构相似的结果,从而认为何凯明等人认为的:

“要想得到深度卷积网络必须使用残差结构”

这一观点是不完全正确的。
不过值得注意的是,google这边对于inception v2是属于哪篇论文有些不同观点:

  • 在《Rethinking the Inception Architecture for Computer Vision》中认为:基于inception v1进行结构的改进是inception v2;在inception v2上加上BN是inception v3;
  • 在《Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning》中将《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》认为是inception v2(即inception v1 上进行小改动再加上BN);《Rethinking the Inception Architecture for Computer Vision》认为是inception v3

google认为他们之前在改变架构选择上相对保守:网络结构的改变只局限于独立的网络组件范围内,从而保持剩下模型稳定。而如果不改变之前的这种原则,那么生成的模型将会比需要的还复杂(即过头了)。在这里,他们决定抛弃之前那个设计原则,对不同尺度的网格都采用统一的inception模块

在下面的网络结构图中:所有后面不带V的卷积,用的都是same-padded,也就是输出的网格大小等于输入网格的大小(如vgg的卷积一样);带V的使用的是valid-padded,表示输出的网格尺寸是会逐步减小的(如lenet5的卷积一样)。

在下面的结构图中,每一个inception模块中都有一个的没有激活层的卷积层,用来扩展通道数,从而补偿因为inception模块导致的维度约间。其中Inception-ResNet-V1的结果与Inception v3相当;Inception-ResNet-V1与Inception v4结果差不多,不过实际过程中Inception v4会明显慢于Inception-ResNet-v2,这也许是因为层数太多了。且在Inception-ResNet结构中,只在传统层的上面使用BN层,而不在合并层上使用BN,虽然处处使用BN是有好处,不过更希望能够将一个完整的组件放入单独的GPU中。因为具有大量激活单元的层会占用过多的显存,所以希望这些地方丢弃BN,从而总体增加Inception模块的数量。使得不需要去解决计算资源和模块什么的权衡问题。

1. inception v4

441382-20171105125349107-1485454201.png


图1.1 inception v4 网络结构图

441382-20171105125306732-1161981138.png441382-20171105130035185-1509772135.png


图1.2 图1.1的stem和Inception-A部分结构图

441382-20171105130154138-78816950.png441382-20171105130132060-37640786.png


图1.3 图1.1的Reduction-A和Inception-B部分结构图

441382-20171105130200326-420354111.png441382-20171105130139810-1160495089.png


图1.4 图1.1的Reduction-B和Inception-C部分结构图

2. Inception-resnet-v1 & Inception-resnet-v2

441382-20171105131831545-1345841102.jpg


图2.1 Inception-resnet-v1 & Inception-resnet-v2的结构图

2.1 Inception-resnet-v1的组成模块

441382-20171105132823170-1060168089.png441382-20171105132828873-108595857.png


图2.1.1 图2.1的stem和Inception-ResNet-A部分结构图

441382-20171105132835420-117438110.png441382-20171105132840420-727245524.png


图2.1.2 图2.1的Reduction-A和Inception-ResNet-B部分结构图

441382-20171105132842685-1296188651.png441382-20171105132845045-1654562410.png


图2.1.3 图2.1的Reduction-B和Inception-ResNet-C部分结构图

2.2 Inception-resnet-v2的组成模块

441382-20171105125306732-1161981138.png441382-20171105133237810-2131993535.png


图2.2.1 图2.1的stem和Inception-ResNet-A部分结构图

441382-20171105133255545-1779348943.png441382-20171105133259716-799592073.png


图2.2.2 图2.1的Reduction-A和Inception-ResNet-B部分结构图

441382-20171105133302248-1706965340.png441382-20171105133304263-553000587.png


图2.2.3 图2.1的Reduction-B和Inception-ResNet-C部分结构图

3. 模型训练

在上述的Inception V4,Inception-Resnet-V1,Inception-ResNet-v2这三个模型中都用到了Reduction-A,他们各自的具体参数如下:

441382-20171105143427623-357295824.png

图3.1 不同模型下Reduction-A的模型超参数

作者们在训练的过程中发现,如果通道数超过1000,那么Inception-resnet等网络都会开始变得不稳定,并且过早的就“死掉了”,即在迭代几万次之后,平均池化的前面一层就会生成很多的0值。作者们通过调低学习率,增加BN都没有任何改善。

不过他们发现如果在将残差汇入之前,对残差进行缩小,可以让模型稳定训练,值通常选择[0,1.0.3],如图3.2

441382-20171105144410295-1141280415.png

图3.2 对inception-resnet模块进行最后输出值的等比例缩小

同样的在ResNet-v1中,何凯明等人也在cifar-10中发现了模型的不稳定现象:即在特别深的网络基础上去训cifar-10,需要先以0.01的学习率去训练,然后在以0.1的学习率训练。

不过这里的作者们认为如果通道数特别多的话,即使以特别低的学习率(0.00001)训练也无法让模型收敛,如果之后再用大学习率,那么就会轻松的破坏掉之前的成果。然而简单的缩小残差的输出值有助于学习的稳定,即使进行了简单的缩小,那么对最终结果也造成不了多大的损失,反而有助于稳定训练。

  • 在inception-resnet-v1与inception v3的对比中,inception-resnet-v1虽然训练速度更快,不过最后结果有那么一丢丢的差于inception v3;
  • 而在inception-resnet-v2与inception v4的对比中,inception-resnet-v2的训练速度更块,而且结果比inception v4也更好一点。所以最后胜出的就是inception-resnet-v2。

441382-20171105145747576-1222219381.png


图3.3 不同模型的结果对比

分类: Deep Learning
0
0
« 上一篇: Feature Extractor[ResNet]
» 下一篇: Recurrent Neural Network[Content]
posted @ 2017-11-05 15:00 仙守 阅读( 6440) 评论( 0) 编辑 收藏
posted @ 2018-11-24 22:59 向前奔跑的少年 阅读( ...) 评论( ...) 编辑 收藏
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值