GoogLeNet的心路历程(一)

这一段时间撸了几篇论文,当我撸到GoogLeNet系列论文的时候,真是脑洞大开!GoogLeNet绝对可以称为已公开神经网络的复杂度之王!每当我看到它那错综复杂的网络图时,心里总有一种说不出的苦涩滋味,我也不知为何。

然后,我萌生了一个想法,用自己的语言描述一下GoogLeNet的发展历程和关键技术点,我知道网上已经有很多人总结过GoogLeNet的各种版本,但那毕竟是别人的东西,自己总结一遍会提升自己的水平。计划是写4篇文章,希望能在一个月内完成吧。下面是GoogLeNet的4篇论文:

[v1] Going Deeper with Convolutions,ensemble top5 error 6.67%,2014

[v2] Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift,ensemble top5 error 4.8%,2015

[v3] Rethinking the Inception Architecture for Computer Vision,ensemble top5 error 3.5%,2015

[v4] Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning,ensemble top5 error 3.08%,2016

v4版本top5错误率只有3.08%!这个应该是目前错误率最低的吧。

不过有时候自己也会萌生一些悲观想法,现在深度学习的网络是越做越复杂,针对某些数据集的识别率是越来越高,可是,然并卵,当我们换个数据集,换个环境,换个照片,换个……以后,效果就不行了,这真是个问题啊!

本文介绍关于GoogLeNet第一篇正式论文,习惯称为inception v1,如下:

[v1] Going Deeper with Convolutions,top5 error 6.67%

在开始介绍论文之前,先说一些题外话,GoogLeNet这个名字的诞生由两方面促成,一是设计者在Google工作,二是向LeNet致敬。GoogLeNet只是一个名字,它的核心内容是发明了Inception Architecture(以下简称IA),发明IA的灵感来自于2013年的一篇论文《Provable Bounds for Learning Some Deep Representations》,这篇论文读起来非常困难,需要很多的数学知识,有兴趣的可以看看。

inception V1的主要贡献

1、提出inception architecture并对其优化

2、取消全连层

3、运用auxiliary classifiers加速网络converge

接下来对以上几点分别介绍。

inception architecture

首先得说一下Szegedy发明IA的动机,他估计是在某天阅读了Provable Bounds for Learning Some Deep Representations这篇论文,又结合自己多年来在深度学习界摸爬滚打的经验,发现传统的提高网络精度的方法是一条邪路(P.S. 传统的方法指的是 扩大网络规模 或 增大训练数据集),而想从本质上提高网络性能,就得用sparsely connected architectures,即“稀疏连接结构”。

我自己对“稀疏连接结构”的理解是这样的,用尽可能的“小”、“分散”的可堆叠的网络结构,去学习复杂的分类任务,怎么体现“小”、“分散”呢?如下图:

Inception Architecture,naive version

原来造神经网络,都是一条线下来,我们可以回想一下AlexNet、VGG等著名网络,而IA是“分叉-汇聚”型网络,也就是说在一层网络中存在多个不同尺度的kernels,卷积完毕后再汇聚,为了更好理解,“汇聚”的tensorflow代码写出来是这样的:

net = tf.concat(3, [branch1x1, branch5x5, branch3x3, branch_pool])

就是简单的在kernel维度把矩阵concatenate起来。但是这么做有一个问题,会产生“维度爆炸”,什么意思呢?假如branch1x1、branch3x3、branch5x5都有256个kernels,加上branch_pool的kernels(假定为256),经过tf.concat操作,最终的kernels是256×4=1024个kernels!这没法接受啊!如果多层IA叠加起来,那kernels的数量岂不上天!!于是Szegedy就改进了一下,如下图:

Inception module with dimension reductions

他加入了kernels数量控制方式,就是那些1×1的卷积层,这些1×1的卷积层输出kernels会比上一层要少,这样即便在经过tf.concat以后,总kernels数量不会增加太多。另外,这些1×1的卷积层还增加了网络的非线性程度。

关于IA的结构就介绍完了,可是,为什么?这样的结构有啥用?Szegedy在论文里解释过一点点:IA之所以能提高网络精度,可能就是归功于它拥有多个不同尺度的kernels,每一个尺度的kernel会学习不同的特征,把这些不同kernels学习到的特征汇聚给下一层,能够更好的实现全方位的深度学习!

取消全连层

为什么VGG网络的参数那么多?就是因为它在最后有两个4096的全连层!Szegedy吸取了教训,为了压缩GoogLeNet的网络参数,他把全连层取消了!其实我个人也认为全连层作用确实没那么大,取消了也好,GoogLeNet网络详细配置如下:

GoogLeNet详细配置

从上图就可以看出,网络的最后几层是avg pool、dropout、linear和softmax,没有看到fully connect的影子。现在取消全连层貌似是个大趋势,近两年的优秀大型神经网络都没有全连层,可能是全连层参数太多,网络深度增加了以后,难以接受吧。

Auxiliary classifiers

搞机器学习的都知道,梯度消散是所有深层网络的通病,往往训练到最后,网络最开始的几层就“训不动了”!于是Szegedy加入了auxiliary classifiers(简称AC),用于辅助训练,加速网络converge,如下图画红框部分:

GoogLeNet

以上图片摘自此文,因为网络太深了,竖着太长,就把它横过来看了。可以看到,笔者在网络中间层加入了两个AC,这两个AC在训练的时候也跟着学习,同时把自己学习到的梯度反馈给网络,算上网络最后一层的梯度反馈,GoogLeNet一共有3个“梯度提供商”,先不说这么做有没有问题,它确实提高了网络收敛的速度,因为梯度大了嘛。另外,GoogLeNet在做inference的时候AC是要被摘掉的。

AC这种加速收敛训练方式与ResNet表面上看不太一样,但是我感觉本质上应该是类似的。ResNet也很深,但是它先是通过构建浅层网络学习参数,再把浅层网络的参数应用到较深网络中,从而尽可能减少梯度消散的影响。GoogLeNet是直接把浅层网络的训练和深层网络的训练揉到一起了。关于这个问题还有待深究。

原文发布于微信公众号 - 人工智能LeadAI(atleadai)

原文发表时间:2018-03-08

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CVer

[计算机视觉论文速递] 2018-07-10 CVPR GAN专场1

这篇文章有 2篇论文速递,都是生成对抗网络GAN方向(CVPR 2018),一篇解决为前景目标找到逼真的几何校正的问题,使得它在合成到背景图像中时看起来很自然,...

1063
来自专栏专知

【NIPS2017前沿】半监督学习需要Bad GAN,清华特奖学霸与苹果AI总监提出(附Ruslan教授深度学习教程pdf下载)

【导读】CMU博士杨植麟与导师同时也是苹果首任AI总监Ruslan Salakhutdinov 在NIPS2017上合作提出新的GAN生成模型,大幅度提高对抗生...

5036
来自专栏专知

24页PPT概览 ICML2018 关键信息(附下载)

【导读】一年一度的国际机器学习会议( ICML ),于7月15日在瑞典斯德哥尔摩闭幕,ICML 的会议日程之紧凑,会议内容之丰富,令人目不暇接。专知分享的这个P...

1385
来自专栏专知

【伯克利大学ICML2018强化学习80页教程】【附下载】

【导读】机器学习领域最具影响力的学术会议之一的ICML于2018年7月10日-15日在瑞典斯德哥尔摩举行。ICML是机器学习领域顶级会议,由国际机器学习协会(I...

942
来自专栏人工智能的秘密

无人驾驶的基本算法及简单介绍

本文以日本无人驾驶开源软件Autoware为参考,汇总分析了无人驾驶所涉及的基本算法,最后给出了在一些典型数据集上测试的效果。

9068
来自专栏AI科技评论

开发 | 干货满满,阿里天池CIKM2017 Rank4比赛经验分享

AI科技评论按:由深圳气象局与阿里巴巴联合承办的CIKM AnalytiCup 2017第一赛季已经宣告结束。本次比赛的目标是利用雷达数据(多普勒雷达回波外推数...

3544
来自专栏机器之心

学界 | 微软论文概述神经信息检索技术:如何将神经网络用于信息检索?

选自arXiv 作者:Bhaskar Mitra、Nick Craswell 机器之心编译 参与:晏奇、黄小天 近日,微软研究人员 Bhaskar Mitra ...

2514
来自专栏思影科技

Neuron:人类个体大脑的精准功能成像

来自美国德州VISN 17 Center of Excellence的Evan M. Gordon等人在Neuron期刊上发文,主要介绍了其提供的MSC数据集,...

2746
来自专栏量子位

轻叩次元壁——谈谈真人头像的漫画化

在这篇自带萌点的文章中,作者提出了一种新型模型TwinGAN,可以将真人头像转化成漫画风的卡通头像。打通二次元和三次元的世界的方法,都在这里面了~

842
来自专栏数说工作室

《神经网络》中文字幕版(2.3 感知器的几何空间 &2.4 感知器的原理透析)

《Neutral Network for Machine Learning》(机器学习中的神经网络)系列课程,是深度学习大神 Geoffrey Hinton 毕...

3379

扫码关注云+社区