[文献阅读]——Learning Language Specific Sub-network for Multilingual Machine Translation

前言

在这里插入图片描述
论文地址:https://arxiv.org/pdf/2105.09259v1.pdf
代码地址:https://github.com/NLP-Playground/LaSS

前人工作&存在问题

前人发现:多语言NMT的一大问题是模型容量的不足(参数冲突(parameter interference)),特别是高资源的语言对的性能会下降。对于这个问题有以下改善策略:

  • 扩大模型容量
  • 定义language-aware的模型组成部分
    • 把隐藏层细胞分成共享的、语言独立的
    • 适应层(adaption layers)
    • language-aware的层正则化和线性变换
    • 隐式网络(latent layers)

本文贡献

本文提出了一种通过对模型参数做部分mask(属于一种模型裁剪(model pruning)),来为不同的语言对构造模型子网络的方式。具有以下优点:

  • 不需要额外的可训练参数
  • 缓解了参数冲突
  • 和之前的方法中使用的language specific token\embeddings不同,模型的参数本身就是language specific的,导致模型拥有很强的1. 对从未见过的语种的泛化能力(需要额外训练,额外构造子网络); 2. zero-shot translation能力。

具体方法

Initialization(这里的一个batch中包含了多种语言):
首先训练初始的multilingual NMT model(θ),对于每一种语言对,模型的训练pair为:source=XXX, target=XXX,在所有语言对的所有pair上做训练。
Finetune:
然后对于每一个语言对,让Θ在它上面进行finetune(个人理解finetune过后的模型只是用于寻找mask,找完舍弃),文章说:在特定语言对上的finetune会扩大该语言对所对应的模型参数的数量级(大小还是数量级?后面要做排序的话,应该是大小)。因此,总的模型参数有|θ|个,finetune之后,可以对所有的参数进行排序,然后通过设定一个阈值,保留α比例的参数。具体就是设置一个|θ|大小的{0,1}mask向量,被保留的参数的对应位置为1,其它为0。带来的结果就是,不同的语言对所对应的模型参数,既有重叠,又有特别。如图1所示。
Further Train(这里的一个batch中包含了一种语言):
对于一个batch(语言对),计算loss,然后利用该语言对所对应的mask,只对mask为1的对应参数进行更新。
Inference:
推理阶段,也需要使用语言对特定的mask,来对模型参数进行掩膜,再进行计算。
在这里插入图片描述

图1 shared and language specific parameter

具体实验

实验使用了较大数据集WMT(语言对数量较不平衡,分成了low(<1M)\medium(1-10M)\rich(>10M)三种),和较小数据集IWSLT。

直白的翻译结果

IWSLT:
图2中的lang所对应的BLEU,指的是EN->lang 和 lang->EN的平均BLEU。
在这里插入图片描述

图2 IWSLT翻译结果

WMT:
图3中的WR指的是win rate,也不知道是什么意思。
在这里插入图片描述

图3 WMT翻译结果

从图3中可以得到两个结论:

  • 更小的模型通过LaSS方法,能够得到更大的性能提升,可能的原因是,小容量的模型参数干扰(parameter interference)问题更为严重。
  • 使用LaSS方法,模型在更高资源的语言对上的性能提升更大,这和以前的观察切合(multilingual NMT model对于高资源的语言对更容易性能下降),而LaSS能够环节这一问题。

泛化能力如何?

考虑两种情形:

扫描二维码关注公众号,回复: 13232678 查看本文章
  • 完全没有见过的语言对,需要额外训练。
  • 训练集中出现过X->En和En->Y,模型推理X->Y。

情形一:完全没有见过的语言对

大概的做法是:对于一个新的语言对,首先进行训练(理解为finetune)得到finetune过后的模型,以及对应的mask。然后舍弃finetune过后的模型,利用这个mask,来对finetune前的模型做几步子网络的训练。
如图4所示,绿色的bilingual指的是对应这个语言对额外训练的一个基准模型性能;橙色的baseline指的是普通的multilingual NMT transformer,其对于新加入的新的语言对,也就是直接训练几步。可以得到以下结论:

  • 不管是LaSS方法,还是普通的multilingual NMT transformer,在训练几步之后,在新语言对上的性能都能够超过baseline。LaSS所需要的训练步数更少。
  • 随着新语言对的性能不断上升,LaSS对于其它语言对的性能下降不明显。甚至新语言对的性能到达绿色的bilingual性能时,LaSS对于其它语言对的性能都基本没有下降。
  • 总的来说,LaSS在新语言对上能够取得很好的性能,且不会损害原先语言对的性能。

在这里插入图片描述

