(10)GoogleNet

VGG 在Alexnet上的改进在于小卷积核,而GoogleNet的改进在于多尺度上。

(1)多尺度的概念

    多尺度模拟了不同远近的物体在视网膜上的形成。而尺度不变性保证不同远近(即不同大小的相同物体)物体可以对视觉神经有相同的刺激。


(10)GoogleNet_第1张图片
同一图像的不同尺度

(2)NIN

    普通卷积层只做一次卷积得到一组feature map,这样将不同feature分开对应多个feature map的方法并不是很精确,因为我们按照特征分类的时候只经历了一层,这样会导致对于该特征的表达并不是很完备,所以Network-in-Network模型用全连接的多层感知机去代替传统的卷积过程,以获取特征更加全面的表达。

    

(10)GoogleNet_第2张图片
NIN网络结构

    NIN的源码实现方式其实就是一个1*1的卷积核,实际上就是96个卷积核对于上一次输出的96个数字在一边卷积,相当于全连接。这样将不同特征图上同一位置的数据联系在一起。实现跨通道的交互和信息整合,同时增加了网络层数,和非线性。还减少了参数数量。

(3)Hebbian principle

    神经反射活动的持续与重复会导致神经元连接稳定性的持久提升,当两个神经元细胞A和B距离很近,并且A参与了对B重复、持续的兴奋,那么某些代谢变化会导致A将作为能使B兴奋的细胞。总结一下即“一起发射的神经元会连在一起” ,学习过程中的刺激会使神经元间的突触强度增加。个很通俗的现象,先摇铃铛,之后给一只狗喂食,久而久之,狗听到铃铛就会口水连连。这也就是狗的“听到”铃铛的神经元与“控制”流口水的神经元之间的链接被加强了,而Hebbian principle的精确表达就是如果两个神经元常常同时产生动作电位,或者说同时激动(fire),这两个神经元之间的连接就会变强,反之则变弱(neurons that fire together, wire together)

    目前图像领域的深度学习,是使用更深的网络提升表达能力,从而提高准确率,但是这会导致网络需要更新的参数爆炸式增长,导致两个严重的问题:

    1、网络更容易过拟合,当数据集不全的时候,过拟合更容易发生,于是我们需要为网络feed大量的数据,但是制作样本集本身就是一件复杂的事情。

    2、大量需要更新的参数就会导致需要大量的计算资源,而当下即使硬件快速发展,这样庞大的计算也是很昂贵的

    解决以上问题的根本方法就是把全连接的网络变为稀疏连接(卷积层其实就是一个稀疏连接),当某个数据集的分布可以用一个稀疏网络表达的时候就可以通过分析某些激活值的相关性,将相关度高的神经元聚合,来获得一个稀疏的表示。

    如果数据集的概率分布可以被一个很大很稀疏的神经网络所表达,那么构筑这个网络的最佳方法是逐层构筑网络:将上一层高度相关的节点聚类,并将聚类出来的每一个小簇(cluster)连接到一起。


(10)GoogleNet_第3张图片
稀疏层级网络

 (4)Inception结构

    一个“好”的稀疏结构,应该是符合Hebbian原理的,我们应该把相关性高的一簇神经元节点连接在一起。在图片数据中,天然的就是临近区域的数据相关性高,因此相邻的像素点被卷积操作连接在一起。而我们可能有多个卷积核,在同一空间位置但在不同通道的卷积核的输出结果相关性极高。因此,一个1*1的卷积就可以很自然地把这些相关性很高的、在同一个空间位置但是不同通道的特征连接在一起,这就是为什么1*1卷积这么频繁地被应用到InceptionNet中的原因。1*1卷积所连接的节点的相关性是最高的,而稍微大一点尺寸的卷积,比如3*3、5*5的卷积所连接的节点相关性也很高,因此也可以适当地使用一些大尺寸的卷积,增加多样性(diversity)。Inception Module通过4个分支中不同尺寸的1*1、3*3、5*5等小型卷积将相关性很高的节点连接在一起,就完成了其设计初衷,构建出了很高效的符合Hebbian原理的稀疏结构。

    

(10)GoogleNet_第4张图片
Inception 原始结构

  采用不同大小的卷积核意味着不同大小的感受野,最后拼接意味着不同尺度特征的融合; 通过控制填充和步长可以使得不同的卷积核运算过后,有相同大小的特征映射图1×1,3×3,5×5只是随意想出来的,是为了在生成特征映射图的时候比较方便。之所以卷积核大小采用1、3和5,主要是为了方便对齐。设定卷积步长stride=1之后,只要分别设定pad=0、1、2,那么卷积之后便可以得到相同维度的特征,然后这些特征就可以直接拼接在一起了;


(10)GoogleNet_第5张图片
inception 示意图

  不过3*3,5*5卷积可能会导致参数量过大的问题,所以在之前通过降维可以控制参数量。


(10)GoogleNet_第6张图片
Inception 降维结构

(5)GoogleNet


(10)GoogleNet_第7张图片
Googlenet 网络结构

    由上图可以看出,这个网络结果深度和宽度上都有提升,深度上比较VGG19多了3层,22层。技术上的做法是,保持低层为传统卷积方式不变,只在较高的层开始用Inception模块。实践证明,这种模式的Inception在前几层使用并不会导致好的效果,在feature_map的大小比较中等的时候使用会比较好包括Inception模块的所有卷积,网络最后采用了average pooling来代替全连接层。


(10)GoogleNet_第8张图片
googleNet网络详情

    为了避免梯度消失,网络额外增加了2个辅助的softmax用于向前传导梯度。

    

你可能感兴趣的:((10)GoogleNet)