BTTR论文翻译


论文链接: https://arxiv.org/abs/2105.02412

代码地址:https://github.com/Green-Wood/BTTR

一、Abstract

本文采用基于transformer的解码器代替基于RNN的解码器,使整个模型体系结构更加简洁。此外,还引入了一种新的训练策略来充分利用transformer在双向语言建模中的潜力。

二、Introduction

现存的方法在不同程度上存在覆盖范围缺乏的问题。这个问题主要由两种表现形式:过度解析和解析不足的问题。过度解析意味着HME图像中的某些区域被多次冗余翻译,而不足解析则表示某些区域仍然未翻译。

大多数编-解码模型都是基于RNN的模型,它们很难建模出相距很远的两个符号之间的关系。先前的研究已注意到这种由梯度消失引起的长期依赖问题。这个问题在HMER任务中暴露得更为明显。与传统的自然语言处理相比,Latex是人类设计的一种标记语言,因此具有更清晰、更清晰的句法结构,例如,“{”和“}”必然会成对出现。在处理长Latex序列时,基于RNN的模型很难捕获两个遥远的“{”和“}”符号之间的关系,这导致基于Latex语法规范的识别错误。

传统的自回归模型在推理阶段使用从左到右(L2R)方向逐个预测符号。这种方法可能产生不平衡的输出,其前缀通常比后缀更准确。为了克服这一问题,现有的研究采用了两个独立的解码器,分别从左到右和从右到左的方向训练。然而,这通常会导致更多的参数和更长的训练时间。因此,一个直接的尝试就是采用一个单一的解码器来进行双向语言建模。

在本文中,我们将transformer解码器应用到HMER任务中,通过使用位置编码,缓解了中覆盖问题的不足。此外,还提出了一种新的双向训练策略来获得双向训练变换器(BTTR)模型。该策略使单个transformer器解码器能够同时执行L2R和R2L解码。我们进一步证明了我们的BTTR模型在训练并行化和推断方面都优于基于RNN的模型。

三、 Related Work

3.1、HMER Methods

手写字公式识别的方法可以分为两类:基于语法和基于编-解码。

  • 基于语法

这些方法通常包括符号分割、符号识别和结构分析三个部分。研究人员提出了多种预定义语法来解决HMER任务,如随机上下文无关语法、关系语法和定子句语法。这些语法规则都不是由数据驱动的,而是手工设计的,它们不能从大型数据集中获益。

  • 基于编-解码

在HMER任务中,Zhang等观察到缺乏覆盖问题,提出了WAP模型来解决HMER任务。在后续的研究中,DenseWAP用DenseNet编码器取代了WAP中的VGG编码器,并提高了性能。此外DenseWAP-TD通过用树形解码器替换字符串解码器,增强了模型处理复杂公式的能力。Wu等人使用笔画信息,并将HMER制定为一个图到图(G2G)建模任务。这种基于编解码器的模型在多个CROHME竞赛中取得了优异的成绩。

3.2、Transformer

transformer是一种完全基于注意机制的神经网络结构。其内部的自注意机制使transformer相比于RNN取得了两个方面突破。首先,transformer不需要像RNN那样依赖于上一步的状态。并行化使transformer在训练阶段节省大量时间。其次,同一序列中的标记通过自注意机制直接建立一对一连接。这种机制从根本上解决了RNN的梯度消失问题,使变压器比RNN更适用于长序列。近年来,在计算机视觉和自然语言处理的各种任务中,RNN被变压器所取代。

3.3、Right-to-Left Language Modeling

四、Methodology


图1 BTTR模型架构

4.1、CNN编码器

在编码器部分,使用DenseNet作为HME图像的特征提取器。

4.2、位置编码

由于transformer模型本身对每个输入向量没有任何位置感,因此我们使用两种类型的位置编码来处理这些信息。详细地说,我们分别使用图像位置编码和词位置编码来表示图像特征位置和词向量位置。

词向量位置编码(Word Positional Encoding)

对于给定的位置 p o s pos pos和维度 d d d,则词向量位置编码定义为:
p p o s , d W [ 2 i ] = s i n ( p o s / 100 0 2 i / d ) p p o s , d W [ 2 i + 1 ] = c o s ( p o s / 100 0 2 i / d ) p^{W}_{pos,d}[2i]=sin(pos/1000^{2i/d}) \\ p^{W}_{pos,d}[2i+1]=cos(pos/1000^{2i/d}) ppos,dW[2i]=sin(pos/10002i/d)ppos,dW[2i+1]=cos(pos/10002i/d)
图像位置编码(Image Positional Encoding)

采用二维归一化位置编码来表示图像的位置特征。我们首先计算正弦位置编码 p p o s , d / 2 W p^{W}_{pos,d/2} ppos,d/2W,然后将它们连接在一起。给定一个二维位置坐标(x、y),且与字位置编码相同的维数d,将图像位置编码向量 p x 、 y 、 d I p^{I}_{x、y、d} pxydI表示为:
x ˉ = x H , y ˉ = y W P x , y , d I = [ p x ˉ , d / 2 W ; p y ˉ , d / 2 W ] \bar x=\frac{x}{H},\bar y=\frac{y}{W} \\ P^{I}_{x,y,d}=[p^{W}_{\bar x,d/2};p^{W}_{\bar y,d/2}] xˉ=Hx,yˉ=WyPx,y,dI=[pxˉ,d/2W;pyˉ,d/2W]

