论文要点总结:Gradient-Based Learning Applied to Document Recognition

https://blog.csdn.net/Harvey_Hawk/article/details/107430077?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param#A.%20卷积网络

https://blog.csdn.net/Harvey_Hawk/article/details/107645636?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param

这篇Yann LeCun于1998年发表在Proceedings of the IEEE的论文是深度学习领域的一篇经典综述,主要内容是:以字符识别为例,证明使用基于梯度的反向传播训练的多层神经网络优于手动提取特征的识别算法。因全文较长,下面将对认为重要的内容进行总结。

GitHub实现:LeNet-5-TensorFlow

目录

摘要

关键词

I. 介绍

    A. 从数据中学习

    B. 基于梯度的学习

    C. 梯度反向传播

    D. 在真实手写识别系统中的学习

    E. 全局训练系统

II. 用于孤立字符检测的卷积神经网络

    A. 卷积网络

    B. LeNet-5

    C. 损失函数


摘要

选定合适的网络结构,基于梯度的学习算法可以被用于形成一个复杂的决策面,只需最少的预处理即可对如手写数字等高维模式进行分类。

在字符识别中,一个新的学习范式GTN(图转移网络)能将多个任务(如字符区域提取、分割、识别以及语言建模等)使用基于梯度的最小化某个整体性能指标(损失函数)的方法来共同训练。

通过实验证明了全局训练方法的优势,以及图转移网络的灵活性。

关键词

卷积神经网络,文档识别,有限状态转移机,基于梯度的学习,图转移网络,机器学习,神经网络,光学字符识别(OCR)。

I. 介绍

本文的主旨是:通过更多地使用自动学习,而非手动设计的启发式方法,能建立更好的模式识别系统。

使用字符识别作为研究案例,我们揭示了手动特征提取可以被一种直接作用在像素图像上的学习算法很好地取代,这种统一的范式称之为GTN。

在模式识别的早期,人们已经发现自然数据(不论是语音、符号还是其他模式)的多变性和丰富性使得完全通过手动来建立一个准确的识别系统是几乎不可能的。因此,大多数模型识别系统的建立是通过将自动学习方法(可训练的分类器)与手动设计算法(特征提取器)相结合(如Fig.1)。

特征提取器将输入数据转化为低维向量或短字符串,使其:1、容易被匹配或比较;2、对(未发生本质变化的)输入数据的变化与畸变保持相对不变性。

这一方法最大的一个问题是:识别精度严重依赖于设计者找到一组合适特征的能力,这导致对每一个新问题都需要重新进行这一步骤。

从历史上看,对合适的特征提取器的需求是基于这一事实:用于分类器的学习方法被限制在容易分类的低维空间[1]。近几十年来,三个因素改变了这一点:1、具有快速运算单元的低成本机器允许依赖更多的蛮力“数值”方法,而不是算法的改进;2、对如手写识别等问题的大量数据的出现使得设计者能更多地依赖真实数据而非手动提取的特征来建立识别系统;3、(关键)当使用这些大量的数据集训练时,能处理高维输入的强大的机器学习算法可以生成复杂的决策函数。

尽管更多使用自动学习效果更好,没有一个学习算法可以在不使用(最少量的)任务的先验知识的情况下获得成功。对多层神经网络,一个结合先验知识的好办法是根据任务调整网络结构。在Section II中介绍的卷积神经网络是一种特殊的神经网络结构,通过使用局部连接模式与对权重施加限制的方式,将关于二维形状不变性的先验知识(与网络)结合起来[2]。

为了从识别单个字符扩展到识别文档中的单词或句子,在Section IV介绍将多个模型结合起来训练以减小总误差的方法。使用多模型系统识别如手写单词等变长对象的最好是使这些模型操作有向图。这在Section IV引入了可训练GTN的概念。

Section V介绍了一种现在的经典方法HOS(heuristic oversegmentation,启发式分割),用于识别单词或其他字符串。

无需手动划分单词并标注的、用于在单词级别训练识别器的、判别与非判别式的基于梯度的方法在Section VI介绍。

Section VII提出了一种空间位移神经网络,通过扫描一个在输入的所有可能方向的识别器,而不需要分割启发式方法。

Section VIII显示可训练的GTN可表述为基于一个通用的图构成算法生成的多个转换器。也介绍了GTN与常被用于语音识别的HMM(隐马尔科夫模型)的联系。

Section IX介绍了一个用于识别通过手写输入计算机的内容的全局训练GTN系统。这一问题称之为“在线”手写识别,因为计算机必须在用户书写时生成即时反馈。该系统的核心为一个卷积神经网络。结果清楚地证明了在单词级别训练识别器,而非在预先分割、手动标注的单独的字符上训练的优势。

