01 LeNet-5论文笔记-Gradient-Based Learning Applied to Document Recognition

Abstract

摘要

  使用BP算法多层神经网络训练构成种个成功的基于梯度学习技术的最佳案例。提供一个合适的网络架构,基于梯度学习算法就能将其用于合成复杂的决策面以便将高维模式(例如手写字符)区分归类,并进行最小预处理。本文综述了各种方法对手写字符特征识别,并将其与标准手写数字识别任务进行了比较。用于处理二维图形的可变性,卷积神经网络显著优胜于其他技术。
  现实生活中的文档识别系统是由多个模型组成的,包括字段抽取、分割、识别和语义建模。一个新的学习模式,称为图变压网络(GTN),允许像多模型系统这样的训练全局化使用基于梯度的方法,以尽量减少总体形式的性能指标。
  介绍了两种在线手写字符识别系统。实验证实全局训练的优越性,以及图变压网络(GTN)的灵活性。
  还介绍了一种用于阅读银行支票的图变压网络。利用卷积神经网络的特征识别并结合全局训练技术,提高商业和个人支付记录的准确率。它是商业部署,每天读取百万级支票。

关键词—— 神经网络、光学识别符(OCR)、文档识别、机器学习、基于梯度学习、卷积神经网络、图变压网络、有穷状态转换器

I.Introduction

介绍
  在过去的几年里,机器学习技术中特别是神经网络应用,在模式识别系统中扮演着越来越重要的角色。事实上,可以说,学习技术的可用性在近几年模式识别应用如连续语音识别和手写字符识别中一直是一个至关重要的方面。
  本文主要的观点是,通过跟多的依赖自动的数学学习来建立更好的模式识别系统,并更少的依赖手动设计和启发式。这是由于机器学习和计算机技术近几年的进展而成为可能的。使用字符识别作为案例研究。我们展示了手工制作的特征提取可以被精心设计的直接操作像素图像的学习机器有效地替代。使用文档理解作为一个案例研究,我们表明通过手动集成单独设计的模块构建识别系统的传统方法,可以用统一的、原则性好的设计范式代替,称其为图转换器网络,允许训练所有的模型以优化全能型标准。
  从识别模型的早期开始,人们就知道自然数据的多变性和丰富性,无论是演讲、字符或是其它类型的模式,几乎不能纯手工建立一个准确性高的识别系统。因此,大多模式识别系统都是结合使用自动学习技术和手工制作算法构建的。识别单个模式通常的方法由将系统划分为图像1中两个主要的模块。 第一个模块称为特征抽取器,转化输入模式,以便它们可以由低维向量或符号的短字符串表示(a)能很容易的匹配或比较,表示(b)不改变其性质的输入模式的转换和扭曲是相对不变的。特征抽取器包含了大部分先验知识,而且是特定任务的。它也是大多数设计工作的重点,因为他也是完全通过手工制作的。另一方面,分类器通常是多用途且可训练的本文的主要问题之一是识别的准确率极大的取决于设计者提出一套合适特征的能力。这是一项艰巨的任务,不幸的是,必须为每个新问题重新做一项工作。大量的模式识别文献用于描述和比较不同特征集对于不同任务的相对优点。

