首页 > Web开发 > 详细

DL 学习笔记———GoogleNet

时间:2019-08-31 14:56:50      阅读:65      评论:0      收藏:0      [点我收藏+]

GoogleNet 学习笔记

? 上一篇blog介绍了简洁优美的resnet,这一篇介绍一下相对复杂的GoogleNet

提出背景

? GoogleNet的提出是在2014年,当时大多数网络都追求深度,但是看如下几幅图片

技术分享图片

? 在利用CNN识别出图中的小狗时,势必要为每个卷积层选择合适的kernel size。但是上面几幅图中小狗的位置都不相同,大小也不一样,利用单一的卷积核大小显然不合理。比如第一张就应该用较大的卷积核,第三张就应该用较小的卷积核。

? 问题出现了,解决方法很快就被想出。何不在一个卷积层上储备多个不同大小的卷积核呢,与其增加深度,不如增加宽度,想法看起来很自然。

解决方案

? 论文中提出的解决方案叫做Inception模块,下面我们随着其发展顺序逐一介绍

Inception v1

? 下图就是最原始的Inception模块。它没有使用单一的卷积核,而是使用了3个不同大小的滤波器,此外还有一条路执行max pooling操作。这四条路的输出最后会被级联起来传至下一个模块

技术分享图片

? 此外,在执行3*3或5*5的卷积操作之前,先进行1*1的卷积。这样做的目的是减少channel数量。降低计算成本。

技术分享图片

GoogleNet

? 最初的GoogleNet就是建立在Inception v1的基础上,其一共有9个线性堆叠的Inception模块。

? 这样一个网络也很深,也会遭受 gradient vanish 的问题。于是作者在网络中间加了两个辅助分类器(auxiliary classifier)(图中紫框)。这两个辅助分类器在训练过程中使用,在预测过程中不使用。在计算loss时,由如下公式
\[ total\_loss = real\_loss + 0.3 * aux\_loss_1 + 0.3 * aux\_loss_2 \]

技术分享图片

Inception v2

? v2 在v1的基础上做了一点改变。将一个5*5的卷积用两个3*3的卷积进行替代。

技术分享图片

? 那么为什么能够这么做呢,看下面一幅图

技术分享图片

? 从图中可以看出1个5*5卷积得到的neuron和2个3*3卷积得到的neuron,它们两者对应被卷积层的感受野(RF,respective field)是相同的,都是一个5*5大小的矩阵。而决定CNN效果的就是感受野的选择,因此这两种操作在效果上是等价的。但是在开销上两个3*3的卷积核所需要的参数少于5*5的参数。简单计算一下

? 两个3*3卷积需要的参数 \(2*3*3*channel\)

? 一个5*5卷积需要的参数 \(1*5*5*channel\)

? 显然前者开销更少。

? 此外,一个3*3的卷积也能用一个1*3的卷积和一个3*1的卷积替代,增加深度,增强非线性表达能力的同时也能减少开销。如下图

技术分享图片

? 至此Inception v2介绍完毕

Inception v3

? Inception v3其实就对对Inception v2做了一点小优化

  • 使用 RMSProp 优化器,
  • Factorized 7x7 卷积;
  • 辅助分类器使用了 BatchNorm

Inception v4 and Inception-resnet(未完待续。。。)

DL 学习笔记———GoogleNet

原文:https://www.cnblogs.com/buaa17231043/p/11438391.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!