CNNs学习笔记
一 基本原理
1) 反向传导算法
在机器学习中,给定了测试数据集后经过一个模型后得到的一个实际输出数据集,为了刻画实际值与理想值之间的关系,我们定义了一个代价函数,有时也叫损失函数:
下图为神经网络的一般模型:
前向传导即根据每个神经元的权值来推导出下一个神经元的权值。对于一个神经网络,给出输入(x,y)后我们首先要进行“前向传导”运算,计算出网络中所有的激活函数值,包括最终的输出值。
最终的结果应该是求取得到的权重参数和偏置参数而使代价函数最小。传统的神经网络一般采用“反向传导法”来求解,采用迭代的算法来训练整个网络,随机设定参数初值,计算当前网络的输出,然后根据当前输出与标准值之间的差,即代价函数,去改变前面各层的参数,直到代价函数的值达到最小。可以选择多种优化方法比如梯度下降法,每一次迭代都会对权重参数和偏置参数得到更新。这种由后向前求导的过程即为“反向传导”之意。
2) 卷积神经网络
卷积神经网络与一般的神经网络相比,具有结构简单、训练参数少喝适应性强等特点。其优点在输入是多维图像时表现更明显,使图像可以直接作为系统的输入,避免了传统识别算法中复杂的特征提取和数据重建过程。在CNN中,图像的一小部分(局部感受区域)作为层级结构的最低层的输入,信息再依次传输到不同的层,每层通过一个数字滤波器去获得观测数据的最显著的特征。这个方法能够获取对平移、缩放和旋转不变的观测数据的显著特征,因为图像的局部感受区域允许神经元或者处理单元可以访问到最基础的特征,例如定向边缘或者角点。
卷积神经网络是一个多层的神经网络,每层由多个二维平面组成,而每个平面由多个独立神经元组成。
下面具体了解卷积神经网络。
二 卷积神经网络
1) 网络结构
网络中包含一些简单元和复杂元,分别记为S-元和C-元。S-元聚合在一起组成S-面,S-面聚合在一起组成S-层,用US表示,C元有类似的结构。一般的,US为特征提取层,每个神经元的输入与前一层的局部感受野相连,输入图像通过和滤波器进行卷积后,提取该局部的特征,一旦该局部特征被提取出来后,它与其他特征的位置关系也随之确定了下来。每一个特征提取层都紧跟着一个用来求局部平均与二次提取的计算层Uc,也是特征映射层,网络的每个计算层由多个特征映射平面组成,平面上所有神经元的权值相等。由于一个映射面上的神经元共享权值,因而减少了网路自由参数的个数,从而降低了网络参数选择的复杂度。
下图是一个7层结构的CNN。
由图可知道通过卷积层得到C层即特征提取层,;再通过下采样得到S层即特征映射层。
2) 局部感受野与权值共享
卷积神经网络核心的思想就是局部感受野local receptive fields、权值共享shared weights以及池化pooling,以达到简化网络参数并使网络具有一定程度的位移、尺度、形状不变性。
由于图像的空间联系时局部的,每一个神经元不需要对全部图像做感受,而只需感受局部图像,然后在更高层将这些感受不同局部的神经元综合起来就可以得到全局的信息了。这样我们可以减少连接的数目。而不同神经元之间的参数共享可以减少需要求解的参数。使用多种滤波器去卷积图像就会得到多种特征映射,称之为Feature Maps。
3) 卷积层与下采样层
为什么要有卷积层呢,因为通过卷积运算我们可以提取出图像的特征。
为什么要有下采样层呢,因为对图像进行子抽样,可以减少数据处理量同时保留有用信息。
卷积和子采样过程:卷积过程包括:用一个可训练的滤波器fx去卷积一个输入的图像(第一阶段是输入的图像,后面的阶段就是卷积特征map了),然后加一个偏置bx,得到卷积层Cx。子采样过程包括:每邻域四个像素求和变为一个像素,然后通过标量Wx+1加权,再增加偏置bx+1,然后通过一个sigmoid激活函数,产生一个大概缩小四倍的特征映射图Sx+1。
所以,从一个平面到下一个平面的映射可以看作是做卷积运算,S-层可以看作是模糊滤波器,起到二次特征提取的作用。