LeNet中文翻译

Gradient-Based Learning Applied to Document Recognition

基于梯度的学习应用于文档识别

摘要

使用反向传播算法训练的多层神经网络构成了成功的基于梯度的学习技术的最佳示例。给定适当的网络架构,基于梯度的学习算法可用于合成复杂的决策表面,该决策表面可以通过最少的预处理对高维模式(例如手写字符)进行分类。本文回顾了应用于手写字符识别的各种方法,并在标准手写数字识别任务上对它们进行了比较。卷积神经网络是专门为处理二维形状的可变性而设计的,其性能优于所有其他技术。

现实生活中的文档识别系统由多个模块组成,包括字段提取、分割、识别和语言建模。一种称为图变换网络(GTN)的新学习范式允许使用基于梯度的方法对此类多模块系统进行全局训练,以最大限度地减少整体性能指标。

描述了两种在线手写识别系统。实验证明了全局训练的优势,图转换器网络的灵活性。

还描述了用于读取银行支票的图形转换器网络。它使用卷积神经网络字符识别器与全局训练技术相结合,以提供商业和个人支票的记录准确性。它已进行商业部署,每天可读取数百万张支票。

关键词|神经网络、OCR、文档识别、机器学习、基于梯度的学习、卷积神经网络、图变换网络、有限状态变换器。

命名法

GT 图形转换器。

GTN 图变压器网络。

HMM 隐马尔可夫模型。

HOS 启发式过度分割。

K-NN K-最近邻。

NN 神经网络。

OCR 光学字符识别。

PCA 主成分分析。

RBF 径向基函数。

RS-SVM 缩减集支持向量方法。

SDNN 空间位移神经网络。

SVM支持向量法。

TDNN 时延神经网络。

V-SVM 虚拟支持向量法

1、介绍

在过去的几年中,机器学习技术,特别是应用于神经网络时,在模式识别系统的设计中发挥着越来越重要的作用。事实上,可以说学习技术的可用性是最近模式识别应用(例如连续语音识别和手写识别)取得成功的关键因素。

本文的主要信息是,通过更多地依赖自动学习,而不是手工设计的启发式方法,可以构建更好的模式识别系统。机器学习和计算机技术的最新进展使这成为可能。使用字符识别作为案例研究,我们表明,手工制作的特征提取可以有利地被精心设计的直接在像素图像上运行的学习机器所取代。

使用文档理解作为案例研究,我们表明,通过手动集成单独设计的模块来构建识别系统的传统方法可以被一种统一且原则良好的设计范式所取代,称为图变换网络,该范式允许训练所有模块优化全局性能标准。

自模式识别早期以来,人们就知道自然数据(无论是语音、字形还是其他类型的模式)的可变性和丰富性,使得完全手工构建准确的识别系统几乎不可能。因此,大多数模式识别系统都是使用自动学习技术和手工算法相结合来构建的。识别单个模式的常用方法是将系统分为两个主要模块,如图 1 所示。

图 1. 传统模式识别由两个模块执行:固定特征提取器和可训练分类器。

第一个模块称为特征提取器,它对输入模式进行变换,以便它们可以用低维向量或短符号串表示,(a) 可以轻松匹配或比较,(b) 在变换方面相对不变,并且输入模式的扭曲不会改变其本质。特征提取器包含大部分先验知识,并且对于任务来说是相当特定的。它也是大多数设计工作的重点,因为它通常完全是手工制作的。

另一方面,分类器通常是通用的且可训练的。这种方法的主要问题之一是识别精度很大程度上取决于设计者提出一组适当特征的能力。事实证明,这是一项艰巨的任务,不幸的是,每个新问题都必须重新完成。大量的模式识别文献致力于针对特定任务来描述和比较相对不同功能集的优点。

从历史上看,需要适当的特征提取器是因为分类器使用的学习技术仅限于具有易于分离的类的低维空间[1]。过去十年中,三个因素的结合改变了这一愿景。首先,具有快速算术单元的低成本机器的可用性允许更多地依赖暴力“数值”方法,而不是算法改进。其次,针对具有大市场和广泛兴趣的问题的大型数据库的可用性,例如手写识别,使设计人员能够更多地依赖真实数据,而不是手工特征提取来构建识别系统。第三个也是非常重要的因素是强大的机器学习技术的可用性,这些技术可以处理高维输入并可以生成复杂的数据。可以说,语音和手写识别系统的准确性的最新进展在很大程度上可以归因于对学习技术和大型训练数据集的依赖增加。事实上,大部分现代商业 OCR 系统都使用某种形式的经过反向传播训练的多层神经网络。

在本研究中,我们考虑手写字符识别的任务(第一部分和第二部分),并比较几种学习技术在手写数字识别基准数据集上的性能(第三部分)。

虽然更多的自动学习是有益的,但如果没有关于任务的最少量的先验知识,任何学习技术都无法成功。对于多层神经网络来说,整合知识的一个好方法是根据任务定制其架构。

第二节中介绍的卷积神经网络 [2] 是专门神经网络架构的一个示例,它通过使用局部连接模式并对权重施加约束来结合有关 2D 形状不变性的知识。

第三节对几种孤立手写数字识别方法进行了比较。为了从单个字符的识别到文档中单词和句子的识别,

第四节介绍了组合多个训练模块以减少总体错误的想法。如果模块操作有向图,则最好使用多模块系统识别可变长度对象(例如手写文字)。这引出了第四节中介绍的可训练图变换网络(GTN)的概念。

第五节描述了现在用于识别单词或其他字符串的启发式过度分割的经典方法。

第六节介绍了基于判别性和非判别性梯度的技术,用于在单词级别训练识别器,而不需要手动分割和标记。

第七节介绍了有前途的空间位移神经网络方法,该方法通过扫描输入上所有可能位置的识别器来消除分割启发式的需要。

在第八节中,表明可训练的图变换网络可以基于通用图合成算法被表示为多个广义转换。还处理了语音识别中常用的 GTN 和隐马尔可夫模型之间的连接。

第九部分描述了一个全球训练的 GTN 系统,用于识别笔式计算机中输入的手写内容。这个问题被称为“在线”手写识别,因为机器必须在用户书写时立即产生反馈。该系统的核心是卷积神经网络。结果清楚地证明了在单词级别训练识别器的优势,而不是在预先分割的、手工标记的、孤立的字符上进行训练。第 X 节描述了一个完整的基于 GTN 的系统,用于读取手写和机器打印的银行支票。该系统的核心是称为 LeNet-5 的卷积神经网络该系统在 NCR Corporation 银行业支票识别系统系列中投入商业使用。它每月在美国多家银行读取数百万张支票。

A. ​​数据中学习

自动机器学习有多种方法,但近年来神经网络社区流行的最成功的方法之一可以称为“数值”或基于梯度的学习。学习机计算函数 Y p = F ( Zp ; W) 其中 Zp 是第 p 个输入模式,W 表示系统中可调整参数的集合。

在模式识别设置中,输出 Y p 可以解释为模式 Zp 的已识别类标签,或者解释为与每个类别相关的分数或概率。损失函数 Ep = D(Dp ; F (W; Zp )),测量 Dp 、模式 Zp 的“正确”或期望输出与系统产生的输出之间的差异。

平均损失函数 Etrain(W) 是一组称为训练集 {(Z1 , D1 ) ,……(ZP , DP )}的标记示例的误差 Ep 的平均值。在最简单的设置中,学习问题在于找到使 Etrain(W) 最小化的 W 值。在实践中,系统在训练集上的性能并不重要。更相关的衡量标准是系统在实际应用领域的错误率。该性能是通过测量与训练集(称为测试集)不相交的一组样本的准确性来估计的。许多理论和实验工作 [3]、[4]、[5] 表明测试集 Etest 上的预期错误率与训练集 Etrain 上的错误率之间的差距随着训练样本数量的增加而减小,近似为