在这里插入图片描述

  从历史上看,由于需要合适的特征提取器这一事实,使用仅限于低维空间的学习技术,易于分离的类。在过去的十年里,三因素的结合改变了这憧憬。首先,快速算数单元的低成本机器的可用性使得依赖跟多的蛮力法而不是算法细化。其次,用于大型超市和广泛兴趣问题(例如手写字符识别),大量数据集的可用性使设计者能够依赖更多的实际数据和更少的手工制作的特征抽取来建立识别系统。第三个非常重要的因素是强大的机器学习技术的可用性可以处理高维输入,且当输入这些复杂大数据集时,能够创造复杂决策函数。在语音和手写字符识别系统的准确率近年来的进展很大程度上可以归结为更多的依赖学习技术和大型训练数据集。作为这一事实的依据,大部分现代化商业OCR系统使用一些多层神经网络训练和反向传播。
  本文中,我们考虑到手写字符识别(第一节和第二节),以及比较几种学习技术在基准数据集上的性能与手写字符比较(第三节)。虽然使用自动学习越多越好,但是没有学习技术离开少量先验知识能完美完成任务。在一个多层神经网络情下中,融合知识的一个好方法是可以根据任务调整它的架构。第二段中介绍的卷积神经网络是一种专门的神经网络结构的案例,它通过使用局部连接模式和对权重施加约束,将2D 形状的不变性知识结合起来。第三节比较了几种孤立手写数字识别方法。从对单个字符的识别到对文档中的此句的识别,第四节中介绍而多个模型训练减少整体误差的设想。当模块操作着有向图时,可变长度对象(如手写字符)使用多模型系统是最好的做法。这引出了可训练图变压器网 (GTN) 的概念。第五节描述如今经典的过分割的方法,用于识别字词或其他字符串。第六节提出摒弃手工分割和标注的情况下,在字词水平上用于训练一个识别器的判别性和非判别性的基于梯度技术。第七部分提出来空间位移神经网络方法,为消除分割启发式的需要,在输入的所有可能位置扫描识别器。第八节展示可训练的图变压网络(GTN)根据一般的图合成算法用于转换多个广义传感器。语音识别中常用的图变压网络(GTNs) 和隐马尔可夫模型之间的连接也被处理。第六节描述了一个训练有素的的图变压网络(GTN)系统,用于钢笔计算机中输入的手写。此问题称为 “联机 ” 手写识别, 因为计算机必须在用户写入时立即反馈。该系统的核心是一个卷积神经网络。结果清晰的展示了训练一个字词水平的识别器的有点,而不是预先分割的、手工标记的、孤立字符上进行训练。第十节描述了一个完整的图转换网络系统,用于阅读手写和机器打印的银行支票。系统的核心是卷积神经网络,也称为LeNet-5,在第二节描述。该系统在 NCR 公司对银行业的支票识别系统进行了商业应用。它正在美国的几家银行每月阅读数以百万计的支票。

A.Learning from Data

  有几种自动机器学习的方法,但是近年来由神经网络社区推广的最成功的方法之一可以称为基于数值或梯度的学习。机器学习计算函数在这里:插入图片描述
其中Zp是第p个输入模式,W代表系统中可调参数的集合。在模式识别设置中,输出Yp可以解释为模式Zp的识别类别标签或与每个类别关联的分数或概率。损失函数在这里:
在这里插入图片描述
衡量Dp(正确的或是模式Zp的期望输出)和系统产生的输出之间的误差。平均损失函数Etrain(W)是一组称为训练集{(Z1,D1),……(Zp,Dp)}的标记示例上的误差Ep的平均值。在最简单的情况下,学习问题在于找到最小化Etrain(W)的W值。实际上,对系统在训练集上的性能兴趣不大。 更为相关的度量是系统在现场的错误率将在实践中使用。 通过测量与训练集分离的一组样本(称为测试集)的准确性来评估此性能。许多理论和实验工作1,2,3表明,测试集Etest的预期错误率与训练集Etrain的错误率之间的差距随着训练样本的数量近似为在这里插入图片描述
,其中P是训练样本的数量,h是有效容量或机器6,7的复杂性的度量,a是0.5到1.0之间的数字,k是常数。当训练样本数量增加时,这个差距总是会减小。此外,随着h容量增加,Etrain减少。因此,当h容量增加的时候,在Etrain减少和差距增加中要衡量,以最佳的容量h值实现最低的泛化误差Etest。大多数学习算法都试图最小化Etrain以及对差距的一些估计。这种形式的正式版本称为结构风险最小化6,7,它基于定义能力增强的机器学习序列,该序列对应于参数空间的子集序列,从而每个子集都是先前子集的超集。实际上,结构风险最小化是通过最小化如下公式:在这里插入图片描述
来实现的,其中函数H(W)被称为正则化函数,beta是一个常数。选择H(W)使得它对属于参数空间的高容量子集的参数W取大值。最小化H(W)实际上限制了参数空间可访问子集的容量,从而控制了在最小化训练误差和最小化训练误差与测试误差之间的期望之间的权衡。

B.Gradient-Based Learning

