英文

多语言MiniLMv2-L12-mnli-xnli

模型描述

这个多语言模型可以对100多种语言进行自然语言推断(NLI),因此也适用于多语言零-shot分类。基于微软的多语言MiniLM-L12模型,该模型是从XLM-RoBERTa-large中蒸馏而来的(详见详细信息 in the original paper 和最新信息 this repo )。然后对该模型进行了微调,使用了来自15种语言的假设-前提对以及英文 MNLI dataset

蒸馏模型的主要优点是相比于其教师模型(XLM-RoBERTa-large),它们更小巧(推断速度更快,内存需求更低)。缺点是它们失去了一部分较大教师模型的性能。

为了获得最高的推断速度,我建议使用 6-layer model (此页面上的模型有12层,较慢)。为了获得更高的性能,我推荐使用 mDeBERTa-v3-base-mnli-xnli (截至2023年2月14日)。

如何使用该模型

简单的零-shot分类流程
from transformers import pipeline
classifier = pipeline("zero-shot-classification", model="MoritzLaurer/multilingual-MiniLMv2-L12-mnli-xnli")

sequence_to_classify = "Angela Merkel ist eine Politikerin in Deutschland und Vorsitzende der CDU"
candidate_labels = ["politics", "economy", "entertainment", "environment"]
output = classifier(sequence_to_classify, candidate_labels, multi_label=False)
print(output)
NLI用例
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
device = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu")

model_name = "MoritzLaurer/multilingual-MiniLMv2-L12-mnli-xnli"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)

premise = "Angela Merkel ist eine Politikerin in Deutschland und Vorsitzende der CDU"
hypothesis = "Emmanuel Macron is the President of France"

input = tokenizer(premise, hypothesis, truncation=True, return_tensors="pt")
output = model(input["input_ids"].to(device))  # device = "cuda:0" or "cpu"
prediction = torch.softmax(output["logits"][0], -1).tolist()
label_names = ["entailment", "neutral", "contradiction"]
prediction = {name: round(float(pred) * 100, 1) for pred, name in zip(prediction, label_names)}
print(prediction)

训练数据

该模型是在XNLI开发数据集和MNLI训练数据集上进行训练的。XNLI开发集包含2490个从英文翻译成其他14种语言的专业翻译文本(总共37350个文本)(详见 this paper )。请注意,XNLI包含了15种机器翻译版本的MNLI数据集的训练集,但由于这些机器翻译的质量问题,该模型只是在XNLI开发集的专业翻译文本和原始英文MNLI训练集(392702个文本)上进行训练。不使用机器翻译文本可以避免将模型过拟合到这15种语言上;避免忘记了其他预训练语言的信息;并显著降低了训练成本。

训练过程

该模型使用Hugging Face的trainer训练,并使用以下超参数。具体的基础模型为 mMiniLMv2-L12-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中的语言。

多语言MiniLM-L12在论文中报告的XNLI平均性能为0.711( see table 11 )。这次的重新实现的平均性能为0.75。性能提升可能要归功于MNLI的添加以及该模型是从XLM-RoBERTa-large而不是-base(多语言MiniLM-L12-v2)蒸馏得到的。

Datasets avg_xnli ar bg de el en es fr hi ru sw th tr ur vi zh
Accuracy 0.75 0.73 0.78 0.762 0.754 0.821 0.779 0.775 0.724 0.76 0.689 0.738 0.732 0.7 0.762 0.751
Speed text/sec (A100 GPU, eval_batch=120) 4535.0 4629.0 4417.0 4500.0 3938.0 4959.0 4634.0 4152.0 4190.0 4368.0 4630.0 4698.0 4929.0 4291.0 4420.0 5275.0
Datasets mnli_m mnli_mm
Accuracy 0.818 0.831
Speed text/sec (A100 GPU, eval_batch=120) 2912.0 2902.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'. Preprint, June. Open Science Framework. https://osf.io/74b8k .

合作或问题的想法?

如果您有问题或合作的想法,请通过m{点}laurer{at}vu{点}nl或 LinkedIn 与我联系。