2.5 谷歌 Inception 网络简介(Inception network motivation)
Last updated
Last updated
Inception网络或Inception层的作用是代替人工来确定卷积层中的过滤器类型,或者确定是否需要创建卷积层或池化层
基本思想是Inception网络在单层网络上可以使用多个不同尺寸的filters,进行same convolutions,把各filter下得到的输出拼接起来。还可以将CONV layer与POOL layer混合,同时实现各种效果,但是要注意使用same pool。Inception Network不需要人为决定使用哪个过滤器或者是否需要池化,它使用不同尺寸的filters并将CONV和POOL混合起来,将所有功能输出组合拼接,再由神经网络本身去学习参数并选择最好的模块
Inception Network在提升性能的同时,会带来计算量大的问题:
乘法运算的总次数为每个输出值所需要执行的乘法运算次数(5×5×192)乘以输出值个数(28×28×32),结果等于1.2亿。
为此,引入1x1 Convolutions来减少计算量,对于输入层,使用1×1卷积把输入值从192个通道减少到16个通道。然后对这个较小层运行5×5卷积,得到最终输出
把该1x1 Convolution称为“瓶颈层”(bottleneck layer),瓶颈层是网络中最小的部分,即先缩小网络,然后再扩大
引入bottleneck layer之后,第一个卷积层计算成本:1×1×192×输出28×28×16,相乘结果约等于240万,第二个卷积层的计算成本是:28×28×32×5×5×16,计算结果为1000万,总次数是1204万,计算成本从1.2亿下降到了原来的十分之一
总结:
如果在构建神经网络层的时候,不想决定池化层是使用1×1,3×3还是5×5的过滤器,Inception模块是最好的选择。可以应用各种类型的过滤器,只需要把输出连接起来
计算成本问题,通过使用1×1卷积来构建瓶颈层,大大降低计算成本
只要合理构建瓶颈层,既可以显著缩小表示层规模,又不会降低网络性能,从而节省了计算