蒸馏模型的主要优势在于,它们比其教师模型(XLM-RoBERTa-large)更小(推理速度更快,内存需求更低)。 缺点是它们在一定程度上损失了较大教师模型的部分性能。
python3 examples/inference.py --model_name_or_path=./本模型在XNLI开发数据集和MNLI训练数据集上进行训练。 XNLI开发集包含2490条从英语专业翻译为其他14种语言的文本(总计37350条文本)。 请注意,XNLI包含MNLI数据集的15种语言的机器翻译版本作为训练集,但由于这些机器翻译存在质量问题,本模型仅使用XNLI开发集中的专业翻译文本和原始英语MNLI训练集(392702条文本)进行训练。 不使用机器翻译文本可以避免模型对15种语言的过拟合; 避免灾难性遗忘其预训练时接触的其他语言; 并显著降低训练成本。
模型使用Hugging Face trainer进行训练,采用以下超参数。 确切的基础模型为[mMiniLMv2-L6-H384-distilled-from-XLMR-Large]
training_args = TrainingArguments(
num_train_epochs=3, # total number of training epochs
learning_rate=4e-05,
per_device_train_batch_size=64, # batch size per device during training
per_device_eval_batch_size=120, # batch size for evaluation
warmup_ratio=0.06, # number of warmup steps for learning rate scheduler
weight_decay=0.01, # strength of weight decay
)该模型在XNLI测试集的15种语言上进行了评估(每种语言5010条文本,总计75150条)。
需要注意的是,多语言NLI模型能够在未接收特定语言NLI训练数据的情况下对NLI文本进行分类(跨语言迁移)。这意味着该模型也能够对其训练时使用的其他语言进行NLI任务,但性能很可能低于XNLI中包含的语言。
论文中报告的multilingual-MiniLM-L6在XNLI上的平均性能为0.68。
本复现版本的平均性能为0.713。
性能提升可能得益于训练数据中添加了MNLI,并且该模型是从XLM-RoBERTa-large(而非-base版本,即multilingual-MiniLM-L6-v2)蒸馏而来。
| 数据集 | avg_xnli | ar | bg | de | el | en | es | fr | hi | ru | sw | th | tr | ur | vi | zh |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 准确率 | 0.713 | 0.687 | 0.742 | 0.719 | 0.723 | 0.789 | 0.748 | 0.741 | 0.691 | 0.714 | 0.642 | 0.699 | 0.696 | 0.664 | 0.723 | 0.721 |
| 速度(文本/秒)(A100 GPU,eval_batch=120) | 6093.0 | 6210.0 | 6003.0 | 6053.0 | 5409.0 | 6531.0 | 6205.0 | 5615.0 | 5734.0 | 5970.0 | 6219.0 | 6289.0 | 6533.0 | 5851.0 | 5970.0 | 6798.0 |
| 数据集 | mnli_m | mnli_mm |
|---|---|---|
| 准确率 | 0.782 | 0.8 |
| 速度(文本/秒)(A100 GPU,eval_batch=120) | 4430.0 | 4395.0 |
有关潜在偏差,请参考原始论文以及关于不同NLI数据集的文献。
如果使用此模型,请引用:Laurer, Moritz, Wouter van Atteveldt, Andreu Salleras Casas, and Kasper Welbers. 2022.
‘Less Annotating, More Classifying – Addressing the Data Scarcity Issue of Supervised Machine Learning with Deep Transfer Learning and BERT - NLI’.