1、摘要
多头注意神经结构已经在各种自然语言处理任务上取得了最先进的结果。 事实证明,它们是过度参数化的,注意力头可以被修剪而不会造成显著的性能损失。 论文提出:根据输入的不同,选择不同的header,提出了专注其中几个header的专家混合模型(MAE)。 MAE使用block coordinate descent (BCD:块协同下降算法)进行训练,该算法交替更新(1)选择header的参数和(2)header的参数。 机器翻译和语言建模实验表明,MAE 在这两个任务上都优于基线模型。 特别是在 WMT14英语到德语的翻译数据集上,MAE 提高了0.8 BLEU。
2、拟解决问题
通过对Transformer headers的选择,优化Transformer中的多头注意力参数,提高模型的文本表示能力。
3、MAE
如下图所示,文章主要通过在Transformer的多头注意力向量中加入可学习的门参数g,通过做softmax,得到每组的权重分数。可能有的人要问了,为什么不直接用softmax分数乘以每一个头的向量呢?那是因为,如果这样做就是选一个头了,论文主要想通过一个参数选取某个n个头。因为一个头不足以拟合模型。
多头注意向量:
gi(x) - 表示注意力头的门控制函数
fi(x) - 表示注意力头的参数
那么具体这两个函数怎么来的呢?
首先,先回顾下Transformer的多头注意力表示:
多头注意力分数:
多头注意力输出向量表示:
进行简单的变形,令
H
‾
\overline{\text{H}}
HiWi = Hi,则有:
将上式变换下:
那么gate gi是什么呢?
gate gi指的就是多头注意力向量的权重分数,目的是用来控制多头向量的选取。
gate gi又是怎么得到的呢?
将每层的输出向量在Sequence维度上算平均 -> tanh -> 线性层 -> tanh -> 经过线性层 -> softmax 。
4、模型训练
由于该模型结构涉及到两个参数(头的门控制参数和其他参数),因此训练方法也很关键。基于一系列的实验分析,论文最后采用了以下训练策略:
- 每5个epoch反传G步更新门控制参数;
- 在不反传门控制参数时更新其他参数。
5、结论
(a) 机器翻译结果
从下表可知,采用了BCD训练以及7个experts的模型(MAE-7)取得了最佳的效果,相比自己实现的Transformer Base模型,在WMT14 EN-DE数据集上提升了0.8个BLEU,在IWSLT14 DE-EN数据集上提升了0.9个BLEU。通过比较NoBCD和UNI-MAE的模型结果,也可以发现,BCD和softmax的策略对于模型的效果提升是有很大帮助的。
- BASE: 论文参照 Vaswani et al. (2017)实现的base模型;
- NOBCD:没有使用BCD训练方法,即同时更新所有参数;
- UNI-MAE-7:去除门控制参数,从8个头里面选取7个,有7个expert,每7个expert * 1/8,然后再相加,每次随机更新一组expert;
- UNI-MAE-6:去除门控制参数,从8个头里面选取6个,有28个expert,每28个expert * 1/28,然后再相加,每次随机更新一组expert;
- MAE-7:从8个头里面选取7个,有8个expert,每7个expert * softmax_score,然后再相加,每次更新所有expert;
- MAE-6:从8个头里面选取6个,有28个expert,每28个expert * softmax_score,然后再相加,每次更新所有expert;
(b) 语言模型结果
可以看到,加入头的门控制参数之后的模型MAE-7(18.71)比BASE(19.03)的ppl低0.28个点。未使用BCD和softmax策略的语言模型甚至比Transformer BASE模型ppl还要高,进一步说明了本方法的重要性。
- *BASE:3,072/2,048 context sizes下的结果
- BASE:512/480 context sizes的结果
- 由于内存限制,其余的模型都是512/480 context sizes的结果
(c ) 消融分析结果
- One random expert:随机选用一个expert
- Most specialized expert:选取最好的expert
(d) fine-tune结果
fine-tune策略的影响
fine-tune的策略对于下游任务的影响也是很关键的,从表中可知,fine-tune的时候,不论是头的gate参数,还是其他参数,都是需要进行微调的,这样才能取得最佳效果。
• scratch:重新训练,就是没有预训练
• NoFT:纯语言模型
• FTG:fine-tune 门参数
• FTG+ :fine-tune 门参数 + 多头注意向量拼接之后的线性转换矩阵W
• FTALL:fine-tune 所有参数
fine-tune数据的影响
论文发现,当我们的数据量比较少时,可以只微调门参数(Finetune G+),其效果比微调所有参数(Finetune ALL)更好,当我们的数据量较大时,更新所有的参数模型将取得最佳效果。