4.3、transformer编码器

每个基本的transformer层模块由四个基本部分组成。

比例缩放的点积注意力(Scaled Dot-Product Attention)

这种注意机制本质上是基于查询和键之间的相似性,使用查询从键-值对中获取值。
A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T d k ) V Attention(Q,K,V)=softmax(\frac{QK^{T}}{\sqrt{d_{k}}})V Attention(Q,K,V)=softmax(dk QKT)V
参考链接:

为什么 dot-product attention 需要被 scaled?

多头注意力(Multi-Head Attention)

通过多头机制,比例缩放的点积注意力模块可以共同关注多个表示子空间的特征映射。
H i = A t t e n t i o n ( Q W i Q , K W i K , V W i V ) M u l t i H e a d ( Q , K , V ) = [ H 1 ; . . . ; H h ] W o H_{i}=Attention(QW^{Q}_{i},KW^{K}_{i},VW^{V}_{i})\\ MultiHead(Q,K,V)=[H_{1};...;H_{h}]W^{o} Hi=Attention(QWiQ,KWiK,VWiV)MultiHead(Q,K,V)=[H1;...;Hh]Wo
带掩模的多头注意力(Masked Multi-Head Attention)

在解码器部分,由于自回归特性,根据输入图像和先前生成的符号来预测下一个符号。在训练阶段,使用一个下三角形掩模矩阵,使自注意模块能够限制每个时间步长的注意区域。由于掩模的多头注意机制,整个训练过程只需要一次前向计算。

位置前馈网络(Position-wise Feed-Forward Network)

位置前馈网络(FNN)由三个操作组成:一个线性变换、一个ReLU激活函数和另一个线性变换。 经过多头注意,不同步长之间的信息已经充分交换。FFN使每个步长能够单独整合自己的内部信息。
F F N ( x ) = m a x ( 0 , x W 1 + b 1 ) W 2 + b 2 FFN(x)=max(0,xW_{1}+b_{1})W_{2}+b_{2} FFN(x)=max(0,xW1+b1)W2+b2

4.4、双向训练策略

首先,在字典中引入了两个特殊的符号“ < S O S > <SOS> <SOS>”和“ < E O S > <EOS> <EOS>”来表示序列的开始和结束。对于目标Latex序列 y = { y 1 , . . . y T } y=\{y_{1},...y_{T}\} y={y1,...yT},我们将目标序列:

从左到右(L2R)表示为: y ⃗ = { < S O S > , y 1 , … , y T , < E O S > } \vec y=\{<SOS>,y_{1},…,y_{T},<EOS>\} y ={<SOS>y1yT<EOS>}

从右到左(R2L)表示为: y ← = { < E O S > , y T , … , y 1 , < S O S > } \overleftarrow y=\{<EOS>,y_{T},…,y_{1},<SOS>\} y ={<EOS>yTy1<SOS>}

以图像x和模型参数θ为条件,传统的自回归模型需要计算概率分布:
p ( y ⃗ j ∣ y ⃗ < j , x , θ ) p(\vec y_{j}|\vec y_{<j},x,θ) p(y jy <jxθ)
j是目标序列中的索引。

在本文中,由于transformer模型本身实际上并不关心输入符号的顺序,因此我们可以使用单个transformer解码器来进行双向语言建模。
p ( y ← j ∣ y ← < j , x , θ ) p(\overleftarrow y_{j}|\overleftarrow y_{<j},x,θ) p(y jy <jxθ)
为了实现这一目标,提出了一种简单而有效的双向训练策略,对于每个训练样本,我们将Latex序列生成两个目标序列L2R和R2L,并计算同一批的训练损失。与单向语言建模相比,我们的方法训练了一个模型,在不牺牲模型简洁性的情况下执行双向语言建模。

五、 Implementation Details

5.1、网络(Networks)

在编码器部分,为了与当前最好的方法进行公平的比较,我们使用了与DenseWAP模型相同的DenseNet特征提取器。具体来说,在主干网络中使用了bottleneck层,并在它们之间添加过渡层,以减少特征图的数量。在每个bottleneck中,我们将增长率设置为k=24,每个块的深度设置为D=16,过渡层的压缩超参数设置为θ=0.5。

在解码器部分,我们使用了标准的transformer模型。我们将embedded维度和模型维度设置为d=256,多头注意模块的头数设置为H=8,FFN中间层维数设置为d=1024,transformer层数设置为N=3。dropout设置为0.3用来防止过拟合。

5.2、训练(Training)

