语言:
- 多语言
- 英语
- 阿拉伯语
- 保加利亚语
- 德语
- 希腊语
- 西班牙语
- 法语
- 印地语
- 俄语
- 斯瓦希里语
- 泰语
- 土耳其语
- 乌尔都语
- 越南语
- 中文
许可证: mit
标签:
- 零样本分类
- 文本分类
- 自然语言推理
- pytorch
评估指标:
- 准确率
数据集:
- multi_nli
- xnli
管道标签: 零样本分类
小部件示例:
- 文本: "Angela Merkel ist eine Politikerin in Deutschland und Vorsitzende der CDU"
候选标签: "政治, 经济, 娱乐, 环境"
多语言mDeBERTa-v3-base-mnli-xnli模型
模型描述
该多语言模型能够对100种语言进行自然语言推理(NLI),因此也适用于多语言零样本分类。基础模型由微软在CC100多语言数据集上预训练,随后在XNLI数据集(包含15种语言的假设-前提对)及英文MNLI数据集上微调。截至2021年12月,mDeBERTa-base是性能最佳的多语言基础规模Transformer模型,由微软在此论文中提出。
如需更小、更快(但性能略低)的模型,可尝试multilingual-MiniLMv2-L6-mnli-xnli。
使用方法
简易零样本分类流程
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-mnli-xnli"
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))
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)
训练数据
本模型基于XNLI开发集与MNLI训练集微调。XNLI开发集包含2490条从英语专业翻译至14种语言的文本(总计37350条),详见此论文。值得注意的是,虽然XNLI包含15种语言的MNLI机器翻译训练集,但为避免机器翻译质量导致的过拟合问题,本模型仅使用XNLI开发集的专业翻译文本及原始英文MNLI训练集(392702条)。此举可防止模型对15种语言的过拟合,避免遗忘mDeBERTa预训练涉及的其余85种语言,并显著降低训练成本。
训练参数
采用Hugging Face trainer进行训练,关键超参数如下:
training_args = TrainingArguments(
num_train_epochs=2, # 总训练轮次
learning_rate=2e-05,
per_device_train_batch_size=16, # 训练时每设备批大小
per_device_eval_batch_size=16, # 评估批大小
warmup_ratio=0.1, # 学习率预热步数比例
weight_decay=0.06, # 权重衰减强度
)
评估结果
模型在XNLI测试集的15种语言上评估(每种语言5010条文本,总计75150条)。需注意多语言NLI模型具备跨语言迁移能力,即使未接受特定语言的NLI训练数据,仍可处理mDeBERTa支持的其余85种语言,但性能可能低于XNLI涵盖语种。
若其他模型声称在非英语语种上达到约90%准确率,可能存在测试失误——最新研究显示XNLI多语言平均性能难以突破80%(参见论文1或论文2)。
平均 |
阿拉伯语 |
保加利亚语 |
德语 |
希腊语 |
英语 |
西班牙语 |
法语 |
印地语 |
俄语 |
斯瓦希里语 |
泰语 |
土耳其语 |
乌尔都语 |
越南语 |
中文 |
0.808 |
0.802 |
0.829 |
0.825 |
0.826 |
0.883 |
0.845 |
0.834 |
0.771 |
0.813 |
0.748 |
0.793 |
0.807 |
0.740 |
0.795 |
0.8116 |
局限性及偏差
潜在偏差问题请参考原始DeBERTa-V3论文及各类NLI数据集相关文献。
引用
若使用本模型,请引用:Laurer, Moritz等。《通过深度迁移学习与BERT-NLI解决监督机器学习数据稀缺问题》。2022年6月预印本。Open Science Framework. https://osf.io/74b8k.
合作或咨询
联系邮箱: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