英文

mDeBERTa-v3-base-xnli-multilingual-nli-2mil7 模型卡片

模型描述

该多语言模型可在100种语言上执行自然语言推理(NLI),因此也适用于多语言零样本分类。基于的mDeBERTa-v3-base模型由Microsoft在 CC100 multilingual dataset 上对100种语言进行了预训练。该模型随后在 XNLI dataset multilingual-NLI-26lang-2mil7 dataset 上进行了微调。两个数据集中包含超过2.7百万个由40多亿人口使用的27种语言的假设-前提对。

截至2021年12月,mDeBERTa-v3-base是Microsoft在 this paper 中推出的表现最佳的多语言基准大小变压器模型。

如何使用该模型

简单的零样本分类流水线
from transformers import pipeline
classifier = pipeline("zero-shot-classification", model="MoritzLaurer/mDeBERTa-v3-base-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/mDeBERTa-v3-base-xnli-multilingual-nli-2mil7"
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)

训练数据

该模型是在 multilingual-nli-26lang-2mil7 dataset XNLI 的验证数据集上进行训练的。

multilingual-nli-26lang-2mil7 数据集包含26种语言中273万个NLI假设-前提对。该数据集每种语言包含105,000个文本对。它基于英文数据集 MultiNLI Fever-NLI ANLI LingNLI WANLI 创建,使用最新的开源机器翻译模型。 数据集中的语言包括:['ar', 'bn', 'de', 'es', 'fa', 'fr', 'he', 'hi', 'id', 'it', 'ja', 'ko', 'mr', 'nl', 'pl', 'ps', 'pt', 'ru', 'sv', 'sw', 'ta', 'tr', 'uk', 'ur', 'vi', 'zh'] (参见 ISO language codes )。有关更多详细信息,请参阅数据表。此外,根据相同的采样方法,还为英语添加了105,000个文本对的样本,从而得到了27种语言。

此外,对于每种语言,还添加了一组随机选取的10%的假设-前提对,其中英语假设与其他语言的前提配对(英语前提与其他语言的假设相同)。文本对中的这种语言混合使用户能够为另一种语言的目标文本提出英文假设。

XNLI 验证集由从英语翻译成其他14种语言的2490个专业翻译文本组成(共37350个文本)。(请参阅 this paper )。请注意,XNLI还包含14种语言的MultiNLI数据集的机器翻译版本的训练集,但由于2018年的机器翻译质量问题,这些数据被排除在外。

请注意,为了测试该模型在NLI进行微调训练过程中未见过的语言上的性能,有三种语言从XNLI训练数据中排除,仅包含在测试数据中:["bg","el","th"]。 这样做是为了测试模型在仅在100种语言的预训练过程中接触到而未在27种语言的NLI微调过程中接触到的语言上的性能 - 请参阅下面的评估指标。

总的训练数据集大小为 3,287,280 个假设-前提对。

训练过程

mDeBERTa-v3-base-mnli-xnli 使用Hugging Face训练器进行训练,具体超参数如下。

training_args = TrainingArguments(
    num_train_epochs=3,              # total number of training epochs
    learning_rate=2e-05,
    per_device_train_batch_size=32,   # batch size per device during training
    gradient_accumulation_steps=2,   # to double the effective batch size for 
    warmup_ratio=0.06,                # number of warmup steps for learning rate scheduler
    weight_decay=0.01,               # strength of weight decay
    fp16=False
)

评估结果

该模型在XNLI测试集(每种语言5010个文本,总计75150个文本)和英语测试集 MultiNLI Fever-NLI ANLI LingNLI WANLI 上进行了评估。请注意,多语言NLI模型能够对NLI文本进行分类,而无需接收特定语言的NLI训练数据(跨语言迁移)。这意味着该模型也能够在mDeBERTa预训练的其他73种语言上进行NLI,但性能很可能低于在NLI微调过程中见过的语言。下表中["bg","el","th"]这些语言的性能很好地说明了这种跨语言迁移,因为这些语言未包括在训练数据中。

XNLI subsets ar bg de el en es fr hi ru sw th tr ur vi zh
Accuracy 0.794 0.822 0.824 0.809 0.871 0.832 0.823 0.769 0.803 0.746 0.786 0.792 0.744 0.793 0.803
Speed (text/sec, A100-GPU) 1344.0 1355.0 1472.0 1149.0 1697.0 1446.0 1278.0 1115.0 1380.0 1463.0 1713.0 1594.0 1189.0 877.0 1887.0
English Datasets mnli_test_m mnli_test_mm anli_test anli_test_r3 fever_test ling_test wanli_test
Accuracy 0.857 0.856 0.537 0.497 0.761 0.788 0.732
Speed (text/sec, A100-GPU) 1000.0 1009.0 794.0 672.0 374.0 1177.0 1468.0

还请注意,如果模型中心的其他多语言模型声称在英语以外的语言上表现约为90%,则作者很可能在测试过程中犯了错误,因为最新的论文中没有一篇论文显示XNLI的多语言平均性能超过80%几个点(请参阅 here here )。

限制和偏见

有关潜在偏见,请参阅原始DeBERTa-V3论文以及不同NLI数据集的文献。此外,请注意,multilingual-nli-26lang-2mil7数据集是使用机器翻译创建的,这降低了对于像NLI这样复杂任务的数据质量。您可以通过Hugging Face 查看您感兴趣的语言的数据。请注意,由机器翻译引入的语法错误对于零样本分类来说不是问题,因为语法对此任务的重要性较低。

引用

如果该数据集对您有用,请引用以下文章:

@article{laurer_less_2022,
    title = {Less {Annotating}, {More} {Classifying} – {Addressing} the {Data} {Scarcity} {Issue} of {Supervised} {Machine} {Learning} with {Deep} {Transfer} {Learning} and {BERT} - {NLI}},
    url = {https://osf.io/74b8k},
    language = {en-us},
    urldate = {2022-07-28},
    journal = {Preprint},
    author = {Laurer, Moritz and Atteveldt, Wouter van and Casas, Andreu Salleras and Welbers, Kasper},
    month = jun,
    year = {2022},
    note = {Publisher: Open Science Framework},
}

合作或问题的想法?

要获取有关新模型和数据集的更新,请在 Twitter 上关注我。如果您有问题或合作的想法,请通过m{dot}laurer{at}vu{dot}nl或 LinkedIn 与我联系。

调试和问题

请注意,DeBERTa-v3在2021年末发布,较旧版本的HF Transformers似乎存在运行该模型的问题(例如,与分词器相关的问题)。使用Transformers == 4.13或更高版本可能会解决某些问题。请注意,mDeBERTa目前不支持FP16,可以参见这里: https://github.com/microsoft/DeBERTa/issues/77