赞
踩
卷积神经网络(convolutional neural network, CNN),是一种专门用来处理具有类似网格结构的数据的神经网络。例如时间序列数据(可以认为是在时间轴上有规律地采样形成的一维网格)和图像数据(可以看作是二维的像素网格)。卷积网络在诸多应用领域都表现优异。“卷积神经网络’’ 一词表明该网络使用了卷积(convolution)这种数学运算。卷积是一种特殊的线性运算。卷积网络是指那些至少在网络的一层中使用卷积运算来替代一般的矩阵乘法运算的神经网络。
一个卷积神经网络是由输入层(Input)、卷积层(Convolution)、池化层(Pooling)、全连接层(Fully Connected) 组成。
在输入层输入原始数据,卷积层中进行的是前面所述的卷积过程,用它来进行提取特征。全连接层就是将识别到的所有特征全部连接起来,并输出到分类器(如Softmax)。
即输入的图片等数据。我们以图片为例,输入层为一个32 * 32 * 3(length * width *channel)的矩阵。3代表了图像的彩色通道(channel),RGB模式下,一个图片有三个原色图叠合而成。
卷积层是卷积网络中最为重要的部分。和传统全连接层不同,卷积层中每一个节点的输入只是上一层神经网络的一小块,这个小快常用的大小有3 * 3或者5 * 5,卷积层会增加原始节点的深度。通常卷积层这部分被称为过滤器(filetr)或者卷积核(kernel)。
使用过滤器做卷积计算:
在输入矩阵中选取和过滤器一样大小的数据,进行卷积计算,即求对应位置的乘积和。这个乘积和即为卷积计算的输出值。
以此为例,我们在5 * 5原图上选取一个3 * 3的区域,每次移动一格,那么输出就是3 * 3的矩阵。这个一格,就是步长。如果我们把步长设为2,那么输出就是2 * 2的矩阵。
每一个卷积层中卷积核的参数都是一样的,这就巨幅减少了网络结构中的参数量。假设我们卷积核的尺寸为5 * 5,深度为16(可以理解为16个不同的5 * 5的而为过滤器),那么这一层的参数就是5 * 5 * 3 * 16 + 16 = 1216个。倘若我们使用全连接神经网络,一个32 * 32 * 3的输入,在第一层有200个隐藏节点,那么就需要32 * 32 * 3 * 200 + 200 = 614600个参数。
步长和padding(填充)
前面可以看到,大小为5×5的矩阵与大小为3×3的滤波器进行卷积运算,得到的结果是大小为3×3的矩阵。假设矩阵的大小为n×n,而滤波器的大小为f×f,f一般是个奇数,则卷积后结果的大小就为(n−f+1)×(n−f+1)。(相当于去除了图像最外面一圈的像素)
卷积计算过程中,原来的矩阵与滤波器进行卷积后的结果中损失了部分,每经过一次卷积计算,原数据都会减小。可以使用padding对原矩阵填充。
在进行卷积操作前,在原矩阵的边界上填充一些值,以增加矩阵的大小,通常都用“0”作为填充值。
卷积方式:
注:p是填充数量,f是滤波矩阵大小,n是原矩阵大小。
步长(Stride) 表示filter在原图片中水平方向和垂直方向每次的步进长度。若stride=2,则表示filter每次步进长度为2,即隔一点移动一次。
池化层用于卷积层中间,可以有效的缩减矩阵的尺寸,进一步减少参数量,加快运算并防止过拟合。
池化层神经网络不会改变三维矩阵的深度,但是它可以缩小矩阵的大小。池化操作可以认为是将一张分辨率较高的图片转化为分辨率较低的图片。通过池化层,可以进一步缩小最后全连接层中节点的个数,从而达到减少整个神经网络中的参数的目的。
池化层的使用类似于卷积层,它规定一个窗口大小,比如2 * 2, 然后将输入中每2 * 2的区域用一个值来代替。
最大池化层(max pooling) 使用最大值操作,是被使用得最多的池化层结构。
平均池化层(average pooling) 使用平均值操作。
注意: 池化层不仅需要在长和宽的维度上移动,它还需要在深度的维度上移动,且每次的过滤器可能是不同的 。
我们可以将卷积层和池化层看成自动图像特征提取的过程。
经过若干层卷积和池化之后,我们需要全连接层来进行最后的分类。这里的全连接就跟全连接神经网络的全连接步骤一样。
全连接层(fully connected layers,FC) 在整个卷积神经网络中起到“分类器”的作用。
softmax位于卷积神经网络层的最后一层,用于分类问题。
softmax的输入是T * 1的向量,输出也是T * 1的向量,只不过输出的向量的每个值的大小范围为0到1。softmax的输出向量就是该样本属于各个类的概率。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。