LSTM for ocr

Long Short-Term Memory Networks

本附录详细介绍了长期短期记忆(LSTM)网络的内部工作。 本附录的第一部分概述了有关LSTM网络的必要数学细节。 第二部分讨论了LSTM网络的各种体系结构,这些体系结构通常用于各种任务,包括打印的OCR。 最后一部分描述了使用LSTM网络时需要调整的各种参数。

A.1 LSTM Networks

LSTM网络是最新的递归神经网络(RNN)架构。 RNN类似于前馈神经网络,但隐藏层的神经元是自连接的。 这些连接在体系结构[Gra12]中形成有向图。 典型的递归神经网络如图A.2所示。

反馈机制使RNN能够记住不同时间步的输入。 因此,他们是非常好的序列学习者。 然而,在实践中,他们的应用直到20世纪90年代末才非常有限。 这主要是因为训练,典型的基于梯度下降的算法(第一阶导数)通常无法收敛或花费太多时间[BSF94]。 然而,最近提出的基于二阶导数的方法已经显示出更有效地训练RNN [Sut12]。 早期RNN的另一个问题是所谓的“爆炸/消失梯度问题”,这意味着在训练期间,梯度变得非常大或非常小,从而导致训练不良[HS97]。

LSTM 记忆cell,任意时刻的cell输入包括额外的输入(external input)和之前时间步骤的cell状态。在每一个时间步,该cell必须决定哪些信息需要更新那些信息需要遗忘。cell内的信息流通过被编号的圆圈指出。第一步,决定不在需要的信息。Logistic sigmoid layer(Forget Gate Layer)通过sigmoid function作用与cell的输入并且产生‘0’(do not retain at all)和‘1’(retain evertthing)之间的值。第二步,决定哪些值在(Cell Memory)将被更新,包括两个子步骤。首先,sigmoid layer(Input Gate Layer)从cell输入中选择值,然后,一个tanh层创建一个输入值的(input values)候选向量,添加到Memory State.这两个子步骤通过乘法门组合(⊗).利用这些信息,cell通过线性结合第一、第二步更新当前的memory state。最后,另外一个sigmoid layer层称为Output Gate Layer决定输出值。 但是,在确定值之前,内存状态会通过另一个tanh层进行过滤,因此输出值的范围介于-1到+1之间。 除了此图中显示的输入外,所示的所有门都有偏置输入。

Hochreiter和Schmidhuber [HS97]提出改变RNN的基本单位,即具有类似计算机记忆的细胞的简单神经元,称为LSTM细胞。 简化的LSTM单元如图A.1所示。

基本思想是更新图A.1中表示为“存储状态”的存储单元状态,或者在文献中称为“单元状态”。 要更新单元状态,两个输入很重要:1)不再需要的信息(以便单元可以忘记此信息)和2)必须存储在单元状态中的新信息。 “忘记门层”决定了输入的保留。

其中ft是遗忘门的输出。 Wxf表示外部输入xt和遗忘门之间的连接强度(连接的权重),Whf表示先前隐藏状态和遗忘门之间的连接的权重,并且bf表示遗忘门的偏差。

需要在单元状态中保留的信息是单独确定的(在图A.1中用(2)表示)。 它由两部分组成:首先,“输入门层”通过应用类似于遗忘门的sigmoid函数来决定要保留哪些输入。 公式A.3以数学方式表述了这个过程。 其次,tanh层提供可以添加到单元状态的候选列表(vt)(如等式A.4所示)。 这两个指令都由乘法门组合(用denoted表示)。

除了不同的处理单元,LSTM存储器单元和隐藏层的反馈之外,LSTM网络的使用非常类似于多层感知器或任何其他递归神经网络架构。 输入在输入层提供给网络。 然后将正向通过期间产生的输出(遵循公式A.2至A.7)与目标进行比较,然后通过隐藏层反向传播误差以更新神经网络内部连接的权重以减少误差 实际输出和目标输出之间。 可能存在多个错误度量,如交叉熵或最小平方误差等.