其中 P 是训练样本的数量,h 是机器“有效容量”或复杂性的度量 [6]、[7],是 0:5 到 1:0 之间的数字,k 是常数。当训练样本数量增加时,这个gap总是会减小,而且,随着容量h的增加,Etrain会减小,因此,当容量h增加时,Etrain的减小和gap的增加之间存在一个trade-o,即实现最低泛化误差 Etest 的容量 h 的最佳值。大多数学习算法尝试最小化 Etrain 以及对差距的一些估计。其正式版本称为结构风险最小化 [6]、[7] 和基于定义一系列容量递增的学习机,对应于参数空间的一系列子集,使得每个子集都是前一个子集的超集。实际上,结构风险最小化是通过最小化 Etrain + H 来实现的(W),其中函数H(W)称为正则化函数,是一个常数。选择 H(W),使其对属于参数空间高容量子集的参数 W 取较大值。最小化 H(W) 实际上限制了参数空间的可访问子集的容量,从而控制最小化训练误差和最小化训练误差与测试误差之间的预期差距之间的权衡。

B. 基于梯度的学习

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

在最简单的情况下, 是一个标量常数。更复杂的过程使用变量 ,或将其替换为对角矩阵,或将其替换为牛顿或拟牛顿方法中的逆 Hessian 矩阵的估计。也可以使用共轭梯度法[8]。然而,附录 B 表明,尽管文献中有许多相反的说法,但这些二阶方法对大型学习机的用处非常有限。

流行的最小化过程是随机梯度算法,也称为在线更新。它包括使用平均梯度的噪声或近似版本来更新参数向量。在最常见的实例中,W 根据单个样本进行更新:

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

C. 梯度反向传播

基于梯度的学习过程自 20 世纪 50 年代末以来一直在使用,但它们大多局限于线性系统 [1]。这种简单的梯度下降技术对于复杂的机器学习任务的令人惊讶的有用性直到以下三个事件发生才被广泛认识到。

第一个事件是认识到,尽管有相反的早期警告[12],但损失函数中局部最小值的存在在实践中似乎并不是一个主要问题。当人们注意到局部最小值似乎并不是玻尔兹曼机等早期非线性梯度学习技术成功的主要障碍时,这一点就变得显而易见了[13]、[14]。

第二个事件是 Rumelhart、Hinton 和 Williams [15] 以及其他人推广了一种简单而有效的程序,即反向传播算法,用于计算由多层处理组成的非线性系统中的梯度。

第三个活动是演示反向传播过程应用于具有 sigmoidal 单元的多层神经网络可以解决复杂的学习任务。反向传播的基本思想是通过从输出到输入的传播可以有效地计算梯度。这个想法在六十年代初的控制理论文献中有描述[16],但其在机器学习中的应用当时并未普遍实现。有趣的是,神经网络学习背景下反向传播的早期推导并未使用梯度,而是使用中间层单元的“虚拟目标”[17]、[18]或最小扰动参数[19]。拉格朗日形式主义控制理论文献中使用的方法可能提供了导出反向传播的最佳严格方法[20],并导出反向传播对循环网络的概括,和异构模块网络[22]。

第 I-E 节给出了通用多层系统的简单推导。

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

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

孤立的手写字符识别在文献中得到了广泛的研究(参见[23]、[24]的评论),并且是神经网络的早期成功应用之一[25]。第三节报告了识别单个手写数字的比较实验。

他们表明,使用基于梯度的学习训练的神经网络比在相同数据上测试的所有其他方法表现更好。最好的神经网络称为卷积网络,旨在学习直接从像素图像中提取相关特征(参见第二部分)。

然而,手写识别中最困难的问题之一不仅是识别单个字符,还要将单词或句子中的相邻字符分开,这一过程称为分段。执行此操作的技术已成为“标准”,称为启发式过度分割。它包括使用启发式图像处理技术在角色之间生成大量潜在的剪切,然后根据给定的分数选择最佳剪切组合。在这样的模型中,系统的准确性取决于启发式生成的剪切质量,以及识别器区分正确分段字符与字符片段、多个字符或多个字符的能力。否则会错误地分割字符。训练识别器来执行此任务提出了重大挑战,因为创建错误分割字符的标记数据库很困难。最简单的解决方案包括通过分割器运行字符串图像,然后手动标记所有的特征假设。不幸的是,这不仅是一项极其乏味且成本​​高昂的任务,而且很难一致地进行标记。例如,分割后的 4 的右半部分应该标记为 1 还是非字符?分割后的 8 的右半部分应该标记为 3 吗?

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

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

E. 全局可训练系统

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

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

为了确保全局损失函数 Ep (Zp ; W) 可微,整个系统被构建为可微模块的前馈网络。每个模块实现的函数对于模块的内部参数(例如,在字符识别模块的情况下神经网络字符识别器的权重)以及模块的输入而言,几乎在任何地方都必须是连续且可微的。如果是这种情况,可以使用众所周知的反向传播过程的简单概括来有效计算损失函数相对于系统中所有参数的梯度[22]。例如,让我们考虑一个由级联模块构建的系统,每个模块都实现一个函数 Xn = Fn(Wn; Xn1),其中 Xn 是表示模块输出的向量,Wn 是可调参数的向量模块(W 的子集),Xn1 是模块的输入向量(以及前一个模块的输出向量)。第一个模块的输入 X0 是输入模式 Zp 。如果 Ep 对 Xn 的偏导数已知,则可以使用后向递推计算 Ep 对 Wn 和 Xn1 的偏导数

其中 ∂F/ ∂W (Wn, Xn-1) 是 F 相对于在点 (Wn, Xn-1) 处计算的 W 的雅可比行列式,∂F/ ∂X (Wn, Xn-1) 是 F 相对于 X 的雅可比行列式。向量函数的雅可比行列式是一个包含所有输出相对于所有输入的偏导数的矩阵。

第一个方程计算 Ep (W) 梯度的某些项,而第二个方程则生成向后递归,就像众所周知的神经网络反向传播过程一样。我们可以对训练模式的梯度进行平均以获得完整的梯度。

有趣的是,在许多情况下,不需要显式计算雅可比矩阵。上面的公式使用雅可比行列式与偏导数向量的乘积,并且直接计算该乘积通常更容易,而无需预先计算雅可比行列式。与普通的多层神经网络类比,除了最后一个模块之外的所有模块都称为隐藏层,因为它们的输出无法从外部观察到。

在比上述模块的简单级联更复杂的情况下,偏导数符号变得有些模糊和尴尬。在更一般的情况下,可以使用拉格朗日函数 [20]、[21]、[22] 完成完全严格的推导。

传统的多层神经网络是上述网络的特例,其中状态信息 Xn 用固定大小的向量表示,并且其中的模块是矩阵乘法(权重)和分量式 sigmoid 函数(神经元)的交替层。然而,如前所述,复杂识别系统中的状态信息最好由带有附加到弧上的数字信息的图形来表示。在这种情况下,每个模块(称为图形转换器)将一个或多个图形作为输入,并生成一个图形作为输出。此类模块的网络称为图转换器网络(GTN)。

第四、六和八节发展了 GTN 的概念,并表明基于梯度的学习可用于训练所有模块中的所有参数,以最小化全局损失函数。当状态信息由本质上离散的对象(例如图形)表示时,可以计算梯度,这似乎是自相矛盾的,但这种困难是可以克服的,如稍后所示。

.用于孤立字符识别的卷积神经网络