Section X描述了一个完整的用于识别手写与打印的银行支票的基于GTN的系统,核心是称为LeNet-5(Section II)的卷积神经网络。

A. 从数据中学习

有许多自动机器学习方法,但近年来在神经网络社区最成功的方法之一,被称为“数值的”或基于梯度的学习。该方法学习一个函数Y^{p}=F(Z^{p},W),其中Z^{p}为第p个输入模式,W代表系统中所有可学习的参数。输出Y^{p}既可为Z^{p}的类别,也可为每一类的得分或概率。损失函数E^{p}=D(D^{p},F(W,Z^{p}))衡量Z^{p}的期望输出D^{p}与系统输出的差异。平均损失函数E_{train}(W)E^{p}在整个训练集上的平均,学习问题即为寻找使得E_{train}(W)最小的W。

实际中,并不要求在训练集上取得最低错误率,更重要的是在系统的实际使用环境中的表现,称之为测试集。许多理论与实验[3-5]证明了E_{test}(泛化误差)与E_{train}的差异与训练样本个数的关系:E_{test}-E_{train}=k(h/P)^{\alpha },其中P是训练样本个数,h衡量模型的“有限容量”或复杂度[6, 7],\alpha是一个取值范围在[0.5, 1]的数,k是常数。因此,当h增加时,存在一个权衡:降低E_{train}与提高E_{test},而最佳的h值对应取得最低的E_{test}

大多数学习算法致力于最小化E_{train}与估计E_{test}E_{train}之间的差异。其中的一个正式版本称为结构风险最小化[6, 7],基于定义一系列模型容量不断增长的学习机,对应一系列参数空间子集,每一个子集都是之前所有子集的超集。实际条件中,结构风险最小化的对象是E_{train}+\beta H(W),其中H(W)称为正则函数,\beta是一个常数。H(W)被设计为对属于较大容量的参数空间子集的W取较大的数值。最小化H(W)实际上就是限制参数空间的容量(模型大小),控制最小化训练误差和最小化训练误差和测试误差之间的期望差距之间的权衡。

B. 基于梯度的学习

基于梯度的学习更容易最小化一个相对平滑、连续的函数,而非一个离散(组合)函数。损失函数的最小化可以通过衡量参数值的微小变化对损失函数的影响,即计算损失函数对这些参数的梯度。(原因是)梯度向量可以被解析计算,而非通过数值扰动。这是许多具有连续值参数的基于梯度的学习算法的基础。在本文中,W是实值向量,损失函数E(W)连续且几乎处处可微。最简单的最小化(损失函数)方法是梯度下降算法,如W_{k}=W_{k-1}-\epsilon\frac{\partial E(W)}{\partial W}迭代调整W的值,其中\epsilon为常数。更复杂的算法将\epsilon设为变量,或用对角矩阵代替,或用逆Hessian矩阵代替(如牛顿/类牛顿法)。也可以使用共轭梯度法[8]。但是Appendix B表明,尽管在文献中有许多相反的说法,这些二阶方法对大型学习机的作用是非常有限的。

一个流行的最小化方法是随机梯度算法,也称为在线更新。该方法使用一个有噪声的近似平均梯度来更新参数向量。在这个过程中,参数向量在一个平均轨迹上下波动,但是在具有冗余样本的大型训练集上,它通常比普通梯度下降和二阶方法收敛得快得多(如语音或字符识别)。这一结论的原因在Appendix B中有提到。

C. 梯度反向传播

基于梯度的学习自20世纪50年代后期就开始使用,但大多局限于线性系统[1]。由于以下三个原因,这种简单的梯度下降算法对复杂机器学习算法的作用被广泛地认识到:1、在实际中,损失函数的局部极小值对非线性学习算法并不是一个主要问题[13, 14];2、在多层非线性系统中能简单、有效地计算梯度的方法的流行,如反向传播算法[15];3、反向传播算法被应用于带Sigmoid单元的多层神经网络,被证明可以解决复杂的学习任务。

关于反向传播,有一个基本的观点:从输出到输入使用反向传播,可以高效地计算梯度。有趣的是,在NN的上下文学习中,反向传播的早期版本并不使用梯度,而是在中间层单元使用“虚拟目标”[17, 18],或使用最小扰动参数[19]。