基于梯度学习
  关于一组参数最小化函数的一般问题是计算机科学中许多问题的根源。基于梯度的学习基于这样一个事实,即与离散函数相比,最小化合理的平滑连续函数通常要容易得多。通过估计参数值的微小变化对损耗函数的影响,可以使损耗函数最小化。这是通过损耗函数相对于参数的梯度来衡量的。当可以通过解析而不是通过扰动以数值方式计算梯度矢量时,可以设计出一种高效的学习算法。这是众多基于梯度的具有连续值参数的学习算法的基础。在本文描述的过程中,参数W的集合是一个实值向量,对于该向量,E(W) 是连续的,并且几乎在任何地方都可微分。在这种情况下,最简单的最小化步骤是梯度下降算法,其中W的迭代调整,如下:
在这里插入图片描述

在这个最简单的案例中,在这里在这里插入图片描述
是一个标量常数,更为复杂的过程是在这里,或将其替换为对角矩阵,或将其替换为逆Hessian矩阵的估计,如牛顿法或拟牛顿法。也可以使用共轭梯度方法[8]。但是,附录B显示,尽管文献中有许多相反的说法,但是这些二阶方法对大型学习机的实用性非常有限。
  流行的最小化过程是随机梯度算法,也称为在线更新。 它包括使用噪声或平均梯度的近似版本来更新参数向量。在最常见的情况下,W根据单个样本进行更新:
在这里插入图片描述

通过此过程,参数向量在平均轨迹附近波动,但在具有冗余样本(例如语音或字符识别中遇到的样本)的大型训练集上,其收敛速度通常比常规梯度下降法和二阶方法快得多。其原因在附录B中进行了解释。自20世纪60年代以来,就对这种用于学习的算法的性质进行了理论研究,但直到80年代中期,非平凡任务的实际成功才出现。
C.梯度反向传播

