文档库 最新最全的文档下载
当前位置:文档库 › CNNS

CNNS

CNNS
CNNS

作者微博:https://www.wendangku.net/doc/438212170.html,/txg198955/p/4057292.html

Gradient-based learning applied to document recognition。这是1998年Yann Lecun 的一篇大作,是研究CNN必看的一篇文章。文中提出的Le-Net5模型很好的识别了Mnist的手写体,此模型也被用到了很多银行的钞票识别上。下面来研究这篇paper的成果。文章参考:https://www.wendangku.net/doc/438212170.html,/zouxy09/article/details/8781543

在分析这篇paper之前我们先要讲下CNN的基本原理,卷积神经网络是人工神经网络的一种,随着今年来DL的热潮而重新为人们所关注,卷积网络是为识别二维形状而特殊设计的一个多层感知器,这种网络结构对平移、比例缩放、倾斜或者共他形式的变形具有高度不变性。

CNN的历史:

1962年Hubel和Wiesel通过对猫视觉皮层细胞的研究,提出了感受野(receptive field)的概念,1984年日本学者Fukushima基于感受野概念提出的神经认知机(neocognitron)可以看作是卷积神经网络的第一个实现网络,也是感受野概念在人工神经网络领域的首次应用。神经认知机将一个视觉模式分解成许多子模式(特征),然后进入分层递阶式相连的特征平面进行处理,它试图将视觉系统模型化,使其能够在即使物体有位移或轻微变形的时候,也能完成识别。通常神经认知机包含两类神经元,即承担特征抽取的S-元和抗变形的C-元。S-元中涉及两个重要参数,即感受野与阈值参数,前者确定输入连接的数目,后者则控制对特征子模式的反应程度。许多学者一直致力于提高神经认知机的性能的研究:在传统的神经认知机中,每个S-元的感光区中由C-元带来的视觉模糊量呈正态分布。如果感光区的边缘所产生的模糊效果要比中央来得大,S-元将会接受这种非正态模糊所导致的更大的变形容忍性。我们希望得到的是,训练模式与变形刺激模式在感受野的边缘与其中心所产生的效果之间的差异变得越来越大。为了有效地形成这种非正态模糊,Fukushima提出了带双C-元层的改进型神经认知机。

Van Ooyen和Niehuis为提高神经认知机的区别能力引入了一个新的参数。事实上,该参数作为一种抑制信号,抑制了神经元对重复激励特征的激励。多数神经网络在权值中记忆训练信息。根据Hebb学习规则,某种特征训练的次数越多,在以后的识别过程中就越容易被检测。也有学者将进化计算理论与神经认知机结合,通过减弱对重复性激励特征的训练学习,而使得网络注意那些不同的特征以助于提高区分能力。上述都是神经认知机的发展过程,而卷积神经网络可看作是神经认知机的推广形式,神经认知机是卷积神经网络的一种特例。

CNN的结构:

卷积神经网络是一个多层的神经网络,每层由多个二维平面组成,而每个平面由多个独立神经元组成。

输入图像和三个不同的Filter经过卷积,加偏置,通过一个sigmoid函数得到C1,C1我们称之为Feature Map。然后C1经过sub-samples(相邻四个像素求平均,加偏置)得到

S2,S2中的每个Map经过Filter,加偏置,通过sigmoid函数得到C3,C3经过sub-sample 得到S4。如此反复,最终,这些像素值被光栅化,并连接成一个向量输入到传统的神经网络,得到输出。

一般地,C层为特征提取层,每个神经元的输入与前一层的局部感受野相连,并提取该局部的特征,一旦该局部特征被提取后,它与其他特征间的位置关系也随之确定下来;S层是特征映射层,网络的每个计算层由多个特征映射组成,每个特征映射为一个平面,平面上所有神经元的权值相等。特征映射结构采用影响函数核小的sigmoid函数作为卷积网络的激活函数,使得特征映射具有位移不变性。

此外,由于一个映射面上的神经元共享权值,因而减少了网络自由参数的个数,降低了网络参数选择的复杂度。卷积神经网络中的每一个特征提取层(C-层)都紧跟着一个用来求局部平均与二次提取的计算层(S-层),这种特有的两次特征提取结构使网络在识别时对输入样本有较高的畸变容忍能力。(这些文中都有说明)

