Structure-Level Knowledge Distillation For Multilingual Sequence Labeling(面向多语言序列标注的结构级知识蒸馏)
多语言序列标记是一项使用多种语言的单一统一模型预测标记序列的任务。与依赖多种单语模型相比,使用多语模型具有模型规模小、易于在线服务、可推广到低资源语言的优点。然而,由于模型容量的限制,目前的多语言模型的性能仍明显低于单语言模型。本文提出将几种单语模型(教师)的结构化知识蒸馏为统一多语模型(学生),从而缩小单语模型与统一多语模型之间的差距。我们提出了两种基于结构级信息的KD方法:
我们在25个数据集的4个多语言任务上的实验表明,我们的方法优于几个强基线,并具有比基线模型和教师模型更强的0-shot泛化能力。
序列标注是自然语言处理中的一项重要任务。许多任务,如命名实体识别(NER)和词性标注,可以表述为序列标注问题,这些任务可以为许多下游任务和产品,如搜索引擎、聊天机器人和语法分析提供额外的信息。以往关于序列标注的工作大多集中在单语模型上,多语序列标注的工作主要集中在跨语言迁移学习上,以提高低资源或零资源语言的性能,但他们的工作仍然训练单语模型。
然而,如果我们为世界上7000多种语言训练单语模型,这将是非常耗费资源的。此外,还有一些语言的标注数据有限,需要培训。因此,有一个统一的多语言序列标注模型来处理多语言是有益的,但由于不同语言之间存在显著差异,统一的多语言模型较少受到重视。最近,多语言BERT (M-BERT) 在NER和POS标记等任务的0-shot跨语言模型转移方面惊人地出色。M-BERT连接了多种语言,使训练成为高性能的多语言序列标注模型。然而,多语言模型的准确性仍然低于使用不同类型强预训练词表示的单语言模型,如Akbik等人提出的上下文字符串嵌入(Flair)。
为了缩小单语模型和多语言模型之间的性能差距,我们建议利用知识蒸馏将知识从多个具有强单词表示的单语模型转移到单个多语言模型中。知识蒸馏是一种首先训练强教师模型,然后通过模仿输出概率训练弱学生模型的技术或隐藏状态的老师模型。学生模型可以达到与教师模型相当的精度,而且通过KD模型的尺寸通常较小。受KD应用于神经机器翻译和多语言的启发,我们的方法包含一组单语教师模型和一个多语言学生模型。两组模型均基于BiLSTM-CRF ,其中一个最先进的模型在序列标签。在BiLSTM-CRF中,CRF层对相邻标签之间的关系进行建模,这比简单地基于BiLSTM输出分别预测每个标签产生更好的结果。
然而,CRF结构利用相邻标签之间的相关性对标签序列进行全局建模,增加了从教师模型中提取知识的难度。在本文中,我们提出了两种考虑结构层次知识的多语言序列标注方法。为了共享结构级知识,我们可以通过近似的方法直接使学生和教师对全局序列结构分布的差异最小,也可以将全局序列结构聚合成局部后验分布,使聚合后的局部知识差异最小。实验结果表明,该方法在25个数据集的4个任务中提高了多语言模型的性能。此外,与基础多语模型和几种单语教师模型相比,我们的方法在0-shot迁移方面有更好的表现。
BiLSTM-CRF是最流行的序列标记方法之一。给定的序列 n n n 词标记 x = { x 1 , ⋅ ⋅ ⋅ , x n } x = \{x_1,···,x_n\} x={x1,⋅⋅⋅,xn} 和黄金的相应序列标签 y ∗ = { y 1 ∗ ⋅ ⋅ ⋅ y n ∗ } y^∗= \{y^∗_1···y^∗_n\} y∗={y1∗⋅⋅⋅yn∗},我们首先将 x x x 的标记表示馈送到BiLSTM中,以获得上下文标记表示 r = { r 1 , ⋯ , r n } r = \{r_1,\cdots,r_n\} r={r1,⋯,rn}。条件概率 p ( y ∣ x ) p(y|x) p(y∣x) 由下式定义:
其中, Y ( x ) \mathcal Y(x) Y(x) 表示 x x x 的所有可能的标记序列的集合, ψ ψ ψ 是势函数, W y W_y Wy 和 b y ′ b_y' by′ 是参数, y ′ y' y′ 被定义为特殊的起始符号。通常分别称为排放和过渡分数。在训练期间,输入序列的负对数似然损失由下式定义:
BiLSTM-Softmax序列标注方法通过忽略标签转换,将任务简化为一组标签分类问题,并简单地将排放得分 W r i T W^T_{ri} WriT 送入Softmax层,以获得每个变量 y i y_i yi 的概率分布。
损失函数变成:
尽管简单,这种方法忽略了相邻标签之间的相关性,因此不能充分模拟序列结构。因此,在许多应用中,它在经验上表现不如第一种方法。
KD的一个典型方法是通过模仿老师的预测来训练学生网络。在BiLSTM-Softmax序列标记上实现KD的最简单方法遵循Eq.3。并且通过最小化由教师模型和学生模型预测的各个标签分布之间的交叉熵损失来执行token标题级蒸馏:
其中 p t ( y i = j ∣ x ) p_t(y_i= j|\mathbf x) pt(yi=j∣x) 和 p s ( y i = j ∣ x ) p_s(y_i= j|\mathbf x) ps(yi=j∣x) 分别为教师模型和学生模型预测的标签分布, ∣ V ∣ |\mathcal V| ∣V∣ 为可能的标签数。学生模型的最终损失结合了KD损失和负对数似然损失:
其中 λ λ λ 是超参数。然而,正如2.1节所指出的,基于Eq.3的序列标注存在忽视结构级知识的问题。在BiLSTM-CRF方法中,我们也可以应用发射蒸馏,通过输入Eq.3中的发射得分,得到发射概率属于 p ( y i ∣ x ) p(y_i|\mathbf x) p(yi∣x),则损失函数为:
在本节中,我们提出了两种学习单个多语言序列标注模型(student)的方法,即从多个单语言模型中提取结构级知识。第一种方法近似地使学生和教师预测的结构级概率分布之间的差异最小化。第二种是将结构层面的知识聚集为局部后验分布,从而使学生和教师产生的局部分布差异最小化。我们的方法如图1所示。
图1:结构级知识蒸馏方法。Mono/Multi分别表示单语和多语。Pos.表示后验分布。
受Kim和Rush(2016)的启发,我们建议鼓励学生模仿教师在所有可能的标签序列上的全局结构概率分布:
然而, ∣ Y ( x ) ∣ |\mathcal Y(\mathbf x)| ∣Y(x)∣ 是指数级大的,因为它代表所有可能的标记序列。我们提出了两种方法来缓解这个问题,通过使用k-best标记序列的 p t ( y ∣ x ) p_t(\mathbf y|\mathbf x) pt(y∣x) 的有效近似。
Top-K Eq.6可以看作是计算学生对教师结构分布的期望对数概率:
期望可以通过对教师分布 p t ( y ∣ x ) p_t(\mathbf y|\mathbf x) pt(y∣x) 进行抽样来近似。然而,从分布中进行无偏抽样是困难的。相反,我们采用一种有偏差的方法,将教师模型预测的 k k k-best 标签序列作为我们的样本。我们使用改进的Viterbi算法来预测 k k k-best 标签序列 T = { y ^ 1 , … , y ^ k } \mathcal T=\{\hat y_1,…,\hat y_k\} T={y^1,…,y^k}。Eq.7可以近似为:
这也可以看作是教师对每个输入句子生成 k k k 个伪目标标签序列的数据增强。
加权Top-K Top-K方法有很大的偏倚,因为 k k k 越大,近似值越差。一个更好的方法是将权值与 k k k 个样本关联起来,从而更好地近似 p t ( y ∣ x ) p_t(\mathbf y|\mathbf x) pt(y∣x)。
Eq.7可以近似为:
这可以看作是教师对每个输入句子产生的学生学习加权伪目标标签序列。
Top-K方法与之前在神经机器翻译和多语言神经机器翻译中的模型压缩工作有关。在神经机器翻译中,生成 k k k-best 标记序列是一个棘手的问题,在实践中,波束搜索解码已被用来逼近 k k k-best 标记序列。而对于线性链CRF模型,改进的Viterbi算法可以精确地生成 k k k-best 标签序列。
Top-K相对于教师的结构分布是近似的,在大 k k k 上仍然很慢。我们的第二种方法试图基于可处理的局部(token-式)分布 q ( y k ∣ x ) q(y_k|x) q(yk∣x) 提取结构级知识,这是可以精确计算的。
其中 Z \mathcal Z Z 是Eq. 2的分母。通常称为配分函数, α ( y k ) α(y_k) α(yk) 和 β ( y k ) β(y_k) β(yk) 是利用前向-后向算法在前向和后向通道中计算的。我们假设 β ( y n ) = 1 β(y_n) = 1 β(yn)=1。
已知每个token的局部概率分布,我们以与Eq.5中的token级别蒸馏类似的方式定义KD损失函数。
token级蒸馏与后验蒸馏的区别在于后验蒸馏基于BiLSTM-CRF,以局部概率分布的方式传递全局结构知识。
由于难以计算局部分布,后验提取在神经机器翻译的知识提取的相关研究中还没有得到应用。然而,在序列标记中,可以使用前向-后向算法精确地计算BiLSTM-CRF中的局部分布。
表1给出了计算这一小节和最后一小节中讨论的结构知识的例子。
表1:计算标签集为 { T , F } \{T,F\} {T,F} 的3个token序列的结构知识的示例。 ψ ( y k ′ , y k , r k ) ψ(y_k',y_k,r_k) ψ(yk′,yk,rk) 表示为Eq.1中的势能。每个Label Seq、Prob对应的标签序列定义在Eq.2中。Top-2表示得分最高的两个标签序列,权重为KD对应的权重(Eq.8,9)。根据Eq.11、12和10分别计算 α ( y k ) α(y_k) α(yk)、 β ( y k ) β(y_k) β(yk) 和后验分布 q ( y k ∣ x ) q(y_k|\mathbf x) q(yk∣x)。我们假设 ψ ( y ′ , y 1 , r 1 ) = 1 ψ(y', y_1,r_1) = 1 ψ(y′,y1,r1)=1,不论 y 1 y_1 y1 是 T T T 还是 F F F。
让 D = { D 1 , ⋯ , D l } \mathcal D=\{D^1,\cdots,D^l\} D={D1,⋯,Dl} 表示一组 l l l 种语言的训练数据。第 i i i 语言的语料库,包含多个句子和标签序列对。为了从多个单语预训练教师中训练一个单语学生模型,对于每个输入句子,我们首先使用相应语言的教师模型来预测伪目标( k k k-best 标签序列或后验蒸馏的后验分布)。
然后学生通过优化以下损失函数,共同学习训练中的黄金目标和伪目标:
在Clark等人(2019)的整个训练过程中, λ λ λ 从1下降到0, L K D \mathcal L_{KD} LKD 是Eq.5,8,9,13之一或Eq.9,13的平均值。整个蒸馏过程总结在算法1中。
数据集 在实验中,我们使用了4个序列标记任务的数据集。
模型配置 在我们的实验中,所有的word embedding都是固定的,M-BERT的token embedding是通过平均池化得到的。我们将token embedding到BiLSTM-CRF中进行解码。根据数据集的不同,单语教师模型的BiLSTM层隐藏尺寸为256,多语学生模型的隐藏尺寸为600或800,因为多语模型的隐藏尺寸越大,在我们的实验中性能越好。教师和学生模型设置如下:
训练 对于模型训练,mini批大小设置为2000个token。我们用学习率为0.1的SGD优化器训练所有模型,如果10个Epoch的dev设置没有改进,则将学习率退火0.5。对于所有的模型,我们使用单个NVIDIA Tesla V100 GPU进行培训,包括学生模型。我们将损失插值退火速率调整在 { 0.5 , 1.0 } \{0.5,1.0\} {0.5,1.0} 内,Top-K的 k k k 值在 [ 1 , 10 ] [1,10] [1,10] 范围内。
我们报告以下方法的结果。
我们还报告了作为教师的单语模型和基于Eq.4的Token级KD作为Softmax和Token的多语BiLSTM-Softmax模型的结果供参考。
表2、3和4显示了我们的方法在25个数据集上的4个任务上的有效性。在所有的表格中,我们报告平均分超过5分。
表2:CoNLL 2002/2003 NER任务f1得分结果和SemEval 2016任务5的方向提取结果。
表3:WikiAnn NER任务中的F1分数。
我们使用单语教师模型、多语基线模型以及在CoNLL NER数据集上训练的后验模型和Pos.+Top-WK模型来预测第4.2节中使用的WikiAnn 7种语言测试集上的NER标记。表5显示了结果。对于教师模型,我们报告所有教师在每种语言上的最高分数。
表5:在NER任务中零射转移的结果(CoNLL → \to →WikiAnn)。
结果表明,多语言模型显著优于教师模型。对于泰米尔语和希伯来语等与CoNLL数据集中的语言非常不同的语言,教师模型的性能与多语言模型相比显著下降。这表明教师模型的语言特性限制了其对新语言的概括。我们的多语言模型,后验和Pos.+Top-WK在所有语言上都优于基线。Emission略低于基线,再次表明它在知识蒸馏中的无效。
我们还在WikiAnn NER数据集和UD POS标记数据集上分别对其他28种语言和24种语言进行了零射迁移实验。平均结果如表6所示。NER实验表明,我们的方法在28种语言中的24种上优于基线,后验比Pos.+Top-WK的平均F1分强0.29。POS标记实验表明,我们的方法在24种语言中的20种上优于基线。更多详情,请参阅附录A。
为了证明我们的方法的有效性,我们在CoNLL NER任务的四个数据集上仅使用M-BERT 向量来训练较弱的单语教师。我们运行后蒸馏,并保持学生模型的设置不变。在这种设置下,后验不仅优于基线,而且平均也优于教师模型。这表明,当教师和学生拥有相同的 token embeddding 时,我们的方法仍然有效。通过对比表7和表2,我们也可以看到老师越强,学生越好。
表7:较弱教师的后验蒸馏
为了说明k值如何影响Top-K和Top-WK精馏方法的性能,我们在CoNLL NER任务中比较了两种精馏方法和不同 k k k 值的模型。图2显示当 k k k 增大时,Top-WK的性能会显著下降。因此Top-WK对超参数 k k k 不太敏感,在实际应用中可能是实用的。
我们比较了不同方法在CoNLL NER任务上的训练时间,并将结果报告在表8中。我们的上周和后周入路的训练时间分别是基线入路的1.45和1.63倍。培训、内存消耗的GPU内存成本不显著不同的方法,而所有的CPU内存成本KD方法是基线模型的2倍,因为训练模型与KD需要存储的预测教师在CPU的内存中。
多语言序列标注 许多重要的任务,如NER和词性标注,都可以归结为一个序列标注问题。关于多语言学习者的大部分最新研究和POS标记的重点是将一种特定语言的知识转移到另一种(低资源)语言。例如,Johnson et al.(2019)为NER提出了跨语言迁移学习,重点是从英语中引导日语,因为英语的字符集与日语不同。
预训练单词表征 ELMo、BERT和XLNet等预训练词表示的最新进展显著提高了多个自然语言处理任务的性能。多语言BERT是一个预先训练的BERT模型,将104种语言合并到一个单一的多语言模型中。Pires等人在NER和POS标记上显示了其泛化和0-shot迁移学习的能力,Keung等人使用M-BERT进行对抗学习,显著改善了零资源跨语言NER。在NER和POS标记任务上,Flair embeddings是基于字符级语言模型的最先进的方法。Straka等人发现,在54种语言的CoNLL 2018共享任务数据集的大多数子任务中,将Flair embedding与BERT embedding 相结合的效果优于ELMo、BERT和Flair embedding的其他混合,这启发我们使用M-BERT + Flair embedding作为教师的单词表示。
知识蒸馏 知识蒸馏已经被用来在大模型的指导下提高小模型的性能,并在自然语言处理中得到应用、计算机视觉和语音识别。对于简单的分类问题,在情感分析、图像识别和跨语言文本分类等任务上有多种工作。对于结构化预测问题,有神经机器翻译方面的工作线,语音识别领域的连接主义时间分类和依存句法分析。近年来,许多基于知识提取的BERT研究主要集中在将一个大的BERT模型提取到一个小的BERT模型上。Tsai等人将一个大的M-BERT模型提取为三层M-BERT模型用于序列标记,并通过显著的速度改进获得了具有竞争力的高精度。焦等提出了TinyBERT用于自然语言理解。Sanh等人提出了BERT模型的浓缩版本,其速度比更大的BERT模型快60%,性能保持在97%。
先前的工作已经讨论并实证研究了将单语预处理embedding模型适应单语下游任务的两种方法:要么修复模型并将其用于特征提取,要么在下游任务中对其进行微调。他们发现,在大多数情况下,这两种设置的性能相当。吴和Dredze发现,在底层固定的情况下微调M-BERT可以在多语言环境下进一步提高性能。在本文中,我们主要集中在第一种方法,并利用预处理embedding作为固定特征提取器,因为Flair/M-BERT微调对于我们的大规模多语言知识发现实验设计来说太慢了。为预包含的嵌入模型设计一种廉价而快速的微调方法可能是未来工作的一个有趣方向。
在本文中,我们的主要贡献是在序列标注中将单语模型的知识提取到单个多语言模型的两种结构级方法:Top-K知识提取和后验提取。实验结果表明,在25个数据集上,我们的方法在4个任务上提高了多语言模型的性能。分析还表明,我们的模型在NER和词性标注任务中对看不见的语言具有较强的0-shot迁移能力。
我们的代码可以在 https://github. com/Alibaba-NLP/MultilangStructureKD上公开获得。