局部极小值对多层神经网络似乎并不构成问题,这在理论上是一个玄学。据推测,如果网络的“尺寸”对任务而言足够大(这在实际中是大多数情况),那么参数空间的“额外维度”的存在就能降低(最小化损失函数时)无法到达某些区域的风险。直到现在,反向传播算法是神经网络学习算法(甚至是任何形式的学习算法)中使用最广泛的。

D. 在真实手写识别系统中的学习

对孤立的手写字符的识别是神经网络的早期成功应用之一[23-25]。在Section III中介绍了孤立手写数字识别的对比实验。实验显示,对相同的数据,使用基于梯度的学习方法训练的神经网络优于所有对比方法。其中最好的神经网络,即卷积神经网络,能学习到如何直接从像素图像中提取相关特征(Section II)。

然而在手写识别中,最困难的问题之一并不只有识别单个字符,而是如何从单词或句子中将邻近的各个字符分离出来(分割)。这一任务的“标准”方法称为启发式分割(HOS)。首先,使用启发式图像处理技术在字符间生成大量的可能划分(cuts),接着根据识别器对每个候选字符给出的分数来选择最佳的划分组合。要训练这样的识别器是十分困难的,因为难以生成一个误分割字符的标注数据库。

第一个解决方案(Section V),在字符串而非字符级别进行训练,最小化一个度量错误回答概率的全局损失函数。该节中探索了多种方式以确保可微,因此使用基于梯度的学习方法;还介绍了有向无环图(有向无环图的弧携带数字信息作为替代假设的一种方式)的使用以及GTN的概念。

第二个解决方案(Section VII),让识别器在输入图像上的每一个可能的位置扫描,这一方法依赖于识别器的正确识别输入区域中中心对齐的字符的能力[26, 27]。将如此得到的识别器输出序列输入到一个含语言学约束、最后提取出最可能翻译的GTN中。GTN类似于隐马尔科夫模型,使得该方法与经典的语音识别方法有相似之处[28, 29]。尽管这种技术在一般情况下相当昂贵,但卷积神经网络的使用可以显著地节省计算成本,因此具有特别的吸引力。

E. 全局训练系统

最初,大多数实用的模式识别系统都由多个模块组成。在大多数情况下,从一个模块传递到另一个模块的信息最好用带有附在弧上的数字信息的图来表示。例如,识别模型的输出可以表示为一个无向图:每条弧包含了一个可能字符的标签和得分,每条通道代表输入字符串的一种可能解释。这种多个模块组装而成的识别系统训练过程复杂、费时,分别优化的效果也常常不是最优的。

一个更好的办法是对整个系统进行训练,使用基于梯度的方法最小化一个(可微的)在文档级别衡量字符误分类概率的全局误差(损失函数)。但是,系统的尺寸以及复杂度使得这一过程是困难的。

为保证全局损失函数E^{P}(Z^{P}, W)可微,整个系统是一个使用可微模块建立的前馈网络。每个模块实现的函数(非损失函数)必须对内部参数(如神经网络的权重)和输入处处连续且可微。这样的话,反向传播可以被用于对系统的所有参数高效地计算损失函数的梯度[22]。

例如,对一个通过多个模块级联建立的系统,各模块可表示为:X_{n}=F_{n}(W_{n},X_{n-1}),其中X_{n}为该模块的输出向量,W _{n}为该模块的可调参数向量(W的子集),X_{n-1}为该模块的输入向量(也是前一个模块的输出向量)。则若X_{n}已知,损失函数E^{p}W _{n}X_{n-1}的偏导数可计算为:

\frac{\partial E^{p}}{\partial W_{n}}=\frac{\partial F}{\partial W}(W_{n},X_{n-1})\frac{\partial E^{p}}{\partial X_{n}}

\frac{\partial E^{p}}{\partial X_{n-1}}=\frac{\partial F}{\partial X}(W_{n},X_{n-1})\frac{\partial E^{p}}{\partial X_{n}}

其中\frac{\partial F}{\partial W}(W_{n},X_{n-1})是F对W在(W_{n},X_{n-1})处的雅可比矩阵,\frac{\partial F}{\partial X}(W_{n},X_{n-1})是F对X的雅可比矩阵。第一个公式计算E^{p}(W)的梯度的一些项,第二个公式生成逆向递推,如同在神经网络的反向传播过程(中的计算)。我们可以对所有训练样本的梯度求平均来得到完整(训练样本)的梯度。

向量函数的雅可比矩阵是包含所有输出对所有输入的偏导数的矩阵。但有趣的是,不需要显式地计算雅可比矩阵。上式使用了雅可比矩阵与偏导数向量的乘积,直接计算这个乘积往往比较容易,不需要事先计算雅可比矩阵。

