论文信息
题目
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