🚀 多語言MiniLMv2-L6-mnli-xnli
本多語言模型可對100多種語言進行自然語言推理(NLI),因此也適用於多語言零樣本分類。它能有效解決在多種語言環境下進行文本分類和推理時數據稀缺的問題,為跨語言的文本處理提供了高效的解決方案。
🚀 快速開始
本多語言模型能夠在100多種語言上執行自然語言推理(NLI)任務,因此也適用於多語言零樣本分類。其底層的多語言MiniLM - L6模型由微軟創建,是從XLM - RoBERTa - large中提煉而來(詳見原論文以及此倉庫中的最新信息)。隨後,該模型在包含15種語言的假設 - 前提對的XNLI數據集以及英文MNLI數據集上進行了微調。
✨ 主要特性
- 多語言支持:支持多種語言,包括阿拉伯語(ar)、保加利亞語(bg)、德語(de)、希臘語(el)、西班牙語(es)、法語(fr)、印地語(hi)、俄語(ru)、斯瓦希里語(sw)、泰語(th)、土耳其語(tr)、烏爾都語(ur)、越南語(vi)和中文(zh)等。
- 零樣本分類:適用於零樣本分類任務,無需針對特定任務進行大量標註數據的訓練。
- 模型蒸餾:通過蒸餾技術,模型體積更小,推理速度更快,內存需求更低。
📦 安裝指南
文檔未提及具體安裝步驟,故跳過此章節。
💻 使用示例
基礎用法
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)
高級用法
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))
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篇文本)(詳見此論文)。需要注意的是,XNLI包含15種語言的MNLI數據集的15個機器翻譯版本的訓練集,但由於這些機器翻譯存在質量問題,該模型僅在XNLI開發集的專業翻譯文本和原始英文MNLI訓練集(392702篇文本)上進行訓練。不使用機器翻譯文本可以避免模型對15種語言過擬合;避免對其他預訓練語言的災難性遺忘;並顯著降低訓練成本。
訓練過程
該模型使用Hugging Face訓練器進行訓練,採用了以下超參數。確切的底層模型是mMiniLMv2-L6-H384-distilled-from-XLMR-Large。
training_args = TrainingArguments(
num_train_epochs=3, # 訓練總輪數
learning_rate=4e-05,
per_device_train_batch_size=64, # 訓練時每個設備的批次大小
per_device_eval_batch_size=120, # 評估時的批次大小
warmup_ratio=0.06, # 學習率調度器的熱身步數
weight_decay=0.01, # 權重衰減強度
)
評估結果
該模型在XNLI測試集的15種語言上進行了評估(每種語言5010篇文本,總共75150篇)。需要注意的是,多語言NLI模型能夠在不接收特定語言的NLI訓練數據的情況下對NLI文本進行分類(跨語言遷移)。這意味著該模型也能夠對其他訓練語言進行NLI任務,但性能可能低於XNLI中可用的語言。
論文中報告的多語言MiniLM - L6的平均XNLI性能為0.68(詳見表11)。此重新實現的平均性能為0.713。性能的提升可能得益於在訓練數據中加入了MNLI,並且該模型是從XLM - RoBERTa - large而非 - base(多語言MiniLM - L6 - v2)中提煉而來。
數據集 |
平均XNLI |
阿拉伯語(ar) |
保加利亞語(bg) |
德語(de) |
希臘語(el) |
英語(en) |
西班牙語(es) |
法語(fr) |
印地語(hi) |
俄語(ru) |
斯瓦希里語(sw) |
泰語(th) |
土耳其語(tr) |
烏爾都語(ur) |
越南語(vi) |
中文(zh) |
準確率 |
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 |
速度(文本/秒,A100 GPU,評估批次=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 |
數據集 |
MNLI匹配 |
MNLI不匹配 |
準確率 |
0.782 |
0.8 |
速度(文本/秒,A100 GPU,評估批次=120) |
4430.0 |
4395.0 |
🔧 技術細節
蒸餾模型的主要優點是比其“教師”模型(XLM - RoBERTa - large)更小(推理速度更快,內存需求更低)。缺點是會損失一些大型“教師”模型的性能。為了獲得最高的推理速度,建議使用這個6層模型。若追求更高的性能,建議使用[mDeBERTa - v3 - base - mnli - xnli](https://huggingface.co/MoritzLaurer/mDeBERTa - v3 - base - mnli - xnli)(截至2023年2月14日)。
📄 許可證
本模型採用MIT許可證。
侷限性和偏差
請參考不同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](https://www.linkedin.com/in/moritz - laurer/)。