我们的训练目标是使预测真实标签的概率最大化,所以我们使用标准的交叉熵损失函数来计算在每个编码位置真实值与预测概率之间的损失。给定训练样本 { x ( z ) 、 y ( z ) } z = 1 Z \{x^{(z)}、y^{(z)}\}^{Z}_{z=1} {x(z)y(z)}z=1Z,优化的目标函数如下:
L ⃗ j ( z ) ( θ ) = − l o g p ( y ⃗ j ( z ) ∣ y ⃗ < j ( z ) , x ( z ) , θ ) L ← j ( z ) ( θ ) = − l o g p ( y ← j ( z ) ∣ y ← < j ( z ) , x ( z ) , θ ) L ( θ ) = 1 2 Z L ∑ z = 1 Z ∑ z = 1 , j = 1 L ( L ⃗ j ( z ) ( θ ) + L ← j ( z ) ( θ ) ) \vec L^{(z)}_{j}(\theta)=-logp(\vec y^{(z)}_{j}|\vec y^{(z)}_{<j},x^{(z)},\theta) \\ \overleftarrow L^{(z)}_{j}(\theta)=-logp(\overleftarrow y^{(z)}_{j}|\overleftarrow y^{(z)}_{<j},x^{(z)},\theta) \\ L(\theta)=\frac{1}{2ZL}\sum^{Z}_{z=1}\sum^{L}_{z=1,j=1}(\vec L^{(z)}_{j}(\theta)+\overleftarrow L^{(z)}_{j}(\theta)) L j(z)(θ)=logp(y j(z)y <j(z),x(z),θ)L j(z)(θ)=logp(y j(z)y <j(z),x(z),θ)L(θ)=2ZL1z=1Zz=1,j=1L(L j(z)(θ)+L j(z)(θ))
该模型使用Adadelta算法从头开始进行训练,权重衰减为10−4,ρ=0.9, ϵ \epsilon ϵ=10−6。使用PyTorch框架来实现。该模型在四个NVIDIA 1080Ti gpu上进行训练,具有11×4GB内存。

5.3、前向推理( Inferencing)

可用如下计算公式得到Latex序列:
y ^ = a r g m a x p ( y ∣ x , θ ) \hat y=argmaxp(y|x,\theta) y^=argmaxp(yx,θ)
x为输入图像,θ为模型参数。

不像训练阶段,使用下三角掩模矩阵同时生成所有时间步长的预测。由于我们没有真实的标签,所以我们只能逐个地预测符号,直到“End”符号或达到预定义的最大长度。

显然,我们不能搜索所有可能的序列,因此提出了一种启发式集束搜索(beam search)来平衡计算成本和决策质量。此外,利用我们的解码器能够进行双向语言建模,使用近似联合搜索来提高性能。其基本思想包括三个步骤:(1)首先,在L2R和R2L方向上使用双向训练的transformer进行波束搜索,得到两个前k的最好预测。(2)然后,我们将L2R假设反转为R2L方向,将R2L假设转化为L2R方向,并将这些假设作为真实标签,计算训练阶段的损失值。(3)最后,将这些损失值加到它们原来的假设分数中,得到最终的分数,然后用于找到最佳候选值。在实践中,我们设置光束大小为k=10,最大长度为200,长度惩罚为α=1.0。

六、Experiments


图2 在CROHME 2014/2016/2019测试集上的单个模型的性能比较(以%计)

图3 对“DenseWAP”、“Ours-Uni”和“Ours-Bi”模型的案例研究。红色符号代表不正确的预测,而绿色符号代表正确的预测。
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Beginning Android ADK with Arduino Book Description Whether you’re new to Arduino and Android development, or you’ve tinkered a bit with either one, this is the book for you. Android has always been a natural fit with Arduino projects, but now that Google has released the Android Open Accessory Development Kit (the Android ADK), combining Android with Arduino to create custom gadgets has become even easier. Beginning Android ADK with Arduino shows how the ADK works and how it can be used with a variety of Arduino boards to create a variety of fun projects that showcase the abilities of the ADK. Mario Böhmer will walk you through several projects, including making sounds, driving motors, and creating alarm systems, all while explaining how to use the ADK and how standard Arduino boards may differ from Google-branded Arduinos. You aren’t tied to specific hardware with this book; use what you have, and this book will show you how. What you’ll learn * How different boards work with the ADK * How to create your first sketch and project * How to work with light and sound * How to work with servos and DC motors * How to work with photoresistors and thermistors to sense the environment * How to make your own capacitive touch game show buzzer * How to create your own camera-enabled alarm system Who this book is for This book is for beginning Arduino and Android enthusiasts, or Arduino developers who want to try out the new Android ADK. Table of Contents 1. Introduction 2. Andriod and Arduino: Getting to Know Each Other 3. Outputs 4. Inputs 5. Sounds 6. Light Intensity Sensing 7. Temperature Sensing 8. A Sense of Touch 9. Making Things Move 10. Alarm System Book Details * Paperback: 316 pages * Publisher: Apress (March 2012) * Language: English * ISBN-10: 1430241977 * ISBN-13: 978-1430241973

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值