与普通的多层神经网络相似,除了最后一个模块外,其他模块都称为隐藏层,因为它们的输出从外部是不可观察的。在比上面描述的简单模块级联更复杂的情况下,偏导数表示变得模糊和笨拙。在更一般的情况下,可以用拉格朗日函数进行严格的推导[20-22]。

传统的多层神经网络是上述情况的一种特殊情况,其中状态信息X_{n}用固定尺寸的向量表示,模块是交替出现的矩阵乘法的层(权重)与sigmoid函数(神经元)。然而,如前所述,在复杂识别系统中,状态信息最好表示方式是使用在弧上附带数值信息的图。在这种情况中,每个称为GT的模块接受一个或多个图作为输入,并生成一个图作为输出。由这些模块组成的网络称为GTN。

Section IV,VI和VIII发展了GTN的概念,并表明基于梯度的学习可以用来训练所有模块中的所有参数,从而最小化全局损失函数。当状态信息由本质上离散的对象(如图形)表示时可以计算梯度,这似乎有些矛盾,但后文中这一困难是可以绕过的。

II. 用于孤立字符检测的卷积神经网络

在传统的模式识别模型中,人工设计的特征提取器从输入中收集相关信息,并排除不相关的变量。然后,一个可训练的分类器将得到的特征向量分类。在该方案中,可以使用标准的全连接多层网络作为分类器。一个可能更有趣的方案是,尽可能依赖于特征提取器自身的学习。在字符识别中,可以向网络输入几乎原始的数据(如尺寸归一化的图像)。虽然对于字符识别这样的任务,普通的全连接前馈网络取得了一定的成功,但也存在一些问题。

首先,图像很大,通常有几百个变量(像素)。一个全连接的第一层有(例如)100个隐藏单元,就已经包含了数万个权重。如此大量的参数增加了系统的容量,因此需要更大的训练集。此外,存储如此多权重的内存需求可能会排除某些硬件实现。但用于图像或语音应用的非结构化网络的主要缺陷是,它们对于输入的变换或局部失真没有内在的不变性。字符图像或其他二维/一维信号在被送到神经网络的固定尺寸的输入层之前,必须在输入中进行近似大小的归一化和集中。不幸的是,没有一种预处理是完美的:手写通常是在单词级别标准化的,这可能会导致单个字符的尺寸、倾斜和位置变化。理论上,一个足够大的全连接网络可以学习产生相对于这些变化保持不变的输出。然而,学习这样一个任务可能会导致多个权重模式相似的单元被放置在输入(层)的不同位置,以便检测输入中出现的有辨别性的特征。(但)在卷积网络中,如下所述,通过强迫权重配置在空间中复制,自动获得(对特征的)位移不变性。

其次,全连接结构的一个缺陷是完全忽略了输入的拓扑结构。输入变量可以以任何(固定)顺序表示,而不影响训练的结果。相反,图像(或语音的时频表征)有很强的2-D局部结构:在空间或时间上相邻的变量(或像素)高度相关。局部相关性是在识别空间或时间对象之前,提取和结合局部特征的优势的原因,因为相邻变量的配置结构可以分为少量类别(如边缘、角等)。卷积网络(的结构)通过限制隐藏单元的感受野为局部,来强制提取局部特征。

A. 卷积网络

注:此节中,一个单元指特征图中的一个像素。

卷积网络结合了三个结构性思想,保证了一定程度的位移、尺度和失真不变性:1)局部感受野;2)共享权重(或权重复制);3)空间或时间的下采样。

一个典型的用于识别字符的卷积网络LeNet-5如(Fig. 2)所示。输入层接收尺寸归一化和居中的字符图像。每一层中的每个单元都从位于前一层中一个小邻域内的一组单元接收输入。局部连接在视觉学习的神经模型中被多次使用[2, 18, 31-34]。通过局部感受野,神经元可以提取基本的视觉特征,如定向边缘、端点、角(或其他信号中的类似特征,如语音谱图)。这些特征然后被随后的层结合,以检测更高阶的特征。

一个层中的单元被组织在平面中,在平面中所有的单元共享相同的权重集合。在这样一个平面上的单元的输出集合称为特征图。特征图中的单元都被约束,以在图像的不同部分上执行相同的操作。一个完整的卷积层是由多个特征图组成的(用不同的权重向量),这样可以在每个位置提取多个特征,如LeNet-5的第一层。LeNet-5的第一个隐藏层中的单元被组织为六个平面,每个平面都是一个特征图。一个特征图中的一个单元有25个输入,连接到输入图像中的一个5*5的区域,称为该单元的感受野。每个单元有25个输入,因此有25个可训练系数(权重)加上一个可训练偏置。