通过梯度下降训练的多层网络能够从大量示例中学习复杂、高维、非线性映射,这使得它们成为图像识别任务的明显候选者。在传统的模式识别模型中,手工设计的特征提取器从输入中收集相关信息并消除不相关的变异性。然后,可训练的分类器将所得特征向量分类。

在该方案中,标准的、全连接的多层网络可以用作分类器。一个可能更有趣的方案是尽可能依赖特征提取器本身的学习。在字符识别的情况下,网络可以输入几乎原始的输入(例如尺寸标准化图像)。虽然这可以通过普通的全连接前馈网络来完成,并在字符识别等任务中取得一些成功,但也存在问题。

首先,典型的图像很大,通常具有数百个变量(像素)。一个完全连接的第一层,比如说第一层有一百个隐藏单元,已经包含了数万个权重。如此大量的参数增加了系统的容量,因此需要更大的训练集。此外,存储如此多权重的存储器要求可能排除某些硬件实现。但是,用于图像或语音应用的非结构化网络的主要缺陷是它们在翻译或输入的局部扭曲方面没有内置的不变性。

在发送到神经网络的固定大小输入层之前,字符图像或其他 2D 或 1D 信号必须进行近似大小归一化并在输入字段中居中。不幸的是,这样的预处理不可能是完美的:手写体通常在单词级别进行标准化,这可能会导致单个字符的大小、倾斜和位置变化。这与书写风格的变化相结合,将导致输入对象中显着特征的位置发生变化。原则上,足够规模的全连接网络可以学习产生相对于此类变化不变的输出。然而,学习这样的任务可能会导致多个具有相似权重模式的单元位于输入中的不同位置,以便检测它们出现在输入中的任何地方的独特特征。学习这些权重配置需要大量的训练实例来覆盖可能的变化空间。在如下所述的卷积网络中,通过强制跨空间复制权重配置来自动获得平移不变性。

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

A. 卷积网络

卷积网络结合了三种架构思想,以确保一定程度的移位、尺度和失真不变性:局部感受野、共享权重(或权重复制)以及空间或时间子采样。

图 2 显示了一个用于识别字符的典型卷积网络,称为 LeNet-5。输入平面接收近似大小归一化且居中的字符图像。层中的每个单元接收来自位于前一层的小邻域中的一组单元的输入。将输入单元连接到局部感受域的想法可以追溯到 60 年代初的感知器,几乎与 Hubel 和 Wiesel 在猫的视觉系统中发现局部敏感、方向选择性神经元同时[30]。局部连接已在视觉学习的神经模型中多次使用[31]、[32]、[18]、[33]、[34]、[2]。通过局部感受野,神经元可以提取基本的视觉特征,例如定向边缘、端点、角(或其他信号中的类似特征,例如语音频谱图)。然后,后续层将这些特征组合起来,以检测更高阶的特征。如前所述,输入的扭曲或偏移可能会导致显着特征的位置发生变化。此外,对图像的一部分有用的基本特征检测器可能对整个图像有用。可以通过强制一组单元(其感受野位于图像上的不同位置)具有相同的权重向量来应用这一知识[32]、[15]、[34]。层中的单元按平面组织,其中所有单元共享相同的权重集。该平面中单元的输出集称为特征图。特征图中的单元都被限制对图像的不同部分执行相同的操作。

一个完整的卷积层由多个特征图(具有不同的权重向量)组成,因此可以在每个位置提取多个特征。一个具体的例子是 LeNet-5 的第一层,如图 2 所示。

图 2.LeNet-5(一种卷积神经网络)的架构​​,此处用于数字识别。每个平面都是一个特征图,即一组权重被限制为相同的单元。

LeNet-5的第一个隐藏层中的单元被组织在6个平面中,每个平面都是一个特征图。特征图中的一个单元有 25 个输入,连接到输入中的 5 x 5 区域,称为单元的感受野。每个单元有 25 个输入,因此有 25 个可训练系数加上一个可训练偏差。特征图中连续单元的感受野以前一层中相应的连续单元为中心。因此,相邻单元的感受野重叠。例如,在 LeNet-5 的第一个隐藏层中,水平连续单元的感受域重叠 4 列和 5 行。如前所述,特征图中的所有单元共享相同的 25 个权重集和相同的偏差,因此它们在输入的所有可能位置检测到相同的特征。该层中的其他特征图使用不同的权重和偏差集,从而提取不同类型的局部特征。在 LeNet-5 的情况下,在每个输入位置,六个单元在六个特征图中相同位置提取六种不同类型的特征。特征图的顺序实现将使用具有局部感受野的单个单元扫描输入图像,并将该单元的状态存储在特征图中的相应位置。

此操作相当于一个卷积,后跟一个加性偏差和挤压函数,因此称为卷积网络。卷积的内核是特征图中的单元使用的连接权重的集合。卷积层的一个有趣的特性是,如果输入图像发生移动,特征图输出将移动相同的量,但否则将保持不变。这一特性是卷积网络对输入的偏移和扭曲的鲁棒性的基础。

一旦检测到某个特征,其确切位置就变得不那么重要了。只有其相对于其他特征的大致位置才是相关的。例如,一旦我们知道输入图像包含左上区域中的大致水平线段的端点、右上区域中的角点以及图像下部的大致垂直线段的端点,我们可以告诉输入图像是 7。这些特征中的每一个的精确位置不仅与识别模式无关,而且还可能有害,因为位置可能会因字符的不同实例而异。降低特征图中独特特征的位置编码精度的一个简单方法是降低特征图的空间分辨率。这可以通过所谓的子采样层来实现,该子采样层执行局部平均和子采样,降低特征图的分辨率,并降低输出对移位和失真的敏感性。

LeNet5的第二个隐藏层是子采样层。该层包含六个特征图,每个特征图对应前一层中的每个特征图。每个单元的感受野是前一层对应特征图中的 2 x 2 区域。每个单元计算其四个输入的平均值,将其乘以可训练系数,添加可训练偏差,并将结果传递给 sigmoid 函数。连续的单元具有不重叠的连续感受野。因此,子采样层特征图的行数和列数只有一半作为前一层的特征图。可训练系数和偏差控制 S 形非线性的影响。如果系数很小,则该单元以准线性模式运行,并且子采样层仅模糊输入。如果系数很大,则子采样单元可以被视为执行“噪声或”或“噪声与”函数,具体取决于偏差的值。连续的卷积层和子采样通常是交替的,从而形成“双金字塔”:在每一层,特征图的数量随着空间分辨率的降低而增加。

图2中第三个隐藏层中的每个单元可以具有来自前一层中的多个特征图的输入连接。卷积/子采样组合受到 Hubel 和 Wiesel 的“简单”和“复杂”单元概念的启发,在福岛的 Neocognitron [32] 中实现,尽管没有全局监督学习当时可以使用诸如反向传播之类的过程。通过逐渐增加表示的丰富度(特征图的数量)来补偿空间分辨率的逐渐降低,可以实现输入的几何变换的很大程度的不变性。

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

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

B.LeNet-5

本节更详细地描述实验中使用的卷积神经网络 LeNet-5 的架构。 LeNet-5由7层组成,不包括输入,所有层都包含可训练的参数(权重)。

输入是 32x32 像素图像。这比数据库中的最大字符(最多 20x20 像素,以 28x28 字段为中心)大得多。原因是希望潜在的独特特征(例如笔画端点或角)可以出现在最高级别特征检测器的感受野的中心。在 LeNet-5 中,最后一个卷积层(C3,见下文)的感受野中心集在 32x32 输入的中心形成一个 20x20 的区域。输入像素的值被归一化,使得背景水平(白色)对应于值-0.1,前景(黑色)对应于1.175。这使得平均输入大致为 0,方差大致为 1,从而加速了学习 [46]。