II.Convolutional Neural Networks For Isolated Character Recognition

  经过梯度下降训练的多层网络能够从大量例子中学习复杂的、高维的非线性映射,这使得它们很容易成为图像识别任务的候选对象。在传统的模式识别模型中,人工设计的特征提取器从输入信息中收集相关信息,并消除不相关的变量。然后,一个可训练的分类器将得到的特征向量分类,在该方案中,可以使用标准的、全连通的多层网络作为分类器。一个可能更有趣的方案是尽可能多地依赖于特征提取器本身的学习。在字符识别的情况下,网络可以提供几乎原始的输入(例如尺寸归一化的图像)。虽然这可以通过一个普通的连接前馈网络来完成,并成功地完成一些任务,如字符识别等任务中能够取得不错的效果,但是仍然有不少问题存在。
  首先,输入的图像一般都很大,经常有几百个变量(即像素)。如果采用全连接网络的话,即使第一个隐含层仅有100个神经元,那前两层之间的权重参数也会有几万个。数量如此大的参数会增加系统的容量,但也因此需要更大的训练集。而且,在某些硬件设备上实现时由于需要存储的参数如此多,可能会带来内存不足的问题。但是,用于图像或语音的非结构化网络的主要缺陷是,对于转换或输入的局部失真没有内在的不变性。在被提供给神经网络固定大小的输入层之前,字符图像或其他2D或1D信号必须近似地标准化并居于输入域的中心。不幸的是,没有这样完美的预处理:手写体通常在单词级别标准化,这可能导致单个字符的大小、倾斜和位置变化。这一点,再加上书写风格的多样性,会导致输入对象中不同特征的位置发生变化。原则上,一个足够大的全连接网络可以学习产生与这种变化不同的产出。然而,学习这样一项任务可能会导致在输入中不同位置具有相似权重模式的多个单元,从而在输入中不同特征出现的任何地方检测到这些特征。学习这些权重参数需要数目巨大的训练样本来覆盖可能的变化空间。
  其次,全连接结构忽略了输入的整体结构。输入变量可以以任何不影响训练输出的顺序给定。与变量不同的是,图像有很强的2D局部结构:像素在空间上是高度相关的。
   卷积神经网络结合了三种结构的思想以确保一定程度的平移、缩放和畸变不变性:局部感受野(local receptive fields)、权值共享(shared weights )或权值复制(weights replication)和时间或空间子采样(sub-sampling。图中展示的LeNet-5是一种用于识别字符的典型卷积神经网络。网络中输入平面接收尺寸统一且中心对齐后的字符图像。

A.Convolutional Networks

B.LeNet-5

  本节将详细介绍实验中使用的卷积神经网络LeNet-5的架构。LeNet-5包括7个层,不包括输入,所有的层都包含可训练的参数(权重)。输入是一个32x32像素的图像。这比数据库中最大的字符大得多(在28x28字段中居中最多20x20像素)。其原因是,在最高级特征检测器的接收域的中心可以出现潜在的显著特征,如笔画端点或角。在LeNet-5中,最后一个卷积层(C3,见下文)的接受域中心集在32x32输入的中心形成了一个20x20的区域。输入像素的值被归一化,以便背景级别(白色)对应于0.1的值,前景(黑色)对应于1.175。这使得输入均值大约为0,而方差大约为1,从而加速了的学习[46]。
  下面,卷积层标记为Cx,子采样层标记为Sx,全连通层标记为Fx,其中x为层索引。
在这里插入图片描述

  层C1是一个包含6张feature map的卷积层。每个feature map中的每个单元都连接到输入中的一个5x5邻域。特征图的大小为28x28,这可以防止输入的连接脱离边界。C1包含156个可训练参数和122,304个连接。
  层S2是子采样层,有6张大小为14x14的feature map。每个feature map中的每个单元都连接到对应的feature map中的一个2x2邻域1。对S2中的一个单元的四个输入相加,然后乘以一个可训练系数,再加上一个可训练偏差。结果通过s形函数传递。2x2接受域是不重叠的,因此S2中的feature map的行数和列数是C1中的feature map的一半。层S2有12个可训练参数和5,880个。
  连接层C3是一个包含16个feature map的卷积层。每个feature map中的每个单元都连接到S2的eature maps子集中几个相同位置的5x邻域。表I结合C3的feature map显示了一组S2特征映射。结合每个C3 feature map。为什么不把每个S2特征图和每个C3特征图连接起来呢?原因有两方面。首先,不完全连接方案将连接数量控制在合理范围内。更重要的是,它打破了网络的对称性。不同的特征图被迫提取不同的(希望是互补的)特征,因为它们得到不同的输入集。表I中的连接方案背后的基本原理如下。前六个C3 feature map从S2中的三个feature map的每个相邻子集中获取输入。接下来的6个从每个连续的4的子集中获取输入。接下来的三个从一些不连续的4的子集中获取输入。最后一个从所有S2特征映射中获取输入。层C3有1,516个可训练参数和151,600个连接。
  Laver S4是一个子采样层,有16个大小为5x5的feature map。每个feature map中的每个单元都连接到C3中对应的feature map中的一个2x2邻域,类似于C1和S2。层S4有32个可训练的参数和2000个连接。

    C3中前6个特征图分别从S2中连续的3个特征图获取输入;C3中接下来6个特征图分别从S2中连续的4个特征图获取输入;接下来3个特征图分别从S2中4个不连续的特征图获取输入;最后一个特征图从S2中的所有特征图获取输入。

	C3层有1,516(60*25+16)个训练参数和151,600个连接。同样没有  padding。在权重分配上值得注意的是:C3层中某个特征图从S2中部分的特征图获取输入时,它们共享偏置,但是每个卷积核的权重不同。比如,C3中第一个feature map从S2中前三个feature map获取输入,在计算时一共有三个卷积核(5*5*3=75个可训练参数)和一个共享的偏置(1个可训练参数),所以一共76个trainable parameters.

  层C5是一个包含120个feature map的卷积层。在S4的所有16个feature map上,每个单元都连接到一个5x5的邻域。在这里,因为S4的大小是 5x5,所以C5的feature maps的大小是1x1:这相当于S4和C5之间的完整连接。C5被标记为卷积层,而不是全连接层,因为如果在其他条件不变的情况下,LeNet-5的输入变大,feature map的维数将大于1x1。动态增加卷积网络大小的过程在第七节中进行了描述。C5层有48,120个可训练的连接。
  层F6,包含84个单元(这个数字的原因来自于输出层的设计,解释如下),并完全连接到C5。它有10164个可训练参数。
  在经典的神经网络中,直到F6层中的神经元计算它们的输入向量和权重向量之间的点积,并在权重向量上加上一个bias偏置。这个权重和,记为ai;对于单位i,则通过一个sigmoid压缩函数得到单位i的状态,用xi表示。在这里插入图片描述

sigmoid压缩函数是一个缩放的双曲正切:
5)f() =作用(Sa)6)
其中A是函数的振幅,S决定了它在原点处的斜率。函数f是奇函数,在+A和A处有水平渐近线。常数A被选为1.7159。选择压缩函数的基本原理在附录a中给出。最后,输出层由欧氏径向基函数单元(RBF)组成,每类一个,每个输入84个。计算每个RBF单元yi的输出
在这里插入图片描述
  换句话说,每个输出RBF单元计算其输入向量与参数向量之间的欧式距离。输入距离参数向量越远,RBF输出越大。特定RBF的输出可以解释为一个惩罚项,测量输入模式和与RBF相关的类模型之间的契合度。在概率方面,RBF输出可以解释为在F6层构型空间的高斯分布的非归一化负对数似然。给定一个输入模式,设计损失函数使F6的构型尽可能接近该模式期望类对应的RBF的参数向量。这些单元的参数向量是手工选择的,并保持固定(至少最初是这样)。这些参数向量的分量设为1或+1。虽然他们可能是随机概率为1和+ 1,甚至选择形成一个错误校正码[47]提出的,他们不是设计相应的字符类代表一个程式化的形象画在7 x12位图(因此84号)。这样的表现并不是特别有用的识别孤立的数字,但它是非常有用的字符识别的字符串从完整的打印ASCII。基本原理是文字都是相似的,因此可能被混淆的,比如大写字母O,小写字母O,零,或小写l,数字1,方括号,大写的I,会有类似的输出代码。具有类似的输出代码。如果该系统与语言后处理器结合使用,可以纠正这种混淆,这就特别有用。因为易混淆类的代码是相似的,所以对于不明确的字符对应的RBFs的输出也将是相似的,并且后处理器将能够选择适当的间隔。图3给出了完整ASCII集的输出代码.
  使用这种分布式代码而不是更常见的“1 of N”代码(也称为位置代码或祖母单元代码)作为输出的另一个原因是,当类的数量超过几十个时,非分布式代码的行为往往很糟糕。原因是一个非分布式代码的输出单元在大部分时间都必须是。这是相当困难的实现与sigmoid单位。另一个原因是,分类器通常不仅用于识别字符,而且还用于拒绝非字符。具有分布式编码的RBFs更适合于这一目的,因为与乙状结肠不同,它们是在其内部的一个非常限定的区域内被激活的放置非典型图案更有可能掉落的空间。RBFs的参数向量作为laver F6的目标向量。值得指出的是,这些向量的分量为+1 or-1,完全在F6的sigmoid范围内,因此可以防止这些sigmoid被饱和。事实上+1和1是sigmoid函数上曲率最大的点。这迫使F6单元在他们的最大非线性范围内操作。饱和的sigomid必须避免,因为它是已知的导致缓慢收敛和不良条件的损失函数。

