[论文翻译]LeNet:基于梯度学习的文档识别




LeNet:Gradient based learning applied to document recognition

  1. 作者:Yann LeCun, Leon Bottou, Yoshua Bengio, and Patrick Haffner
  2. 发表时间:December 1998
  3. 期刊:Proceedings of the IEEE
  4. 影响:世界上第一个卷积神经网络

论文中英文对照合集 : https://aiqianji.com/blog/articles

Abstract 摘要

用BP算法训练多层神经网络,是梯度学习技术的一个成功的案例。本文给出一个合适的网络架构,通过bp算法可以计算出一个复杂的决策面,来实现对于类似手写体字符这样高维模式的分类。本文回顾了各种不同的手写体识别方法,并基于标准任务比较这些算法。卷积神经网络,专门为处理变化较大的二维图形而设计,显示出超越所有其他技术的能力。

现实中的文档识别系统由字段提取、分割、识别和语言建模等多个模块组成。图变换网络(Graphic Transformer Networks, GTN)是一种新的学习方法,允许多模块系统全局的使用梯度方法训练,以便尽量减少整体性能指标。

本文介绍了两个针对在线手写体识别的系统。实验证实了全局训练的优势,以及图变换网络的灵活性。

本文还介绍了一个用来读取空白支票的图变换网络系统。通过使用基于全局训练技术的卷积神经网络字符识别算法,可提供商业和个人支票的精确记录。该系统已经实现了商业化部署,每天读取数百万张支票。

keywords 关键词

神经网络, OCR,文档识别,机器学习,梯度学习,卷积神经网络,图变换网络,有限状态传感器。

image.png

Introduction 引言

在过去的几年里,机器学习技术,尤其是基于神经网络的那部分,在模式识别系统中的重要性快速提升。事实上,在近期一些成功的模式识别应用中,例如连续语音识别和手写体识别,学习技术是否是一个关键性的因素仍存在争议。

本文展示的主要信息是,更多地依靠自动学习、更少地依赖人工设计的启发式策略,能够构建更好的模式识别系统。当前机器学习和计算机技术的进步已经使这样的方法成为可能。用字符识别算法作为一个案例研究,我们看到,人工设计的特征抽取方法,完全可以被仔细设计的直接基于像素图象的学习机很好地代替。用文档理解算法举例来说,我们看到,传统的构建方法是用人工集成多个设计好的模块,这种方法完全被一种统一的并且有原则的设计范式所取代,这种设计范式允许训练所有的模块以便优化全局的性能指标,这个被称之为图变换网络。

从模式识别的早期开始,人们就知道,自然数据的多样性和丰富性,无论是语音、字形还是其他类型的模式,几乎不可能完全靠手工建立一个精确的识别系统。因此,大多数模式识别系统是使用自动学习技术和手工算法的组合来构建的。识别单个模式的常用方法是将系统分为两个主要模块,如图1所示。rst模块称为特征提取器,它对输入模式进行变换,使得它们可以用低维向量或短串符号来表示,这些符号(a)可以很容易地匹配或比较,并且(b)对于不改变其性质的输入模式的变换和扭曲相对不变。特征抽取器包含了大部分的先验知识,并且对任务相当特殊。它也是大多数设计的焦点,因为它通常完全是手工制作的。另一方面,通常是通用的、可训练的。这种方法的一个主要问题是,识别精度在很大程度上取决于设计者提出适当特征集的能力。事实证明,这是一项艰巨的任务,不幸的是,必须为每一个新问题重新做。大量的模式识别文献致力于描述和比较不同特征集对于特定任务的相对优点。

image.png

图1、传统的模式识别有两个模块:固定特征提取模块和可训练分类模块。

历史上,需要合适的特征抽取器是因为分类器使用的学习技术仅限于具有容易分离类的低维空间[1]。在过去的十年里,三个因素的结合改变了这一愿景。
首先,具有快速运算单元的低成本机器的可用性允许更多地依赖于强力“数值”方法,而不是算法改进。
其次,大型数据库的可用性使设计师能够更多地依赖真实数据,而较少地依靠手工提取特征来构建识别系统。
第三个也是非常重要的因素是强大的机器学习技术的可用性,这些技术可以处理高维输入,并且在输入这些大数据集时可以生成复杂的决策函数。