图4 完全没有见过的语言对

情形二:zero-shot

大概的做法是:原先的训练集中包含了X->En和En->Y这两种语言对,它们各自拥有自己的mask。现在对于X->Y,由于X之前出现在source端,对应模型的encoder,而Y之前出现在target端,对应模型的decoder,所以就把X->En的encoder部分的mask和En->Y的decoder部分mask结合起来使用,得到X->Y的mask。

如图6、7所示,可以得到以下结论:

  • LaSS在zero-shot的情境下,不管是BLEU,还是翻译出的target语言准确率,都很好。这种"on-target"优势可能的原因是:LaSS方法使得模型本身的参数是language specific的,带有很强的语种信号!!!

在这里插入图片描述

图5 zero-shot翻译结果

在这里插入图片描述

图6 zero-shot case study

zero-shot的情形中,对于X->Y的mask取法一定是最好的吗?

文中对应X->Y的mask的取法是,取X->En的encoder mask和En->Y的decoder mask,图7中试着把encoder mask更换成别的语言,decoder mask更换成别的语言。发现:

  • 文中X->Y的mask取法更好
  • encoder mask更换成其它语言,性能下降不明显,说明decoder > encoder

在这里插入图片描述

图7 X->Y的mask取法

既然LaSS的模型参数是language specific的,那么相似的语种,对应的模型参数是否相似?

如图8所示,文章中使用的不同语言对所对应的模型参数相似度度量是基于mask,具体计算过程为:语言对1所对应的mask1和语言对2所对应的mask2,共有的1的数量,除以语言对1所对应的mask1拥有的1的数量。

在这里插入图片描述

图8 不同语言对所对应的模型参数相似度度量

图9展示了8种不同语言的语系关系,图10中的(a)指的是En->8种语言这8种语言对互相之间的模型参数相似度;(b)指的是8种语言->En这8种语言对互相之间的模型参数相似度;(c)指的是8种语言->En这8种语言对和En->8种语言这8种语言对之间的模型参数相似度;结论如下:
  • (a)和(b)呈现出较为明显的上矩形、下矩形的现象,说明相似的语言所对应的语言对之间的模型参数更为相似。
  • ( c )没有这样的效果,个人的理解是,X->En和En->Y比较时,没有控制变量,即,不仅是语种变量改变了,source端和target端的位置也改变了,对应的encoder和decoder的参数情况也是颠倒了的,造成了混乱。文章中的解释是,模型参数的相似度和source和target同时有关,颠倒了s和t的方向就完全不一样了。

在这里插入图片描述

图9 语系

在这里插入图片描述

图10 不同语言对所对应的模型参数相似度结果

整个模型中哪些层的模型参数,是更加language specific的?

如图11所示,实验给6个层,都取了5种不同的参数。虽然文章没有细说,但某一个点代表的应该是:某一层上的某一种参数,对于很多很多种不同的语言对所分配的mask相似度的平均,平均相似度越低,代表这一层的这一种参数更加language specific。可以得到以下结论:

  • bottom和top层更加language specific,可能的原因是,它们更加靠近输入和输出端。

在这里插入图片描述

图11 不同语言对在不同层的不同参数上的模型参数相似度结果

取mask时,比例α如何设置?

如图12所示,结论为:

  • 对于较小的数据集,为了防止过拟合,模型参数一般取少一点,那么α取更大,保留更多的模型参数;
  • 对于较大的数据集,为了提升性能,模型参数一般取多一点,那么α取更小,保留更少的模型参数;

在这里插入图片描述

图12 α的不同取法

问题

  • 问:win ratio指的是什么?
    • 答: 图3中的WMT被分为了low\medium\rich三种,每种里面有多种语言对,win ratio指的是LaSS方法在某一种里面,在多少个语言对上战胜了baseline。
  • 文章附录中说,embedding层,layer normalization层不做mask
    在这里插入图片描述
    WHY?
    • 答:在问
  • 在评价模型泛化能力的情形一中,虽然语言对整体没有出现过,但source端或者target端总有一个En语言存在,是否能够在source和target都没有出现过的语言对上做实验?
    • 答:错了,从附录中可以看到,情形一使用的WMT数据集中,不存在En\It\Ar。
  • 在评价模型泛化能力的情形二中,为X->Y取mask的策略是english centric的,是不是可以尝试以其他语言为中间语言?甚至说,这种中间语言都不一定是一种真实存在的语言?
    • 答:暂时不想了,毕竟english centric是资源最丰富的,大家都这么做。

猜你喜欢

转载自blog.csdn.net/jokerxsy/article/details/121279106