卷积神经网络简介与卷积网络的平移不变性
(如无特殊说明,本文中有填充指的是“相同”填充)
全连接网络的训练问题
在机器视觉识别问题中,一般来说,输入数据的维度非常大,如果我们要设计一个图像识别的全连接网络的话,那么网络中的参数就会非常多,在使用梯度下降法训练模型时,过多的参数容易使模型过拟合。
卷积网络
卷积神经网络据说是启发于对人眼视觉机制的研究,人们一经应用发现,一个设计合理的卷积神经网络的潜能不亚于全连接网络且它的参数量相对较少,训练时不易出现过拟合现象,因此它在机器视觉上的应用价值要高于全连接网络在机器视觉上的。
“卷积神经网络起源于人类对人眼视觉机制的研究”,这是大家所认同的说法,如果对人眼视觉机制有一个初步地了解的话,会发现卷积神经网络和人眼视觉机制确实有相似之处,

人眼的感光细胞(视锥细胞、视杆细胞)的刺激传出可以类比为图像像素输入
卷积神经网络和人眼视觉机制的连接模式十分相似,一片区域的感光细胞连接一个双极双极细胞,一片像素通过一个卷积核连接下一个像素。
至于它与人眼视觉机制的联系,多的我就不说了,因为我不知道。
卷积网络层与全连接层
卷积网络层的计算过程和全连接层的计算过程类似,都是乘权重、加偏置这样的线性运算,再经过激活函数输出,它的作用也是提取线性互斥特征,可以说卷积网络能做到的全连接网络一样能做到,我们只需要将上面卷积网络的参数迁移到全连接网络即可,但是全连接网络的输入形状是固定的,所以这样做很不灵活。
当然,对于卷积神经网络,我们不需要破坏输入数据的结构,输入数据经过一层卷积网络提取特征后,数据结构不会发生大的变化(特征的空间结构得以保留),相比全连接网络,我们更容易处理数据以及理解网络的行为(通过打印特征图,网络对图像中的哪些部分感兴趣可以一目了然、我们也可以通过特征图了解到它是用什么特征来判断的...........)
关于卷积神经网络具体的计算过程、原理、应用等推荐吴恩达教授的教程(通俗易懂,深入浅出,不需要太多的数学基础)

初步了解了卷积的计算方法后,很容易得到两个简单的性质,
第一,卷积网络层的输入形状受限制较小,卷积网络层不像全连接层那样需要固定的输入形状,如果输入是图像,那么卷积后的结果也是图像,对于计算机来说,图像是二维数组(灰度图)或三维数组,那就是数据结构没有发生太大的变化,当然,一层卷积网络可能有很多的卷积核。
第二,它的平移特性
下图中的网络是3x3x1有填充卷积神经网络


这就是它的平移特性。
现在考虑一种情况:
假设说我们有一个训练好的识别手写数字的神经网络,它是由一个3x3x1有填充卷积层和一个28x28x10的无填充卷积层构成的,训练好的第一层卷积的作用就像上图那样是提取图像的边缘信息,最后一层就相当于有10个神经元的全连接层。
这个网络可能会像我们人类一样利用数字的形状特征来判断数字是多少,我们知道,数字1的图像提取边缘后就像是一个圈,所以判断数字1的卷积核可能会像这样,这个卷积核就是一个圈的匹配模板

我们观察到,这个圈的位置好像在正中间,也就是说数字1的图像中的“1”位于正中间时,网络的输出才有较高的可信度,这样看来,这个模型也不行啊!,那有什么办法解决这个问题?
数据增强
这不是本文重点考虑的一种方法。
对训练集中的数据进行平移变换来扩充数据,使输入数据不只有像素只处于图像中心的情况,还可以增加卷积核的通道数,也许其他通道会学习到中心圈匹配模板的平移情况
不使用数据增强
最大池化层+有填充卷积网络
如果我们将特征图多平移几次,也许“1”就会落到正中间,所以我们只需要将最后一层改为有填充卷积网络就行,最后的输出结构变为28x28x10,这对应了28x28=784种平移特征图的10个预测结果。我们先观察数字1的预测结果,假设我们输入了一个28x28的数字1的图像,其中的“1”被我们平移向右平移了7个像素,图像经过第一层卷积后输出了图像的边缘信息,然后输入到最后一层,最后一层卷积核从左上角开始卷过去卷到右下角,在本例中就相当于把这个特征图所有的平移变换都考虑进去(28x28个),本例中向右平移7个像素的特征图对应的1的预测概率应该是这784个特征图中最大的那个,所以我们再选出最大值即可,我们可以用最大28x28的最大池化来挑选最大值,这样的网络在处理平移时就比之前的要好一点
最大池化层+有填充卷积网络实验:

首先用一个卷积网络训练数据分类,数据集是MINIST,这个数据集的数字都在中心,训练完成后准确率在0.98左右,损失在0.1左右,保存为micnnmodel


然后卷积层换成有填充卷积,(具体操作是删除掉原卷积层然后换上有填充的卷积层,迁移权重),再加上最大池化

micnnmodel测试结果:
正常组

平移组


micnnmodel1(全局最大池化做预测):
正常组

平移组


这模型一看就不合理、不靠谱,根据上面的分析,平移不变性是建立在原模型的"中心感"上,但是看这情况,似乎原模型稍微有点过拟合了,中心感倒是有一点,稍微有那么一点提升吧
现在有一个新的模型,它与上面几乎一样,不同的是它最后一层是28x28的平均池化,现在我们有一个图像以及它的小范围平移图像(不超出边界),因为平移图像与原图只相差一小部分距离,所以将28x28中平移变换应用于它们身上之后产生的两个图集的交集很大,所以两个图像经过最后一层卷积层时输出的特征图集有一大部分是相同的,再经过平均池化,最终的两个输出值也相差不多




micnnmodel2(全局平均池化做预测):
正常组

平移组


看起来要比第一种的要正常,它是满足概率分布的,因为784个预测结果都是满足概率分布的,平均之后肯定也满足概率分布
改进版全局平均池化做预测
我在后来看到了Darknet19模型,

它和micnnmodel2一样也是用全局平均池化,但是它似乎和我的想法不同,在我的想法中,平均池化的上一层卷积就是用来做预测的,所以它是一个全局卷积,但Darknet19这种不同,平均池化的上一层不是全局卷积,我试着理解这种想法:如果我们将Darknet19训练地很好(准确率很高,损失很低,依旧使用分类物体在中心的数据集),那么我们将输入图片平移一小段距离,如果此命题成立:“将输入图像平移,卷积网络的特征图也做相同的变换”,那么将平移后的特征图与之前的特征的像素平均后再softmax输出,很自然地,它们的数值应该是相当接近的。显然,这样的方法更合理,我的想法画蛇添足了
类Darknet网络结构



micnnmodel3测试结果
正常组

平移组


如果此命题成立:“将输入图像平移,卷积网络的特征图也做相同的变换”,可以预想,但图片做旋转变换后,网络输出的特征图也做了旋转变换,那么原图与变换后的图的像素值的平均也会差不多,这就实现了旋转不变性!