Inception 模型

来源:互联网 发布:mysql修改root密码 编辑:程序博客网 时间:2024/06/05 18:37

inception v1:
去除了最后的全连接层,使用全局平均池化层来代替,因为全连接层的参数很多,基本上占据了百分之九十的参数,而且全连接层会带来过拟合的问题。
采用了inception module。
Hebbian 原理:神经反射活动的持续和重复会导致神经元连接稳定性的持久提升,当两个神经元细胞A和B距离很接近,并且A参与了对B的重复持续的兴奋,那么某些代谢变化会导致A将作为能使B兴奋的细胞。即,一起发射的神经元会连在一起。
inception module 一共有四个分支
这里写图片描述
1*1的卷积层使用低成本进行跨通道的特征变换,在同一个空间位置但是在不同通道的卷积核的输出结果相关性极高,一个1*1的卷积就可以将这些空间位置相同但属于不同通道的连接在一起。1*1卷积所连接的节点的相关性是最高的。
在inception module中,1*1卷积的比例最高,但靠后的module中卷积的空间集中度逐渐降低,捕获更大面积的特征, 3*3,5*5的比例增大。
四个分支最后通过一个聚合操作合并(在输出通道的维度上)
inception中间节点的分类效果也比较好,因此还采用了辅助分类器,将中间某一层的输出用作分类,并按一个较小的权重加到最终的分类结果中。相当于做了模型融合,同时给网络加了反向传播的梯度信号,提供了额外的正则化。

Inception v2:
卷积神经网络经过卷积后得到的是一系列的特征图,如果min-batch sizes为m,那么网络某一层输入数据可以表示为四维矩阵(m,f,p,q),m为min-batch sizes,f为特征图个数,p、q分别为特征图的宽高。在cnn中我们可以把每个特征图看成是一个特征处理(一个神经元),因此在使用Batch Normalization,mini-batch size 的大小就是:m*p*q,于是对于每个特征图都只有一对可学习参数:γ、β。说白了吧,这就是相当于求取所有样本所对应的一个特征图的所有神经元的平均值、方差,然后对这个特征图神经元做归一化。
虽然使用随机梯度的mini-batch可以简化梯度下降的算法,但它需要十分小心的超参数和比较小的合适的学习率,在模型的初始化方面敏感。
softmax函数存在饱和问题,当|x|增大时,梯度趋于0,导致梯度消失,学习缓慢,这个问题可以使用RLU,小心的初始化和小的学习率来解决,但是我们确信,如果输入的非线性数据分布更平缓,将不会饱和,学习会加速。
batch-normalization 有正则化的作用,可以减少dropout 的使用,减少梯度对模型参数和初始值的依赖。
这里写图片描述
检验的时候认为γ和β都是训练是算下来的这里写图片描述

Inception v3:
将两个较大的二维卷积拆成两个较小的一维卷积,例如将3*3拆成1*3和3*1,一方面减少参数减轻过拟合,一方面则加了一层非线性扩展模型表达能力,非对称的卷积结构拆分结果比对称的拆分为几个相同的小卷积核效果更好,可以处理更多更丰富的空间特征,增加特征多样性。
卷积网络从输入到输出,应该让图片尺寸逐渐减小,输出通道数逐渐增加,即让空间结构简化,将空间信息转化为高阶抽象的特征信息。
inception module使用多个分支提取不同抽象程度的高阶特征的思路很有效,可以丰富网络的表达能力。
这里写图片描述

0 0