可以说,语音和笔迹识别系统的准确性最近的进步在很大程度上可以归因于对学习技术和大量训练数据集的依赖性增加。作为这一事实的证据,现代商业OCR系统的很大一部分使用了某种形式的多层神经网络训练与反向传播。

在这项研究中,我们考虑了手写字符识别的任务(第一和第二节),并比较了几种学习技术在手写数字识别基准数据集上的性能(第三节)。虽然更多的自动学习是有益的,但是没有最少的关于任务的先验知识,任何学习技术都不可能成功。在多层神经网络的情况下,一个很好的结合知识的方法是根据任务调整其结构。第 II 节介绍的卷积神经网络[2]是一个特殊的神经网络体系结构的例子,它通过使用局部连接模式和对权重施加约束来整合关于二维形状不变性的知识。第 III 节对几种孤立手写体数字识别方法进行了比较。从单个字符的识别到文档中单词和句子的识别,第四节介绍了将多个训练模块组合起来以减少总体误差的思想。如果模块操作有向图,则最好使用多模块系统来识别可变长度的对象,如手写字。这就引出了可训练图变换网络(GTN)的概念,并在第四节中介绍了GTN。第五节描述了用于识别单词或其他字符串的启发式过分割的经典方法。第六节介绍了在不需要人工分割和标记的情况下,在字级训练识别器的判别和非判别梯度技术。第七节提出了一种很有前途的空间位移神经网络方法,通过扫描识别器输入上所有可能的位置。在第八节中,基于一般的图合成算法,可训练的图变换网络可以表示为多重广义变换。讨论了语音识别中常用的GTNs模型和隐马尔可夫模型之间的联系。第九节描述了一个全局训练的GTN系统,用于识别输入到笔式计算机中的手写体。这个问题被称为“联机”手写识别,因为当用户书写时,机器必须立即产生反馈。系统的核心是卷积神经网络。结果清楚地显示了在单词层次训练识别器的优势,而不是在预分割的、手工标记的、孤立的字符上训练识别器。第十节描述了一个完整的基于GTN的系统,用于读取手写和机器打印的银行支票。系统的核心是第二节描述的卷积神经网络LeNet-5。该系统已在NCR公司银行业支票识别系统中投入商业应用。它在全美多家银行每月收到数百万张支票。

A. 从数据中学习

