题目:带有注意力机制的 Seq2seq 机器翻译
本文基于华为云《深度学习》课程,参考论文 Neural machine translation
by joinly learning to align and translate 对模型进行优化,并计算 BLEU 得分
对模型进行评估,使用 Multi30K 数据集,实现德语和英语的翻译
关键词:Seq2Seq 模型,注意力机制,BLEU 得分,Multi30K
目 录
1 绪言..............................................................1
1.1 参考资料 ........................................................1
1.2 工作 ............................................................1
2 理论基础..........................................................3
2.1 编码器 ..........................................................2
2.2 注意力层 ........................................................2
2.2 解码器 ..........................................................2
2.2SEQ2SEQ 模型 ....................................................3
3 系统功能设计......................................................3
4 系统设计..........................................................4
5 实践结果与分析....................................................4
5.1 实验结果 ........................................................5
5.2 分析 ............................................................6
6 使用说明 .........................................................6
6.1 数据 ............................................................6
6.2 模型训练 ........................................................6
6.3 模型验证 ........................................................7
6.4 BLEU 得分 ........................................................7
7 主要工作 .........................................................8
7.1 模型优化 ........................................................9
7.2 模型评估 .......................................................10
8 关键代码.........................................................11
8.1 SEQ2SEQ 构建 ....................................................11
8.2 TRAIN...........................................................21
8.3 BLEU 得分 ......................................................23
1
1 绪论
1.1 参考资料
1.华为云《深度学习》课程机器翻译
https://connect.huaweicloud.com/courses/learn/course-v1:HuaweiX+CBUCNXE129+
Self-paced/about……
2. DZMITRY B, CHO K, YOSHUA B. Neural machine translation by jointly
learning to align and translate.[J]. arXiv preprint arXiv:1409.0473, 2014
1.2 工作
原课程实验采用传统的无注意力机制的 Seq2Seq 模型实现中英文翻译,更偏
向于关注句子中的最后一个词,为了进一步优化模型,我阅读论文 Neural machine
translation by joinly learning to align and translate.,引入注意力机制,利用 BLEU 得
分进行评估对比,并使用 Multi30K 数据集,实现德语和英语的翻译。
2 理论基础
序列到序列模型(sequence to sequence model),又名 Seq2Seq 模型。它
是一种循环神经网络(Recurrent Neural Network,RNN)的变种,突破了原本 RNN
模型对于输入和输出序列长度的限制,做到将输入序列映射到另一个长度不同的
输出序列,因此常用于机器翻译的任务。
Seq2Seq 模型一般结构为编码器(encoder)+ 解码器(decoder),前者负
责把输入序列编码成一个固定长度的向量,后者将这个向量转化为可变长度的向
量。
2.1 编码器(Encoder)
在编码器中,我们输入一个序列
X
=
{
𝑥
1
,
𝑥
2
,……,
𝑥
𝑇
}
,在 embedding 层将其转
化为向量,循环计算隐藏状态
H
=
{
ℎ
1
,
ℎ
2
,……,
ℎ
𝑇
}
,并在最后的隐藏状态中返回上
下文向量
𝑍
=
ℎ
𝑇
。
使用门控循环单元模型(Gated Rrecurrent Units, GRU)。它在原始 RNN 的
基础上引入了门机制(gate mechanism),用以控制输入隐藏状态和从隐藏状态
输出的信息。其中,更新门(update gate, 又称记忆门,一般用
𝑍
𝑡
表示)用于
控制前一时刻的状态信息
ℎ
𝑡
―
1
被带入到当前状态
ℎ
𝑡
中的程度。重置门(reset
gate,一般用
𝑟
𝑡
表示)控制前一状态
ℎ
𝑡
有多少信息被写入到当前候选集
𝑛
𝑡
上。
2
ℎ
𝑡
=
𝑅𝑁𝑁(𝑒(
𝑥
𝑡
),
ℎ
𝑡
―
1
)
2. 2 注意力层(Attention)
在机器翻译中,每个生成的词可能对应源句子中不同的词,而传统的无注意
力机制的 Seq2Seq 模型更偏向于关注句子中的最后一个词。为了进一步优化模型,
引入注意力机制。
注意力机制便是赋予源句子和目标句子中对应的词以更高的权重,它整合了
我们目前为止编码与解码的所有信息,并输出一个表示注意力权重的向量
a
𝑡
,用
来决定在下一步的预测
𝑦
𝑡
+
1
中应该给予哪些词更高的关注度。
图 2-1 注意力层图示
首先,明确编码器中的每一个隐藏状态和解码器中上一个时刻隐藏状态之间
的匹配程度
𝐸
𝑡
。截止到当前的时刻𝑡,编码器(encoder)中的所有信息为全部前
向和后向 RNN 的隐藏状态的组合 H,是一个有𝑇个张量的序列;解码器
(decoder)中的所有信息为上一时刻的隐藏状态
𝑠
𝑡
―
1
,是一个单独的张量。为
了统一二者的维度,我们需要将解码器中上一时刻的隐藏状态
𝑠
𝑡
―
1
重复𝑇次,接
着把处理好的解码器信息与编码器信息堆叠起来,并输入到线性层
𝑎𝑡𝑡𝑛
t 和激活
函数
𝑡𝑎𝑛ℎ
中,计算编码器与解码器隐藏状态之间的能量
𝐸
𝑡
。
𝐸
𝑡
=
𝑡𝑎𝑛ℎ(𝑎𝑡𝑡𝑛(
𝑠
𝑡
―
1
,
𝐻
))
当前
𝐸
𝑡
的每个 batch 中 tensor 的形状为[dec hid dim, src len],但是注意最终
的注意力权重是需要作用在源序列之上的,所以注意力权重的维度也应该与源句
子的维度[src len]相对应。为此,我们引入了一个可学习的张量𝑣。