[文献阅读]—Importance-based Neuron Allocation for Multilingual Neural Machine Translation

前言

在这里插入图片描述
代码地址:https://github.com/ictnlp/NA-MNMT
论文地址:https://aclanthology.org/2021.acl-long.445.pdf

前人工作&存在问题

在多语言上训练的MNMT描述了常识(general knowledge),而忽略了语言独立的知识。为了达到平衡,前人:

  • language-specific模块(缺点:1. 增加了模型参数;2. 需要人工定制化,所以可用性不强):
    • attention模块
    • 解耦的encoder、decoders
    • 轻量级的language adapters

本文贡献

提出模型参数不随语言对数量增加而增加、也不需要定制化的language specific方法。

关键词:language specific based on language pairs、neurons、预训练模型

具体方法

第一步:在完整的平行语料上预训练

第二步:再利用所有语言对数据,给模型参数(neuron?)进行重要性评估,提出了两种参数重要性评估方式:

  • Taylor Expansion:
    考虑一对语言对s-t,把s输入进模型的encoder,decoder端输出predicted_t,然后和t计算交叉熵损失。此时为了衡量参数i的重要性,文中做法是将它进行裁剪,通过裁剪前后损失函数的变化(如公式1)来衡量参数的重要性。Taylor Expansion将模型参数当作是自变量(也有可能是参数所对应的模型输出,暂时不太理解,需要看代码),然后进行泰勒展开(如公式2)。然后将式子中的a取0,阶数取1,就可得到公式3。最后,R1(拉格朗日余项,如公式4)是损失函数的二阶导,而由于模型中relu函数的存在,所有R1等于0,最终得到模型参数在单个语言对、单个句子上的重要性评估(如公式5)。接着,公式6是模型参数在单个语言对、所有句子上的language-specific重要性评估,公式7是模型在所有语言对、所有句子上的general重要性评估。
    在这里插入图片描述
公式1 损失函数的变化

在这里插入图片描述

公式2 泰勒展开

在这里插入图片描述

公式3 a取0,阶数N取1

在这里插入图片描述

公式4 拉格朗日余项

在这里插入图片描述

公式5 单个语言对单个句子上的重要性评估

在这里插入图片描述

公式6 单个语言对所有句子上的重要性评估

在这里插入图片描述

公式7 所有语言对所有句子上的重要性评估
  • Absolute Value:
    这种方法用模型参数输出的激活值的绝对值作为重要性评估,如公式8所示:

在这里插入图片描述

公式8 absolute value

第三步:根据重要性,给模型分配general、language specific等角色

  • general:首先根据公式7得到的general重要性评估,对模型参数进行排序,前p的参数被认为对所有语言对都重要,是general neurons。
  • language specific:对于后p的language-specific参数,它们在所有语言对上的总体重要性较低,但也存在两种情况:1. 重要性低,重要性方差也小,意味着它既不是general的、也不是language-specific的;2. 重要性低,重要性方差大,意味着它不是general的,但是服务于特定的语言。总的来说,对于某一个参数,用它对所有语言对的重要性的最大值 乘上 一个超参数k,作为阈值。本文认为该参数对于大于该阈值的语言对是specific的。

第四步:最后在完整的平行语料上finetune,对于语言对A,只更新general和对该语言对specific的模型参数。

具体实验

many 2 many

好!但训练时间应该差很多

在这里插入图片描述

图1 many 2 many

one 2 many

好!
在这里插入图片描述

图2 one 2 many

对于相似的语言,参数对它们的重要性分布是否也是相似的?

其中Es和Pt是相似语言,Fi和它们不相似。发现在不同的神经元上,Es和Pt的重要性分布更加相似。不能完全确定的是:横坐标是不同的神经元,具体代码又是如何实现。
在这里插入图片描述

图3 不同神经元对于不同语言呈现的重要性分布

不同的语言对,会得到不同的关注吗?

一个一个神经元来看,有较多的神经元,对于EN-RO和RO-IT的重要性分数较高,而对于IT-EN,大多数神经元对其的重要性分数都不是很高。

在这里插入图片描述

图4 不同的语言对在不同的神经元上得到了不同的重要性分布

模型不同层分配给不同语言对的language-specific neurons个数(模型不同层的language-specific程度)

公式9计算了某一层,对于某一个语言对,分配给它的ls neurons占总ls neurons的比例。如果LScore越大,说明该层分配给它的neurons越多,也就说明该层特别关注于这个语言。

如下图中encoder和decoder端的中间层,它们对大多数语言都分配了几乎所有的language-specific neurons。这说明了:对于这些层的language-specific neurons,倾向于给几乎所有的语言都分配一个差不多的重要性,导致几乎所有的重要性都大于λxmax,从而被分配给几乎所有语言。所以它们并不是language-specific的。但又有一些矛盾,即,它们其实是被认为是language-specific的参数。
相比之下,encoder和decoder端的顶层和底层,它们对于有的一些语言会统一分配,有的一些语言就只有部分的参数关注,会更加language-specific。
总体来说,这篇文章中的language-specific参数并不是真的language-specific,如果它对于很多语言都是specific的,那它就是一个general的,只不过是总体重要性相对较低的general参数。
在这里插入图片描述

公式9 LScore

在这里插入图片描述

图5 模型不同层分配给不同语言对的language-specific neurons个数

模型不同层、不同模块的language-specific程度

  • attention模块的language specific部分对所有语言对的重要性差异很小,换句话说,attention模块被所有语言对共享,很general。
  • FFN模块的高层更加language specific

在这里插入图片描述

图6 模型不同层的不同模块的language-specific程度

k的影响?(k越大,language specific的参数关注的语言对越少)

  • k=1,language specific的参数只关注重要性最高的语言对。共享的参数很少,信息迁移减少,性能下降
  • k=0,language specific的参数就是general参数,和baseline性能相同
    在这里插入图片描述
图7 k的影响

language-specific参数和general参数各自的重要性

  • general:随机去除20%的general参数后,性能损失约为15-20 BLEU
  • language specific:对于不同的语言对,随机去除分配给该语言对的50%参数后,该语言对的性能损耗相对较大,其它语言对也会有一定损失(因为这些参数也有部分是分配给其它语言对的)

可以尝试不进行随机去除,比如语言对A,就去除分配给语言对A,但不分配给语言对X的,看看是不是对A影响很大,对X影响较小,效果更加明显?

在这里插入图片描述

图8 language-specific参数和general参数各自重要性

问题

  • model neurons具体的代码表现形式是怎样的
  • 具体方法中的第一步如果是预训练模型,然后给NMT模型初始化,是不是效果会更好
  • 本文的方法完全是data driven,迁移效果会不会很差?
  • 有没有端到端的方法?而不需要1. pretrain 2. 评估 3. finetune
    • multilingual + TS\Adapter是不是也是先预训练,再增加模块,再训的?还是端到端的。——应该是端到端的:“We set the dimension of projection layer to 128 and train the model from scratch.”
  • 用方差更直观一些。而论文中先进行general和ls的分类,ls的参数里面又有相对general的,就有点奇怪,事实上,感觉两者都是general的,只是前面就分出来的更加重要,后面的不太重要一些。

其它

  • Spanish和Portuguese属于western romance(indo-european family);Finnish属于ural family的finnish-ugric分支
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值