自动机器学习有几种方法,但最近几年神经网络社区推广的最成功的方法之一可以称为“数值”或基于梯度的学习。
学习机计算函数$Y^p = F(Z^p , W)$ ,
其中$Z^p$ 是第p 个输入模式,W表示系统中可调参数的集合。
在模式识别设置中,输出$Y^p$可以被解释为模式$Z^p$ 的识别类标签,或者被解释为与每个类相关联的分数或概率。
损失函数$E^p=D(D^p,F(W,Z^p))$,测量的是$D^p$:输出模式$Z^p$对应的“正确”结果 和系统产生的输出之间的差异。
平均损失函数$E_{train}(W)$是一组标记示例(称为训练集${ (Z^1, D^1), ...... (Z^P, D^P)}$上的误差$E^p$的平均值。
在最简单的情况下,学习问题在于找出使$E_{train}(W)$最小化的W值。在实践中,系统在训练集上的性能没有什么意义。更为相关的衡量标准是系统在实际应用中的误差率。这种性能是通过测量一组与训练集(称为测试集)不相交的样本的精度来估计的。大量的理论和实验工作[3]、[4]、[5]表明,测试集$E_{test}$上的期望错误率和训练集$E_{train}E$上的错误率之间的差距随着训练样本数的增加而减小,近似于
$E_{test}- E_{train}=k(h/P)^{\alpha} (1)$

其中P是训练样本的数量,h是“有效容量”或机器复杂性的度量[6],[7],$\alpha$是介于0:5和1:0之间的数字,k 是常数。当训练样本数增加时,这种差距总是减小的。此外,随着容量h增加,$E_{train}$减小。因此,当增大容量h时,$E_{train}$的减小与间隙的增大之间存在一个权衡关系,最优化容量h的值以便达到最小的泛化误差$E_{test}$。

大多数学习算法试图最小化$E_{train}$以及一些对间隙的估计。该方法的一个正式版本称为结构风险最小化[6],[7],其基础是解出一系列容量不断增加的学习机,对应于参数空间的一系列子集,使得每个子集都是前一子集的超集。实际上,结构风险最小化是通过最小化$E_{train}+\beta H(W)$来实现的,其中函数$H(W)$被称为正则化函数,并且是常数。$H(W)$的选择使得它对属于参数空间的高容量子集的参数W 取大值。最小化$H(W)$实际上限制了参数空间的可访问子集的容量,从而控制了最小化训练误差和最小化训练误差和测试误差之间的期望间隙之间的权衡。

B. 梯度学习

基于一组参数最小化一个函数是计算机科学中许多问题的根源。基于梯度的学习利用了这样一个事实,最小化一个相当平滑的连续函数通常比离散(组合)函数更容易。通过估计参数值的微小变化对损失函数的影响,可以使损失函数最小化。这是通过损失函数相对于参数的梯度来测量的。当梯度矢量可以解析计算(而不是通过扰动进行数值计算)时,就可以设计出有效的学习算法。这是众多连续参数梯度学习算法的基础。在本文描述的过程中,参数W的集合是一个实值向量,对于它,$E(W)$是连续的,并且几乎处处都是可微的。在这种情况下,最简单的最小化过程是梯度下降算法,其中W的迭代调整如下:

$W_k=W_{k-1}-\epsilon\frac{\partial E(W)}{\partial W} (2)$

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

$W_k=W_{k-1}-\epsilon\frac{\partial E^{pk}(W)}{\partial W} (3)$

使用此过程,参数向量围绕平均轨迹进行计算,但通常比常规梯度下降法和二阶方法在具有冗余样本(如语音或字符识别中遇到的样本)的大型训练集上收敛得快得多。其原因在附录B中有解释。自20世纪60年代[9]、[10]、[11]以来,应用于学习的此类算法的特性已经在理论上进行了研究,但直到80年代中期才在非琐碎任务上取得实际成功。

C. 梯度 BP 算法

基于梯度的学习方法从20世纪50年代后期就开始使用,但它们大多局限于线性系统[1]。这种简单的梯度下降技术在复杂的机器学习任务中的惊人效用直到以下三个事件发生后才被广泛认识。第一个事件是意识到,尽管有相反的早期警告[12],损失函数中存在局部极小值在实践中似乎不是一个主要问题。当人们注意到局部极小值似乎并不是早期基于梯度的非线性学习技术(如Boltzmann机器)成功的主要障碍时,这一点就变得明显了[13],[14]。第二件事是Rumelhart、Hinton和Williams等人[15]推广了一种简单有效的程序,即反向传播算法,用于计算由若干层处理组成的非线性系统中的梯度。第三件事是证明了将反向传播方法应用于具有sigmoidal单元的多层神经网络可以解决复杂的学习任务。反向传播的基本思想是,通过从输出到输入的传播,可以有效地计算出梯度。这种思想在60年代早期的控制理论文献[16]中有描述,但它在机器学习中的应用当时还没有普遍实现。有趣的是,神经网络学习背景下反向传播的早期推导没有使用梯度,而是使用“中间层单元的虚拟目标”[17]、[18]或最小干扰参数[19]。控制理论文献中使用的拉格朗日形式可能是推导反向传播[20]和推导反向传播到递归网络[21]和异质模块网络[22]的推广的最佳严格方法。第I-E节给出了一般多层系统的一个简单推导。

对于多层神经网络来说,局部极小值似乎不是一个问题,这在理论上是个谜。据推测,如果网络对于任务来说过大(在实践中通常是这样),参数空间中存在“额外维度”会降低无法到达区域的风险。反向传播是迄今为止使用最广泛的神经网络学习算法,可能也是任何形式中使用最广泛的学习算法。

D. 学习方法用于真实的手写体识别系统

孤立手写体字符识别在文献中得到了广泛的研究(见[23],[24]的综述),是神经网络的早期成功应用之一[25]。第 III 节介绍了手写体数字识别的对比实验。比较结果表明,用梯度学习训练的神经网络比在相同数据上测试的所有其他方法表现得更好。最好的神经网络,称为卷积网络,旨在学习直接从像素图像中提取相关特征(见第 II 节)。

然而,手写体识别中最困难的问题之一,不仅是识别单个字符,而且是在单词或句子中从相邻字符中分离出字符,这一过程被称为切分。这种已经成为标准的技术称为启发式分割。它包括使用启发式图像处理技术在字符之间生成大量潜在的切割,然后根据识别器为每个候选字符给出的分数选择切割的最佳组合。在这样的模型中,系统的准确性取决于启发式生成的切割质量,以及识别器将正确分割的字符与字符片段、多个字符或其他错误分割的字符区分开来的能力。训练一个识别器来执行这项任务是一个巨大的挑战,因为在创建一个包含错误分割字符的标记数据库方面存在困难。最简单的解决方案是通过分段器运行字符串图像,然后手动标记所有字符假设。不幸的是,这不仅是一个极其乏味和昂贵的任务,而且也难以保障标签的一致性。例如,应该将切分4的右半部分标记为1还是非字符?切割8的右半部分应该标记为3吗?

第五节描述的第一个解决方案是在整个字符串级别而不是字符级别上训练系统。基于梯度学习的概念可以用于此目的。系统被训练成最小化总损失函数,该函数测量错误答案的概率。第五节探讨了确保损失函数可微的各种方法,因此适合于使用基于梯度的学习方法。第五节介绍了有向无环图的使用,它的弧带有数字信息,作为一种表示替代假设的方法,并介绍了GTN的思想。

第七节描述的第二种解决方案是完全消除分割。其思想是将识别器扫过输入图像上的每个可能位置,并依赖于识别器的“字符识别”属性,即它能够正确识别输入字段中居中的字符,即使在存在除它之外的其他字符的情况下,拒绝不包含居中字符的图像时[26],[27]。通过将识别器扫过输入而获得的识别器输出序列,然后馈送到考虑语言约束的图变换器网络,最后提取最可能的解释。这种GTN与隐马尔可夫模型(HMM)有点相似,这使得该方法令人想起经典的语音识别方法[28],[29]。虽然这项技术在一般情况下是相当昂贵的,但卷积神经网络的使用使其特别具有吸引力,因为它可以显著节省计算成本。

E. 全局可训练系统

如前所述,大多数实用的模式识别系统由多个模块组成。例如,文档识别系统由提取感兴趣区域的字段定位器、将输入图像分割成候选字符图像的字段分段器、对每个候选字符进行分类和评分的识别器和上下文后处理器组成,通常基于随机文法,它从识别器生成的假设中选择语法正确的最佳答案。在大多数情况下,从一个模块传递到另一个模块的信息最好用图形表示,图形中的数字信息附着在弧上。例如,识别器模块的输出可以表示为非循环图,其中每个弧包含候选字符的标签和分数,并且每个路径表示输入字符串的另一种解释。通常,每个模块都是在其上下文之外手动优化的,或者有时是经过训练的。例如,字符识别器将在预分割字符的标记图像上进行训练。然后组装整个系统,并手动调整模块的一个子集参数,以最大限度地提高整体性能。最后这一步极其乏味、耗时,而且几乎肯定是次优的。

另一个更好的选择是以某种方式训练整个系统,以便最小化全局错误度量,例如文档级别的字符错误分类概率。理想情况下,我们希望找到这个全局损失函数相对于系统中所有参数的最小值。如果测量系统性能的损失函数E EE相对于系统的可调参数W WW是可微的,我们可以使用基于梯度的学习求出E EE的局部最小值。然而,乍一看,系统的庞大规模和复杂性似乎会使这一问题变得棘手。

为了保证全局损失函数$E^p(Z^p,W)$是可微的,将整个系统建立为由可微模块组成的前馈网络。每个模块实现的功能必须是连续的,并且几乎在任何地方都可以对模块的内部参数(例如,对于字符识别模块,神经网络字符识别器的权重)和模块的输入进行区分。如果是这样的话,一个众所周知的反向传播过程的简单推广就可以用来精确地计算损失函数相对于系统中所有参数的梯度[22]。例如,让我们考虑一个构建为模块级联的系统,每个模块实现一个函数$X_n=F_n(W_n,X_{n-1})$,其中$X_n$ 是表示模块输出的向量,$W_n$ 是模块中可调参数的向量(W的子集),$X_{n-1}$是模块的输入向量(即上一个模块的输出向量)。输入模式$Z^p$的第一个模块输入为$X_0$。如果$E^p$相对于$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} (4)$