下面,卷积层标记为 Cx,子采样层标记为 Sx,全连接层标记为 Fx,其中 x 是层索引。

C1 层是一个具有 6 个特征图的卷积层。每个特征图中的每个单元都连接到输入中的 5x5 邻域。特征图的大小为 28x28,这可以防止输入的连接超出边界。 C1 包含 156 个可训练参数和 122,304 个连接。

S2层是一个子采样层,有6个大小为14x14的特征图。每个特征图中的每个单元都连接到 C1 中相应特征图中的 2x2 邻域。S2 中一个单元的四个输入相加,然后乘以可训练系数,并添加到可训练偏差。

结果通过 sigmoidal 函数传递。 2x2 感受域不重叠,因此 S2 中的特征图的行数和列数是 C1 中特征图的一半。 S2 层有 12 个可训练参数和 5,880 个连接。

C3 层是一个具有 16 个特征图的卷积层。每个特征图中的每个单元都连接到 S2 特征图子集中相同位置的多个 5x5 邻域。表 I 显示了 S2 特征图集由每个 C3 特征图组合。

表I 每一列指示S2中的哪个特征图由C3的特定特征图中的单元组合。

为什么不将每个 S2 特征图连接到每个 C3 特征图?原因是双重的。首先,非完整连接方案将连接数保持在合理范围内。

更重要的是,它迫使网络对称性被打破。不同的特征图被迫提取不同的(希望是互补的)特征,因为它们获得不同的输入集。表I中的连接方案背后的基本原理如下。前六个 C3 特征图从 S2 中三个特征图的每个连续子集获取输入。接下来的六个从四个连续子集中获取输入。接下来的三个从四个不连续的子集中获取输入。最后一个从所有 S2 特征图中获取输入。 C3 层有 1,516 个可训练参数和 151,600 个连接。

S4 层是子采样层,具有 16 个大小为 5x5 的特征图。每个特征图中的每个单元都连接到 C3 中相应特征图中的 2x2 邻域,其方式与 C1 和 S2 类似。 S4 层有 32 个可训练参数和 2,000 个连接。

C5 层是一个具有 120 个特征图的卷积层。

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

F6层包含84个单元(这个数字的原因来自于输出层的设计,如下所述)并且完全连接到C5。它有 10,164 个可训练参数。

与经典神经网络一样,直到 F6 的层中的单元计算其输入向量和权重向量之间的点积,并添加偏差。该加权和(对于单元 i 表示为 ai)然后通过 sigmoid 压缩函数以产生单元 i 的状态,由 xi 表示:

挤压函数是缩放的双曲正切:

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

最后,输出层由欧几里得径向基函数单元 (RBF) 组成,每个类别一个,每个单元有 84 个输入。每个 RBF 单元 yi 的输出计算如下:

换句话说,每个输出 RBF 单元计算其输入向量与其参数向量之间的欧几里德距离。距离参数向量的输入越远,RBF 输出就越大。特定 RBF 的输出可以解释为测量输入模式和与 RBF 相关的类模型之间的 t 的惩罚项。用概率术语来说,RBF 输出可以解释为 F6 层配置空间中高斯分布的非归一化负对数似然。给定一个输入模式,损失函数的设计应使 F6 的配置尽可能接近对应于模式所需类别的 RBF 参数向量。

这些单元的参数向量是手动选择的并保持固定(至少最初是这样)。这些参数向量的分量被设置为-1或+1。虽然它们可以以 -1 和 +1 的相同概率随机选择,甚至可以按照[47]的建议选择形成纠错码,但它们被设计为表示在7x12 位图(因此数字为 84)。这种表示对于识别孤立的数字并不是特别有用,但是对于识别从完整的可打印 ASCII 集中获取的字符串非常有用。基本原理是,相似且容易混淆的字符(例如大写 O、小写 O 和零,或小写 l、数字 1、方括号和大写 I)将具有相似的输出代码。如果系统与可以纠正此类混淆的语言后处理器结合使用,这将特别有用。由于易混淆类的代码相似,因此模糊字符的相应 RBF 的输出将相似,并且后处理器将能够选择适当的解释。图 3 给出了完整 ASCII 集的输出代码

图 3. 用于识别完整 ASCII 集的输出 RBF 的初始参数。

使用这种分布式代码而不是更常见的 \1 of N" 代码(也称为位置代码或祖母单元代码)作为输出的另一个原因是,当类的数量为大于几十个。原因是非分布式代码中的输出单元大多数时候必须是 o。这很难用 sigmoid 单元实现。还有一个原因是分类器经常用于不仅可以识别字符,还可以拒绝非字符。具有分布式代码的 RBF 更适合此目的,因为与 sigmoid 不同,在这种情况下,它们在输入空间的一个明确限定的区域内被激活,而非典型模式更有可能落在这个区域之外。

RBF 的参数向量起到 F6 层目标向量的作用。值得指出的是,这些向量的分量为 +1 或 -1,完全在 F6 的 sigmoid 范围内,因此可以防止这些 sigmoid 饱和。事实上,+1 和 -1 是 S 型曲线的最大曲率点。这迫使 F6 装置在最大非线性范围内运行。必须避免 sigmoid 的饱和,因为众所周知,它会导致损失函数收敛缓慢和病态。

C. 损失函数

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

其中 yDp 是第 Dp 个 RBF 单元的输出,即对应于输入模式 Zp 的正确类别的输出。虽然此成本函数适用于大多数情况,但它缺乏三个重要属性。首先,如果我们允许 RBF 的参数进行调整,E(W) 就会有一个微不足道但完全不可接受的解决方案。在该解决方案中,所有 RBF 参数向量都相等,并且 F6 的状态是恒定的并且等于该参数向量。在这种情况下,网络会愉快地忽略输入,并且所有 RBF 输出都等于 0。如果不允许 RBF 权重自适应,这种崩溃现象就不会发生。第二个问题是班级之间没有竞争。这种竞争可以通过使用更具辨别力的训练标准来获得,称为 MAP(最大后验)标准,类似于有时用于训练 HMM 的最大互信息标准 [48]、[49]、[50]。它对应于最大化正确类 Dp 的后验概率(或最小化正确类概率的对数),假设输入图像可以来自其中一个类或来自背景“垃圾”类标签。的惩罚,这意味着除了像MSE标准一样压低正确类别的惩罚之外,该标准还拉高了错误类别的惩罚:

第二项的否定起着“竞争”的作用。

它必然小于(或等于)第一项,因此该损失函数为正。常数 j 是正值,可以防止已经很大的类别的惩罚被进一步推高。该垃圾类标签的后验概率将是 𝑒−𝑗 和 𝑖𝑒𝑦𝑖(𝑍𝑃, 𝑊) 的比率。当学习 RBF 参数时,这种判别标准可以防止前面提到的“崩溃效应”,因为它使 RBF 中心彼此分开。在第六节中,我们为学习对多个对象进行分类的系统提出了该标准的推广输入(例如,单词或文档中的字符)。

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

如此大型的架构可以非常有效地进行训练,但这样做需要使用附录中描述的一些技术。附录的 A 节描述了诸如所使用的特定 sigmoid 和权重初始化等细节。 B 和 C 部分描述了所使用的最小化过程,它是 Levenberg-Marquardt 过程的对角线近似的随机版本。

三.结果及与其他方法的比较

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

A. 数据库: 修改的NIST 集