在其核心中,反向传播是链规则的重复应用,以计算关于网络权重的误差函数的导数。 在前馈网络中,可以使用上面层中的误差导数来计算这些导数。 在递归神经网络中不是这种情况,其中自循环需要根据其自身表达误差导数。 后向传播(BPTT)[Wer90]旨在通过“展开”循环连接来将RNN转换为深度前馈网络来克服此问题。

A.1.1 Connectionist Temporal Classifcation (CTC)

任何神经网络都需要一个定义良好的输入输出对。 这意味着必须在每个目标值之前对输入进行分段。 对于文本识别,这需要单独的字符分割。 然而,这种预分割在许多场景中非常困难,例如在复杂的脚本,草书写作,手写文档或由于各种原因字符触摸的打印文档中。 基于分割的OCR识别策略通常会导致较差的结果。 这种特殊要求使得RNN对于几个序列没有吸引力。

任何神经网络都需要一个定义良好的输入输出对。这意味着必须在每个目标值之前对输入进行分割。对于文本识别,这需要单独的字符分割。然而,这种预分割在许多场景中非常困难,例如在复杂的脚本,草书写作,手写文档或由于各种原因字符触摸的打印文档中。基于分割的OCR识别策略通常会导致较差的结果。这种特殊的要求使得RNN对于几个序列学习任务没有吸引力,因为它们可能是一个自然的选择。该要求的含义是使用一些后处理技术在输出处生成序列。许多研究人员尝试使用RNN-HMM混合架构来克服这个问题而没有太大的成功。格雷夫斯等人。 [GFGS06]提出了连接主义时间分类(CTC),它消除了预分割输入的这种要求。该算法受到HMM的前向 - 后向算法的启发,并用于将目标标签与神经网络的输出激活对齐,从而消除了对输入进行预分割的需要。

网络输出激活提供输入字符串的字符的后验概率。 让字符c的时间步长t的后验概率给出为ytc。 然后,在某个时间步长,单个字符概率可以作为max(ytc)给出。 网络增加了一个额外的类’ε’来表示空白标签。 因此,在每个时间步,输出激活中存在字符类或空白标签,例如,对于包含字符串’abc’的给定输入,输出激活可以看起像’εεεaaaaεεbbbbεεεcccεε’。 下一步是删除重复的符号并删除空白标签。 为每个可能的序列分配一个分数,s(seq) = max(s§)。

为了将CTC算法集成到LSTM网络的训练过程中,训练算法如下所示。

1.通过神经网络计算输出激活ytc。

2.计算从t = 0开始到达ytc的概率。

3.计算从ytc开始并到达文本行末尾的概率。

4.计算给定输出激活时每个目标符号的概率。

5.计算误差梯度。

6.使用反向传播计算网络权重的误差梯度。

7.更新权重。

A.2 LSTM Architectures

文献中报道了许多LSTM架构。 区分不同类型很重要,因此可以选择正确的类型。 在本节中,介绍了一些常用的LSTM网络的详细信息。

A.2.2 Multilayer LSTM Network

多层LSTM网络是单层网络的扩展。 单层和多层网络之间的唯一差异是后者包含多个隐藏层而不是单个层。 图A.3显示了多层LSTM网络的示例。 针对单层LSTM网络示出的等式(等式A.2-等式A.7)保持相同,除了引入额外的求和以考虑所有隐藏层。

A.2.3 Hierarchical SubSampling LSTM (HSLSTM) Networks

理论上,具有单层的LSTM网络能够学习任意长度的序列到序列映射。 然而,在实践中,它不能用于很长的序列[Gra12]。 常见的解决方案是对序列应用子采样。 这是通过将连续的时间步长折叠成单个块或窗口来完成的。 在多层设置中,其中一层的输出是另一层的输入,序列长度可以在每一步骤中减少,然后将其提供给层次结构中的下一级别。 Graves [GS08]在LSTM网络中为阿拉伯语手写识别任务引入了这一概念。 具有子采样的分层网络(具有多层架构的网络)的示意图如图A.4所示。 根据任务经验选择子采样窗口或块大小。 为了减少隐藏层之间的重量连接数量,引入了前馈层[Gra12]

A.2.4 Bidirectional LSTM Networks (BLSTM)