式中,$\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]、[21]、[22]进行完全严格的推导。

传统的多层神经网络是上述情况的一个特例,其中状态信息$X_n$ 用 固定大小的向量表示,并且模块是矩阵乘法(权值)和成分sigmoid函数(神经元)的交替层。然而,如前所述,在复杂的识别系统中,状态信息最好用带有数字信息的图形来表示。在这种情况下,每个称为图转换器的模块将一个或多个图作为输入,并生成一个图作为输出。这些模块的网络称为图变换网络(GTN)。第四节、第六节和第八节提出了GTNs的概念,并说明基于梯度的学习可以用来训练所有模块中的所有参数,从而最小化全局损失函数。当状态信息由基本上离散的对象(如图)表示时,可以计算梯度,这似乎是自相矛盾的,但正如后面所示,可以避免这种矛盾。

II. 卷积神经网络用于单个字符识别

经过梯度下降训练的多层网络能够从大量示例中学习复杂、高维、非线性映射,这使得它们成为图像识别任务的明显候选对象。在传统的模式识别模型中,手工设计的特征提取器从输入中收集相关信息并消除不相关的变量。然后,可训练的分类器将得到的特征向量分类成类。在这个方案中,标准的、完全连接的多层网络可以用作分类器。一个潜在的更有趣的方案是尽可能多地依赖特征提取器本身的学习。在字符识别的情况下,可以向网络提供几乎原始的输入(例如大小标准化的图像)。虽然这可以用一个普通的完全连接的前馈网络来完成,但在字符识别等任务上还是有一些问题。

