模型概述
模型特點
模型能力
使用案例
🚀 多語言 ernie-m-large-mnli-xnli
本多語言模型可對100種語言進行自然語言推理(NLI),因此也適用於多語言零樣本分類。該模型能有效解決不同語言間自然語言推理和零樣本分類的數據稀缺問題,為多語言文本處理提供了強大的工具。
🚀 快速開始
本模型可進行自然語言推理(NLI),適用於多語言零樣本分類。以下是使用示例:
簡單的零樣本分類管道
from transformers import pipeline
classifier = pipeline("zero-shot-classification", model="MoritzLaurer/ernie-m-large-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/ernie-m-large-mnli-xnli"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name).to(device)
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)
✨ 主要特性
- 該多語言模型可以對100種語言進行自然語言推理(NLI),適用於多語言零樣本分類。
- 基礎模型由百度基於Meta的RoBERTa進行預訓練,預訓練數據為CC100多語言數據集。
- 模型在包含15種語言的假設 - 前提對的XNLI數據集以及英文MNLI數據集上進行了微調。
- 該模型在論文this paper中被百度提出,性能優於同等規模的RoBERTa模型。
📦 安裝指南
ernie - m架構僅支持transformers==4.27或更高版本(截至2023年3月3日尚未發佈,會在推理小部件中導致錯誤)。在4.27版本發佈之前運行該模型,你需要從源代碼安裝transformers:
pip install git+https://github.com/huggingface/transformers
同時安裝sentencepiece分詞器:
pip install sentencepiece
發佈之後,你可以運行:
pip install transformers[sentencepiece]>=4.27
📚 詳細文檔
模型描述
這個多語言模型能夠對100種語言進行自然語言推理(NLI),因此也適用於多語言零樣本分類。基礎模型由百度基於Meta的RoBERTa進行預訓練,預訓練數據為CC100多語言數據集。然後,它在XNLI數據集(包含15種語言的假設 - 前提對)以及英文MNLI數據集上進行了微調。該模型由百度在this paper中提出,性能優於同等規模的RoBERTa模型。
如果你正在尋找一個速度更快(但性能稍低)的模型,可以嘗試[multilingual - MiniLMv2 - L6 - mnli - xnli](https://huggingface.co/MoritzLaurer/multilingual - MiniLMv2 - L6 - mnli - xnli)。如果你正在尋找一個在性能和速度之間取得良好平衡的基礎規模模型,可以嘗試[mDeBERTa - v3 - base - mnli - xnli](https://huggingface.co/MoritzLaurer/mDeBERTa - v3 - base - mnli - xnli)。
訓練數據
該模型在XNLI開發數據集和MNLI訓練數據集上進行訓練。XNLI開發集由2490篇從英語專業翻譯為其他14種語言的文本組成(總共37350篇文本)(參見this paper)。請注意,XNLI包含15種語言的MNLI數據集的15個機器翻譯版本的訓練集,但由於這些機器翻譯存在質量問題,該模型僅在XNLI開發集的專業翻譯和原始英文MNLI訓練集(392702篇文本)上進行訓練。不使用機器翻譯文本可以避免模型對這15種語言過擬合;避免對ernie - m預訓練的其他85種語言的災難性遺忘;並顯著降低訓練成本。
訓練過程
ernie - m - large - mnli - xnli使用Hugging Face訓練器進行訓練,使用了以下超參數:
training_args = TrainingArguments(
num_train_epochs=3, # 總訓練輪數
learning_rate=3e-05,
per_device_train_batch_size=16, # 訓練期間每個設備的批量大小
gradient_accumulation_steps=2,
per_device_eval_batch_size=16, # 評估批量大小
warmup_ratio=0.1, # 學習率調度器的熱身步數
weight_decay=0.01, # 權重衰減強度
fp16=True,
)
評估結果
該模型在XNLI測試集的15種語言上進行了評估(每種語言5010篇文本,總共75150篇)。請注意,多語言NLI模型能夠在不接收特定語言的NLI訓練數據的情況下對NLI文本進行分類(跨語言遷移)。這意味著該模型也能夠對mDeBERTa訓練的其他85種語言進行NLI,但性能很可能低於XNLI中可用的語言。
還請注意,如果模型中心的其他多語言模型聲稱在非英語語言上的性能約為90%,作者很可能在測試過程中犯了錯誤,因為最新的論文中沒有一篇顯示在XNLI上的多語言平均性能比80%高出幾個百分點(參見here或here)。
數據集 | 平均XNLI | MNLI_m | MNLI_mm | 阿拉伯語 | 保加利亞語 | 德語 | 希臘語 | 英語 | 西班牙語 | 法語 | 印地語 | 俄語 | 斯瓦希里語 | 泰語 | 土耳其語 | 烏爾都語 | 越南語 | 中文 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
準確率 | 0.822 | 0.881 | 0.878 | 0.818 | 0.853 | 0.84 | 0.837 | 0.882 | 0.855 | 0.849 | 0.799 | 0.83 | 0.751 | 0.809 | 0.818 | 0.76 | 0.826 | 0.799 |
推理速度(文本/秒,A100,批量大小=120) | 1415.0 | 783.0 | 774.0 | 1487.0 | 1396.0 | 1430.0 | 1206.0 | 1623.0 | 1482.0 | 1291.0 | 1302.0 | 1366.0 | 1484.0 | 1500.0 | 1609.0 | 1344.0 | 1403.0 | 1302.0 |
🔧 技術細節
模型的訓練和評估涉及到自然語言推理(NLI)和多語言處理的相關技術。在訓練過程中,通過選擇合適的預訓練模型和微調數據集,避免了使用機器翻譯文本帶來的問題,如過擬合、災難性遺忘和高訓練成本等。評估時利用XNLI測試集對模型在15種語言上的性能進行了評估,同時考慮了模型的跨語言遷移能力。
📄 許可證
本項目採用Apache - 2.0許可證。
⚠️ 重要提示
請參考原始ernie - m論文和不同NLI數據集的相關文獻,以瞭解潛在的偏差。
💡 使用建議
- 如果你需要更快的推理速度但對性能要求不高,可以嘗試[multilingual - MiniLMv2 - L6 - mnli - xnli](https://huggingface.co/MoritzLaurer/multilingual - MiniLMv2 - L6 - mnli - xnli)。
- 如果你希望在性能和速度之間取得平衡,可以嘗試[mDeBERTa - v3 - base - mnli - xnli](https://huggingface.co/MoritzLaurer/mDeBERTa - v3 - base - mnli - xnli)。
📖 引用
如果你使用了這個模型,請引用: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](https://www.linkedin.com/in/moritz - laurer/)上與我交流。