如前所述,特征图中的所有单元共享同一组25个权重和相同的偏置,因此它们会在输入的所有可能位置检测到相同的特征。该层中的其他特征图使用不同的权重和偏置的集合,从而提取不同类型的局部特征。在LeNet-5中,在每个输入位置,六个单元在六个特征图的相同位置提取六个不同类型的特征。特征图的连续实现,将使用具有局部感受野的单个单元扫描输入图像,并将该单元的状态存储在特征图的相应位置。这个操作等价于卷积,然后加上一个附加的偏置和压缩函数(也称激活函数),因此被称为卷积网络。卷积的核是特征图中各单元所使用的连接权重集合。卷积层的一个有趣的特性是,如果对输入图像进行位移,则特征图输出也会被移动相同的位置,反之则保持不变。这一特性是卷积网络对输入的位移和失真具有鲁棒性的基础。

一旦一个特征被检测到,它的确切位置就不那么重要了。只有它相对于其他特征的近似位置是有意义的。这些特征的精确位置不仅与识别该特征无关,而且可能有害,因为这些位置可能因字符实例的不同而不同。降低特征图中特征位置编码精度的一种简单方法是降低特征的空间分辨率。这可以通过所谓的下采样层来实现,该层执行局部平均和下采样,从而降低特征图的分辨率,降低输出对位移和失真的敏感性。LeNet-5的第二个隐藏层是下采样层。这一层包含6个特征图,对应前一层中的每个特征图。每个单元的感受野为上一层对应的特征图中的一个2*2区域。每个单元计算它的四个输入的平均值,乘一个可训练系数,加上一个可训练偏置,然后将结果通过一个Sigmoid函数。相邻单元具有不重叠的相邻感受野。可训练系数和偏置控制了Sigmoid函数非线性的影响。如果系数很小,那么单元以准线性模式运行,下采样层仅仅是对输入进行模糊。如果系数较大,则下采样单位可视为执行一个“有噪声的或”或“有噪声的与”的函数,这取决于偏置的值。卷积和下采样层通常是连续交替进行的,结果是:在每一层,特征图的数量随着空间分辨率的降低而增加。Fig. 2中第三个隐藏层中的每个单元都可以具有来自前一层的多个特征图的输入连接。通过空间分辨率的逐步降低,可以很大程度地实现输入的几何变换不变性。空间分辨率的逐步降低由表示的丰富程度(即特征图的数量)的逐步增加来补偿。

权重共享有一个有趣的副作用,即减少自由参数的数量,从而减少机器的“容量”,并减少测试误差和训练误差之间的差距[34]。Fig. 2中的网络包含345308个连接,但由于权重共享,只有60000个可训练的自由参数。

在单一时间维度上共享权重的固定尺寸的卷积网络称为时延神经网络(TDNN)。TDNN已经被用于音素识别(不使用下采样)[40, 41],口语识别(使用下采样)[42, 43],孤立手写字符的在线识别[44]和签名验证[45]。

B. LeNet-5

本节将更详细地描述LeNet-5的结构,以及实验中使用的卷积神经网络。LeNet-5包含七层(不含输入层),每一层都有可训练的参数(权重)。输入为32*32像素图像。这比数据库中的最大字符大得多(最大为20*20,位于一个28*28的邻域中心)。其原因是希望潜在的显著特征如笔画端点或角,可以出现在最高阶的特征检测器的感受野的中心。在LeNet-5中,最后一个卷积层(C3,见下文)的感受野的中心,在32*32输入的中央形成一个20*20的区域。输入像素的值被归一化,以便背景(白色)对应-0.1的灰度值,前景(黑色)对应1.175的灰度值。这使得输入的平均值及方差大约为0,加速了学习[46]。

C1层包含156个可训练参数((5*5+1)*6=156)以及122304个连接(156*28*28=122304)。

S2层包含12个可训练参数((1+1)*6=12)以及5880个连接((2*2+1)*6*14*14=5880)。

Table 1显示了组成每个C3特征图的S2特征图集合。之所以不将每个S2的特征图与每个C3特征图连接(如同输入层到C1层的操作),有两个原因:1)不完全的连接方案将连接的数量控制在合理的范围内;2)更重要的是,该连接方式破坏了网络的对称性,使得(C3中)不同的特征图提取不同的(希望是互补的)特征,因为它们得到的是不同的输入。该方案的原理如下:1)0-5的C3特征图从S2中的三个特征图的每个相邻子集中获取输入;2)6-11从四个特征图的每个相邻子集中获取输入;3)12-14从四个特征图的一些不相邻子集中获取输入;4)15从所有特征图中获取输入。C3层包含1516个可训练参数以及156000个连接。