首先,典型的图像很大,通常有几百个变量(像素)。第一个全连接层,比如说在第一层中有一百个隐藏单元,已经包含了几万个权重。如此大量的参数增加了系统的容量,因此需要更大的训练集。此外,存储这么多权重的内存要求可能会排除某些硬件实现。但是,非结构化网络对于图像或语音应用的主要决定因素是,它们对于输入的平移或局部失真没有内置的不变性。在被发送到神经网络的固定大小的输入层之前,字符图像或其他2D或1D信号必须被近似大小规格化并位于输入域的中心。不幸的是,没有这样的预处理是完美的:手写通常是在单词级别标准化的,这会导致单个字符的大小、倾斜和位置变化。这一点,再加上写作风格的可变性,将导致输入对象中不同特征的位置发生变化。原则上,一个足够大的全连通网络可以学习产生相对于这种变化不变的输出。然而,学习这样的任务可能会导致在输入中的不同位置放置具有相似权重模式的多个单元,以便在它们出现在输入上的任何地方检测出不同的特征。学习这些重量配置需要大量的训练实例来涵盖可能的变化空间。在卷积网络中,如下所述,移位不变性是通过在空间上强制复制权重配置而自动获得的。

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

A. 卷积网络

卷积网络结合了三种架构思想,以确保一定程度的移位、缩放和失真不变性:局部感受野、共享权重(或权重复制)以及空间或时间降采样。图2显示了一个用于识别字符的典型卷积网络,称为LeNet-5。输入平面接收近似大小标准化和居中的字符图像。一个层中的每个单元接收来自位于前一层的小邻域中的一组单元的输入。在输入时将单位连接到局部感受野的想法可以追溯到60年代早期的感知器,几乎与胡贝尔和威塞尔在猫的视觉系统中发现局部敏感的定向选择性神经元同时发生[30]。在视觉学习的神经模型中,局部连接已经被多次使用,[31],[32],[18],[33],[34],[2]。利用局部感受野,神经元可以提取基本的视觉特征,如定向边缘、端点、角点(或其他信号中的类似特征,如语音频谱图)。这些特征然后被后续层组合,以便检测高阶特征。如前所述,输入的失真或偏移会导致显著特征的位置发生变化。此外,对图像的一部分有用的基本特征检测器可能对整个图像有用。这种知识可以通过迫使一组单位(其感受野位于图像上的不同位置)具有相同的权重向量来应用,[32],[15],[34]。层中的单位被组织在所有单位共享同一组权重的平面中。在这样一个平面上的一组单元输出被称为特征图。要素图中的单元都被限制为对图像的不同部分执行相同的操作。一个完整的卷积层由几个特征映射(具有不同的权重向量)组成,因此可以在每个位置提取多个特征。这方面的一个具体例子是图2所示的LeNet-5的第一层。LeNet-5的第一个隐藏层中的单元被组织在6个平面中,每个平面都是一个要素图。特征图中的一个单位有25个输入连接到输入的5×5区域,称为单位的感受野。每个单元有25个输入,因此有25个可训练的系数加上一个可训练的偏差。特征图中相邻单位的感受野集中在前一层中相应的相邻单位上。因此相邻单位的感受野重叠。例如,在LeNet-5的第一个隐藏层中,水平相邻单元的感受野重叠4列5行。如前所述,要素地图中的所有单元共享相同的25个权重和相同的偏差,因此它们在输入的所有可能位置检测到相同的要素。图层中的其他要素地图使用不同的权重和偏差集,从而提取不同类型的局部要素。在LeNet-5的情况下,在六个特征地图的相同位置,在每个输入位置由六个单元提取六种不同类型的特征。特征图的顺序实现将利用具有局部感受野的单个单元扫描输入图像,并将该单元的状态存储在特征图中的相应位置。这种运算相当于卷积,后面是加性偏置和压缩函数,因此称为卷积网络。卷积的核心是由特征图中的单元使用的一组连接权重。卷积层的一个有趣的特性是,如果输入图像被移动,特征图输出将被移动相同的量,否则将保持不变。这一特性是卷积网络对输入偏移和失真鲁棒性的基础。