用于训练和测试本文中描述的系统的数据库是根据包含手写数字二进制图像的 NIST 特殊数据库 3 和特殊数据库 1 构建的。 NIST 最初指定 SD-3 作为训练集,SD-1 作为测试集。然而,SD-3 比 SD1 更清晰、更容易识别。原因在于SD-3是在人口普查局的雇员中收集的,而SD-1则是在高中生中收集的。从学习实验中得出合理的结论要求结果独立于完整样本集中训练集和测试的选择。因此有必要通过混合 NIST 的数据集来建立一个新的数据库。

SD-1 包含由 500 位不同作家撰写的 58,527 幅数字图像。与 SD-3 不同的是,SD-3 中每个写入器的数据块按顺序出现,而 SD-1 中的数据是加扰的。 SD-1 的作者身份是可用的,我们使用此信息来解读作者。然后,我们将 SD-1 一分为二:前 250 位作家写的字符进入我们的新训练集。其余 250 位作家被放入我们的测试集中。因此,我们有两组,每组有近 30,000 个示例。新的训练集使用 SD-3 中的足够示例完成,从模式 # 0 开始,形成一整套 60,000 个训练模式。

同样,新的测试集是用从模式 # 35,000 开始的 SD-3 示例完成的,以形成具有 60,000 个测试模式的完整集。在此描述的实验中,我们仅使用了 10,000 个测试图像的子集(5,000 个来自 SD-1 和 5,000 个来自 SD-3),但我们使用了完整的 60,000 个训练样本。生成的数据库称为 Modi ed NIST 或 MNIST 数据集。

原始黑白(双层)图像的尺寸在 20x20 像素框中标准化为 t,同时保留其纵横比。由于归一化算法使用的抗锯齿(图像插值)技术,生成的图像包含灰度级。使用了三个版本的数据库。在第一个版本中,通过计算像素的质心并平移图像以将该点定位在 28x28 区域的中心,图像在 28x28 图像中居中。在某些情况下,这个 28x28 字段会扩展到带有背景像素的 32x32。该版本的数据库将被称为常规数据库。

在数据库的第二个版本中,角色图像被去除倾斜并裁剪为 20x20 像素图像。去倾斜计算像素的二阶惯性矩(将前景像素计为 1,将背景像素计为 0),并通过水平移动线条以使主轴垂直来剪切图像。该版本的数据库将被称为 deslanted 数据库。在一些早期实验中使用的数据库的第三个版本中,图像被缩小到 16x16 像素。常规数据库(60,000 个训练示例、10,000 个测试示例(大小标准化为 20x20,并以 28x28 字段中的质心为中心))可从 error 获取。

图 4 显示了从测试集中随机选取的示例。

图 4 来自 MNIST 数据库的大小归一化示例。

B. 结果

LeNet-5 的多个版本是在常规 MNIST 数据库上进行训练的。每个会话对整个训练数据进行 20 次迭代。全局学习率的值(参见附录 C 中的公式 21 了解定义)使用以下计划减小:前两遍为 0.0005,接下来的3个为 0.0002,接下来的 3 个为 0.0001,接下来的 4 个为 0.00005,其后为 0.00001。在每次迭代之前,如附录 C 中所述,对 500 个样本重新评估对角线 Hessian 近似,并在整个迭代期间保持固定。参数设置为0.02。在第一遍期间,所得到的有效学习率在参数集上大约在 7 105 到 0:016 之间变化。经过大约 10 次训练集后,测试错误率稳定在 0.95%。经过 19 遍后,训练集上的错误率达到 0.35%。许多作者报告说,在针对各种任务训练神经网络或其他自适应算法时,观察到了过度训练的常见现象。当过度训练发生时,训练误差随着时间的推移不断减小,但测试误差会经历一个最小值,并在一定次数的迭代后开始增大。虽然这种现象很常见,但在我们的案例中并未观察到,如图 5 中的学习曲线所示。一个可能的原因是学习率保持相对较大。这样做的结果是权重永远不会稳定在局部最小值,而是保持随机振荡。因为那些波动时,平均成本将在更广泛的最低限度内降低。

图 5.LeNet-5 的训练和测试误差作为通过 60,000 个模式训练集(无失真)的次数的函数。平均训练误差是在 -y 随着训练的进行。这解释了为什么训练误差似乎大于测试误差。经过 10 到 12 次训练集后即可收敛。

因此,随机梯度将具有与有利于更广泛最小值的正则化项类似的效果。较宽的最小值对应于参数分布熵较大的解,这有利于泛化误差。

在通过使用 15,000、30,000 和 60,000 个示例训练网络来测量训练集大小的影响。由此产生的训练误差和测试误差如图 6 所示。很明显,即使使用 LeNet-5 等专门的架构,更多的训练数据也会提高准确性。

图 6. 使用不同大小的训练集实现的 LeNet-5 的训练和测试误差。该图表明更大的训练集可以提高 LeNet-5 的性能。空心方块显示使用随机失真人工生成更多训练模式时的测试误差。测试图案不变形

为了验证这个假设,我们通过随机扭曲原始训练图像来人工生成更多的训练样本。将增加的训练集组成60,000个原始图案加上540,000个带有随机选择的扭曲参数的扭曲图案实例。扭曲是以下平面变换的组合:水平和垂直平移、缩放、挤压(同时水平压缩和垂直伸长,或相反)以及水平剪切。图 7 显示了用于训练的扭曲模式的示例。当使用扭曲数据进行训练时,测试错误率下降至 0.8%(未变形时为 0.95%)。使用与没有变形相同的训练参数。训练课程的总时长保持不变(20 次,每次 60,000 个模式)。有趣的是,在这 20 次传递过程中,网络实际上只看到每个单独的样本两次。

图 7.十种训练模式的扭曲示例。

图 8 显示了所有 82 个错误分类的测试示例。其中一些例子确实含糊不清,尽管它们是用代表性不足的风格编写的,但是有几个人类可以完全识别。这表明随着更多的训练数据,预计会有进一步的改进。

图 8. LeNet-5 错误分类的 82 个测试模式。每张图片下方都显示了正确答案(左)和网络答案(右)。这些错误主要是由真正不明确的模式引起的,或者是由训练集中代表性不足的风格编写的数字引起的。

C.与其他分类器的比较为了进行比较

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

图 9. 各种分类方法的测试集错误率 (%)。 [deslant] 表示分类器是在数据库的 deslanted 版本上进行训练和测试的。 [dist] 表示训练集增加了人为扭曲的示例。 [16x16]表示系统使用16x16像素的图像。所报错误率的不确定性约为0.1%。

C.1 线性分类器和成对线性分类器

人们可能考虑的最简单的分类器是线性分类器。每个输入像素值对每个输出单元的加权和有贡献。总和最大的输出单元(包括偏置常数的贡献)。表示输入字符的类别。在常规数据上,错误率为12%。该网络有 7850 个免费参数。在去斜图像上,测试错误率为8.4%。网络有4010个自由参数。线性分类器的缺陷已有详细记录 [1],将其包含在这里只是为了形成更复杂的分类器的比较基础。 sigmoid 单元、线性单元、梯度下降学习和直接求解线性系统学习的各种组合给出了相似的结果。

测试了基本线性分类器的简单改进[52]。这个想法是训练单层网络的每个单元以将每个类与其他类分开。在我们的例子中,该层包含 45 个单元,标记为 0/1、0/2、...0/9、1/2...8/9。单元 i=j 被训练为在 i 类模式上产生 +1,在 j 类模式上产生 -1,并且不接受其他模式的训练。对于所有 x 和 y,第 i 类的最终分数是所有标记为 i=x 的单元的输出总和减去所有标记为 y=i 的单元的输出总和。常规测试集的错误率为 7.6%。

C.2 基线最近邻分类器

另一个简单的分类器是 K 最近邻分类器,在输入图像之间具有欧几里得距离度量。该分类器的优点是不需要训练时间,也不需要设计者动脑筋。

