卷积神经网络(CNN)

CNN定义
CNN主要用来识别位移、缩放及其他形式扭曲不变性的二维图形/卷积神经网络是一种高效识别方法 在模式分类领域,由于该网络避免了对图像的复杂前期预处理,可以直接输入原始图像,因而得到了更为广泛的应用CNN 在本质上是一种输入到输出的映射,它能够学习大量的输入与输出之间的映射关系,而不需要任何输入和输出之间的精确的数学表达式,只要用已知的模式对卷积网络加以训练,网络就具有输入输出对之间的映射能力。

CNN与BP( 全连接网络)的差异
卷积神经网络是在BP神经网络的改进,与BP类似(BP (Back Propagation)神经网络,即误差反向传播算法的学习过程,由信息的正向传播和误差的反向传播两个过程组成 误差后向传输前向反馈”表示系统根据误差调整网络权值,在下次计算时使误差减小 ),都采用了前向传播计算输出值,反向传播调整权重和偏置;CNN与标准的BP最大的不同是:CNN中相邻层之间的神经单元并不是全连接,而是部分连接,也就是某个神经单元的感知区域来自于上层的部分神经单元,而不是像BP那样与所有的神经单元相连接。

应用场景
卷积神经网络的应用不可谓不广泛,主要有两大类,数据预测和图片处理。数据预测自然不需要多说,图片处理主要包含有图像分类,检测,识别,以及分割方面的应用。
图像分类:场景分类,目标分类
图像检测:显著性检测,物体检测,语义检测等等
图像识别:人脸识别,字符识别,车牌识别,行为识别,步态识别等等
图像分割:前景分割,语义分割

CNN结构
卷积神经网络主要是由输入层、卷积层、激活函数、池化层、全连接层、损失函数组成,表面看比较复杂,其实质就是特征提取以及决策推断。要使特征提取尽量准确,就需要将这些网络层结构进行组合,比如经典的卷积神经网络模型AlexNet:5个卷积层+3个池化层+3个连接层结构。

卷积层(Convolutional
layer),卷积神经网路中每层卷积层由若干卷积单元组成,每个卷积单元的参数都是通过反向传播算法优化得到的。卷积运算的目的是提取输入的不同特征,第一层卷积层可能只能提取一些低级的特征如边缘、线条和角等层级,更多层的网络能从低级特征中迭代提取更复杂的特征。

线性整流层(Rectified Linear Units layer, ReLU layer),这一层神经的激活函数使用线性整流 激活函数都是非线性的,为系统引入非线性因素,可以非线型分类。激活函数是用来加入非线性因素的,因为线性模型的表达能力不够。
以下,同种颜色为同类数据。某些数据是线性可分的,意思是,可以用一条直线将数据分开
卷积神经网络(CNN)_第1张图片但是有些数据不是线性可分的。比如如下数据:
卷积神经网络(CNN)_第2张图片卷积神经网络(CNN)_第3张图片
知乎上关于引入非线性激活函数的解释 

池化层(Pooling
layer),通常在卷积层之后会得到维度很大的特征,将特征切成几个区域,取其最大值或平均值,得到新的、维度较小的特征。池化也是一个降采样的过程,它的作用首先是降低了计算复杂度,另外可以防止过拟合,并提取更粗维度(概况)的特征信息。

全连接层( Fully-Connected layer), 把所有局部特征结合变成全局特征,作用:分类器角色,将特征映射到样本标记空间,本质是矩阵变换(affine)。用来计算最后每一类的得分类,训练的参数,使得训练出来的模型的泛华能力更强。

前向传播(forward propagation)
前向传播包含之前的卷积,Relu激活函数,池化(pool),全连接(fc),可以说,在损失函数之前操作都属于前向传播。
主要是权重参数w , b 初始化,迭代,以及更新w, b,生成分类器模型。

反向传播(back propagation)
定义
我们可以将反向传播算法定义为在已知分类的情况下,为给定的输入模式训练某些给定的前馈神经网络的算法。 测量输出响应与期望输出与误差值的比较。之后,我们根据测量的误差值调整连接权重。经网络训练是通过反向传播实现的。通过这种方法,我们根据前一次运行获得的错误率对神经网络的权值进行微调。正确地采用这种方法可以降低错误率,提高模型的可靠性。利用反向传播训练链式法则的神经网络。简单地说,每次前馈通过网络后,该算法根据权值和偏差进行后向传递,调整模型的参数。典型的监督学习算法试图找到一个将输入数据映射到正确输出的函数。反向传播与多层神经网络一起工作,学习输入到输出映射的内部表示。
反向传播包含损失函数,通过梯度计算dw,db,Relu激活函数逆变换,反池化,反全连接
参数调整流程:
1、 计算loss–loss是根据网络输入值和真实值求解获得,与网络参数有关
2、根据loss使用梯度下降法进行反向传播–梯度下降的BP算法,参考微积分链式求导法则.
梯度下降:根据下方链接所提出的方法可以计算出一个梯度值及梯度向量,使
神经网络的参数像梯度向量(梯度减小的方向变动)
反向传播导数的求解,参照神经网络那片博客

CNN的三个重要的思想架构:

通过介绍卷积计算过程及其特性,可以看出卷积是线性操作,并具有平移不变性 ,平移不变性即在图像每个位置执行相同的操作。卷积层的局部连接和权重共享使得需要学习的参数大大减小,这样也有利于训练较大卷积神经网络。

局部区域感知**
局部区域感知能够发现数据的一些局部特征,比如图片上的一个角,一段弧,这些基本特征是构成动物视觉的基础;而BP中,所有的像素点是一堆混乱的点,相互之间的关系没有被挖掘。

权重共享 CNN本质上就是利用一个共享参数的过滤器(kernel)通过计算中心像素点以及相邻像素点的加权和来构成feature map 实现空间特征的提取,这些加权系数就是卷积核的权重系数
CNN中每一层的由多个map组成,每个map由多个神经单元组成,同一个map的所有神经单元共用一个卷积核(即权重),卷积核往往代表一个特征,比如某个卷积和代表一段弧,那么把这个卷积核在整个图片上滚一下,卷积值较大的区域就很有可能是一段弧。注意卷积核其实就是权重,我们并不需要单独去计算一个卷积,而是一个固定大小的权重矩阵去图像上匹配时,这个操作与卷积类似,因此我们称为卷积神经网络,实际上,BP也可以看做一种特殊的卷积神经网络,只是这个卷积核就是某层的所有权重,即感知区域是整个图像。权重共享策略减少了需要训
注意权重只是对于同一深度切片的神经元是共享的,在卷积层,通常采用多组卷积核提取不同特征,即对应不同深度切片的特征,不同深度切片的神经元权重是不共享。另外,偏重对同一深度切片的所有神经元都是共享的。

多层卷积
在实际应用中,往往使用多层卷积,然后再使用全连接层进行训练,多层卷积的目的是一层卷积学到的特征往往是局部的,层数越高,学到的特征就越全局化。

部分引用于https://www.cnblogs.com/further-further-further/p/10430073.html

你可能感兴趣的:(人工神经网络)