对Inception V1的理解

提高深度神经网络性能最直接的方法就是增加网络的规模,即深度(神经网络的层数)和宽度(每层的通道数)。但是这个方法有两个主要的缺点:
1.增加深度和宽度往往会增加大量的参数,会使网络更加容易过拟合,尤其当训练数据偏少时。
2.增加网络的规模,会增加计算机资源的使用,如果增加的网络容量使用效率低(比如大多数权重最终接近于零),那么大量的计算就浪费了。虽然最终结果的质量提高了,但是计算机资源的有效分配也比盲目的增加网络的规模好。
而解决的方法就是将完全连接的体系结构转移到稀疏连接的体系结构,论文在abstract中提到了稀疏结构是基于Hebbian原理,查了书籍,Hebbian原理简单解释就是:神经反射活动的持续与重复会导致神经元连接稳定性的持久提升,当两个神经元细胞A和B距离很近,并且A参与了对B重复、持续的兴奋,那么某些代谢变化会导致A将作为能使B兴奋的细胞。总结即“一起发射的神经元会连在一起”,学习过程中的刺激会使神经元间的突触强度增加。利用这个原理,因为相邻的像素点的数据相关性高,所以可以将这些像素点进行卷积操作,但我们会使用多个卷积核,所以可以对同一位置不同通道的像素卷积,因为1×1的卷积小,所以相比3×3和5×5,它所连接的相关性更高,所以它被使用的频率高,但3×3和5×5可以增加多样性,所以会适当使用。

Inception module
对Inception V1的理解
上图就是Inception块,(a)是初始版本,(b)是GoogLeNet中使用的版本,即(a)改进版本。
从(a)中可以看出,将输入分别通过1x1卷积,3x3卷积,5x5卷积,和3x3最大池化层,然后进行通道的合并,这就是将不同卷积尺度的特征进行整合,使得下一个模块可以同时从不同尺度特征中提取更加抽象的特征。
由于更抽象的特征会被网络更高层提取,但它们的空间集中度可能会降低,所以在更高层中3x3和5x5卷积的比重会增加。
然而由于3x3和5x5卷积的计算参数量很大,所以会先用1x1卷积减少通道数来进行降维,这就得到了改进后的(b),而且1x1卷积也能够多引入一个非线性激活,从而增加网络的非线性能力。

GoogLeNet
对Inception V1的理解
与AlexNet和VGGNet相比,GoogleNet的深度更深,网络的深度作用是很大的,而且GoogleNet的深度更深,但参数量更少,这能有效提高计算效率,减小过拟合。
另外可以看到中间有两个softmax,它们的作用是避免梯度下降,向前传导梯度,所以网络会有三个loss,整个网络的总loss是通过三个loss乘上权重相加后得到。

上一篇:pytorch构建GoogLenet网络模型


下一篇:卷积神经网络&目标检测