然而,内存要求和识别时间都很大:完整的 60,000 个 20 x 20 像素训练图像(每个像素 1 字节大约 24 兆字节)必须在运行时可用。可以设计出更紧凑的表示形式,同时错误率略有增加。在常规测试集上,错误率为 5.0%。在去倾斜数据上,错误率为 2.4%,k = 3。自然地,现实的欧几里得距离最近邻系统将在特征向量上运行,而不是直接在像素上运行,但由于本研究中提出的所有其他系统直接对像素进行操作,此结果对于基线比较很有用。

C.3 主成分分析(PCA)和多项式分类器

继[53]、[54]之后,构建了一个预处理阶段,用于计算输入模式在训练向量集的 40 个主成分上的投影。为了计算主成分,首先计算每个输入成分的平均值并从训练向量中减去。然后使用奇异值分解计算所得向量的协方差矩阵并对其进行对角化。 40维特征向量被用作二阶多项式分类器的输入。这个分类器可以看作是一个具有821个输入的线性分类器,前面是一个计算输入变量对的所有乘积的模块。常规测试集的误差为 3.3%。

C.4 径向基函数网络

继[55]之后,构建了 RBF 网络。第一层由 1,000 个具有 28x28 输入的高斯 RBF 单元组成,第二层是一个简单的 1000 个输入/10 个输出的线性分类器。 RBF 单元分为 10 组,每组 100 个。使用自适应 K 均值算法对每组单元进行 10 个类之一的所有训练示例的训练。使用正则化伪逆方法计算第二层权重。常规测试集的错误率为 3.6%

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

我们测试的另一个分类器是一个完全连接的多层神经网络,具有两层权重(一个隐藏层),使用附录 C 中描述的反向传播版本进行训练。网络的常规测试集误差为 4.7%具有 300 个隐藏单元的网络,具有 1000 个隐藏单元的网络为 4.5%。使用人工扭曲生成更多训练数据仅带来边际改进:300 个隐藏单元提高 3.6%,1000 个隐藏单元提高 3.8%。当使用去倾斜图像时,对于具有 300 个隐藏单元的网络,测试误差跃升至 1.6%。

具有如此大量自由参数的网络能够实现相当低的测试错误仍然是一个谜。我们推测多层网络中梯度下降学习的动力学具有“自正则化”效应。由于权重空间的原点是一个几乎在每个方向上都有吸引力的鞍点,因此权重在最初的几个时期总是会缩小(最近的理论分析似乎证实了这一点[56])。小权重导致 sigmoid 在准线性区域运行,使得网络本质上相当于一个低容量的单层网络。随着学习的进行,权重增长,逐渐增加网络的有效容量。这似乎是 Vapnik 的“结构风险最小化”原则的近乎完美(如果是偶然的)实施[6]。绝对需要对这些现象有更好的理论理解和更多的经验证据。

C.6 二隐层全连接多层神经网络

为了查看该架构的效果,训练了几个两隐藏层的多层神经网络。理论结果表明任何函数都可以用单隐层神经网络来逼近[57]。然而,一些作者观察到,两个隐藏层架构有时在实际情况下会产生更好的性能。这里也观察到了这种现象。 28x28-300-100-10 网络的测试错误率为 3.05%,比使用稍多的权重和连接获得的单隐藏层网络要好得多。

将网络大小增加到 28x28-1000-150-10 仅略微改善了错误率:2.95%。使用扭曲模式进行训练在一定程度上提高了性能:28x28-300-100-10 网络的错误率为 2.50%,28x28-1000-150-10 网络的错误率为 2.45%。

C.7 小型卷积网络:LeNet-1

卷积网络试图解决无法学习训练集的小型网络和似乎过度参数化的大型网络之间的困境。 LeNet-1 是卷积网络架构的早期实施例,出于比较目的而包含在此处。图像被下采样到 16x16 像素并位于 28x28 输入层的中心。尽管评估 LeNet-1 需要大约 100,000 个乘法/加法步骤,但其卷积性质使自由参数的数量仅约为 2600 个。LeNet1 架构是使用我们自己版本的 USPS(美国邮政服务邮政编码)数据库开发的,并且其大小经过调整以匹配可用数据[35]。 LeNet-1 取得了 1.7% 的测试误差。具有如此少量参数的网络可以获得如此好的错误率,这一事实表明该架构适合该任务。

C.8 LeNet-4

LeNet-1 的实验清楚地表明,需要更大的卷积网络才能充分利用大尺寸的训练集。 LeNet-4和后来的LeNet5就是为了解决这个问题而设计的。除了架构细节之外,LeNet-4 与 LeNet-5 非常相似。它包含 4 个第一层特征图,后面是与每个第一层特征图成对连接的 8 个子采样图,然后是 16 个特征图,后面是 16 个子采样图,后面是一个有 120 个单元的全连接层,最后是输出层(10 个单位)。 LeNet-4包含约260,000个连接,并具有约17,000个自由参数。测试误差为1.1%。在一系列实验中,我们用欧几里德最近邻分类器替换了 LeNet-4 的最后一层,并用 Bottou 和 Vapnik [58] 的“局部学习”方法替换,其中每次都重新训练局部线性分类器显示了新的测试模式。尽管这些方法确实提高了拒绝性能,但它们都没有提高原始错误率。

C.9 增强的 LeNet-4

根据 R. Schapire [59] 的理论工作,Drucker 等人 [60] 开发了组合多个分类器的“boosting”方法。组合了三个 LeNet-4:第一个以通常的方式进行训练。第二个以常规方式进行训练在第一个网络过滤的模式上,以便第二个机器看到混合的模式,第一个网络有 50% 是正确的,而 50% 是错误的。最后,第三个网络接受新模式的训练第一个和第二个网络不一致。在测试时,将三个网络的输出简单相加。由于LeNet-4的错误率非常低,因此需要使用人工扭曲的图像(与LeNet-5一样) )以获得足够的样本来训练第二个和第三个网络。测试错误率为 0.7%,是我们所有分类器中最好的。乍一看,Boosting 的成本似乎是单个网络的三倍。事实上,当第一个网络产生高置信度答案时,其他网络不会被调用。平均计算成本约为单个网络的1.75倍。

