设为首页 加入收藏

TOP

学习笔记TF032:实现Google Inception Net(一)
2017-09-30 17:48:03 】 浏览:3986
Tags:学习 笔记 TF032: 实现 Google Inception Net

Google Inception Net,ILSVRC 2014比赛第一名。控制计算量、参数量,分类性能非常好。V1,top-5错误率6.67%,22层,15亿次浮点运算,500万参数(AlexNet 6000万)。V1降低参数量目的,参数越多模型越庞大,需数据量越大,高质量数据昂贵;参数越多,耗费计算资源越大。模型层数更深,表达能力更强,去除最后全连接层,用全局平均池化层(图片尺寸变1x1),参数大减,模型训练更快,减轻过拟合(《Network in Network》论文),Inception Module提高参数利用效率,大网络中小网络。增加分支网络,NIN级联卷积层、NLPConv层。一般,卷积层增加输出通道数,提升表达能力,计算量增大、过拟合,每个输出通道对应一个滤波器,同一滤波器共享参数,只能提取一类特征。NIN,输出通道组保信息。MLPConv,普通卷积层,接1x1卷积、ReLU激活函数。

Inception Module结构,4个分支。第一分支,输入1x1卷积。1x1卷积,跨通道组织信息,提高网络表达能力,输出通道升维、降维。4个分支都用1x1卷积,低成本跨通道特征变换。第二分支,1x1卷积,3x3卷积,两次特征变换。第三分支,1x1卷积,5x5卷积。第四分支,3x3最大池化,1x1卷积。1x1卷积性价比高,小计算量,特征变换、非线性化。4个分支后聚合操作合并(输出通道数聚合)。Inception Module 包含3种不同尺寸卷积、1个最大池化,增加不同尺度适应性。网络深度、宽度高效扩充,提升准确率,不过拟合。

Inception Net,找到最优稀疏结构单元(Inception Module)。Hebbian原理,神经反射活动持续、重复,神经元连接稳定性持久提升,两个神经元细胞距离近,参与对方重复、持续兴奋,代谢变化成为使对方兴奋细胞。一起发射神经元会连在一起(Cells that fire together,wire together),学习过程刺激使神经元间突触强度增加。《Provable Bounds for Learning Some Deep Representations》,很大很稀疏神经网络表达数据集概率分布,网络最佳构筑方法是逐层构筑。上层高度相关(correlated)节点聚类,每个小簇(cluster)连接一起。相关性高节点连接一起。

图片数据,临近区域数据相关性高,相邻像素点卷积连接一起。多个卷积核,同一空间位置,不同通道卷积核输出结果,相关性极高。稍大一点卷积(3x3?5x5),连接节点相关性高,适当用大尺寸卷积,增加多样性(diversity)。Inception Module 4分支,不同尺寸(1x1、3x3、5x5)小型卷积,连接相关性很高节点。

Inception Module,1x1卷积比例(输出通道数占比)最高,3x3?5x5卷积稍低。整个网络,多个Inception Module堆叠。靠后Inception Module卷积空间集中度渐降低,捕获更大面积特征,捕捉更高阶抽象特征。靠后Inception Module,3x3?5x5大面积卷积核占比(输出通道数)更多。

Inception Net 22层,最后一层输出,中间节点分类效果好。使用辅助分类节点(auxiliary classifiers),中间层输出作分类,按较小权重(0.3)加到最终分类结果。相当模型融合,给网络增加反向传播梯度信号,提供额外正则化。

Google Inception Net家族:2014年9月《Going Deeper with Convolutions》Inception V1,top-5错误率6.67%。2015年2月《Batch Normalization:Accelerating Deep Network Trainign by Reducing Internal Covariate》Inception V2,top-5错误率4.8%。2015年12月《Rethinking the Inception Architecture ofr Computer Vision》Inception V3,top-5错误率3.5%。2016年2月《Inception-v4,Inception-ResNet and the Impact of Residual Connections on Learning》Inception V4,top-5错误率3.08%。

Inception V2,用两个3x3卷积代替5x5大卷积,降低参数量,减轻过拟合,提出Batch Normalization方法。BN,非常有效正则化方法,让大型卷积网络训练速度加快很多倍,收敛后分类准确率大幅提高。BN 对每个mini-batch数据内部标准化(normalization)处理,输出规范化到N(0,1)正态分布,减少Internal Covariate Shift(内部神经元分布改变)。传统深度神经网络,每层输入分布变化,只能用很小学习速率。每层BN 学习速率增大很多倍,迭代次数只需原来的1/14,训练时间缩短。BN正则化作用,减少或者取消Dropout,简化网络结构。

增大学习速率,加快学习衰减速度,适用BN规范化数据,去除Dropout,减轻L2正则,去除LRN,更彻底shuffle训练样本,减少数据增强过程数据光学畸变(BN训练更快,样本被训练次数更少,更真实样本对训练有帮助)。

Inception V3,引入Factorization into small convolutions思想,较大二维卷积拆成两个较小一维卷积,节约大量参数,加速运算,减轻过拟合,增加一层蜚线性,扩展模型表达能力。非对称卷积结构拆分,比对称拆分相同小卷积核效果更明显,处理更多、更丰富空间特征,增加特征多样性。

优化Inception Module结构,35x35,17x17,8x8。分支中使用分支,8x8结构,Network In Network In Network。V3结合微软ResNet。

使用tf.contrib.slim辅助设计42层Inception V3 网络。

Inception V3 网络结构
类型 kernel尺寸/步长(或注释) 输入尺寸
卷积 3x3/2 299x299x3
卷积 3x3/1 149x149x32
卷积 3x3/1 147x147x32
池化 3x3/2 147x147x64
卷积 3x3/1 73x73x64
卷积 3x3/2 71x71x80
卷积 3x3/1 35x35x192
Inception模块组 3个InceptionModule 35x35x288
Inception模块组 5个InceptionModule 17x17x768
Inception模块组 3个InceptionModule 8x8x1280
池化 8x8 8x8x2048
线性 logits 1x1x2048
Softmax 分类输出 1x1x1000

定义简单函数trunc_normal,产生截断正态分布。

定义函数inception_v3_arg_scope,生成网络常用函数默认参数,卷积激活函数、权重初始化方式、标准化器。设置L2正则weight_decay默认值0.00004,标准差stddev默认值0.1,参数batch_norm_var_collection默认值moving_vars 。

定义batch no

首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇16、装饰器 下一篇Python-cookies

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目