CNN除了对shifts和distortions有较好的鲁棒性,CNN还具有传统人工神经网络不具备的一个优势,那就是“权值共享”。关于“权值共享”也许很多人有疑问,其实很简单,我的理解就是对于一个input,虽然有很多感受野(size:5x5),我们都只需要用同一个权值矩阵(Filter)与其相乘,加偏置。也就是说,所有的“感受野”的权值是共享的。这样可能有人就有疑问:“这样我们一副图像所提取的特征不就是相同的了吗”。不错,同一个Filter提取的Feature确实是相同的,但是我们这里可以用不同的Filter啊,这样我们就可以提取我们想要的特征(关于这个特征滤波器的选择,马毅的一篇PCANet中利用PCA提取trianImges的8个主成分,然后用每个主成分构成Filter,取得了非常不错的识别效果。)关于权值共享,这篇博文里面讲的非常清楚。https://www.wendangku.net/doc/438212170.html,/zouxy09/article/details/8781543

(左边:Fully connection 右边:locally connection)

好了,了解了CNN的相关知识,现在我们可以进入这篇Paper的学习了。

文章前面所讲到的一些数学优化的算法我们在此略过,直接分析文章的最核心部分,也就是文章给出的那篇网络结构。

不含输入层,此网络层一共有七层(C1,S2,C3,S4,C5,F6,output),这里我们输入的图片选为32x32(目的是使得手写体的特征都能在每个patch的中间,比如…7?,最左上角的一个endpoint,右上角的Corner,和下面的endpoint,都刚好在patch的中间)。

每一个patch就是一个(感受野)。C1层具有6个Feature Maps,每个

Feature Maps连接着input的一个5x5的“receptive field”,这样每个receptive field就有5x5+1 = 26 个参数了。第二层的28*28是这样得到的,input中的receptive field的size 是5x5,step为1,所以每行和每列都有(32-5+1 = 28)个神经元(经过sigmoid函数后这是一个具体的数)。所以Layer C1一共有26*6 = 156个parameters,

156*28*28=122304个connections。

从Layer C1到Layer C2的过程是这样的。对于C1中的每个Feature Map,相邻的2x2区域求average,加上一个偏置,并且相邻的2x2区域部重叠。这样每个2x2的区域就有(1+1=2)个参数,整个S2层一共有2x6=12个参数。每个2x2区域有(4+1=5)个connections,所以一共有(4+1)*14*14=5880个connections。

从Layer S2到Layer C3要麻烦一些,这里首先要声明,不同于input到C1,这里的S2到C3,并非每个C3中的Feature map都和S2相连接。具体的连接情况如下图所示:

用文中的原话就是:The first six C3 feature maps take inputs from every contiguous subsets of three feature maps in S2。The next six take input from every contiguous subset of four. the next three take input from some discontinuous subsets, finally the last one takes from all S2 features maps.关于为什么要这么做文中也有讲解,具体列出了两个原因(个人不是很懂,具体可看paper)。这样我们C3层一共就有(3*6*26 + 4*9*26 + 6*26 = 1560)个参数,文章中的1516是错误的。一共有1560*100=156000个connections。

从Layer C3 到Layer S4分析如上sub-samples所示,一共有(1+1)x16=32个参数,(4+1)*5*5*16=2000个connections。C5的参数个数文中具体给出来的也没有分析,具体分析过程和S2到C3相同。F6层的之所以是84是由输入层决定的(每类有84个样本)。最后,输出层由欧式径向基函数(Euclidean Radial Basis Function)单元组成,每类一个单元,每个有84个输入。换句话说,每个输出RBF单元计算输入向量和参数向量之间的欧式距离。输入离参数向量越远,RBF输出的越大。一个RBF输出可以被理解为衡量输入模式和与RBF相关联类的一个模型的匹配程度的惩罚项。用概率术语来说,RBF输出可以被理解为F6层配置空间的高斯分布的负log-likelihood。

yi是第i类,xj是第i类的第j个样本。接着我们来计算损失函数:loss function

接着我们就可以用优化算法求出loss function的最小值,更新权值。。。。。

相关文档