作者 | 李炎洋
责编 | 贾伟
目前,神经机器翻译模型主要基于编码器-解码器框架,其中编码器把源语句编码成一个连续表示,解码器把这个连续表示解码成目标语。
Figure 1编码器-解码器框架
可以看到,编码器-解码器框架的一个明显缺陷在于它把源语句跟目标语句分开进行处理,因此不能直接建模源语句跟目标语句之间的关系。比如,编码器只把源语句作为输入,而解码器只把目标语句作为输入。最近提出的注意力机制通过桥接编码器跟解码器可以部分解决这个问题。
Figure 2注意力机制
当翻译“intensive“这个词的时候,注意力机制计算这个目标词与每个源语词之间的关系,从而直接建模了源语句与目标语句之间的关系。但是我们也可以看到,注意力机制只计算了一个目标词与源语句之间的关系,它并不能捕捉整个目标句与源语句之间的关系,而这种句子级的联系是我们希望翻译模型能够建模的,它能在作出下一步决策的时候更好的考虑源语与目标语句子的关系。
联合表示
解决这个问题的一个自然想法就是使用大小为
的表示而不是
(编码器)或
(解码器)这么大的表示,其中
是源语句子长度,
是目标语句子长度。这也是我们使用的“联合表示“(Joint Representation)。
Figure 3联合表示
这样一个表示为当前输入的源语句子和目标语句子里任意一个源语词和目标语词的组合都赋予了一个单独的表示。通过关联两个句子里任意两个词,联合表示可以建模句子与句子之间的关系。
Reformer-base
那么如何构建一个基于联合表示的注意力翻译模型呢?它主要分为三部分:
1)如何构造一个基于联合表示的输入(词嵌入)?
2)如何在联合表示上做注意力的操作?
3)如何从联合表示中预测目标语句子?
词嵌入
直接构造一个基于联合表示的词嵌入矩阵会产生一个大小为
的参数矩阵,其中
是源语词表大小,
是目标语词表大小。这样一个矩阵包含非常多的参数。而我们知道,在没有上下文的情况下,一个源语词在语义上几乎独立于一个随机采样出来的目标语词。因此,我们使用词的表示的组合作为词的组合的表示:
类似的,基于联合表示的位置表示也可以用相同的思想计算得到。
Figure 4基于联合表示的词嵌入
当计算(我,I)这个词的组合的表示,我们可以通过把“我“和”I“这两个词各自的表示相加得到。
可分离注意力
直接在联合表示上做注意力是非常耗时的。可以看到,标准的注意力机制在联合表示上的复杂度高达
,尽管它有着仅使用
层即可访问到任意位置的表示这样的优势。
Figure 5标准的注意力机制
相应的,我们提出可分离注意力(Separable Attention)。它由两部分组成:目标注意力(Target Attention)和源注意力(Source Attention)。
Figure 6可分离注意力(训练)
其中,目标注意力只沿着联合表示的目标语维度进行注意力操作,而源注意力只沿着源语维度进行注意力操作:
其中
。这样,对于目标注意力而言,它的复杂度只有
,而源注意力的复杂度只有
。因此,可分离注意力整体的复杂度
,而它只需要
层的操作即可访问到任意位置的表示。
Figure 7可分离注意力(解码)
解码的时候,因为同一层的表示的计算是相互独立的,因此,在计算第
时刻的输出的时候,目标注意力只需要关注前
个词,而源注意力只需要关注当前第
时刻输入里的目标语词。
降维
给定一个联合表示,如何从中预测目标语句子?我们知道联合表示的大小为
,而一般翻译模型的解码器预测使用的表示大小为
,其中每一个元素对应着预测出来的目标语句子的每一个词。
那么自然的想法就是通过降维操作把
大小的联合表示变成
大小再进行预测。这里压缩联合表示的源语维度所使用的降维(Reduction)模块的结构本质上是一个基于特征的注意力,也就是它操作的粒度是单个特征而不是单个词。它工作的方式类似于源注意力,除了它使用一个可学习的权重
作为query而不是当前产生的输入:
其中
是词嵌入的大小。
整体架构
有了词嵌入,可分离注意力和降维,基于联合表示的一个注意力模型实例Reformer-base的整体结构如下:首先通过词嵌入构建联合表示输入,然后使用由注意力机制组成的层来进行多次变换,得到的联合表示输出的源语维度会通过降维操作被压缩掉,最后从被压缩过的联合表示中预测目标语句子。
Figure 8 Reformer-base
其中,模型使用的层由四个子层构成:目标注意力,前馈神经网络,源注意力和另一个前馈神经网络。需要注意的是,注意力操作后紧跟着Dropout1d,而前馈神经网络后紧跟着Dropout2d。
对于目标注意力,它的Dropout1d会沿着源语维度对特征(神经元)进行掩盖,而源注意力的Dropout1d则沿着目标语维度对特征进行掩盖。前馈神经网络的Dropout2d会同时沿着源语和目标语维度对特征进行掩盖。这样做的原因在于其中源语/目标语维度的特征会在另外一个维度上存在重复。
如图9所示,在做目标注意力的时候,关于源语词的特征会沿着目标语的维度重复,因此在使用Dropout掩盖源语词特征的时候,我们需要沿着目标语维度同时掩盖所有可能的的重复特征,否则被丢弃的特征可以在其他时刻的表示中被重新获取到,使得Dropout鼓励特征独立的目标失效。
Figure 9特征重复(目标注意力)
Reformer-fast
权衡效率和有效性
从表1可以看到,对比标准的注意力,可分离注意力拥有着能以
路径长度(层数)访问任意位置的表示的优势,但是可分离注意力自身的复杂度要比标准注意力高。
Table 1各操作的复杂度和路径长度
通过观察Reformer-base,我们可以发现它有两个问题导致它需要堆叠大量的高复杂度的可分离注意力才能获得优异的性能:
1)重复计算:Reformer-base在解码的每一时刻都需要从词嵌入开始计算,因此当模型需要一些抽象的信息,特别是源语的信息的时候,它都需要重新进行计算;
2)计算分配:在解码每一时刻,输入的源语词的数目是远多于输入的目标语词的数目,因此它天然的就需要更多关于源语端的操作。
PreNet
为了解决这个问题,我们在Reformer-base的基础上引入了PreNet这个模块,得到了我们的Reformer-fast模型。这个模型首先把输入的源语端的词嵌入送到PreNet,然后PreNet的输出当成原始的源语端的词嵌入的替代送到Reformer-base里面进行后续的处理。PreNet的结构类似标准的的Transformer编码器。
Figure 10 Reformer-fast
PreNet的引入成功减少了可分离注意力的数目,并且它本身的复杂度非常低,因此提高了模型整体的效率。然而,PreNet损害了Reformer-base的理论有效性。相比于Reformer-base可以以
路径长度访问任意源语词,Reformer-fast只能以
路径长度访问任意源语词,其中
是PreNet的深度。
模型调优
在实际应用当中,我们通常需要在大数据集上使用更大的模型。但是使用网格搜索在大数据集上寻找合适的大模型配置是非常耗时的,而在Transformer当中常用的技巧如增大词嵌入大小或者是更宽的前馈网络对Reformer并不好用。
为了解决这个问题,我们把这样一个超参数调优过程看作是在当前网络配置的宽度和深度基础上对它们进行梯度下降,以取得最优的校验集性能,同时使用的参数量不超过规定:
其中
是调整超参数(宽度
、深度
)使用的步长,
是校验集性能,
是模型的参数量,
是手工设定的参数量限制。从这样的角度出发,优化的目标可以看作是在固定参数量下寻找能取得最好的校验集性能的模型配置。
为了计算梯度下降中使用的梯度,我们使用了梯度的定义来进行估计。其中关于深度
的梯度计算如下:
其中
是手工设定的一个小数。类似的我们可以得到关于宽度
的梯度。整个调优过程如下:首先估计梯度
,然后根据手工设定的参数量限制
,计算得到最佳的步长
,从而得到最佳的模型配置。
实验
我们在IWSLT15 (Vi-En), IWSLT14 (De-En, En-De) 和NIST12 (Zh-En)四个数据集上进行验证,如表2所示:
Table 2实验结果
可以看到,Reformer-base/fast在所有测试集上都比标准的Transformer基线表现要好,并且这两个模型的性能相近,但是Reformer-fast要比Reformer-base要快。需要注意的是,Reformer-base在Vi-En这个任务上要比基线差一些,这可能是因为Reformer-base在设计上要求源语句子和目标语句子长度相近,而Vi句子通常比它对应的En翻译要长很多。
Table 3消融实验
在表3的消融实验中可以看到,Dropout1/2d可以提升模型的泛化能力,而PreNet则可以提升模型的效率。
Table 3消融实验
更进一步地,如果我们仅仅为Reformer-fast增加两层以及50%的前馈网络宽度,它就可以超过Transformer-big,同时参数量只有一半。
Figure 11长度统计
图11的左图告诉我们,Reformer模型比Transformer更加倾向于生成长的翻译。而图11的右图告诉我们,Reformer模型对比基线的优势会在长句子翻译上更加明显。
Figure 12准确率统计
图12告诉我们,无论是从目标语词的位置或者是词频的角度,Reformer模型的准确率都要比标准的Transformer基线要高不少。
Figure 13注意力分布例子
最后,图13的例子展示了在输入不同的源语词或者目标语词的情况下,可分离注意力对同一的输入产生的分布是不同的。这说明了联合分布的必要性。
结论
我们提出了两种基于联合分布的注意力模型的实现。这两个模型在不同数据集或配置上均取得比基线优异的性能。目前基于联合分布的模型设计仍然非常原始,我们期望将来有更多的工作来改善它们。