🚀 マルチ言語 ernie-m-base-mnli-xnli
このマルチ言語モデルは100言語で自然言語推論(NLI)を実行でき、マルチ言語のゼロショット分類にも適しています。ベースとなるモデルは、MetaのRoBERTa(CC100マルチ言語データセットで事前学習)に基づいて、百度によって事前学習されました。その後、15言語の仮説と前提のペアを含むXNLIデータセットと英語のMNLIデータセットでファインチューニングされました。このモデルは百度によってこの論文で紹介されました。同じサイズのRoBERTaモデルを上回る性能を発揮します。
もしより高速(ただし性能はやや低い)なモデルを探している場合は、multilingual-MiniLMv2-L6-mnli-xnliを試してみてください。同じサイズのモデルの中では、mDeBERTa-v3-base-mnli-xnliがXNLIベンチマークでより良い性能を発揮します。より高い性能を求める場合は、より低速なernie-m-large-mnli-xnliを試してみることができます。
🚀 クイックスタート
✨ 主な機能
- 100言語での自然言語推論(NLI)を実行可能。
- マルチ言語のゼロショット分類に適している。
- 同じサイズの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
💻 使用例
基本的な使用法
シンプルなゼロショット分類パイプライン
from transformers import pipeline
classifier = pipeline("zero-shot-classification", model="MoritzLaurer/ernie-m-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/ernie-m-base-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))
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開発セットは、英語から14の他の言語に専門家によって翻訳された2490のテキストで構成されています(合計37350のテキスト)(この論文を参照)。XNLIには15言語のMNLIデータセットの15の機械翻訳バージョンの学習セットが含まれていますが、これらの機械翻訳の品質問題のため、このモデルはXNLI開発セットの専門家による翻訳と元の英語のMNLI学習セット(392702のテキスト)のみで学習されました。機械翻訳されたテキストを使用しないことで、モデルが15の言語に過学習するのを避けることができ、ernie-mが事前学習された他の85の言語の大規模な忘却を避けることができ、学習コストを大幅に削減することができます。
学習手順
ernie-m-base-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,
)
評価結果
このモデルは、15の言語のXNLIテストセットで評価されました(言語ごとに5010のテキスト、合計75150)。マルチ言語NLIモデルは、特定の言語のNLI学習データを受け取らずにNLIテキストを分類することができます(クロスリンガル転移)。これは、モデルがmDeBERTaが学習された他の85の言語でもNLIを行うことができることを意味しますが、XNLIで利用可能な言語よりも性能が低い可能性が高いです。
また、モデルハブ上の他のマルチ言語モデルが英語以外の言語で約90%の性能を主張している場合、最新の論文のどれもXNLIで80%を数ポイント上回るマルチ言語平均性能を示していないため、著者はおそらくテスト中に間違いを犯しています(ここまたはここを参照)。
データセット |
avg_xnli |
mnli_m |
mnli_mm |
ar |
bg |
de |
el |
en |
es |
fr |
hi |
ru |
sw |
th |
tr |
ur |
vi |
zh |
正解率 |
0.78 |
0.849 |
0.85 |
0.777 |
0.812 |
0.804 |
0.797 |
0.854 |
0.814 |
0.803 |
0.744 |
0.784 |
0.711 |
0.765 |
0.776 |
0.717 |
0.793 |
0.749 |
推論速度 (A100, バッチ=120) |
3310.0 |
1967.0 |
1944.0 |
3443.0 |
3277.0 |
3338.0 |
2884.0 |
3696.0 |
3439.0 |
3071.0 |
3094.0 |
3222.0 |
3445.0 |
3490.0 |
3690.0 |
3175.0 |
3295.0 |
3096.0 |
📚 ドキュメント
制限事項とバイアス
潜在的なバイアスについては、元のernie-m論文とさまざまな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でお問い合わせください。
📄 ライセンス
このモデルはApache-2.0ライセンスの下で提供されています。