一旦检测到某个特征,其准确位置就变得不那么重要了。只有它相对于其他特征的大致位置是相关的。例如,一旦我们知道输入图像包含左上角大致水平的线段的端点、右上角的角和图像下部大致垂直的线段的端点,我们就可以判断输入图像是7。这些特征中的每一个的精确位置不仅与识别图案无关,而且有潜在的危害,因为位置可能因角色的不同情况而不同。降低特征地图中不同特征位置编码精度的一个简单方法是降低特征地图的空间分辨率。这可以通过所谓的降采样层来实现,该降采样层执行局部平均和降采样,降低特征图的分辨率,并降低输出对偏移和失真的灵敏度。LeNet-5的第二个隐藏层是降采样层。该图层包含六个要素地图,前一图层中的每个要素地图对应一个要素地图。每个单位的感受野是前一层对应特征图中的2×2区域。每个单元计算其四个输入的平均值,乘以一个可训练的系数,加上一个可训练的偏差,并将结果传递给一个sigmoid函数。相邻单位有不重叠的相邻感受野。因此,降采样图层要素图的行数和列数只有前一图层要素图的一半。可训练系数和偏差控制sigmoid非线性的影响。如果系数很小,则该单元以准线性模式工作,并且降采样层仅模糊输入。如果系数很大,降采样单元可以被视为执行“噪声或”或“噪声与”功能,具体取决于偏置值。卷积和降采样的连续层通常是交替的,导致“双金字塔”:在每一层,随着空间分辨率的降低,特征图的数量增加。图2中第三个隐藏层中的每个单元都可能有来自前一层中几个要素地图的输入连接。卷积/二次抽样的组合,受到了胡贝尔和威塞尔的“简单”和“复杂”细胞概念的启发,在福岛的新保守主义[32]中得以实现,尽管当时还没有像反向传播这样的全球监督学习程序。对于输入的几何变换的很大程度的不变性可以通过空间分辨率的逐渐降低来实现,空间分辨率的逐渐降低由表示的丰富度(特征图的数量)的逐渐增加来补偿。
在这里插入图片描述

由于所有的权重都是通过反向传播来学习的,因此卷积网络可以看作是合成了它们自己的特征提取器。权重共享技术有一个有趣的副作用,即减少了自由参数的数量,从而减少了机器的“容量”,并减少了测试误差和训练误差之间的差距[34]。图2中的网络包含340,908个连接,但由于权重共享,只有60,000个可训练的自由参数。

固定大小的卷积网络已经被应用到许多应用中,其中包括手写识别[35]、[36]、机器印刷字符识别[37]、在线手写识别[38]、以及人脸识别[39]。沿单个时间维度共享权重的固定大小卷积网络被称为时延神经网络。TDNNs已经被用于音素识别(没有降采样)[40]、[41]、口语单词识别(具有降采样)[42]、[43]、孤立手写字符的在线识别[44]和签名验证[45]。

B. LeNet-5

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

在下文中,卷积层标记为$C_x$,降采样层标记为$S_x$,全连通层标记为$F_x$,其中x是层索引。

