英文

Multilingual MiniLMv2-L6-mnli-xnli

模型描述

这个多语言模型可以在100多种语言上执行自然语言推理(NLI),因此也适用于多语种零样本分类。基于微软的多语言-MiniLM-L6模型,该模型是从XLM-RoBERTa-large中提炼出来的(详见 in the original paper this repo 中的详细信息)。该模型在 XNLI dataset 中进行了微调,该数据集包含来自15种语言的假设-前提对,以及英语 MNLI dataset

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

对于最高的推理速度,我建议使用此6层模型。对于更高的性能,我建议使用 mDeBERTa-v3-base-mnli-xnli (截至2023年2月14日)。

如何使用该模型

简单的零样本分类流程
from transformers import pipeline
classifier = pipeline("zero-shot-classification", model="MoritzLaurer/multilingual-MiniLMv2-L6-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-L6-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训练集(392,702个文本)上进行训练。不使用机器翻译文本可以避免将模型过度拟合到这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中可用的语言。

多语言-MiniLM-L6在论文中报告的平均XNLI性能为0.68( see table 11 )。该重新实现的平均性能为0.713。这种性能提升可能归功于训练数据中MNLI的添加,以及该模型是从XLM-RoBERTa-large而不是-base(多语言-MiniLM-L6-v2)中提炼出来的。

Datasets avg_xnli ar bg de el en es fr hi ru sw th tr ur vi zh
Accuracy 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
Speed text/sec (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
Datasets mnli_m mnli_mm
Accuracy 0.782 0.8
Speed text/sec (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’. Preprint, June. Open Science Framework. https://osf.io/74b8k .

合作或问题的想法?

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