卷积神经网络CNN - 浅层

卷积神经网络CNN - Convolutional neural network

在网络中采用卷积(一种特殊的线性运算)计算,卷积神经网络至少在一层中使用卷积代替一般矩阵乘法。

[In mathematics , the asterisk is the standard symbol for convolution.]

卷积计算用 “ * ”表示。

1.卷积神经网络的结构

(1)卷积层- Convolutional layer

卷积层由若干卷积单元组成,每个卷积单元的参数都是通过反向传播算法(BP)最佳化得到的。

卷积运算的目的是提取输入的不同特征,第一层卷积层可能只能提取一些低级的特征,多层之后便能从低级特征中迭代提取更复杂的特征。

(2)线性整流层 - Rectified Linear Units layer

利用线性整流  卷积神经网络CNN - 浅层 作为这一层神经的激励函数(Activation function),可以增强判定函数和整个神经网络的非线性特性,而不改变卷积层。

(3)池化层 - Pooling

缩减模型的大小,提高计算速度,同时提高所提取特征的鲁棒性。

池化层一般没有参数,没有权重。

[ Pooling layers reduce the dimensions of the data by combining the outputs of neuron clusters at one layer into a single neuron in the next layer. ] 

一种非线性形式的降采样(down-sampling),运用非线性池化函数

Eg. 最大池化 - Max Pooling

       平均池化也有,但是最大池化用得多得多。

将输入的图像划分为若干个矩形区域,对每个子区域输出最大值或平均值。

池化层会不断减小数据的空间大小,降低参数的数量和计算量,在一定程度上控制过拟合

(4)完全连接层 - fully connected layer 

神经网络中的高级推理通过完全连接层来完成。完全连接层中的神经元与前一层中的所有**都有联系。

(5)损失函数层 - Loss layer

用于决定训练过程如何来“惩罚”网络的预测结果和真实结果之间的差异。

 

2.一个简单卷积计算的例子

一般来说filter的f是奇数

将左边6*6的矩阵通过一个卷积计算转换成4*4的矩阵

(1)在4*4的矩阵中的第一格,将粉色部分与蓝色部分矩阵中对应位置的数相乘相加得到-5这一结果。

3*1+0+1*(-1)+1*1+0+8*(-1)+2*1+0+2*(-1) = -5 

卷积神经网络CNN - 浅层

(2)将粉色大小的矩阵向右移一位得到紫色矩阵,再将紫色矩阵与蓝色矩阵对应位置数相乘相加得到下一格子的值(-4)。

卷积神经网络CNN - 浅层

(3)照此规律不断移动粉色块与蓝色块进行计算,将得到整个4*4的矩阵值。

卷积神经网络CNN - 浅层

设矩阵大小为n*n ,filter大小为f*f,Padding为0,最终得到矩阵为 (n-f+1)*(n-f+1)  [这是卷积步长为1的情况]

设卷积步长为S,filter为f,Padding为p,则最终矩阵为 卷积神经网络CNN - 浅层 *  卷积神经网络CNN - 浅层

 

3.一个简单Max Pooling的例子

将一个4*4的矩阵利用Max Pooling转换成2*2的矩阵。

将4*4的矩阵划分为4个部分,如图颜色所标注,取其中数值最大的值作为2*2矩阵相对应位置的值。

卷积神经网络CNN - 浅层

同理,从5*5的矩阵中推出3*3的矩阵方式如上卷积算法移动矩阵的方式相似。

4.什么是Padding?

在原图像的周围填充边缘。

因为在不断使用卷积运算会出现两个问题,即

(1)最后得到的图像可能很小。

(2)图像边缘信息丢失严重。

为此,通过在原图像的四周添加像素点来改善这两个问题(填充边缘)。

例如,所添加的Padding像素为p,以一层卷积为例,原图像为n*n,filter为f*f,最后得到为(n+2p-f+1)*(n+2p-f+1)。(步长为1时)

设卷积步长(Stride)为S,filter为f,Padding为p,则最终矩阵为 卷积神经网络CNN - 浅层 *  卷积神经网络CNN - 浅层  [与上重复]

 

Valid and Same Convolution

Valid Convolution :no padding / 不进行边缘填充工作。

Same Convolution:Pad so that the output size is the same of input size / 进行边缘填充工作,使得最后输出图像大小与输入图像大小相等。

5.为什么卷积神经网络中的参数相对而言较少?

(1)参数共享(Parameter Sharing) - A feature detector (such as a vertical edge detector) that's useful in one part of the image is probably useful in another part of the image / 即一个filter如果对图像的一部分有用,也许对其他部分也有用。

(2)稀疏连接(Sparsity of connections) - In each layer , each output value depends only on a small number of inputs / 即在每一层中,每一个输出值仅依赖于一部分的输入值。