🚀 DeBERTa-v3-large-mnli-fever-anli-ling-wanli
このモデルは、自然言語推論(NLI)のタスクに特化したモデルです。複数のNLIデータセットでファインチューニングされており、ゼロショット分類にも利用できます。
🚀 クイックスタート
このセクションでは、モデルの基本的な使い方を紹介します。
✨ 主な機能
- 複数のNLIデータセット(MultiNLI、Fever-NLI、ANLI、LingNLI、WANLI)でファインチューニングされた高性能なNLIモデルです。
- ゼロショット分類に利用でき、事前にラベル付けされたデータがなくても分類タスクを実行できます。
- ANLIベンチマークで他の大規模モデルを大きく上回る性能を発揮します。
📦 インストール
このモデルを使用するには、transformers
ライブラリが必要です。以下のコマンドでインストールできます。
pip install transformers
💻 使用例
基本的な使用法
from transformers import pipeline
classifier = pipeline("zero-shot-classification", model="MoritzLaurer/DeBERTa-v3-large-mnli-fever-anli-ling-wanli")
sequence_to_classify = "Angela Merkel is a politician in Germany and leader of the 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/DeBERTa-v3-large-mnli-fever-anli-ling-wanli"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)
premise = "I first thought that I liked the movie, but upon second thought it was actually disappointing."
hypothesis = "The movie was not good."
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)
📚 ドキュメント
モデルの説明
このモデルは、MultiNLI、Fever-NLI、Adversarial-NLI (ANLI)、LingNLI、WANLIのデータセットでファインチューニングされています。これらのデータセットは、合計885,242のNLI仮説 - 前提のペアを含んでいます。2022年6月6日時点で、このモデルはHugging Face Hubで最も性能が高いNLIモデルであり、ゼロショット分類に使用できます。ANLIベンチマークでは、他のすべての大規模モデルを大きく上回っています。
基礎モデルは、MicrosoftのDeBERTa-v3-largeです。DeBERTa-v3は、BERTやRoBERTaなどの古典的なマスク言語モデルと比較して、いくつかの新しい技術を組み合わせています。詳細は論文を参照してください。
トレーニングデータ
DeBERTa-v3-large-mnli-fever-anli-ling-wanliは、上述のデータセットでトレーニングされています。ただし、SNLIはデータ品質の問題で明示的に除外されています。多くのデータが必ずしも良いNLIモデルを作り出すとは限らないことに注意してください。
トレーニング手順
このモデルは、Hugging Faceのトレーナーを使用して以下のハイパーパラメータでトレーニングされています。私のテストでは、エポック数を増やして長時間トレーニングすると性能が低下することがわかりました(過学習)。
from transformers import TrainingArguments
training_args = TrainingArguments(
num_train_epochs=4,
learning_rate=5e-06,
per_device_train_batch_size=16,
gradient_accumulation_steps=2,
per_device_eval_batch_size=64,
warmup_ratio=0.06,
weight_decay=0.01,
fp16=True
)
評価結果
このモデルは、MultiNLI、ANLI、LingNLI、WANLIのテストセットとFever-NLIの開発セットを使用して評価されています。使用された指標は正解率です。このモデルは、各データセットで最先端の性能を達成しています。驚くべきことに、ANLIの以前の最先端モデル(ALBERT-XXL)を8.3%上回っています。これは、ANLIがRoBERTa(またはALBERT)などのマスク言語モデルを騙すために作成されたのに対し、DeBERTa-v3がより良い事前学習目的(RTD)、分離型アテンションを使用し、より高品質のNLIデータでファインチューニングされたためだと思われます。
データセット |
mnli_test_m |
mnli_test_mm |
anli_test |
anli_test_r3 |
ling_test |
wanli_test |
正解率 |
0.912 |
0.908 |
0.702 |
0.64 |
0.87 |
0.77 |
速度 (テキスト/秒, A100 GPU) |
696.0 |
697.0 |
488.0 |
425.0 |
828.0 |
980.0 |
🔧 技術詳細
このモデルは、DeBERTa-v3-largeをベースにしており、RTD(Replaced Token Detection)という事前学習目的を使用しています。また、分離型アテンションを採用しており、単語の構造と意味をより効果的に捉えることができます。トレーニングには、上述のデータセットを使用し、Hugging Faceのトレーナーを用いてハイパーパラメータを最適化しています。
📄 ライセンス
このモデルはMITライセンスの下で公開されています。
制限事項とバイアス
トレーニングデータと潜在的なバイアスに関する詳細情報については、元のDeBERTa-v3の論文と様々な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で連絡を取ってください。
デバッグと問題点
DeBERTa-v3は2021年12月6日にリリースされました。古いバージョンのHF Transformersでは、このモデルを実行する際に問題が発生する可能性があります(例えば、トークナイザーに関する問題)。Transformers>=4.13を使用することで、いくつかの問題を解決できる可能性があります。