S4层包含32个可训练参数和2000个连接(计算同S2层)。

C5层是一个包含120个特征图(1*1)的卷积层。C5的每个单元与S4的所有16个5*5特征图相连接(相当于S4到C5是全连接的)。C5之所以被标记为卷积层而非全连接层,是因为如果在其他条件不变的情况下让LeNet-5的输入变大(大于28*28),feature map的维数就会大于1*1。这一动态增加卷积网络大小的过程将在Section VII中描述。C5层包含48120个连接。

F6层包含84个单元(产生这个数字的原因来自于输出层的设计,将在下面解释),并且与C5层完全连接。F6层包含10164个可训练参数((120+1)*84=10164)。

输出层由欧氏RBF(径向基函数)单元组成,每个类对应一个RBF单元以及84个输入。每个RBF单元的输入y_{i}的计算公式为y_{i}=\sum(x_{j}-w_{ij})^{2}。即每个RBF单元计算其输入向量与参数向量之间的欧式距离。在概率上,RBF输出可以解释为在F6层配置空间中的一个高斯分布的非标准化的负对数似然函数。这些RBF单元被设计成在一个7*12位图(因此F6层有84单元)上绘制对应字符类的程式化(stylized)图像。这样的表示对于识别孤立的数字并不是特别有用,但是对于识别从完全可打印的ASCII字符集中提取的字符串非常有用。原因是相似的字符会有相似的输出编码,因此容易混淆。如果该系统与能够纠正这种混淆的语言后处理器结合在一起,就会特别有用。因为易混淆类的编码是相似的,所以对于不明确的字符对应的RBF的输出将是相似的,而后处理器将能够选择正确的解释。Fig. 3给出了完整ASCII字符集的输出代码。

之所以使用这种分布式(distributed)编码(RBF)而不是非分布式编码作为输出,一个原因是,当有数十个类时非分布式编码表现很差。因为非分布式编码中的输出单元在大多数时候都必须关闭(为0),而这对Sigmoid单元这是很难做到的。

另一个原因是,分类器通常不仅用于识别字符,还用于拒绝非字符。带有分布式编码的RBF更适合这个目的,因为与Sigmoid不同,它们是在输入空间的一个边界明确的区域内被激活的,在这个区域之外,非典型的模式更有可能被抑制(fall)。

RBF的参数向量充当F6层的目标向量。值得指出的是,这些向量的分量是+1或-1,在F6层的Sigmoid函数值域范围内,因此可以防止这些Sigmoid函数饱和(会导致损失函数收敛缓慢或出现异常值)。事实上,+1和-1是Sigmoid函数的最大曲率点(极值点)。这迫使F6单元在他们的最大非线性范围内运行。

C. 损失函数

可用于上述网络的最简单的输出损失函数是最大似然估计,在我们的例子中,等价于最小均方误差(MSE)。一组训练样本的损失函数为E(W)=\frac{1}{P}\sum_{p=1}^{P}y_{D^{p}}(Z^{p},W),其中y_{D^{p}}是第D^{p}个RBF单元的输出,即与输入Z^{p}的正确分类对应。虽然这种损失函数适用于大多数情况,但它也存在缺陷。

如果RBF参数参与训练,可能出现所有RBF参数向量相等、F6层的状态为常数且等于该参数向量的情况。这样的话对任何输入,RBF单元的输出都为0。

此外,还可能出现不同类之前没有竞争(competition)的情况。可以使用区分性更强的最大后验概率损失函数,类似于有时用于训练隐马尔科夫模型(HMM)的最大互信息损失函数[48-50]。即相当于最大化正确类D^{p}的后验概率(或最小化正确类的概率的对数),假设输入图像可以来自其中一个类或来自背景“垃圾”类的标签。就惩罚而言,该损失函数除了像MSE一样可以减小正确类的惩罚之外,还可以增大错误类的惩罚:E(W)=\frac{1}{P}\sum_{p=1}^{P}(y_{D^{p}}(Z^{p},W)+log(e^{-j}+\sum e^{-y_{i}(Z^{p},W)}))。常数j是正的,可以防止当类的惩罚已经很大时,最终的值变得更大。垃圾类的后验概率为e^{-j}\sum e^{-y_{i}(Z^{p},W)})的比值。因为该损失函数使RBF单元的中心彼此分开,所以可以出现所有RBF参数向量相等的情况。在Section VI中,我们为学习对输入中的多个对象进行分类的系统(如文档中单词的字符)提供了这一损失函数的一般化形式。

