3. 经典卷积网络之GooleInceptionNet

这篇文章参考《Tensorflow实战-黄文坚》,加上自己的一点理解。

网络结构简介

GooleInceptionNet首次出现是在2014年的ILSVRC的比赛中,当时是第一名,最大的特点就是控制计算量的同时获得了比较好的分类性能--top-5错误率为6.67%。这个模型被称作为Inception V1,参数总量只有AlexNet的一半不到,有22层深,只有500万参数量,降低参数量的显然是非常有用的,模型越大的话肯定就需要比较大的数据量支持,同时耗费的计算资源也就越大。

Inception V1参数少效果好出了模型层数更深意外,还有两点原因:一个是去除了全连接层(全连接层的产数量是很大的比如4096-1024的全连接层就需要4096乘1024个参数(上百万)),采用全局平均池化层(将图片尺寸变为1*1)来取代它。二是其精心设计了Inception Module来提高参数的利用效率,这也是其为什么叫做Inception的原因。其典型模型如下:

Inception model

这个模型可以理解为是大模型中的一个小模型,其结构可以反复叠加,允许通道之间组合信息(1_1卷积,其中1_1卷积的效率是非常高的,参数可以下降很多,而且可以组合通道之间的信息,实质上是做了一个特征变换和非线性化)。这个Module中采用了不同卷积大小,和multi_scale思想类似。Inception V1中指出,这种结构可以有效增加网络的深度和宽度,提升准确率且不至于过拟合。

人的神经元的连接是比较稀疏的,所以研究者认为大型神经网络的合理连接方式也应该是稀疏的。尤其是对于非常大型,非常深的神经网络来说更是如此,Inception Net的主要目标就是找到最优的稀疏结构单元(Inception Module)。论文中提到其稀疏结构源自于Hebbian原理:通俗的来讲就是一起发射的神经元会连在一起。受此启发,一个好的稀疏结构应该是符合Hebbian原理的,我们应该把相关性高的一簇神经元链接在一起,普通的数据集中,可能需要对神经元节点进行聚类,然而在图像中,天然的就是临近区域的数据相关性要高,所以卷积就是这么个聚类的过程,1_1的卷积就可以很自然的吧不同维度但是同一位置的特征连接在一起。稍大一点的卷积无非是一个区域的不同维度的特征连接。所以在这个模型中使用了这几种方式,目的就是训练出这么一个符合Hebbian原理的稀疏结构。

Inception Module中,通常1_1卷积的比例(输出通道数)最高,而3,5尺寸的卷积核稍低,而在整个网络中,有多个叠加的Inception Module,我们希望后面的Model可以捕捉到更高阶的抽象特征,所以在越靠后的Inception Module中,大卷积核的占比应该更多。

Inception Net一共有22层深,出了最后一层,中间节点的分类效果也比较好,所以其中还采用了辅助分类节点,即把这一部分的分类结果和最终的输出加权来输出,同时给网络增加了反向传播的梯度信号,也提供了额外的正则化,对于整个Inception Net的训练也有好处。

Inception Net是一个大家族,包括从2014-2016的四篇文章,Inception V2借鉴了VGGnet,用两个3-3的卷积来代替5-5的卷积,还提出了BN方法(Batch-Normalization),BN是一种非常有用的正则化方法,可以让大型卷积网络的训练速度加速,同时收敛后的分类准确率也可提高,BN层用于神经网络的某层时,会对每一个MINI-batch数据内部进行标准化,使输出规范化到N(0,1)的正太分布,减少了内部神经元分布的改变,BN的论文指出,传统的深度神经网络在训练的时候,每一层的分布都在变化,会使得训练变得困难,只能使用比较小的学习率来解决这个问题,而对每一层使用BN之后,就可以有效解决这个问题,BN层在某种意义上起到了正则化的作用,所以在使用BN层的基础上可以减少或取消Dropout,简化网络结构。

Inception V3则主要进行了两方面的改造:

  1. 将卷积拆分成两个一维卷积。 比如7-7的拆分为7-1,1-7的两个卷积,这个其实节约了大量参数,比如7-7的的需要49的参数,而拆分之后只需要7+7=14个参数,这样可以一定程度上减少过拟合(参数量减少模型复杂度降低)。同时还增加了一层非线性扩展模型表达能力。
  2. 优化了Inception Module。 有35-35,17-17,8-8三种不同的结构(输入尺寸),这些结构只在网络的后部出现,前部分还是普通的卷积层,而且其还在分支中使用了分支。如下图。

分支中使用分支

Inception V3相比V3主要是结合了微软的RESnet。等写到RESnet的时候再说,这里要实现的是V3。

Inception V3的tensorflow实现。

首先来看模型结构:

一开始是准备在这里写的,后来发现实在是太长了,整整敲了一下午,不过总算有点理解slim这个模块了。最后放在git上吧。地址

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏磐创AI技术团队的专栏

多核学习方法介绍

【磐创AI导读】:本文为SVM多核学习方法简介的续篇。想要学习更多的机器学习知识,欢迎大家点击上方蓝字关注我们的公众号:磐创AI。SVM多核学习方法简介

13210
来自专栏张俊红

机器学习中非平衡数据处理

总第97篇 这一篇主要说一下机器学习中非平衡数据的处理方式以及用python如何实现. 在前面的一篇推文中我们提到过,非平衡数据会影响最后的评判效果,严重的会...

44150
来自专栏机器之心

盘点 | 对比图像分类五大方法:KNN、SVM、BPNN、CNN和迁移学习

选自Medium 机器之心编译 参与:蒋思源、黄小天、吴攀 图像分类是人工智能领域的基本研究主题之一,研究者也已经开发了大量用于图像分类的算法。近日,Shiyu...

1.2K80
来自专栏MelonTeam专栏

深度学习简易入门

深度学习是机器学习中的一个重要的方向,深度学习其实就是神经网络学习,这里“深度”就是说神经网络中众多的层。

23570
来自专栏CVer

论文精读 | 目标检测之R-CNN

R-CNN作为R-CNN系列的开山鼻祖,其首次将CNN用于目标检测,在PASAL VOC 2010测试集上实现了53.7% mAP,也从此开启了R-CNN系列"...

11310
来自专栏人工智能

机器学习敲门砖:任何人都能看懂的TensorFlow介绍

选自 kdnuggets 作者:Soon Hin Khor 机器之心编译 参与:Rick、吴攀、李亚洲 本文是日本东京 TensorFlow 聚会联合组...

40960
来自专栏量子位

给你一个卷积神经网络工作原理最直观的解释

作者:Owl of Minerva 量子位 已获授权编辑发布 转载请联系原作者 卷积神经网络(Convolutional Neural Network, CNN...

29160
来自专栏IT派

理解SVM的三层境界(二)

第二层、深入SVM 2.1、从线性可分到线性不可分 2.1.1、从原始问题到对偶问题的求解 接着考虑之前得到的目标函数: ? 由于求 的最大值相当于求 ...

38530
来自专栏人工智能头条

如何使用TensorFlow实现卷积神经网络

11810
来自专栏AI深度学习求索

传统特征:HOG特征原理

为了减少光照因素的影响,首先需要将整个图像进行规范化(归一化),有效地降低图像局部的阴影和光照变化。

22330

扫码关注云+社区

领取腾讯云代金券