c .Loss Function

  可用于上述网络的最简单的输出损失函数是最大似然估计准则(MLE),在我们的例子中,它等价于最小均方误差(MSE)。对于一组训练样本的准则为:
在这里插入图片描述

式中yDp就是第Dp-th RBF单元的输出,即对应于输入模式ZP的正确类的RBF单元。虽然这种成本函数适用于大多数情况,但它缺少三个重要的特性。首先,如果我们允许RBF的参数适应,E(W)有一个微不足道的,但完全不可接受的解决方案。在该解中,所有RBF参数向量均相等,且F6的状态为常数,等于该参数向量。在这种情况下,网络很高兴地忽略了输入,所有的RBF输出都等于零。如果不允许RBF权值适应,这种塌缩现象就不会发生。第二个问题是班级之间没有竞争。这样的竞争可以通过使用一个更有区别的训练准则来获得,称为MAP (maximum a posteriori)准则,类似于有时用于训练HMMs[48],[49],[50]的最大互信息准则。假设输入图像可以来自其中一个类,也可以来自背景中的“垃圾”类标签,那么它就相当于最大化正确类Dp的后验概率(或者最小化正确类概率的对数)。就惩罚函数而言,这意味着除了像MSE标准那样将正确类的惩罚向下推外,该标准还会拉出不正确类的惩罚:
在这里插入图片描述
负的第二项起“竞争”作用,它必然小于(或等于)第一项,因此这个损失函数为正。常数j为正,可以防止已经非常大的类的惩罚被进一步推高。垃圾类标签的后验概率为在这里插入图片描述
的比值(ZP,W),该判别准则使RBF中心远离,避免了学习RBF参数时出现前面提到的“塌缩效应”。在第六节中,我们对学习对输入中的多个对象(例如,单词或文档中的字符)进行分类的系统给出了这一标准的概括。对于卷积网络中所有层的所有权重,损失函数的梯度计算是通过反向传播完成的。标准算法必须稍加修改,以考虑到权值的共享。一个简单的实现方法是首先计算损失函数对每个连接的偏导数,就好像网络是一个传统的没有权值共享的多层网络。然后将具有相同参数的所有连接的偏导数相加,形成对的偏导数准网。
  损失函数相对于卷积网络所有层中所有权值的梯度是通过反向传播来计算的。标准算法必须稍加修改,以考虑到权值的共享。一个简单的实现方法是首先计算损失函数对每个连接的偏导数,就好像网络是一个传统的没有权值共享的多层网络。所有这些联系的偏导数都是一样的-添加参数,形成对该参数的导数。
  这样一个大型体系结构被训练的有效,但是这样做需要使用附录中描述的一些技术。附录的A部分描述了一些细节,比如使用的特定的sigmoid和权重初始化。B节和C节描述了所使用的最小化过程,它是Levenberg-Marquardt过程对角逼近的随机版本。

