APP下载

基于双向门控循环单元模型的机器翻译的研究

2022-06-01

信息记录材料 2022年4期
关键词:解码器编码器向量

马 林

(商丘职业技术学院 河南 商丘 476100)

0 引言

循环神经网络[1]大多应用于对序列数据的处理上,神经元可以将某一刻输出的数据作为另一刻的输入输进神经元,由于其网络结构具有较好的串联性,可以很好地和时间序列数据相适应,从而使二者保持良好的依赖性。因为RNN 展开以后,能够获得重复的结构和共享的参数,网络参数在很大程度上较少,使复杂性相对降低。此外,由于共享参数还可以使网络模型在长度不等的数据上得以扩展,使得RNN 输入的数据长度可以是非定长的。起初,RNN 的设计目标是针对学习长期的依赖性,但很多实践证明,标准的RNN 在数据的长期保存中面临很大的困难。

为解决长期依赖的问题,学者们选择在实践中效果较好的LSTM[2-3]。此后,门控循环单元[4-5]在LSTM 的基础上进行了改进。LSTM 和GRU 均通过门控机制来保证长期依赖的。双向循环神经网络(Bi-directional LSTM,BLSTM)的提出使其在音频识别上取得一定成果[6]。

本文主要对RNN、LSTM 和GRU 3 种模型的结构特点、各个计算组件的功能进行了介绍,并加入目前流行的注意力机制,增强模型的性能,设置实验进行对比。

1 RNN主要变体介绍

1.1 GRU

虽然LSTM 记忆能力较长,又不易发生梯度弥散现象,但因为LSTM 结构较为复杂,计算代价成本较高。学者发现,通过设置LSTM 中遗忘门的门控可以达到更好的效果。其中,GRU 就是其中之一,见图1。

1.2 Seq2Seq

传统的RNN 只能作用于同步的序列到序列模式。作为RNN 的变种,Seq2Seq 模型[7]被提出用于解决输入和输出序列不等长的问题。Seq2Seq 模型包括编码器和解码器两部分,编码器用于编码序列的信息,将任意长度的序列信息编码到一个向量c 里,而解码器得到上下文信息向量c之后可以将信息解码,并输出为序列。

1.3 加注意力机制的GRU

单独的RNN 模型虽然可以得到翻译结果,但由于在翻译某个词的时候没有针对性,导致翻译结果不准确,尤其在句子较长的时候,翻译结果往往不理想。注意力机制[8]通过算法对生物注意力进行模拟,在机器翻译领域有较好的应用[9-10]。它可以动态调整特征的权重,改变不同特征对输出的贡献率,得到更好的预测结果。

2 本文方法

2.1 基于双向GRU 的Seq2Seq 模型

模型Seq2Seq 包含了Encoder、Decoder 和中间状态向量。具体来说,Encoder 通过读取源序列来构建一个向量,即处理后表示句子含义的数字向量,Decoder 对这个表示句子含义的数字向量进行处理,产生一个输出向量。

2.2 基于注意力机制的Encoder-Decoder 模型

由于长序列信息量较多,传统的Encoder-Decoder 模型的效果欠佳。对此,可通过注意力机制,增加编码器和解码器的信息传递通道,解码时会再次使用编码阶段GRU单元的每个输出状态。通过注意力机制,神经机器翻译能处理更长的序列。引入注意力机制的Encoder-Decoder 模型,解码时,会分散部分注意力不同的单词,而不会改变编码阶段模型。但除保留最终的隐藏层状态向量外,还要保留每个单词的输出向量。

2.3 算法整体流程

本文模型采用双向GRU 加注意力机制的Encoder-Decoder 模型,使用spacy 分词处理源序列的德文语句和目标序列的英文语句。将文本转化为词语序列,使用了PyTorch 中embedding 函数将每个单词转换为256 维的词向量,作为德文和英文嵌入层参数的初始值。

模型的构建需要以此实现其嵌入层、编码器、解码器、softmax 损失层、参数梯度计算与优化等。下面以Python3.6+PyTorch1.8.0 为例,给出了各部分的核心代码,编码器代码如下。

Step1 进行词嵌入

Step2 送入到双向GRU 网络中进行前向传播,并接受返回结果

Step3 对隐藏层的输出结果进行一次全连接

在编码器代码步骤中,Step1 将每个句子的单词使用256 维的一个向量来标识;在Step2 中,返回结果有两个,一个是每个句子对应单词的输出,另一个是GRU 网络针对每个句子的隐藏层结果;在Step3 中,因为在编码器中使用的是双向网络,隐藏层状态的维度和解码器维度不同,所以要进行一次全连接,将隐藏层的输出结果的维度转换为解码器中隐藏层需要的维度。解码器的代码如下。

Step1 进行词嵌入

Step2 使用注意力机制计算编码器输出状态的系数

Step3 使用Step2 中计算出的系数与编码器输出的状态进行加权相乘操作

Step4 将Step3 得到的汇总状态和第一步中得到的词向量进行连接,得到最终送入GRU 网络的输入值

Step5 将连接好的数据送入GRU 网络

Step6 全连接层得到预测结果

在解码器代码中,Step1 将每个句子的单词使用256维的一个向量来标识;在Step5 时,隐藏层状态使用编码器最后一次输出的状态,然后进行计算,并接受网络计算结果,包括网络输出值和下一次解码器隐藏层输出状态值;在Step6 中,将编码器汇总的输出状态值、当前的词向量值和解码器GRU 网络输出的状态值进行连接,送入全连接层,得到当前解码器层预测的结果值,并返回。损失计算与优化训练代码如下。

