前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GoogleNet论文笔记/小结

GoogleNet论文笔记/小结

作者头像
bear_fish
发布2018-09-14 09:46:17
1.8K0
发布2018-09-14 09:46:17
举报

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1338331

GoogLeNet和VGG是2014年ImageNet挑战赛(ILSVRC14)的双雄,GoogLeNet获得了第一名、VGG获得了第二名。

本文主要内容如下:

  1. GoogLeNet分析了现有提升网络精度的常见办法及缺点
  2. GoogLeNet解决上面问题的办法,Inception基本原理,以及为什么想到使用Inception。
  3. 为什么不叫“GoogleNet”,而叫“GoogLeNet”
  4. GoogLeNet网络结构以及辅助loss函数
  5. 简单介绍了下:Inception v2 、Inception v3以及Inception v4 和 Inception-ResNet

1 GoogLeNet分析了现有提升网络精度的常见办法及缺点

GoogLeNet首先分析了,现有提升网络识别(分类)的精度的常见办法,及其缺点:

  1. 使用更深的网络,但是这会导致参数太多,如果训练数据集有限,很容易产生过拟合;
  2. 创建数据集的代价很大,尤其是如果数据集分类很麻烦的情况下;
  3. 网络越深,容易出现梯度弥散问题(梯度越往后穿越容易消失),难以优化模型。

2 GoogLeNet解决上面问题的办法

解决这些问题的方法当然就是在增加网络深度和宽度的同时减少参数,为了减少参数,自然就想到将全连接变成稀疏连接。但是在实现上,全连接变成稀疏连接后实际计算量并不会有质的提升,因为大部分硬件是针对密集矩阵计算优化的,稀疏矩阵虽然数据量少,但是计算所消耗的时间却很难减少。

那么,有没有一种方法既能保持网络结构的稀疏性,又能利用密集矩阵的高计算性能。大量的文献表明可以将稀疏矩阵聚类为较为密集的子矩阵来提高计算性能,就如人类的大脑是可以看做是神经元的重复堆积,因此,GoogLeNet团队提出了Inception网络结构,就是构造一种“基础神经元”结构,来搭建一个稀疏性、高计算性能的网络结构。

2.1 Inception

Inception naive结构如下:

下图看的更加直观点:

Inception 模块的作用:

  1. Inception 模块会并行计算同一输入映射上的多个不同变换,并将它们的结果都连接到单一一个输出。换句话说,对于每一个层,Inception 都会执行 5×5 卷积变换、3×3 卷积变换和最大池化。然后该模型的下一层会决定是否以及怎样使用各个信息。
  2. Inception可以看做是在水平方向上加深了网络
2.2 结合实际理解Inception

下面给出一个实际的示例理解上面的Inception 模块。对于下图中的狗,在每张图片中大小不一样,特征尺度变化也很大。

  1. 由于特征尺度变化特别大,卷积操作选择适当的核尺寸变得较为困难。特征尺度较大的比较适合于较大的核,而特征尺度小的适合较小的核。
  2. 简单的加深网络,容易造成梯度发散,而且计算量会变大。

那为什么不能在同一层上采用多个尺寸的过滤器,使得网络本质上会变得更宽一些,而不是更深。作者设计 inception 模块就是用了这个想法。

2.3 naive Inception缺点

这种模型架构的信息密度更大了,这就带来了一个突出的问题:计算成本大大增加。不仅大型(比如 5×5)卷积过滤器的固有计算成本高,并排堆叠多个不同的过滤器更会极大增加每一层的特征映射的数量。而这种计算成本增长就成为了我们模型的致命瓶颈。

2.4 改进方法之Inception v1

Inception v1的网络结构如下图:

使用1*1卷积的作用:

  1. 降维( dimension reductionality )。比如,一张500 * 500 depth为100 的图片在20个filter上做1*1的卷积,那么结果的大小为500*500*20。
  2. 加入非线性。卷积层之后经过激励层,1*1的卷积在前一层的学习表示上添加了非线性激励( non-linear activation ),提升网络的表达能力;

3. GoogLeNet名称缘由

GoogLeNet是谷歌(Google)研究出来的深度网络结构,为什么不叫“GoogleNet”,而叫“GoogLeNet”,论文说是为了向“LeNet”致敬,因此取名为“GoogLeNet”。论文原话:

We chose GoogLeNet as our team-name in the ILSVRC14 competition. This name is an homage to Yann LeCuns pioneering LeNet 5 network 10.


4. GoogLeNet网络结构以及辅助loss函数

4.1 GoogLeNet结构

GoogLeNet 由 9 组 inception 模块线性堆叠组成。深 22 层(如算上池化层共 27 层)。

4.2 辅助loss函数

为防止网络中间部分不会「梯度消失」,作者引入了 2 个辅助分类器,它们本质上对 2 个 inception 模块的输出执行 softmax,并计算对同一个标签的 1 个辅助损失值。

辅助损失值纯粹是为训练构建,分类推断时将被忽略。辅助分类器促进了更稳定的学习和更好的收敛。辅助分类器往往在接近训练结束时,辅助分支网络开始超越没有任何分支的网络的准确性,达到了更高的稳定水平。

接下来简要简绍下:

5. Inception v2 、Inception v3

Inception v2 、Inception v3 在同一篇论文《Rethinking the Inception Architecture for Computer Vision》

该论文主要内容如下:

  1. 给出了网络设计的通用准则
  2. 将大的卷积核分解为小的卷积核

卷积分解(Factorizing Convolutions)

大尺寸的卷积核可以带来更大的感受野,但也意味着会产生更多的参数,比如5x5卷积核的参数有25个,3x3卷积核的参数有9个,前者是后者的25/9=2.78倍。因此,GoogLeNet团队提出可以用2个连续的3x3卷积层组成的小网络来代替单个的5x5卷积层,即在保持感受野范围的同时又减少了参数量,如下图:

任意nxn的卷积都可以通过1xn卷积后接nx1卷积来替代。GoogLeNet团队发现在网络的前期使用这种分解效果并不好,在中度大小的特征图(feature map)上使用效果才会更好(特征图大小建议在12到20之间)

Inception Net v3 包含了针对 Inception v2 所述的所有升级,并且增加使用了以下内容:

  1. RMSProp 优化器。
  2. 分解为 7x7 卷积。
  3. 辅助分类 BatchNorm。
  4. 标签平滑(添加到损失公式中的正则化组件类型,防止网络过于准确,防止过度拟合。)

6. Inception v4 和 Inception-ResNet

Inception v4 和 Inception-ResNet 在同一篇论文《Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning》

Inception V4研究了Inception模块与残差连接的结合。ResNet结构大大地加深了网络深度,还极大地提升了训练速度,同时性能也有提升。

Inception V4主要利用残差连接(Residual Connection)来改进V3结构,得到Inception-ResNet-v1,Inception-ResNet-v2,Inception-v4网络。下图左为ResNet的残差结构,右图为ResNet残差结构与Inception相结合。

注:

在实际工作中做图片分类时,我们一般使用GoogleNet Inception v2.

参考:

https://my.oschina.net/u/876354/blog/1637819

https://towardsdatascience.com/a-simple-guide-to-the-versions-of-the-inception-network-7fc52b863202

https://stats.stackexchange.com/a/274623/212628

https://www.leiphone.com/news/201806/sUuRFBdicUF4MfxX.html

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年08月15日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 GoogLeNet分析了现有提升网络精度的常见办法及缺点
  • 2 GoogLeNet解决上面问题的办法
    • 2.1 Inception
      • 2.2 结合实际理解Inception
        • 2.3 naive Inception缺点
          • 2.4 改进方法之Inception v1
          • 3. GoogLeNet名称缘由
          • 4. GoogLeNet网络结构以及辅助loss函数
            • 4.1 GoogLeNet结构
              • 4.2 辅助loss函数
              • 5. Inception v2 、Inception v3
              • 6. Inception v4 和 Inception-ResNet
              • 注:
                • 参考:
                相关产品与服务
                GPU 云服务器
                GPU 云服务器(Cloud GPU Service,GPU)是提供 GPU 算力的弹性计算服务,具有超强的并行计算能力,作为 IaaS 层的尖兵利器,服务于深度学习训练、科学计算、图形图像处理、视频编解码等场景。腾讯云随时提供触手可得的算力,有效缓解您的计算压力,提升业务效率与竞争力。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档