DL 学习笔记———GoogleNet

GoogleNet 学习笔记

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

提出背景

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

1615777-20190831112552970-2025086542.jpg

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

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

解决方案

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

Inception v1

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

1615777-20190831112648487-76826883.jpg

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

1615777-20190831112702637-823781667.jpg

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 \]

1615777-20190831112722229-403810811.jpg

Inception v2

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

1615777-20190831112736060-641020793.jpg

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

1615777-20190831112746839-1752663904.png

​ 从图中可以看出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的卷积替代,增加深度,增强非线性表达能力的同时也能减少开销。如下图

1615777-20190831112757587-727966644.jpg

​ 至此Inception v2介绍完毕

Inception v3

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

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

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

转载于:https://www.cnblogs.com/buaa17231043/p/11438391.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值