for epoch in range(N_EPOCHS):

for i,batch in enumerate(iterator):

Step1 当前批次中获取源句子和翻译后的句子

Step2 使用编码器对源句子进行前向传递

for t in range(1,max_len):

Step3 对翻译后句子的每个单词调用解码器进行前向传递,并接受预测结果

Step4 使用交叉熵损失函数计算预测值和翻译句子目标值之间的误差

Step5 依据计算的误差,进行反向传播并更新梯度操作

在以上代码中,Step3 在解码器的测试阶段,以贪心算法每一步输出概率最大的词作为最终结果;但在训练阶段,由于有真实标签值作为金标准,比贪心算法得到的结果更为准确,所以在解码器的训练阶段,每一步输出以真实结果和贪心算法各0.5 的概率得到最终进入下个隐藏层的输入值。以下为注意力层代码。

Step1 扩展隐藏层状态值维度,并对句子长度进行复制

Step2 将隐藏层状态值,和编码器输出的状态值进行相连

Step3 将上一步得到的数据送入两个全连接层

Step4 对得到的编码器状态值的系数进行一次softmax 操作然后输出

在以上代码中,Step2 中,第1 个全连接层隐藏层神经元个数为解码器隐藏层个数,第2 个全连接隐藏层个数为1,这样计算每个编码器输出状态值的系数。

在训练网络时,本文采取最小验证误差法,使训练与验证交替进行来防止网络的过拟合现象。当网络开始进入过拟合时,训练误差会继续下降,而验证误差则会呈上升趋势。对此,保存验证误差取最小值时的网络参数作为最终的训练结果,以保证网络性能。

3 实验

本文使用Python3.6 和PyTorch1.8.0 进行模型构建,模型在CPU Intel Core i5 机器上进行训练。实验选取了机器翻译中经常使用的torchtext 自带的标准数据集Multi30k德英文翻译数据集作为实验数据,其中包含了2.9万条德英文翻译(平均长度约13 个单词),使用spycy创建分词器,将一个句子转换为组成该句子的单个符号。实验运用Multi30k德英文翻译数据集的训练集进行训练,并在校验集上对模型进行选择,选择最优的模型对测试集进行测试,并汇报测试结果。实验采用BLEU 指标值作为评价指标。

3.1 参数设置

本文使用的Seq2Seq 模型中,编码器选择单层双向GRU 网络,解码器选择单层GRU 网络,并在运行过程中,分别比较使用和不使用注意力机制。模型其他参数如下:隐藏层的维度为512,设置词嵌入层维度为256,训练一共使用3 000 个句子对,每一批训练128 个,训练轮数设定为50 次(为了节省时间,仅以10%的句子进行训练:GRU 模型的单轮训练时间约为20 min,加入注意力机制后,训练一轮约为50 min)。为防止模型计算中出现过拟合现象,在训练的过程中还引入dropout 策略,其值设定为0.5。

3.2 实验结果

分别使用双向GRU 和RNN,并对比使用和不使用注意力机制后,不同条件下的模型损失函数曲线见图2,评估指标BLEU 见图3。

从上图可以看出,在不使用注意力机制的情况下,使用GRU 网络和RNN 网络相比,在最初的EPOCH 训练中,损失函数收敛速度基本一致,但是当在往后进行训练的时候,使用GRU 网络的损失函数收敛速度明显加快。同时,从图3 中可以看出,BLEU 的指标也要明显高于RNN 网络,说明在Seq2Seq 模型中,使用GRU 网络的效果要优于使用RNN网络,这是因为GRU 网络可以避免梯度消失的问题,特别对较长的翻译。

对比使用注意力机制和不使用注意力机制可以看出,无论是GRU 网络还是RNN 网络,在引入注意力机制后,模型的效果都得到了很大提高,损失函数收敛的速度更快,BLEU 的指标更高,这是因为注意力机制解决了传统编码器解码器模型的一些传统缺陷。在模型上,解码器利用了更多编码器的结果,在翻译的过程中,利用了全部编码器的输出结果,并对这些结果依据一定的机制赋予一定的权重,使得在对单词进行翻译的时候,可以有选择地从源句子中选择某些更重要的单词进行翻译。这些就是注意力机制能大幅提高翻译系统性能的主要原因[11]。从图中还可以看出,在同时引入注意力机制的情况下,GRU 网络依然优于RNN 网络的效果。

综合上面的实验结果可以看出,在Seq2Seq 模型中,GRU 网络由于可以有效解决梯度消失问题,其性能要好于RNN 网络。在Seq2Seq 模型中,引入注意力机制,可以大幅度提升翻译系统的性能。

4 结语

随着互联网的高速发展,机器翻译成为当前的研究热点。本文将注意力机制和双向GRU 应用到Seq2Seq 模型中,并通过实验验证其对提高机器翻译性能的有效性,克服了传统Seq2Seq 模型无法解决长距离依赖的问题,并加入注意力机制,增加翻译的准确度,损失函数收敛加快,BLEU性能有较大提高。今后,会进一步加大训练的信息量,对神经网络的结构做更深层次的优化,并结合更开阔的方法,实现对翻译效果的更高要求。

猜你喜欢

解码器编码器向量
融合CNN和Transformer编码器的变声语音鉴别与还原
向量的分解
科学解码器(一)
设定多圈绝对值编码器当前圈数的方法
聚焦“向量与三角”创新题
转炉系统常用编码器选型及调试
科学解码器(二)
科学解码器(三)
舞台机械技术与设备系列谈(二)
——编码器
线圣AudioQuest 发布第三代Dragonfly Cobalt蓝蜻蜓解码器