C.10 切线距离分类器(TDC

切线距离分类器(TDC)是一种最近邻方法,其中距离函数对输入图像的小变形和平移不敏感[61]。如果我们将图像视为高维像素空间中的一个点(其中维数等于像素数),那么字符的不断演变的失真会在像素空间中描绘出一条曲线。总而言之,所有这些扭曲定义了像素空间中的低维流形。对于小畸变,在原始图像附近,可以用一个平面(称为切平面)来近似该流形。字符图像“接近度”的一个很好的衡量标准是它们的切平面之间的距离,其中用于生成平面的扭曲集包括平移、缩放、倾斜、挤压、旋转和线粗细变化。使用 16x16 像素图像实现了 1.1% 的测试错误率。在多个分辨率下使用简单欧几里得距离的预过滤技术可以减少必要的切线距离计算的数量。

C.11 支持向量机(SVM

多项式分类器是经过充分研究的用于生成复杂决策面的方法。不幸的是,它们对于高维问题不切实际,因为乘积项的数量令人望而却步。支持向量技术是一种在高维空间中表示复杂表面(包括多项式和许多其他类型的表面)的极其经济的方法[6]。

决策面的一个特别有趣的子集是与乘积项的高维空间中距两类凸包最大距离的超平面相对应的子集。 Boser、Guyon 和 Vapnik [62] 意识到,这个“最大边距”集中的任何 k 次多项式都可以通过首先计算输入图像与训练样本子集(称为“支持向量”)的点积来计算。 ),将结果进行 k 次方,然后将所得数字进行线性组合。找到支持向量和系数相当于解决具有线性不等式约束的高维二次最小化问题。为了进行比较,我们在此纳入了 Burges 和 Scholkopf 在[63]中报告的结果。使用常规 SVM,他们在常规测试集上的错误率为 1.4%。 Cortes 和 Vapnik 报告称,使用略有不同的技术,在相同数据上使用 SVM 的错误率为 1.1%。该技术的计算成本非常高:每次识别大约需要 1400 万次乘加运算。使用 Sch olkopf 的虚拟支持向量技术 (V-SVM),获得了 1.0% 的误差。最近,Sch olkopf(个人通讯)使用 V-SVM 的修改版本已达到 0.8%。不幸的是,V-SVM 非常昂贵:大约是普通 SVM 的两倍。为了缓解这个问题,Burges 提出了缩减集支持向量技术(RS-SVM),该技术在常规测试集上达到了 1.1% [63],每次识别的计算成本仅为 650,000 次乘加,即仅比 LeNet-5 贵约 60 %。

D、讨论

图 9 至图 12 显示了分类器性能的摘要。图 9 显示了分类器在 10,000 个示例测试集上的原始错误率。 Boosted LeNet-4 表现最好,得分为 0.7%,紧随其后的是 LeNet-5,得分为 0.8%。

图 10. 拒绝性能:某些系统必须拒绝才能实现 0.5% 错误的测试模式的百分比。

图 10 显示了测试集中必须拒绝的模式数量,以达到某些方法的 0.5% 错误率。当相应输出的值小于预定阈值时,模式被拒绝。

在许多应用中,拒绝性能比原始错误率更重要。用于决定拒绝某个模式的分数是前两个类别的分数之间的差异。同样,Boosted LeNet-4 具有最佳性能。尽管准确度是相同的,原始 LeNet-4 的增强版本比原始 LeNet-4 表现更好。

图 11. 从尺寸归一化图像开始识别单个字符的乘法累加运算的数量。

图 11 显示了每种方法识别单个尺寸归一化图像所需的乘法累加运算的数量。预计神经网络的要求比基于记忆的方法要低得多。卷积神经网络特别适合硬件实现,因为它们的结构规则且权重内存要求低。 LeNet-5 前身的单芯片混合模拟数字实现已被证明能够以超过每秒 1000 个字符的速度运行 [64]。然而,主流计算机技术的快速进步使得这些外来技术很快就过时了。由于内存需求和计算需求巨大,基于内存的技术的经济有效的实现更加难以捉摸。

还测量了训练时间。 K 最近邻和 TDC 的训练时间基本上为零。虽然单层网络、成对网络和 PCA+二次网络可以在不到一个小时的时间内完成训练,但多层网络的训练时间预计要长得多,但只需要 10 到 20 次通过训练集。这相当于使用单个 200MHz R10000 处理器在 Silicon Graphics Origin 2000 服务器上训练 LeNet-5 需要 2 到 3 天的 CPU 时间。需要注意的是,虽然训练时间与设计者有一定关系,但系统的最终用户却没有多大兴趣。考虑到在现有技术和以大量训练时间为代价带来边际精度提高的新技术之间进行选择,任何最终用户都会选择后者。

图 12. 每种方法的内存需求(以变量数量衡量)。大多数方法只需要每个变量一个字节即可获得足够的性能。

图 12 显示了内存需求,以及根据需要存储的变量数量衡量的各种分类器的自由参数数量。大多数方法只需要每个变量大约一个字节即可获得足够的性能。然而,NearestNeighbor 方法可能需要每像素 4 位来存储模板图像。毫不奇怪,神经网络比基于内存的方法需要更少的内存。总体性能取决于许多因素,包括准确性、运行时间和内存要求。

随着计算机技术的进步,更大容量的识别器变得可行。更大的识别器反过来需要更大的训练集。 LeNet-1 适合 1989 年的可用技术,就像 LeNet-5 适合现在一样。

1989 年,像 LeNet-5 这样复杂的识别器需要数周的训练,并且数据量超出了可用数据,因此甚至没有被考虑。在相当长的一段时间里,LeNet-1 被认为是最先进的。开发了局部学习分类器、最佳边缘分类器和切线距离分类器来改进 LeNet-1,并且他们在这方面取得了成功。然而,他们反过来又促使人们寻求改进的神经网络架构。这种搜索部分是通过对各种学习机器的能力的估计来指导的,这些能力是根据训练和测试误差的测量结果得出的,作为训练样本数量的函数。我们发现需要更多的容量。通过一系列架构上的实验,结合识别错误的特征分析,精心设计了LeNet-4和LeNet-5。

我们发现提升可以显着提高准确性,并且内存和计算费用的损失相对较小。此外,失真模型可用于增加数据集的有效大小,而实际上不需要收集更多数据。

支持向量机具有出色的准确性,这是最引人注目的,因为与其他高性能分类器不同,它不包含有关问题的先验知识。事实上,如果图像像素用固定映射进行排列并丢失其图像结构,则该分类器也能起到同样的作用。然而,要达到与卷积神经网络相当的性能水平,只能在内存和计算要求方面付出相当大的代价。简化集 SVM 要求在卷积网络的两倍以内,并且错误率非常接近。由于该技术相对较新,因此预计这些结果会有所改善。

当有大量数据可用时,许多方法都可以获得相当高的准确性。与基于内存的技术相比,神经网络方法运行速度更快,所需空间也少得多。随着训练数据库规模的不断增大,神经网络的优势将变得更加引人注目。

E. 不变性和抗噪性

卷积网络特别适合识别或拒绝大小、位置和方向变化很大的形状,例如现实世界字符串识别系统中启发式分段器通常生成的形状。

在上述实验中,抗噪性和失真不变性的重要性并不明显。大多数实际应用中的情况是完全不同的。在识别之前,通常必须将字符从其上下文中分割出来。分割算法很少是完美的,并且经常在字符图像中留下无关的标记(噪声、下划线、相邻字符),或者有时过多地剪切字符并产生不完整的字符。这些图像无法可靠地进行尺寸标准化和居中。规范化不完整的字符可能非常危险。例如,放大的杂散标记可能看起来像真正的 1。因此,许多系统已采取在字段或单词级别对图像进行标准化的方法。在我们的例子中,检测整个区域的上下轮廓(支票中的金额)并用于将图像标准化为固定高度。虽然这保证了杂散标记不会被放大成看起来像字符的图像,但这也会在分割后造成字符大小和垂直位置的广泛变化。因此,最好使用对此类变化具有鲁棒性的识别器。图 13 显示了 LeNet-5 正确识别的几个扭曲字符的示例。据估计,对于高达约2倍的比例变化、正负约一半字符高度的垂直移位变化以及高达正负30度的旋转,会发生准确的识别。

虽然复杂形状的完全不变性识别仍然是一个难以实现的目标,但卷积网络似乎为几何扭曲的不变性或鲁棒性问题提供了部分答案。

图 13 包括 LeNet5 在极其嘈杂的条件下的鲁棒性示例。处理这些图像会给许多方法带来难以克服的分割和特征提取问题,但 LeNet-5 似乎能够从这些杂乱的图像中稳健地提取显着特征。此处所示网络使用的训练集是添加了椒盐噪声的 MNIST 训练集。每个像素以 0.1 的概率随机反转。有关 LeNet-5 实际应用的更多示例,请访问互联网:http://www.research.att.com/~yann/ocr。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/90957.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ STL priority_queue

目录 一.认识priority_queue 二. priority_queue的使用 三.仿函数 1.什么是仿函数 2.控制大小堆 3.TopK问题 四.模拟实现priority_queue 1.priority_queue的主要接口框架 2.堆的向上调整算法 3.堆的向下调整算法 4.仿函数控制大小堆 五.priority_queue模拟实现整体代码和测…

用js快速生成一个简单的css原子库 例如: .mr-18 .pl-18

第三方css原子库的缺点 比如 tailwindcss&#xff0c;有学习成本最开始写的时候效率可能还没有我们自己手写效率高&#xff0c;需要配置&#xff0c;会有原始样式被覆盖的问题&#xff1b;总之就是一个字重 自己搓的优点 学习成本低灵活不会有副作用 <!DOCTYPE html>…

Redis详解

Redis 简介 Redis&#xff08;Remote Dictionary Server&#xff09;是一个开源的高性能键值对存储数据库&#xff0c;最初由 Salvatore Sanfilippo 开发&#xff0c;它在内存中存储数据&#xff0c;并提供了持久化功能&#xff0c;可以将数据保存到磁盘中&#xff0c;是一种N…

Stephen Wolfram:那么…ChatGPT 在做什么,为什么它有效呢?

So … What Is ChatGPT Doing, and Why Does It Work? 那么…ChatGPT在做什么&#xff0c;为什么它有效呢&#xff1f; The basic concept of ChatGPT is at some level rather simple. Start from a huge sample of human-created text from the web, books, etc. Then train…

阿里云内容审核服务使用(图片审核)

说明&#xff1a;在项目中&#xff0c;我们经常会对用户上传的内容&#xff08;如文字、图片&#xff09;等资源内容进行审核&#xff0c;审核包括两方面&#xff0c;一方面是内容与描述不符&#xff0c;一方面是违反法律法规。本文介绍使用阿里提供的内容审核服务&#xff0c;…

mqttfx连上OneNET生成token时的一大坑,报用户名或密码错误

整个流程如下连接&#xff1a; MQTT.fx和MQTTX 链接ONENET物联网开发平台避坑细节干货。 其中在生成token时&#xff0c;搞了半天在连接后都会报用户名密码错误 最后发现是格式问题&#xff0c;输入所有字符后一定要双击看是否可以全选中&#xff0c;可以全选中说明字符的格式…

第G1周:生成对抗网络(GAN)入门

&#x1f368; 本文为[&#x1f517;365天深度学习训练营]内部限免文章&#xff08;版权归 *K同学啊* 所有&#xff09; &#x1f356; 作者&#xff1a;[K同学啊] 一、理论基础 生成对抗网络&#xff08;Generative Adversarial Networks, GAN&#xff09;是近年来深度学习领域…

adb对安卓app进行抓包(ip连接设备)

adb对安卓app进行抓包&#xff08;ip连接设备&#xff09; 一&#xff0c;首先将安卓设备的开发者模式打开&#xff0c;提示允许adb调试 二&#xff0c;自己的笔记本要和安卓设备在同一个网段下&#xff08;同连一个WiFi就可以了&#xff09; 三&#xff0c;在笔记本上根据i…

【Git】安装以及基本操作

目录 一、初识Git二、 在Linux底下安装Git一&#xff09;centOS二&#xff09;Ubuntu 三、 Git基本操作一&#xff09; 创建本地仓库二&#xff09;配置本地仓库三&#xff09;认识工作区、暂存区、版本库四&#xff09;添加文件五&#xff09;查看.git文件六&#xff09;修改文…

【分布式技术专题】RocketMQ延迟消息实现原理和源码分析

痛点背景 业务场景 假设有这么一个需求&#xff0c;用户下单后如果30分钟未支付&#xff0c;则该订单需要被关闭。你会怎么做&#xff1f; 之前方案 最简单的做法&#xff0c;可以服务端启动个定时器&#xff0c;隔个几秒扫描数据库中待支付的订单&#xff0c;如果(当前时间-订…

RocketMQ双主双从同步集群部署

&#x1f388; 作者&#xff1a;互联网-小啊宇 &#x1f388; 简介&#xff1a; CSDN 运维领域创作者、阿里云专家博主。目前从事 Kubernetes运维相关工作&#xff0c;擅长Linux系统运维、开源监控软件维护、Kubernetes容器技术、CI/CD持续集成、自动化运维、开源软件部署维护…

Java接口压力测试—如何应对并优化Java接口的压力测试

导言 在如今的互联网时代&#xff0c;Java接口压力测试是评估系统性能和可靠性的关键一环。一旦接口不能承受高并发量&#xff0c;用户体验将受到严重影响&#xff0c;甚至可能导致系统崩溃。因此&#xff0c;了解如何进行有效的Java接口压力测试以及如何优化接口性能至关重要…

Linux系统USB摄像头测试程序(二)_读取配置

1、收先安装gtk3&#xff0c;我的测试机器是ubutn16.04&#xff0c;只要执行下面的安装命令就可以了 apt-get install libgtk-3-dev 使用下列命令验证是否安装好gtk3&#xff1a; pkg-config --cflags --libs gtk-3.0 2、显示结果类似如下&#xff1a; -pthre…

这是一篇关于SQL 脚本表间连接join的可视化说明

使用SQL合并两个数据集可以通过JOINS来完成。JOIN是查询的FROM子句中的SQL指令&#xff0c;用于标识要查询的表以及它们应该如何组合。 主键和外键 通常&#xff0c;在关系数据库中&#xff0c;数据被组织到由属性&#xff08;列&#xff09;和记录&#xff08;行&#xff09…

MySQL运维

日志 错误日志 show VARIABLES like %log_error%;使用 tail -f 错误文件路径 可以查看具体错误二进制日志 show variables like %log_bin%;在my.ini文件下的mysqlID下添加 log_binmysql-bin binlog-formatROW重启就开启binlog了 show VARIABLES like %binlog_format%;mys…

i18n 配置vue项目中英文语言包(中英文转化)

一、实现效果 二、下载插件创建文件夹 2.1 下载cookie来存储 npm install --save js-cookienpm i vue-i18n -S 2.2 封装组件多页面应用 2.3 创建配置语言包字段 三、示例代码 3.1 main.js 引用 i18n.js import i18n from ./lang// 实现语言切换:i18n处理element&#xff0c…

屏蔽socket 实例化时,握手阶段报错信息WebSocket connection to ‘***‘ failed

事情起因是这样的&#xff1a; 我们网站是需要socket链接实行实时推送服务&#xff0c;有恶意竞争对手通过抓包或者断网&#xff0c;获取到了我们的socket链接地址&#xff0c;那么他就可以通过java写一个脚本无限链接这个socket地址。形成dos攻击。使socket服务器资源耗尽&…

【运维】linkis安装dss保姆级教程与踩坑实践

文章目录 一. 安装准备二. 创建用户三. 准备安装包四. 修改配置1. 修改config.sh2. 修改db.sh 五、安装和使用1. 执行安装脚本2. 启动服务3. 查看验证是否成功 六. 报错处理报错一&#xff1a;The user is not logged in报错二&#xff1a;dss接口报错报错三&#xff1a;执行没…

算法随笔:图论问题之割点割边

割点 定义 割点的定义&#xff1a;如果一个点被删除之后会导致整个图不再是一个连通图&#xff0c;那么这个顶点就是这个图的割点。举例&#xff1a; 上图中的点2就是一个割点&#xff0c;如果它被删除&#xff0c;则整个图被分为两个连通分量&#xff0c;不再是一个连通图。…

vue3多条件搜索功能

搜索功能在后台管理页面中非常常见&#xff0c;本篇就着重讲一下vue3-admin-element框架中如何实现一个顶部多条件搜索功能 一、首先需要在vue页面的<template></template>中写入对应的结构 <!-- 搜索 --><div style"display: flex; justify-content…