上海科技大学和阿里巴巴发布了一篇被ACL2020收录的论文《Structure-Level Knowledge Distillation For Multilingual Sequence Labeling》,论文针对在自然语言处理中的序列标注任务中,多语种模型的表现不及各个语种单独的模型做出了改进,通过知识蒸馏的手段,从各个单语种模型中学习到结构层级的知识,训练一个新的多语种模型,缩短了多语种模型跟各个语种单独模型之间的差距。在4个任务的15个数据集上,文章提出的模型表现都优于多个经典的baseline模型。同时,对于那些缺乏数据的小语种具有较强的泛化能力。
图1 论文信息
论文链接:
https://arxiv.org/pdf/2004.03846.pdfarxiv.org
序列标注是自然语言处理的一类重要的任务,常见的有命名实体识别,词性标注等等,它能够提供一些额外的信息,从而对于下游的自然语言处理任务有着重要影响。大多数当前的序列标注任务都是针对单个语种的,当需要把模型跨语种迁移到那些缺乏语料的语种上时依旧需要训练单独的模型。全世界有7000多种语种,在每个语种上都单独训练一个模型是非常消耗时间跟精力的事情,其中还有很多小语种是严重缺乏足够的训练语料的。因此,训练一个针对多语种的模型显得十分必要,于是MultilingualBERT横空出世。不过,它的效果比不上各个单语种模型,这是因为单语种模型利用了各种强大的预训练好的词表征能力。
对此,文章利用了知识蒸馏,将各个具有强大表征能力的单语种模型的知识迁移到一个多语种模型。知识蒸馏,是通过训练一个student模型去尽可能的模仿teacher模型的预测,希望得到一个较小较快的student模型,同时尽可能具备teacher模型强大的预测能力。
在BiLSTM-CRF中,给定一个输入序列 和它对应的预测标签 ,,通过BiLSTM得到的上下文表达可以表示为 ,则对应的条件概率可以按以下公式计算。其中 跟 是相应的状态跟转移函数的参数, 是序列开始的标记。
公式一:
公式二:
相应的负对数似然函数可以表示为:公式三:
最常见的知识蒸馏方法的损失函数如下公式四所示,后续实验中提及的Emission模型就是已经这样的方式得到。公式四:
关于如何从多个单语种模型中通过蒸馏出结构层级的知识从而学习到一个多语种的序列标注模型,文章提出两种方法,一种是Top-K蒸馏,是通过近似最小化teacher跟student的结构层级概率分布得到的,另一种是后验蒸馏,通过聚合结构层级的知识到局部后验概率分布,然后通过最小话两者的局部后验概率分布得到。详情可见图2。
图2 论文模型图
Top-K蒸馏通过维特比算法,得到预测得分最高的K个预测序列,将他们通过公式五的方式计算,可以得到student模型的概率分布关于teacher模型的概率分布的条件期望的一个有偏估计。其中 , 分别表示student模型与teacher模型的预测结果。
公式五:
在基本的Top-K方法中,当K变大后效果会变得愈发糟糕。一种改进的方式是加权Top-K,如公式六和公式七所示,其基本思想就是对K个不同的预测序列赋予不同的权重,得分越高的序列赋予更高的权重。
公式六:
公式七:
在Top-K的方法中,当K增大时计算量会增加,进而速度会变慢。文章由此提出另一种方法后验蒸馏,具体的计算方法如公式八和公式九所示。
公式八:
公式九:
当选定好蒸馏方法后,对于任何语种的语料数据,会利用单语种的teacher模型去计算得到Top-K的预测序列或者后验分布,然后多语种的student模型会从这些硬标签跟软标签去联合学习,最小化如下的损失函数,如公式十所示,依次遍历所有语种,训练得到一个多语种的student模型。
公式十:
文章在四种不同的序列标注任务中进行了实验,对应的数据集有CoNLLNER,WikiAnnNER,UniversalDependencies和AspectExtraction。具体实验结果如图2所示。其中,Baseline指的是没有经过知识蒸馏而训练得到的多语种模型,Emission模型指的是KD采用Emission的模型,Top-K、Top-WK和Posterior指的是文章提出来的新模型,Pos.+Top-WK指的是混合了Top-WK跟Posterior的模型。
主要有以下六个结论:
图3 实验结果图
换句话说,可以归纳为:Posterior>Top-WK+Posterior>Top-WK>Top-K>Baseline>Emission.
文章的主要贡献是,在序列标注任务中,提出了两种结构层级上的知识蒸馏手段,Top-K蒸馏跟后验蒸馏,能够从单语种的teacher模型中蒸馏出知识,学习出一个多语种的student模型。在4个不同任务的25个数据集上,验证了文章提及的这两种方法相对于原有的方法都有一定的提升。
高效可行的多语种模型训练方法,对于数量众多的语言种类而言,不必再去对每种语言训练一个单独的模型,是一种行之有效的解决方法。同时,对于那些相对小众的语种,也具备较强的泛化能力。文章提出的这些方法,在序列标注任务中具有一定的前景,能为下游的一些自然语言处理任务。例如,情感分析、意图识别等提供一定的帮助,值得后续更多更深入的研究。