考虑到权重分享,标准的反向传播算法需要稍加修改。一个简单的实现方法是,首先计算损失函数对每个连接的偏导数,就好像网络是一个传统的没有权值共享的多层网络;接着将分享一个共同参数的所有连接的偏导数相加,形成对该参数的导数。

可以非常有效地训练一个这样的大型系统,但是需要使用附录中描述的一些技术。Appendix A描述了一些细节,比如使用特定的Sigmoid函数和权重初始化。Appendix B和C描述了所使用的最小化过程,它是Levenberg-Marquardt过程的对角近似的随机版本。

前文:论文要点总结:Gradient-Based Learning Applied to Document Recognition(一)

GitHub实现:KNN-MNIST-TensorFlowRBF-Network-MNIST-TensorFlowNeural-Network-MNIST-TensorFlow

目录

III. 结果和与其他方法的对比

    A. 数据集:MNIST(Modified NIST)

    B. 结果

    C. 与其他分类器的对比


III. 结果和与其他方法的对比

虽然识别单个数字只是设计一个实际识别系统所涉及的众多问题之一,但它是比较形状识别方法的一个很好的基准。尽管许多现有方法是将手工特征提取器与可训练分类器结合,本文集中研究直接对尺寸归一化图像进行操作的自适应方法。

A. 数据集:MNIST(Modified NIST)

NIST数据集中,训练集中的数字要比测试集中的更加清晰、易于识别。将NIST数据重组后,得到本文中使用的MNIST数据集,由60000张训练图片与10000张测试图片组成。

MNIST数据集中,原始图像尺寸为20x20,像素值在0-1之间。该数据集有三种版本:1)常规数据集,原始图像位于一个28x28的图像中心,有时扩展边界为32x32(如LeNet-5中的操作);2)deslanted数据集,裁剪为20x20的图像;3)在一些早期的实验中使用过,裁剪为16x16。Fig. 4是测试集中随机抽取的一些例子。

B. 结果

在常规数据集上训练了多个版本的LeNet-5。每次都在整个训练集上迭代训练二十次。全局学习率\eta如下设定:前两次0.0005,接着三次0.0002,接着三次0.0001,接着四次0.00005,之后0.00001。在每次迭代之前,在500个样本上重新评估对角Hessian近似(如Appendix C描述的),并在本次迭代过程中保持不变。参数\mu设为0.02。在第一次迭代中,在参数集上的有效学习率大约在7\times 10^{-5}和0.016之间变化。测试错误率在训练集上迭代10次左右后稳定在0.95%。19次迭代后,训练集的错误率达到0.35%。

过度训练(过拟合)在训练神经网络等学习算法时经常出现,但在本实验中并未出现,如Fig. 5中的学习曲线所示。一个可能的原因是学习率保持相对较高。这样做的结果是,权重永远不会落在局部最小值上,而是一直随机地振荡。由于这些波动,平均代价将更低。因此,随机梯度与正则化项具有相似的效果,有利于更广的极小值(broader minima)。更广的最小值对应于参数分布熵大的解,有利于提高泛化误差。

通过对网络进行15000、30000和60000个样本的训练来衡量训练集大小的影响。得到的训练误差和测试误差如Fig. 6所示。很明显,即使使用像LeNet-5这样的专用架构,更多的训练数据也会提高精确度。

为了验证这个假设,我们通过随机扭曲原始训练图像来人为地生成更多的训练样本。增加后的训练集由60000个原始样本和540000个随机选取畸变参数的畸变样本组成。畸变使用以下平面仿射变换的组合:1)水平和垂直平移;2)缩放;3)挤压(同时进行水平压缩和垂直拉伸,或相反);4)在水平方向截取。Fig. 7是用于训练的畸变样本实例。加入了畸变样本后,测试误差从0.95%下降到0.8%。值得注意的是,在这20次迭代过程中,网络只有效地看到每个样本两次。

Fig. 8展示了全部82个误分类的测试样本。其中一些样本确实是模棱两可的,但有几个是完全可以被人类识别的,尽管它们的书写不太规范。这表明,使用更多的训练数据有望进一步改善实验结果。

C. 与其他分类器的对比

为了便于比较,在同一个数据集上对其他多种可训练分类器进行了训练和测试。一部分早期的结果在[51]中展示过。各方法的测试集错误率如Fig. 9所示。

1) 线性分类器和成对(Pairwise)线性分类器

