SetFit: プロンプト不要の効率的な少数ショット学習
Hugging Face は、Intel Labs と UKP Lab の協力のもと、Sentence Transformers の効率的な少数ショットファインチューニングのためのフレームワークである SetFit をリリースしました。SetFit を使用すると、開発者は非常に少数のラベル付き例(クラスあたり 8 件程度)だけで高い分類精度を達成でき、従来の少数ショット学習で一般的に必要とされる手作業のプロンプトやバーバライザーを必要としません。
対照学習アーキテクチャ
SetFit は、限られたデータから高品質な埋め込みを生成するために、2 段階の学習プロセスを採用します:
- Contrastive Fine-Tuning: フレームワークはまず、少数のラベル付き例を用いて Sentence Transformer モデルをファインチューニングします。クラス内およびクラス外の選択により正例と負例(またはトリプレット)を作成し、クラスごとにクラスタリングする高密度ベクトルを生成するようモデルを訓練します。
- Classification Head Training: 次に、ファインチューニングされた Sentence Transformer が生成した埋め込みに対し、対応するクラスラベルを用いて分類ヘッドを訓練します。
推論時には、未見の例がファインチューニングされた Sentence Transformer を通して埋め込みに変換され、分類ヘッドがその埋め込みを用いてクラスラベルを予測します。
性能とベンチマーク
SetFit はサンプル効率が高くノイズに対しても頑健であり、はるかに小規模なモデルを使用しながらも、最先端の少数ショット手法と同等かそれ以上の性能を示すことが多いです。
RAFT ベンチマーク結果
RAFT の少数ショット分類ベンチマークにおいて、SetFit(all-roberta-large-v1 モデル、パラメータ数 3.55 億)は PET と GPT-3 を上回りました。精度は 71.3% で、11 億パラメータの T‑Few モデル(75.8%)と人間ベースライン(73.5%)のすぐ下に位置します。特筆すべきは、SetFit が 11 の RAFT タスクのうち 7 件で人間ベースラインを上回ったことです。
| 順位 | 手法 | 精度 | モデルサイズ |
|---|---|---|---|
| 2 | T-Few | 75.8 | 11B |
| 4 | Human Baseline | 73.5 | N/A |
| 6 | SetFit (Roberta Large) | 71.3 | 355M |
| 9 | PET | 69.6 | 235M |
| 11 | SetFit (MP-Net) | 66.9 | 110M |
| 12 | GPT-3 | 62.7 | 175 B |
他の手法との比較
クラスあたりわずか 8 件の例だけで、SetFit は通常、PERFECT、ADAPET、そして従来のファインチューニングされたトランスフォーマーを上回ります。また、27 倍小さくプロンプト不要でありながら、T‑Few 3B に匹敵する結果を達成します。
学習と推論の効率性
- Training Speed: NVIDIA V100 上で 8 件のラベル付き例で SetFit を学習すると、約 30 秒でコストは $0.025 です。対照的に、NVIDIA A100 で T‑Few 3B を学習すると約 11 分かかり、コストは約 $0.70 となり、コストと時間が 28 倍増加します。
- Hardware Accessibility: SetFit は単一の GPU(Google Colab の GPU など)でも、あるいは CPU でも数分以内に学習可能です。
- Inference: SetFit は推論時に大幅な高速化を提供し、モデル蒸留を行うことでさらに最大 123 倍の高速化が可能です。
多言語サポートと実装
SetFit は Hugging Face Hub にある任意の Sentence Transformer と互換性があります。ベースモデルとして多言語 Sentence Transformer を使用することで、SetFit はドイツ語、日本語、標準中国語、フランス語、スペイン語など複数の言語でテキスト分類に利用でき、言語内および言語横断の設定の両方に対応します。
SetFit を実装するには、Hugging Face が setfit ライブラリを提供しています。学習ワークフローは以下の通りです:
pip install setfitでライブラリをインストールする。- 事前学習済み Sentence Transformer をロードする(例:
paraphrase-mpnet-base-v2)。 SetFitTrainerを使用して対照学習と分類ヘッドの学習を行う。