基于术语词典干预的机器翻译挑战赛
任务描述
基于术语词典干预的机器翻译挑战赛选择以英文为源语言,中文为目标语言的机器翻译。本次大赛除英文到中文的双语数据,还提供英中对照的术语词典。参赛队伍需要基于提供的训练数据样本从多语言机器翻译模型的构建与训练,并基于测试集以及术语词典,提供最终的翻译结果,数据包括:
·训练集:双语数据:中英14万余双语句对
·开发集:英中1000双语句对
·测试集:英中1000双语句对
·术语词典:英中2226条
最终提交翻译结果文档,并基于BLUE-4标准进行评价
模型的理解
Transformer模型为encoder-decoder结构,如下图所示:
在翻译任务中,编码器用来处理源语言,解码器用来处理目标语言(如图所示,在中翻英的任务中,编码器输入中文,解码器输入英文)
各层作用概述:
输入层
在输入层中,embedding和position的作用分别是将单词转换为对应向量表示,以及为每一个词添加位置编码,使得最终输出结果的语序能得到保证
self-attention
self-attention层是Transformer的重大创新,当输入的词向量经过该层时,会计算当前的词向量与文本中其他词向量的近似程度,这种近似程度通过权重的大小来表示,进而让模型将“注意力”放在权重大的单词上,避免了传统基于RNN模型在过长文本上容易丢失信息的问题。
在解码器中,还额外添加了一个Masked Multi-Head Attention,是由于编码,解码器在训练过程中需要生成关于全文的注意力信息,而解码器在最终输出翻译时,是一个自回归的过程,不能让解码器看到当前正在输出的单词之后的文本。
feed forward network
前馈层接受自注意力子层的输出作为输入,并通过一个带有 Relu 激活函数的两层全连接网络对输入进行更加复杂的非线性变换。实验证明,这一非线性变换会对模型最终的性能产生十分重要的影响。
Add & LayerNorm
即残差连接与层归一化,用于避免由于网络深度较大时,在训练过程中容易发生的梯度消失问题。
参数的调整和训练效果对比
# 主函数
if __name__ == '__main__':
# 模型参数
D_MODEL = 512 #模型的宽度(token进入模型时的长度)
NHEAD = 8 #注意力层头的个数
NUM_ENCODER_LAYERS = 3
NUM_DECODER_LAYERS = 3
DIM_FEEDFORWARD = 1024 #前馈神经网络神经元个数
DROPOUT = 0.1
N_EPOCHS = 10
CLIP = 1
# 初始化模型
model = initialize_model(en_vocab, zh_vocab, D_MODEL, NHEAD