文章目录
前言
论文名:On the Sparsity of Neural Machine Translation Models
论文作者:Yong Wang et.al.
期刊/会议名:EMNLP 2020
本文作者:XMU_MIAO
日期:2020/11/12
摘要
现代神经机器翻译(NMT)模型使用大量的参数,这会造成过参数化(over-parameterization),尤其是造成计算资源的利用不充分。为了解决这个问题,我们实证性地研究了冗余参数是否能被重利用以达到更好的性能。我们在系统性地在多个数据集和NMT架构上实验和分析,结果表明:1)被剪枝的参数可以被重新利用以提高基础模型的BLEU,最高可达0.8BLEU。2)“恢复活力的”参数被重新分配以增强模型在低层次词汇建模的能力。
一、Introduction
现代NMT模型存在大量的过参数化现象,RNN-Based翻译模型在剪枝40%参数的情况下可以保持性能几乎没有损失。为了应对过参数化的问题,网络剪枝在CV和NLP领域都有广泛的研究。最近的工作已经证明,这些冗余参数可以被重新利用,以最大限度地利用模型在CV任务中,如图像分类。然而,参数重新利用在seq2seq中得到学术界较少的关注。在本文中,我们实证性地研究NMT模型的效率问题。
二、Contribution
- 我们较早尝试实证性研究参数“复原”方法在不同数据集和架构上对NMT的影响
- 我们从动态学习情况和语言洞察两个角度来解释了该方法性能提高的原因。
三、Approach
本文提出的“复原”方法总共包含三个阶段:
- 训练一个基础模型 (BASE) \textbf{(BASE)} (BASE);
- 剪枝 γ % \gamma \% γ%的参数,并重训练剩余的模型 (PruTrain) \textbf{(PruTrain)} (PruTrain);
- 恢复被剪枝的参数并重新训练整个模型 (RejTrain) \textbf{(RejTrain)} (RejTrain)
(1)Standard NMT
标准NMT在给定对应源句 x = x 1 , . . . , x I \textbf{x}=x_1,...,x_I x=x1,...,xI 直接优化目标句 y = y 1 , . . . , y J \textbf{y}={y_1,...,y_J} y=y1,...,yJ的条件概率,即: P ( y ∣ x ; θ ) = ∏ j = 1 J P ( y j ∣ y < j , x ; θ ) P(\textbf{y}|\textbf{x};\theta)=\prod_{j=1}^JP(y_j|\textbf{y}_{<j},\textbf{x};\theta) P(y∣x;θ)=j=1∏JP(yj∣y<j,x;θ)其中 θ \theta θ是模型的参数集, y < j \textbf{y}_{<j} y<j表示部分翻译结果。模型的参数被训练以最大化给定样本的最大概率。在给定一个充分训练的NMT模型后,我们首先对不活跃的参数进行剪枝,之后再“复原”这些参数。
(2)Pruning
神经网络中的冗余参数可以根据一个给定的准则进行剪枝,剩下的参数能够显著保持模型的精确度。在前向传播过程中,我们对数值小的连接权重进行掩盖,这些权重在优化过程中不会被更新。
给定
N
N
N个参数的权重矩阵
W
W
W,我们根据权重的绝对值对其进行排序。假设剪枝率为
γ
%
\gamma\%
γ%,我们只保持绝对值最高的
n
n
n个参数
(
n
=
N
×
(
1
−
γ
)
)
(n=N\times(1-\gamma))
(n=N×(1−γ)),并通过二进制(0-1)矩阵将其它剩余参数进行掩盖。定义剪枝参数为
θ
p
∈
θ
\theta_{p}\in\theta
θp∈θ。
有两种剪枝策略:(1) 局部剪枝,在网络的每一层中都剪枝
γ
%
\gamma\%
γ%的参数;(2) 全局剪枝,其对比网络中每层之间参数的重要程度。剪枝之后我们对剩余的稀疏模型进行重新训练。形式化表示为优化以下目标
P
(
y
∣
x
;
θ
)
,
a
=
0
,
∀
a
∈
θ
p
P(\textbf{y}|\textbf{x};\theta),a=0,\forall a\in\theta_p
P(y∣x;θ),a=0,∀a∈θp
(3)Rejuvenation
剪枝和重训练剩余模型之后,我们通过复原被剪枝的参数来恢复模型的能力。这在优化里是一种常见的防止不必要计算和进一步提高性能的方法。恢复被剪枝的参数后可以采用两种初始化策略
(1) 全0初始化;
(2)“外部”初始化(使用基础模型(BASE)中对应参数作为初始值)
由于稀疏网络已经处于良好的局部最优状态,因此整个网络的再训练时学习率降低了一个数量级。
四、Experiments
本文在多个不同语种、不同大小的语料以及不同的NMT架构上进行实验,从多个方面说明了“复原”方法的有效性和通用性,同时使用BPE作为分词方法,BLEU作为评价指标,Adam作为优化器,文中出现的缩写解释如下
方法缩写 | 说明 |
---|---|
ConTrain(Continuous Training) | 为baseline的加强版,与本文的再训练方法训练相同的训练步。 |
RejTrain(Rejuvenation Training) | 本文提到的再训练方法,具体见部分三 |
Base\Big\Small | Transformer模型的基础模型、放大版模型、缩小版模型 |
4.1剪枝结果
这部分实验是在Transformer(Base)上做的,从表1中可以看到:直接剪枝20%对翻译性能基本无影响。50%剪枝之后重训练,对翻译性能也基本无影响。 与See et.al(2016)发现的结果相比,transformer模型较RNN-based模型有较少的过参数化(20%vs.40% & 50%vs.80%),这表明不同模型的过参数化程度不同,接下来的实验采用剪枝率为50%作为默认剪枝阈值。
See et.al. Compression of neural machine translation models via pruning. In CoNLL.
4.2 “复原”结果
(1)消融研究
对比了两种剪枝方法(local & global)和两种“复原”时的参数初始化方法(zero & external),如表1所示,局部剪枝方法优于全局剪枝方法(BLEU:28.12 vs.28.08),而See et.al.(2016)中不带“复原”方法的全局剪枝方法是优于局部剪枝方法的。 关于“复原”时的参数初始化方法,zero与external相差不大。因而在接下来的实验中采用剪枝方法local与“复原”时参数初始化方法zero。
See et.al. Compression of neural machine translation models via pruning. In CoNLL.
(2)主要结果
评估了“复原”方法在Transformer Big&Base上的效果,从表2中可以看出:不管是在Base还是在Big模型上,RejTrain相比于ConTrain都有更大的BLEU值提升,这一方面证实了“复原”方法在不同规模的模型上具有一定的鲁棒性,另一方面也说明了“复原”方法能够通过消除过参数化来持续提高模型性能。
(3)不同数据集下的效果
该部分在不同规模、语种的平行语料上评估“复原”方法。可以看到ConTrain在两个小规模语料上无法再提升性能,其更容易陷入局部最优,而RejTrain在每种语料情况下都能显著逐步地提升性能。这表明“复原”方法在不同规模、语种的训练集上的有效性。
(4)不同架构下的效果
表4对比了Transformer、RNNsearch、LightConv三个翻译模型在ConTrain和RejTrain上的性能提升,基础模型中LightConv优于Transformer,因为其模型参数是Transformer的近3倍,另外,可以看到RejTrain在三种模型下都优于ConTrain,这证实“复原”模型的通用性和有效性。
4.3 分析
为了更好地理解所提方法的有效性,从两方面入手进行分析:表征可视化和语言探测。进一步,我们从翻译结果的充分性和流畅度进行了研究。
(1)避免陷入局部最优
为了帮助理解模型是如何避免陷入局部最优的,我们研究了训练过程中源句表征的变化(源句经Encoder编码之后的隐向量)。将开发集中的源语句输入检查点,并从最后一个编码器层的表征中输出一个按元素计算的平均向量。使用TruncatedSVD降维技术进行降维,最后在不同训练阶段将降维后的值进行绘图。
从图中可以看出Baseline模型在方向和值方面变化缓慢,ConTrain在顺着其方向继续变化,而PruTrain和RejTrain则在方向和值方面出现较大的变化。这表明“复原”方法可以有效地改变优化方向,为模型提供更多机会避免局部最优。
(2)语言方面的观察
语言探测任务,其能够衡量嵌入在通过模型学到的encoder表示中的语言知识。具体来说,它包含10个分类子任务,分为词汇类、句法类和语义类3大类。
我们将同一类子任务的预测准确率平均,并计算相对于Base模型ConTrain和PruTrain的相对变化。从表3中可以看出,RejTrain在词汇(Lexical)表现更好,我们同时假设,更好地掌握词汇知识可以提高翻译的充分性和流畅性,这将在下一部分得到验证。
(3)翻译的充分性和流畅度
如上图所示,表5是随机从测试集中取出的例子。从中可以看出“复原”方法的翻译结果具有更好的流畅度。这证实了“复原”方法能够通过理解词汇信息的能力来提高翻译的充分性。
为了更好地评估模型翻译的流畅程度。我们在测试集上计算了混乱度(perplexity),如表6所示,RejTrain相对于ConTrain和Baseline具有更低的混乱度。有趣的是,PruTrain的困惑度反而变大了,这有可能损害翻译的流畅度。以上结果证实了“复原”方法能够提高翻译的流畅度。
总结
本文实证性研究了seq2seq中的参数“复原”技术,参数“复原”包括三个阶段:(1)充分训练一个模型;(2)按照确定的准则对模型进行剪枝,并对剪枝后的模型进行重新训练;(3)释放剪枝参数,并对其进行初始化,并重新训练整个模型。本文在不同模型架构,不同规模、不同语种的平行语料上进行实证性研究,结果证实了参数“复原”技术在不同模型、不同语料之间具有有效性和通用性,参数“复原”技术相对于持续训练陷入局部最优的模型,能够帮助模型跳出局部最优。并且其能够增强模型理解词汇(Lexical)的能力以提高模型翻译的流畅度。