Results and comparison with other methods

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

A.database:

未设置修改后的NIS用于训练和测试本文系统的数据库是由NIST的专用数据库3和包含手写数字二值图像的专用数据库1组成的。NIST最初指定D-3作为训练集,SD-1作为测试集,但是SD-3比SD-1更清晰,更容易识别.其原因可以从SD-3在人口普查局工作人员中收集,而SD-1在高中生中收集这一事实中找到。从学习实验中得出合理的结论,要求结果独立于训练集的选择和整个样本集的测试。因此,有必要通过混合NIST的数据集来建立一个新的数据库。
  SD-1包含58,527位数字图像,由500个不同的写入器写入。与SD-3中每个写入器的数据块依次出现不同,SD-1中的数据被打乱。SD-1的写入器标识是可用的,我们使用这些信息来解读写入器。然后我们将SD-1分成两部分:前250个写手写的字符进入我们新的训练集,其余250个写手放入我们的测试集,这样我们就有了两个集,每个集有近3万个例子。新的训练集由足够的SD-3样本完成,从模式#0开始,得到60,000个训练模式的完整集合。同样,新的测试集由SD-3样本完成,从模式#35,000开始,得到60,000个测试模式的完整集合。在这里描述的实验中,我们只使用了10,000张测试图像的子集(5,000张来自SD-1, 5,000张来自SD-3),但是我们使用了全部60,000个训练样本。生成的数据库称为ModifiedIST 或 MNIST 数据集。
  原始的黑白(双层)图像尺寸被归一化,以适应一个20x20像素的盒子,同时保持它们的高宽比。由于归一化算法使用了抗混叠(图像插值)技术,所得到的图像含有灰度。使用了数据库的三个版本。在第一个版本中,通过计算像素的质心,使图像以28x28的图像为中心,并平移图像,将该点定位于28x28场的中心。在某些情况下,这个28x28的字段被扩展为32x32的背景像素。这个版本的数据库将被称为常规数据库。在数据库的第二个版本中,字符图像被分离并裁剪为20x20像素的图像。deslanting计算像素的惯性矩(将前景像素计算为1,将背景像素计算为0),并通过水平移动线条来剪切图像,使主轴垂直。此版本的数据库将称为deslanted数据库。在数据库的第三个版本中。在早期的一些实验中,图像被缩小到16x16像素。常规数据库(60000个训练示例、10,000个测试示例大小-标准化为20x20。在http://www.research.att.com/yann/ocr/mnist上可以找到,图4显示了从测试集中随机抽取的示例。

b.Results

  在常规MNIST数据库上训练了LeNet-5的几个版本。通过整个训练数据对每个会话执行20次迭代。全局学习率n(见附录C中的公式21的定义)的值按照以下的时间表递减:前两轮为0.0005,后三轮为0.0002,接下来的3个是0.0001,接下来的4个是0.00005以后都是0.00001。在每次迭代之前,对500个样本重新评估diagona Hessian近似值,如附录C所述,并在整个迭代过程中保持不变。参数u被设置为0.02。在第一次测试中得到的有效学习率在参数集上的变化约为7 x 10-5和0.016。测试错误率在通过训练集10次左右后稳定在0.95%。通过19次后,训练集的错误率达到0.35%。许多作者报告说,在训练神经网络或其他自适应算法完成各种任务时,观察到过度训练的普遍现象。当过度训练发生时,训练误差会随着时间的推移而不断减小,但是测试误差会经历一个最小值,并在一定的迭代次数后开始增加。虽然这种现象很常见,但在图5所示的学习曲线中并没有观察到这种现象。一个可能的原因是学习率保持相对较高。这样做的结果是,权值永远不会落在局部最小值上,而是一直随机地振荡。由于这些波动,在更广的最小值下,平均代价会更低。因此,随机梯度与正则化项具有相似的效果,它有利于更广的最小值。广义最小值对应于参数分布熵大的解,有利于提高泛化误差。
  训练集大小的影响程度通过使用15000、30000和60000个样本对网络进行训练来衡量。由此产生的训练错误和测试错误如图6所示。很明显,即使使用像LeNet-5这样的专门架构,更多的训练数据也会提高精确度。
  为了验证这一假设,我们通过随机扭曲原始训练图像来人为地生成更多的训练示例。增加的训练集由60000个原始模式加上540000个实例组成畸变模式与随机选择的畸变参数。扭曲是以下平面仿射变换的组合:水平和垂直平移、缩放、压缩(同时的水平压缩和垂直伸长,或反向)和水平剪切。图7显示了用于训练的扭曲模式的示例。当使用失真数据进行训练时,测试错误率从没有变形时的0.95%下降到0.8%。使用的训练参数与没有变形时相同。训练的总时间不变(20次,每次60,000个模式)。值得注意的是,在这20次传递过程中,网络只有效地看到单个样本两次。
  图8显示了所有82个分类错误的测试示例。其中一些例子确实模棱两可,但也有一些是这样完全可以被人类识别出来,尽管它们是用一种不被代表的风格写的。这表明,更多的训练数据有望进一步改善。

C.Comparison with other classifiers

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LeNet-5神经网络 C源代码,这个写的比较好,可以用gcc编译去跑,结合理论可以对深度学习有更深刻的了解 介绍 根据YANN LECUN的论文Gradient-based Learning Applied To Document Recognition》设计的LeNet-5神经网络,C语言写成,不依赖任何第三方库。 MNIST手写字符集初代训练识别率97%,多代训练识别率98%。 DEMO main.c文件为MNIST数据集的识别DEMO,直接编译即可运行,训练集60000张,测试集10000张。 项目环境 该项目为VISUAL STUDIO 2015项目,用VISUAL STUDIO 2015 UPDATE1及以上直接打开即可编译。采用ANSI C编写,因此源码无须修改即可在其它平台上编译。 如果因缺少openmp无法编译,请将lenet.c中的#include和#pragma omp parallel for删除掉即可。 API #####批量训练 lenet: LeNet5的权值的指针,LeNet5神经网络的核心 inputs: 要训练的多个图片对应unsigned char二维数组的数组,指向的二维数组的batchSize倍大小内存空间指针。在MNIST测试DEMO中二维数组为28x28,每个二维数组数值分别为对应位置图像像素灰度值 resMat:结果向量矩阵 labels:要训练的多个图片分别对应的标签数组。大小为batchSize batchSize:批量训练输入图像(二维数组)的数量 void TrainBatch(LeNet5 *lenet, image *inputs, const char(*resMat)[OUTPUT],uint8 *labels, int batchSize); #####单个训练 lenet: LeNet5的权值的指针,LeNet5神经网络的核心 input: 要训练的图片对应二维数组 resMat:结果向量矩阵 label: 要训练的图片对应的标签 void Train(LeNet5 *lenet, image input, const char(*resMat)[OUTPUT],uint8 label); #####预测 lenet: LeNet5的权值的指针,LeNet5神经网络的核心 input: 输入的图像的数据 labels: 结果向量矩阵指针 count: 结果向量个数 return 返回值为预测的结果 int Predict(LeNet5 *lenet, image input, const char(*labels)[LAYER6], int count); #####初始化 lenet: LeNet5的权值的指针,LeNet5神经网络的核心
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值