深度学习笔记(三十六)1x1卷积(网络中的网络)及谷歌Inception网络

提到1x1卷积,能想到什么?我能想到的就是把图像中每个像素点乘以某个倍数,这除了调整图像亮度什么的有用,还能有什么用处呢?带着疑惑我们来学习网络中的网络及1x1卷积。学习了1x1卷积后,我们开始接触谷歌Inception网络结果,通过1x1卷积的方式大幅度降低运算量。

一、1x1卷积(网络中的网络)

放在二维图像中,1x1卷积确实是这么个用处。
深度学习笔记(三十六)1x1卷积(网络中的网络)及谷歌Inception网络_第1张图片
而放在三维图像中,会显得非常实用。
深度学习笔记(三十六)1x1卷积(网络中的网络)及谷歌Inception网络_第2张图片
最终的结果是:高和宽的维度不变,仅仅32变成了过滤器数量。
一个神经元的输入是32个数字,乘以相同高度和宽度上的某个切片的32个数字,应用ReLU激活函数,输出结果。这32个单元应用了全连接神经网络,所以称网络中的网络

深度学习笔记(三十六)1x1卷积(网络中的网络)及谷歌Inception网络_第3张图片

  • 在上图中,将192个通道压缩到32个,那么过滤器 1 × 1 × 192 1\times1\times192 1×1×192,用了32个过滤器。
  • 与之形成对比的是池化层,池化将宽和高压缩得更小,而通道数不改变。
  • 如果用的是192个过滤器,那么卷积后结果仍然是 28 × 28 × 192 28\times28\times192 28×28×192,但是也发生了改变,加入了一次ReLU激活函数,可以学习更复杂的函数。

二、Inception网络概述

深度学习笔记(三十六)1x1卷积(网络中的网络)及谷歌Inception网络_第4张图片
Inception的基本思想:不需要去决定用什么过滤器、用不用池化层,而是由网络自行确定参数。我们可以给网络添加这些参数的所有可能,然后把这些输出连接起来,让网络自己学习需要什么参数,组合哪些过滤器。
简单来说,如果你在搭建神经网络时不知道怎么决定过滤器的大小,那么Inception模块就是你可以考虑的。应用各种过滤器,把输出连接起来。

三、Inception的计算成本问题

深度学习笔记(三十六)1x1卷积(网络中的网络)及谷歌Inception网络_第5张图片
这个例子中,过滤器维度是 5 × 5 × 192 5\times5\times192 5×5×192,乘法次数是: 5 × 5 × 192 × 28 × 28 × 32 = 120 m 5\times5\times192\times28\times28\times32=120m 5×5×192×28×28×32=120m
1.2亿这个运算量对于计算机来说太大了,有什么办法可以压缩?想到了1x1卷积。
在下面的例子中,用1x1卷积搭建了一个瓶颈层,大幅度降低了运算量。
深度学习笔记(三十六)1x1卷积(网络中的网络)及谷歌Inception网络_第6张图片
直观来看,这样搭建瓶颈层会影响神经网络的效率,但事实上如果搭建合理,可以在降低运算量的同时,保证效率。

四、Inception模块

深度学习笔记(三十六)1x1卷积(网络中的网络)及谷歌Inception网络_第7张图片
深度学习笔记(三十六)1x1卷积(网络中的网络)及谷歌Inception网络_第8张图片

五、Inception网络

在这里插入图片描述

将Inception模块组合在一起,形成了如下的Inception网络。
深度学习笔记(三十六)1x1卷积(网络中的网络)及谷歌Inception网络_第9张图片
竖着放,放大看这个图
深度学习笔记(三十六)1x1卷积(网络中的网络)及谷歌Inception网络_第10张图片

深度学习笔记(三十六)1x1卷积(网络中的网络)及谷歌Inception网络_第11张图片
放大这个网络可以看到除了网络最终的输出,在中间还有Softmax输出,这是Inception的一个细节,确保即便是在隐藏单元和中间层,也参与了特征计算,同样可以预测图片分类,在网络中起到调整的作用,防止过拟合!
这是谷歌研究的成果,称GoogLeNet,背景为了致敬经典卷积神经网络LeNet。还有个有趣的背景,盗梦空间(Inception)中提到“we need to go deeper”,论文的作者在文章中引用到盗梦空间的这个梗。

你可能感兴趣的:(【深度学习/神经网络】Deep,Learning)