论文信息
题目
Making Monolingual Sentence Embeddings Multilingual using Knowledge Distillation
通过知识蒸馏使单语种句子嵌入多语种化
作者
Nils Reimers, Iryna Gurevych
论文水平
已被EMNLP 2020 接收
其它
论文下载地址:https://arxiv.org/abs/2004.09813
该论文的相关代码已开源,github链接:sentence-transformers,sentenc-tansformers文档:官方文档
sentenc-tansformers非常好用,封装的很好,使用简单
Abstract
该论文提出了一种将已有的句子嵌入编码模型扩展加入新语言支持的高效通用办法,通过该方法可使之前只支持单语言的模型转变成多语言模型。
其实,贯穿整个论文的核心思想为以下两点:
- 想办法尽可能将来自不同语言但句意完全等价的句子embeding编码映射到向量空间中同一位置,即所有语言的embeding共享同一个vector space。举个栗子,就是某一个英文句子和其对应的中文翻译句子,这两个句子通过这个模型后,生成的embeding向量应该是尽可能是比较接近的,理想情况应该是一模一样的,这样,我们就可以通过cos距离或者欧式距离,来判断不同语言句子之间的相似度或是否是同一个句子。
- 知识蒸馏。使用知识蒸馏的方式来train一个student模型,实现多语言在向量空间中对齐。后面会详细介绍如何通过知识蒸馏train模型。
知识蒸馏(Knowledge Distillation)
知识蒸馏,可以将一个网络的知识转移到另一个网络,两个网络可以是同构或者异构。做法是先训练一个teacher网络,然后使用这个teacher网络的输出和数据的真实标签去训练student网络。知识蒸馏,可以用来将网络从大网络转化成一个小网络,并保留接近于大网络的性能;也可以将多个网络的学到的知识转移到一个网络中,使得单个网络的性能接近emsemble的结果。更多相关介绍可以参考这篇文章:张俊林-知识蒸馏在推荐系统的应用
与其他多语言模型对比,该模型的优点:
- 即使某些拥有较少训练样本的语言,该方法也可很好的将这些语言扩展到已有的模型当中,并取得不错的效果。
- 训练对于硬件的要求较低,容易训练。
- 作者实验证明了该方法已在50+语言上取得不错效果。
Introduction
研究现状:由于一些其他小众语言的合适训练数据缺乏,目前存在的绝多数句子嵌入模型为单语言模型,支持多语言的句子嵌入模型较少。因此,作者提出了基于知识蒸馏的多语言sentence embedding训练方法,该方法可以将已有的单语言模型扩展为多语言模型。
多语言知识蒸馏方法:
首先需要一个teacher模型 M M M,使用源语言数据 s s s,然后需要一个student模型 M ^ \widehat{M} M
,使用平行的句子对 ( ( s 1 , t 1 ) , . . . , ( s n , t n ) ) ((s_1,t_1),...,(s_n,t_n)) ((s1,t1),...,(sn,tn)),其中 s i s_i si是指源语言数据(例如英文句子,与teacher使用 s i s_i si是一致的), t i t_i ti是句子 s i s_i si翻译后对应的其他语言句子(例如英文句子 s i s_i si,德语句子 t i t_i ti)。
训练准则:
使用MSE计算损失,训练student model的方法如下图所示:
其思想就是要求student模型模拟teacher模型的输出,使得其输出的 s i s_i si, t i t_i ti的embedding向量逼近于teacher模型输出的 s i s_i siembedding向量。
通过这样的方式,student模型就学到了一个多语言的sentence embedding space。这个vector space具有以下的特点:
- 不同语言的句子在该向量空间中已对齐,即相同含义的不同语言句子在该空间中的表示位置是接近的。
- teacher模型 M M M中原始源语言的向量空间属性,已被student模型继承并且还新增了其他语言。
紧接着,作者介绍了一些多语言模型的baseline模型,并提出了baseline模型的一些弊端:
LASER模型
LASERR (Artetxe and Schwenk, 2019b) 模型是一个基于LSTM的encoder-decoder模型,通过translation task任务训练,其encoder编码器输出部分被用作句子的embeding。LASER可以很好地识别不同语言的准确翻译,但是它在评估不是精确翻译的句子的相似性方面表现较差。
mUSE模型
Multilingual Universal Sentence Encoder(mUSE) (Chidambaram et al., 2019; Yang et al.,2019)
mUSE模型在SNLI和十亿问答对上进行多任务训练,为了对齐跨语言向量空间,mUSE使用了translation ranking task,即给定一句话,从很多待选项句子中挑选出该句子对应的最准确的翻译句子。
弊端:
- 多任务学习是困难的,会面临灾难性的遗忘问题。
- 运行transation ranking task 会增加很多额外的计算开销。
作者采用Sentence-BERT (SBERT)(Reimers and Gurevych, 2019)作为teacher模型,SBERT模型在很多sentence embeddings task上达到了SOTA水平。
采用XLM-R (Conneau et al., 2019)作为student模型,XLM-R模型对100种语言进行了预训练。
选择XLM-R作为student模型的原因:使用English SBERT作为 M ^ \widehat{M} M 的初始化模型并不是一个最好的选择,因为像阿拉丁这样较长的语言,会被SBERT模型切成短字符序列。而XLM-R模型则使用SentencePiece方式,避免了对特殊语言的预处理,并且使用100种不同语言的词汇表。
Training
多语言知识蒸馏方法需要一个teacher模型 M M M,将一种或多种语言的句子 s s s映射到一个稠密的向量空间。
然后需要一些平行的(经过翻译的)句子对 ( ( s 1 , t 1 ) , . . . , ( s n , t n ) ) ((s_1,t_1),...,(s_n,t_n)) ((s1,t1),...,(sn,tn)), s i s_i si是源语言句子, t i t_i ti是经过翻译后目标语言句子。
训练方式:
文中使用 M ^ ← M \widehat{M}←M M
←M来表示:已从teacher模型 M M M学习到相应的句子embeding知识的student模型 M ^ \widehat{M} M
。
Training Data
这部分作者首先介绍了训练用到的数据集:
在一些资源匮乏的语言中,获取平行句子对较为困难,因此作者也用到了双语词典作为训练数据:
一些训练参数:
- epochs:最大20
- batch size:64
- warm-up steps:10,000
- learning rate:2e-5
- MSE loss
Experiments
文章在三个任务上进行了验证:Multi- and cross-lingual semantic textual similarity(STS); bitext retrieval; cross-lingual similarity search。
同时文章选取了很多的baseline模型进行比较分析,参与实验的所有模型如下所示:
多语言语义文本相似度 Multilingual Semantic Textual Similarity
STS任务就是给定一个句子对,模型输出对这两个句子的相似度判定打分。输出分数范围为0~5分,5分代表这两个句子语义完全一致。
实验除了使用multilingual STS 2017 数据集外,作者又通过谷歌翻译加人工检查方式,扩展了一部分多语言数据集。
使用 cosine similarity计算两个句子embeding的相似度,同时使用斯皮尔曼相关系数 ρ(Spearman’s rank correlation)来评估模型输出score和给定的标签score之间的差异。(在作者提供的sentence-transorformers的代码中,其实还用到了pearson相关系数进行评估)
实验结果:
通过实验结果表格可以看出,经过知识蒸馏后的student模型效果取得了明显的提升:
实验分析:
- 未经微调的mBERT / XLM-R模型均表现很差,经过在English NLI & STS 数据上微调后,效果明显提升。
- 在表1中单语言测试中,这些模型都表现的较为出色,但在表2中跨语言测试中,实验结果性能明显下降。
- 经过多语言知识蒸馏后的模型,无论是在单语言测试还是在多语言测试,均达到了SOTA水平,胜于LASER、 mUSE 、LaBSE这些模型。
- 经过知识蒸馏的XLM-R模型,比经过知识蒸馏的mBERT、DistilmBERT模型表现更加出色,原因可能在于XLM-R使用SentencePiece方式,使得XLM-R模型可以直接被用于处理所有语言的原始数据。
双语言文本检索 BUCC: Bitext Retrieval
Bitext Retrieval 任务应该就是从两个不同语言的语料库中,找出语义一样的两个句子(即互为翻译)进行配对。
实验结果:
使用F1 score进行评估,实验结果如下:
实验分析:
- 使用mean pooling的 mBERT / XLM-R模型,表现很差。
- 使用English NLI and STS数据进行微调XLM-R模型,实验结果分数反而更差了,原因不知。。。
- mBERT 和 XLM-R模型表现较差,还有由于他们仅在English data上进行train,向量空间没有很好的对齐。
- 经过知识蒸馏的XLM-R模型效果提升非常明显。
- 比较有意思的是,LASER和LaBSE模型的表现比该文的模型还好一点。这不能忍,必须踩一波,自圆其说。也就是在文中开头介绍所提到的,LASER和LaBSE模型可以很好地识别不同语言的准确翻译,但是它在评估不是精确翻译的句子的相似性方面表现较差。
相似搜索Tatoeba: Similarity Search
给定一个句子,从其他语言的所有句子中,找出最相似的一个句子。
经过实验,发现经过知识蒸馏的模型效果有了很大的提升,远胜过LASER模型。
实验结果:
同时,实验还发现,即使XLM-R模型之前未预训练的语言,经过蒸馏后,也取得了较高的准确率,作者得出结论:蒸馏策略也可很好的应用于语料资源较少的语言上。
Evaluation of Training Datasets
为了评估不同训练集的适用性,作者训练了English-German和English-Arabic的双语言 XLM-R模型。
实验结果:
实验分析:
- 语言模型的测试效果比10种语言模型的测试效果好一点。分析其原因可能是因为模型的容量是固定的,因此使得模型记忆更多语言会降低性能。
- 从表格可以看出,更多数据的数据集并不一定会带来更好的结果。
Target Language Training
之前的parent模型都是基于英文预训练模型,这一节作者做了一些实验,讨论是否将英文模型转化为目标语言模型或者直接用目标语言模型的数据集训练会产生更好的效果。
实验采用KorNLI 和 KorSTS 数据集,这些数据集是将SNLI (Bowman et al., 2015), MultiNLI (Williams et al., 2018), and STSbenchmark (STSb)等英文数据集通过翻译转化为朝鲜语得到的。
实验结果:
实验分析:
实验结果证明,只有一小部分效果提升。因此,之前使用多语言的知识蒸馏方式其实就能取得较为不错的效果,并且通过这种方式能同时学习到两种语言的对齐向量空间。
Language Bias
语言偏见的概念是指模型更喜欢将同一语言的句子编码映射到向量空间的同一片近邻区域内,在单语言模型上,出现模型偏见现象并不会产生什么影响,但是在多语言模型上,如果模型的语言偏见现象较为严重的话,会严重导致不同的语言在向量空间中无法对齐。
没有语言偏见的模型在多语言的数据集上的测试性能应与单语言的数据集平均性能相近。
因此,作者做了一些相关的实验,实验结果如下:
由结果可以看出,LASER和LaBSE模型语言偏见现象较明显,在单语言测试集和多语言测试集上评估分数相差较大,mUSE和本文提出的经过蒸馏的模型的语言偏见影响较小。
同时,作者还以图表的形式进行了展示,从图中可以明显看出,受语言偏见影响较大的LaBSE模型,图中两个颜色点分散聚成两个不同的堆。
Related Work & Conclusion
最后是相关工作的文献综述和总结,略过了,感兴趣可以看原文。