模型简介
模型特点
模型能力
使用案例
语言:
- 多语言
- 中文
- 日语
- 阿拉伯语
- 韩语
- 德语
- 法语
- 西班牙语
- 葡萄牙语
- 印地语
- 印尼语
- 意大利语
- 土耳其语
- 俄语
- 孟加拉语
- 乌尔都语
- 马拉地语
- 泰米尔语
- 越南语
- 波斯语
- 波兰语
- 乌克兰语
- 荷兰语
- 瑞典语
- 希伯来语
- 斯瓦希里语
- 普什图语
许可证: mit 标签:
- 零样本分类
- 文本分类
- 自然语言推理
- pytorch
数据集:
- MoritzLaurer/multilingual-NLI-26lang-2mil7
- xnli
- multi_nli
- facebook/anli
- fever
- lingnli
- alisawuffles/WANLI
指标:
- 准确率
管道标签: 零样本分类
小部件示例:
- 文本: "安格拉·默克尔是德国的一位政治家,也是基民盟的主席" 候选标签: ["政治", "经济", "娱乐", "环境"]
模型索引:
- 名称: DeBERTa-v3-base-xnli-multilingual-nli-2mil7
结果:
- 任务:
类型: 文本分类
名称: 自然语言推理
数据集:
名称: MultiNLI-matched
类型: multi_nli
分割: validation_matched
指标:
- 类型: 准确率 值: 0.857 已验证: false
- 任务:
类型: 文本分类
名称: 自然语言推理
数据集:
名称: MultiNLI-mismatched
类型: multi_nli
分割: validation_mismatched
指标:
- 类型: 准确率 值: 0.856 已验证: false
- 任务:
类型: 文本分类
名称: 自然语言推理
数据集:
名称: ANLI-all
类型: anli
分割: test_r1+test_r2+test_r3
指标:
- 类型: 准确率 值: 0.537 已验证: false
- 任务:
类型: 文本分类
名称: 自然语言推理
数据集:
名称: ANLI-r3
类型: anli
分割: test_r3
指标:
- 类型: 准确率 值: 0.497 已验证: false
- 任务:
类型: 文本分类
名称: 自然语言推理
数据集:
名称: WANLI
类型: alisawuffles/WANLI
分割: test
指标:
- 类型: 准确率 值: 0.732 已验证: false
- 任务:
类型: 文本分类
名称: 自然语言推理
数据集:
名称: LingNLI
类型: lingnli
分割: test
指标:
- 类型: 准确率 值: 0.788 已验证: false
- 任务:
类型: 文本分类
名称: 自然语言推理
数据集:
名称: fever-nli
类型: fever-nli
分割: test
指标:
- 类型: 准确率 值: 0.761 已验证: false
- 任务:
类型: 文本分类
名称: 自然语言推理
数据集:
名称: MultiNLI-matched
类型: multi_nli
分割: validation_matched
指标:
mDeBERTa-v3-base-xnli-multilingual-nli-2mil7模型卡
模型描述
这个多语言模型能够对100种语言进行自然语言推理(NLI),因此也适用于多语言零样本分类。基础模型mDeBERTa-v3-base由微软在CC100多语言数据集上预训练,涵盖100种语言。随后在XNLI数据集和multilingual-NLI-26lang-2mil7数据集上进行了微调。这两个数据集包含超过270万对假设-前提文本对,涵盖27种语言,使用人口超过40亿。
截至2021年12月,mDeBERTa-v3-base是微软在这篇论文中提出的性能最佳的多语言基础规模Transformer模型。
如何使用该模型
简单的零样本分类流程
from transformers import pipeline
classifier = pipeline("zero-shot-classification", model="MoritzLaurer/mDeBERTa-v3-base-mnli-xnli")
sequence_to_classify = "安格拉·默克尔是德国的一位政治家,也是基民盟的主席"
candidate_labels = ["政治", "经济", "娱乐", "环境"]
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 = "安格拉·默克尔是德国的一位政治家,也是基民盟的主席"
hypothesis = "埃马纽埃尔·马克龙是法国总统"
input = tokenizer(premise, hypothesis, truncation=True, return_tensors="pt")
output = model(input["input_ids"].to(device)) # device = "cuda:0" 或 "cpu"
prediction = torch.softmax(output["logits"][0], -1).tolist()
label_names = ["蕴含", "中立", "矛盾"]
prediction = {name: round(float(pred) * 100, 1) for pred, name in zip(prediction, label_names)}
print(prediction)
训练数据
该模型在multilingual-nli-26lang-2mil7数据集和XNLI验证数据集上进行了训练。
multilingual-nli-26lang-2mil7数据集包含273万对NLI假设-前提文本对,涵盖26种语言,使用人口超过40亿。每种语言包含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语言代码。更多细节,请参阅数据表。此外,按照与其他语言相同的抽样方法,为英语添加了105,000对文本样本,总计27种语言。
此外,对于每种语言,随机添加了10%的假设-前提对,其中英语假设与其他语言的前提配对(反之亦然)。这种文本对中的语言混合应使用户能够用英语为其他语言的文本制定假设。
XNLI验证集包含2490个从英语专业翻译到其他14种语言的文本(总计37350个文本)(参见这篇论文)。请注意,XNLI还包含14种语言的MultiNLI数据集的机器翻译训练集,但由于2018年机器翻译的质量问题,这些数据被排除在外。
请注意,出于评估目的,三种语言["bg","el","th"]被排除在XNLI训练数据之外,仅包含在测试数据中。这样做是为了测试模型在NLI微调期间未见的27种语言上的性能,但仅在100种语言的预训练期间见过 - 参见下面的评估指标。
总训练数据集包含3,287,280对假设-前提文本对。
训练过程
mDeBERTa-v3-base-mnli-xnli使用Hugging Face训练器进行训练,超参数如下:
training_args = TrainingArguments(
num_train_epochs=3, # 训练总轮数
learning_rate=2e-05,
per_device_train_batch_size=32, # 训练时每个设备的批量大小
gradient_accumulation_steps=2, # 有效批量大小翻倍
warmup_ratio=0.06, # 学习率调度器的预热步数比例
weight_decay=0.01, # 权重衰减强度
fp16=False
)
评估结果
该模型在15种语言的XNLI测试集(每种语言5010个文本,总计75150个)和MultiNLI、Fever-NLI、ANLI、LingNLI和WANLI的英语测试集上进行了评估。请注意,多语言NLI模型能够在未接收特定语言的NLI训练数据的情况下对NLI文本进行分类(跨语言迁移)。这意味着该模型还能够对mDeBERTa预训练的另外73种语言进行NLI,但性能很可能低于在NLI微调期间见过的语言。下表["bg","el","th"]语言的性能是这种跨语言迁移的良好指标,因为这些语言未包含在训练数据中。
XNLI子集 | ar | bg | de | el | en | es | fr | hi | ru | sw | th | tr | ur | vi | zh |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
准确率 | 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 |
速度(文本/秒,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 |
英语数据集 | mnli_test_m | mnli_test_mm | anli_test | anli_test_r3 | fever_test | ling_test | wanli_test |
---|---|---|---|---|---|---|---|
准确率 | 0.857 | 0.856 | 0.537 | 0.497 | 0.761 | 0.788 | 0.732 |
速度(文本/秒,A100-GPU) | 1000.0 | 1009.0 | 794.0 | 672.0 | 374.0 | 1177.0 | 1468.0 |
另外请注意,如果模型中心的其他多语言模型声称在英语以外的语言上达到约90%的性能,作者很可能在测试过程中犯了错误,因为最新的论文中没有显示在XNLI上的多语言平均性能超过80%几个百分点(参见这里或这里)。
局限性和偏差
请参考原始的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


