GoogleNet :Going deeper with convolutions 论文阅读

GoogleNet :Going deeper with convolutions 论文阅读_第1张图片
这次读旁边拿了纸笔记录,感觉还是方便一些,之后再写篇博客总结一下加深印象。

问题引出

Going deeper考虑的问题:

  1. 不在于训练数据、模型大小,希望得到新的模型结构;
  2. 可以用于移动计算,需要考虑功率、内存使用等问题。

NIN借鉴到的1*1卷积核:

  1. 降维(当然也可以升维),减少参数和计算;
  2. 增加深度、宽度,而没有明显性能损失。

目前提高深度神经网络性能的方法:
加大size
缺点:

  1. 容易造成过拟合;
  2. 计算复杂。

→解决:

  • 完全连接到稀疏连接(ultimately moving from fully connected to sparsely connected architectures, even inside the convolutions)

如果数据集的概率分布可以由大而稀疏的深层网络表示,则最佳网络拓扑可通过分析最后层的激活的相关统计数据逐层构建。但对于非均匀稀疏数据计算效率低。
提出:是否有中间步骤→一个利用额外稀疏性的架构?

Inception

国外的命名还真是很有意思的,“Going deeper”就引用了我最开始的图的台词,Inception(《盗梦空间》)就是这台词的出处。
好了,接下来就是这篇文章的核心:Inception结构。
其实也很简单,利用多个大小卷积核进行提取特征并融合(个人理解)。
具体看图更容易理解:
GoogleNet :Going deeper with convolutions 论文阅读_第2张图片
之前我们卷积层很简单,是一个n*n的滤波器与上一层输入滑动卷积即可。而这里突然又变成了四兄弟,滤波器分别为:1*1卷积,3*3卷积,5*5卷积,3*3池化,最后汇总输出。为了保证输出大小相同,只要将pad分别设置为0,1,2,stride设置为1即可。
这里出来问题在于5*5计算量较大,特别是在深层情况下,所以说还是naive啊~
还好有了NIN的借鉴,利用上文说到的1*1卷积核降维,可以解决这一问题。
例如:上一层的输出为100x100x128,经过具有256个输出的5x5卷积层之后(stride=1,pad=2),输出数据为100x100x256。其中,卷积层的参数为128x5x5x256。假如上一层输出先经过具有32个输出的1x1卷积层,再经过具有256个输出的5x5卷积层,那么最终的输出数据仍为为100x100x256,但卷积参数量已经减少为128x1x1x32 + 32x5x5x256。结构如下图所示:
GoogleNet :Going deeper with convolutions 论文阅读_第3张图片

总结

优势:

  1. 每阶段增加了单元数,但也不会过度增加计算复杂;
  2. 不同卷积核大小,表示信息在不同尺度上处理,与直观相符合。

感想:
之前也有想过不同尺度(也可以说是不同卷积核大小)下进行分别提取特征的,但后面不是很清楚如何能统一得到结果的,其实看完之后也很简单,通过补零即可。更重要的可能还在于1*1卷积层的巧妙使用,从参数量上大大减小了,提出该方法的NIN也需要看一下。

Going Deeper with Convolutions
GoogLeNet系列解读

你可能感兴趣的:(机器学习,神经网络)