$C_1$是一个卷积层,有6个特征映射。每个要素图中的每个单元都连接到输入中的5x5邻域。要素图的大小为28x28,防止输入连接脱离边界。$C_1$包含156个可训练参数和122,304个连接。

$S_2$是一个降采样层,具有6个大小为14x14的要素地图。每个要素地图中的每个单元都连接到$C_1$相应要素图中的2x2邻域。将$S_2$一个单位的四个输入相加,然后乘以一个可训练系数,再加上一个可训练偏差。结果通过一个sigma函数传递。2x2感受野是非重叠的,因此$S_2$的特征图的行数和列数只有$C_1$的一半。图层$S_2$有12个可训练参数和5880个连接。

$C_3$是一个卷积层,有16个要素图。每个要素图中的每个单元都连接到$S_2$要素图子集内相同位置的几个5x5邻域。表1显示了由每个$C_3$要素图组合的一组$S_2$要素图。为什么不将每个$S_2$要素图与每个$C_3$要素地图连接起来呢?原因有两个。首先,非完全连接方案将连接数保持在合理的范围内。更重要的是,它迫使网络打破对称。不同的特征映射被迫提取不同的(希望是互补的)特征,因为它们得到不同的输入集。表1中连接方案的基本原理如下。前六个$C_3$要素图从$S_2$三个要素地图的每个相邻子集获取输入。接下来的六个从四个连续子集中获取输入。接下来的三个从不连续的四个子集获取输入。最后一个从所有$S_2$要素地图中获取输入。图层$C_3$有1516个可训练参数和151600个连接。

image.png

图层$S_4$是一个降采样层,具有16个大小为5x5的要素图。每个要素图中的每个单元都连接到$C_3$相应要素地图中的2x2邻域,方式与$C_13$和$S_2$相似。图层$S_4$有32个可训练参数和2000个连接。

$C_5$层是具有120个特征图的卷积层。每个单元都连接到$S_4$所有16幅要素图上的5x5邻域。这里,因为$S_4$的大小也是5x5,$C_5$的要素地图的大小是1x1:这相当于$S_4$和$C_5$之间的完全连接。$C_5$被标记为卷积层,而不是全连通层,因为如果LeNet-5输入变得更大,而其他一切保持不变,则要素图维度将大于1x1。第七节描述了动态增加卷积网络大小的过程。$C_5$层有48,120个可训练连接。

层$F_6$,包含84个单元(这个数字的原因来自输出层的设计,解释如下),并完全连接到$C_5$。它有10,164个可训练的参数。

像在经典的神经网络中一样,在$F_6$之前的层中的单元计算它们的输入向量和它们的权重向量之间的点积,在该点积上加一个偏差。这个加权和表示为单元i的$a_i$ ,然后通过一个sigmoid激活函数产生单元i的状态,由$x_i$ 表示:

$x_i=f(a_i)(5)$

激活函数是按比例缩放的双曲正切:
$f(a)=Atanh(Sa)(6)$

其中,A是函数的振幅,S确定其原点的斜率。函数f是奇数,水平渐近线在+A和A处。常数A选择为1.7159。附录A给出了选择挤压功能的基本原理。

最后,输出层由欧几里德RBF单元(RBF)组成,每个类一个,每个类有84个输入。每个RBF单位$y_i$ 的输出计算如下:
$y_j=\sum_j(x_j-w_{ij})^2 (7)$