RNN非常擅长上下文感知处理。 为了获得时间步的未来背景(对于离线数据处理,整个序列已经可用),Graves等。 [GS05]引入了所谓的BLSTM网络。 在这种类型的网络(可以是具有子采样的单层或多层)中,数据序列由两个相同的隐藏层处理。 一层或一组多层在前向方向上处理数据(在文本行的情况下从左到右),而另一层相同的层或多层的组以相反的方向处理数据(右到左)。 这两个层都连接到单个输出层。 图A.5显示了单层BLSTM网络。

A.2.5 One Dimensional LSTM (1D-LSTM) Networks

在一维LSTM(1D-LSTM)网络中,输入序列由宽度为1像素且高度等于图像高度的滑动窗口遍历。 这将输入序列转换为一维序列。 图像的高度被称为1D序列的“深度”,并且由此获得的图像的每个切片被称为“帧”。 因此,必须使所有图像的高度相等(本文中称为“归一化”的过程),以使各个帧具有相同的大小。 图A.6描述了将图像转换为一维序列的过程。

A.2.6 Multidimensional LSTM (MDLSTM) Networks

在维度为’n’的多维LSTM(MDLSTM)网络中,每个LSTM单元具有’n’个自连接,其中’n’忘记门。 这使得每个时间步长都可以在所有’n’维度中连接到它的上下文。 而且,代替帧,每个像素值在每个时间步长处呈现。 因此,对这种网络的培训比他们的一维兄弟姐妹花费更多的时间。 根据我们的经验,与计算时间的增加相比,性能增益并不十分显着。 MDLSTM网络在本论文工作中并未使用。

A.3 Tunable Parameters

需要调整各种参数,以便LSTM网络在给定问题上令人满意地运行。 在本节中,描述了在各种类型的LSTM网络中使用的可调参数。

1D-LSTM网络的参数:对于1D-LSTM网络,最重要的参数是隐藏层的大小,即隐藏层中LSTM单元的数量。 增加细胞数量可以提高性能,但也会增加训练时间。 有关如何以最佳方式选择此大小的讨论,请参阅第5.1.1节。 其他参数是学习率和动量; 但是通过改变这些参数通常不会影响LSTM的性能

MDLSTM网络的参数:隐藏层的数量也是一个重要参数,以及单个层中LSTM单元的数量。 虽然层数越多,网络的学习能力越强,因为它学会了更紧凑的表示,但它也使得训练更加困难[Gra12]。

HSLSTM网络的参数:这些网络需要考虑很多参数。 除了层的数量和层中的单元数量之外,为各种子采样窗口大小选择最佳大小也很重要。 在这种类型的体系结构中,隐藏层的相对大小也很重要。 层次结构顶部隐藏层中的单元格数应远远多于较低层中的单元格数,以确保总时间不超过最低层消耗的时间的两倍。

Text-Line Normalization

文本行中单个字符的相对位置和比例是拉丁语和许多其他脚本的重要特征。 文本行的规范化有助于使该信息在给定数据库中的所有文本行中保持一致。 文献中提出了许多归一化方法。 已经用于本论文中报道的各种实验的标准化方法在以下部分中描述。

B.1 Image Rescaling

B.2 Zone-Based Normalization

拉丁语,希腊语和梵文等许多脚本中的字符都遵循某些排版规则。 此类脚本中的文本行可分为三个区域。 基线穿过大多数字符的底部,平均线位于文本行的基线到顶部边缘的中间高度。 大多数小字符如’x’,'s’和’o’位于这两行之间。 在平均线上方延伸的字符部分被称为“上升”,并且在基线下方延伸的部分被称为“下降”。 基线和平均线之间的区域是中间区域,平均线下方的区域是底部区域,基线上方的区域称为顶部区域。 梵文脚本中的示例文本行 这三个区域如图B.1所示。

拉希德等人。 [Ras14]提出了一种使用上述三个区域的文本行归一化方法。 进行统计分析以估计图像中的这些区域,然后通过前一节中描述的简单重新缩放将每个区域重新缩放到特定高度。 这种归一化方法已被用于本文报道的梵文脚本的实验。

B.3 Token-Dictionary based Normalization

B.4 Filter-based Normalization

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值