人们认为最简单的分类器可能就是线性分类器。在常规数据集上的错误率为12%,网络有7850个自由参数。在deslanted数据集上,测试误差为8.4%,网络有4010个自由参数。线性分类器的缺陷在[1]中得到了很好的说明,在这里使用它只是作为一个比较更复杂的分类器的基础。Sigmoid单元、线性单元、梯度下降学习和直接求解线性系统的学习的多种组合都给出了类似的结果。

[52]中测试了基础线性分类器的简单改进。其思想是训练单层网络的每个单元来将各个类两两分开。在我们的例子中,这一层包含45个单元,标记为0/1,0/2,……,0/9,1/2,……,8/9。i/j单元被训练为对第i类生成+1,对第j类生成-1,且没有在其他类上做训练。第i类的最终分数是所有i/x单元输出的和减去所有y/i单元的差。在常规数据集上的测试错误率为7.4%。

2) 基础(Baseline)最近邻分类器

另一个简单分类器是衡量输入图像之间欧式距离的K-NN分类器。这种分类器的优点是不需要训练时间,也不需要设计者的思考。但是需要大量的内存和识别时间:在运行时需要完整的60000个20x20的训练图像(大约24M,每像素一个字节)。在错误率适度增加的情况下,可以设计出紧凑得多的表示。在常规数据集上的测试错误率为5%。在deslanted数据集上为2.4%,令k=3。

自然,一个实际的欧氏距离最近邻系统作用于特征向量而非直接在像素上,但是由于本研究中的其他所有系统都是直接作用于像素上,这个结果可以用于基础比较。

3) PCA与多项式分类器

像[53]和[54]一样,通过一个预处理过程将输入图像映射到训练向量集上的40个主成分。为了计算主成分,首先令训练向量的各元素减去它们的均值。然后计算得到的向量的协方差矩阵,并使用奇异值分解将矩阵对角化。采用40维的特征向量作为二次多项式分类器的输入。这个分类器可以看作是一个有821个输入的线性分类器,前面有一个计算输入变量对的所有乘积的模块。在常规数据集上的测试错误率为3.3%。

4) RBF网络

如[55]建立一个RBF网络。第一层由1000高斯RBF单元组成,输入图像尺寸为28x28,第二层是一个简单的1000个输入、10个输出的线性分类器。RBF单元分为10组,每组100个。每组单元使用自适应K-means算法在十个类中的一个类的所有训练样本上进行训练。采用正则化伪逆方法计算第二层权重。在常规数据集上的测试错误率为3.6%。

5) 单隐层全连接多层神经网络

我们测试的另一个分类器是一个具有两层权重(其中一个隐藏层)的全连接多层神经网络,使用Appendix C中描述的反向传播进行训练。

在常规数据集上,当网络有300个隐藏单元时测试误差为4.7%,隐藏单元数为1000时测试误差为4.5%。使用人为畸变来生成更多训练数据对结果只要些微改善:隐藏单元数为300时测试误差为3.6%,隐藏单元数为1000时测试误差为3.8%。当使用deslanted数据集时,隐藏单元数为300时测试误差大幅降低到1.6%。

拥有大量自由参数的网络能够得到相当少的测试错误,这仍是一个谜。我们推测多层网络中梯度下降学习的dynamics(怎么翻译好,,,)具有“自正则化”效应。由于权重空间的原点是一个在几乎每个方向都attractive的鞍点(既为极小值,又为极大值),在最初的几个epoch权重总是在下降(近期的理论分析似乎已经证明了这一点[56])。小权重使得Sigmoid单元运行在准线性区域(即原点附近),使得网络本质上相当于一个低容量的单层网络。随着学习的进行权重升高,这逐渐增加了网络的有效容量。这似乎是Vapnik的“结构风险最小化”原则(即为防止由样本容量不足造成的过拟合,而在损失函数中加上表示模型复杂度的正则化项)的几乎完美的实践[6]。

6) 双隐藏层全连接多层神经网络

为了了解这种结构的效果,训练了多个双隐藏层的多层神经网络。理论结果显示一个单隐藏层神经网络可以拟合任何函数[57]。然而,一些作者注意到双隐藏层架构在实际情况下有时会有更好的表现。

一个28x28-300-100-10网络的测试错误率为3.05%,比单隐藏层网络好得多。而扩大为28x28-1000-150-10网络后,测试错误率只得到了很小的改善:2.95%。使用畸变数据训练后,两个网络的错误率分别改善为2.50%和2.45%。

相关推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注

微信扫一扫

微信扫一扫

微信扫一扫,分享到朋友圈

论文要点总结:Gradient-Based Learning Applied to Document Recognition
返回顶部

显示

忘记密码?

显示

显示

获取验证码

Close