换句话说,每个输出RBF单元计算其输入向量与其参数向量之间的欧几里德距离。参数向量的输入越远,RBF的输出越大。特定RBF的输出可以被解释为一个惩罚项,该惩罚项测量输入模式和与RBF相关的类的模型之间的拟合。在概率术语中,RBF输出可以解释为在层F6的配置空间中高斯分布的非标准化负对数似然。给定一个输入模式,应该设计损失函数,以使F6配置尽可能接近对应于模式的期望类别的RBF的参数向量。这些单元的参数向量是手动选择的,并保持固定(至少最初是这样)。这些参数向量的分量被设置为-1或+1。虽然它们可以以-1和+1的相等概率被随机选择,或者甚至被选择来形成[47所建议的纠错码,但是它们被设计来代表在7x12位图(因此数字84)上绘制的相应字符类的风格化图像。这种表示对于识别孤立数字并不特别有用,但是对于识别取自完整可打印的ASCII集的字符串却非常有用。其基本原理是相似的字符,因此容易混淆,例如大写的0、小写的0和0,或者小写的l、数字1、方括号和大写的1,将具有相似的输出代码。如果该系统与能够纠正这种混淆的语言后处理器相结合,这将特别有用。因为易混淆类的代码是相似的,所以对应的模糊字符的RBF的输出将是相似的,后处理器将能够选择适当的解释。图3给出了完整的ASCII码集的输出代码。

使用这种分布式编码的另一个原因是,当类的数量超过几十个时,非分布式代码往往表现不佳,而不是更常见的输出“1/N”编码(也称为位置编码,或细胞编码)。原因是非分布式编码中的输出单元必须在大部分时间关闭。这使得用sigmoid单元很难实现。还有一个原因是分类器经常被用来不仅识别字符,也用于拒绝非字符。具有分布式编码的RBF更适合于这一目的,因为与sigmoids不同,它们在输入空间的一个边界明确的区域内被激活,而非典型模式更有可能落在该区域之外。

image.png

RBF的参数向量充当层F6的目标向量。值得指出的是,这些向量的分量是+1或-1,这在F6的sigmoid的范围内,因此防止了这些sigmoid变得饱和。事实上,+1和-1是sigmoid的最大曲率点。这迫使F6装置在其最大非线性范围内运行。必须避免sigmoids的饱和,因为这将会导致损失函数较慢的收敛和病态问题。

C. 损失函数

可用于上述网络的最简单的输出损失函数是最大似然估计准则(MLE),在我们的例子中,它相当于最小均方误差(MSE)。一组训练样本的标准很简单:

$E(W)=\frac1P\sum_{p=1}^Py_{D^p}(Z^p,W) (8)$

其中$y_{D^p}$ 是第$D^p$个RBF单元的输出,即对应于输入模式$Z^p$ 的正确类别的输出。虽然这个成本函数适用于大多数情况,但它缺少三个重要属性。首先,如果我们允许RBF的参数自适应,$E(W)$有一个微不足道但完全不可接受的解决方案。在这个解中,所有的RBF参数向量是相等的,F6的状态是恒定的,并且等于那个参数向量。在这种情况下,网络很高兴地忽略了输入,所有的RBF输出都等于零。如果不允许RBF权重进行调整,就不会出现这种崩溃现象。第二个问题是类别之间没有竞争。这种竞争可以通过使用一种更具鉴别性的训练标准来获得,称为最大后验概率(MAP)标准,类似于有时用于训练HMMs的最大互信息标准[48],[49],[50]。它对应于最大化正确类别Dp的后验概率(或最小化正确类别概率的对数),假定输入图像来自其中一个“垃圾”类别或来自背景类别标签。就惩罚而言,这意味着除了像MSE标准那样降低正确类别的惩罚之外,该标准还提高了不正确类别的惩罚:
$E(W)=\frac1P\sum^P_{p=1}(y_{D^p}(Z^p,W)+log(e^{-j}+\sum_ie^{-y_i(Z^p,W)})) (9)$

第二个术语的否定起着“竞争”的作用。它必然小于(或等于)第一项,因此这个损失函数是正的。常数j是正的,并且防止已经非常大的类的惩罚被进一步推高。这个“垃圾“分类标签的后验概率是$e^{-j}+e^{-y_i(z^p,w)}$ .当学习RBF参数时,这种判别标准防止了前面提到的“崩溃效应”,因为它使RBF中心彼此分开。在第六节中,我们将这个标准推广到学习对输入中的多个对象(例如,单词或文档中的字符)进行分类的系统。

计算损失函数相对于卷积网络所有层中所有权重的梯度是通过反向传播完成的。标准算法必须稍加修改,以考虑到权重分配。实现它的一个简单方法是首先计算关于每个连接的损失函数的偏导数,就像网络是一个传统的多层网络而没有权重分配一样。然后,将共享同一参数的所有连接的偏导数相加,形成相对于该参数的导数。

如此大的架构可以被非常有效地训练,但是这样做需要使用一些在附录中描述的技术。附录的第一节描述了细节,如所用的特殊sigmoid,以及权重初始化。第二节和第三节描述了所使用的最小化过程,它是对Levenberg-Marquardt过程的对角近似的随机版本。