卷积神经网络
1、卷积神经网络和神经网络
卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),像ANN一样,在神经网络的搭建中,就像乐高积木一样通过组装不同的层来进行构建。不过,在CNN中新出现了卷积层(Convolution层)和池化层(Pooling层)。
在神经网络中,相邻的神经元之间都有链接,因此也称之为全连接,通常我们使用Affine层进行神经元的全连接,之后Affine层后面紧跟着激活函数层,这样的结构在隐藏层中会有很多层,最终输出的时候由Softmax层来输出最终的结果。
而卷积神经网络则是将 Affine层 + 激活函数层 换成了卷积层(Convolution层) + 激活函数层 +池化层(Pooling层)
2、卷积层
当我们对一个图片进行操作的时候,在神经网络中,全连接层(Affine层)使用的操作是将这个三维的数组拉伸为一维的数组,这样的操作其实会让图片原本的形状信息丢失,因此无法利用到图像这些形状特征。在卷积神经网络中,我们通过卷积以及池化操作后,原本输入的是一个三维的数组,我们得到的输出也会是一个三维数组,因此可以使用到图像的形状特征。
2.1、卷积操作
卷积操作的原理便是类似于滤波器的效果,,通过卷积运算对输入数据使用滤波器。图片中黄色的为滤波器,将数组表示的原始图片中对应位置的数值与滤波器对应位置的数值进行乘积累加运算(相乘再相加)。然后将这个结果保存在输出对应的位置中,即图片中的Convolved Feature中,将这个操作对整个图片进行一遍。
在神经网络中的全连接层中会使用到权重,而在卷积神经网络中对应的便是滤波器的数据。而在神经网络中会在运算中加上偏置的操作,而对应的卷积神经网络中也会有类似的操作,其操作便是将上图中的Convoluted Feature中的数值分别加上偏置。下图展示了RGB三个通道图片的卷积运算过程,共有两组卷积核,每组卷积核都有三个filter分别与原图的RGB三个通道进行卷积。每组卷积核各自生成一个feature map。
2.2、感受野
感受野指的是一个特定的CNN特征(特征图上的某个点)在输入空间所受影响的区域。一个感受野可以用中心位置(center location)和大小(size)来表征。上述的概念看起来晦涩难懂,其实简单来说,感受野就是一张图片卷积操作之后得到的Feature map,原图片与Fearture map的比值便是感受野的大小,一张图片A(5 * 5)通过卷积操作之后获得了一个Feature map(1 * 1),那么他的感受野就是5 * 5。
2.3、填充操作
在卷积操作中,卷积操作会让图像一点点变小,但是在深层的卷积神经网络中会经过多次的卷积操作,因此得到的Feature map会变得越来越小,这样就使卷积神经网络的操作丧失了意义,因此我们选择通过对图像边缘进行填充来保证卷积之后输出的Feature map的大小。通常选择填充的数值为0或者1.
2.4、步长
步长(stride)是卷积操作中的一个重要参数,用来控制滤波器每次移动的位置,类似于计算机网络中的滑动窗口的操作,滤波器从原图的左侧向右侧进行滑动,每次滑动的多少便被称之为步长(stride)。
3、池化层
3.1、池化操作
池化操作也被称之为是下采样。池化操作是缩小高、长方向上的空间运算。简单来说就是用一个像素表示图片中一块区域的像素组。这样的操作在缩小Feature map的同时也能保证其鲁棒性(当图片有细小位置偏差能返回同一个值)。
上图是池化的操作过程,值得注意的是:在池化过程中,池化的步长和池化的窗口大小一般会设置为一样大,且池化不需要学习参数,池化只是从图片中获取最大值或者平均值的操作。池化过后的输出对于其通道数不会有改变。
3.2、池化的种类
池化分别有最大值池化(MAX池化)和平均值池化(Average池化),在图像处理过程中,最常用到的池化操作时MAX池化。
4、全连接层
这里的全连接层与人工神经网络的全连接层一样。输出的每个神经元都和上一层每一个神经元连接。
全连接层隐藏层的层数、神经元个数也是人为根据经验指定的(这叫做超参数),但其内部的参数是训练出来的。