SetFit:高效的少樣本學習(無提示)
Hugging Face 與 Intel Labs 以及 UKP Lab 合作,發布了 SetFit,一個用於高效少樣本微調 Sentence Transformers 的框架。SetFit 讓開發者僅使用極少的標記樣本(有時每類僅需 8 個)即可達到高分類準確率,且不需要少樣本學習中常見的手工提示或語言化器。
對比學習架構
SetFit 採用兩階段的訓練流程,從有限的資料中產生高品質的嵌入向量:
- 對比微調:框架首先使用少量標記樣本微調 Sentence Transformer 模型。它透過同類與異類的選取產生正負配對(或三元組),訓練模型生成在同類中聚集的稠密向量。
- 分類頭訓練:接著使用微調後的 Sentence Transformer 所產生的嵌入向量,根據相應的類別標籤訓練分類頭。
在推論時,未見過的樣本會通過微調後的 Sentence Transformer 產生嵌入向量,分類頭再利用該向量預測類別標籤。
效能與基準測試
SetFit 展示了高度的樣本效率與對噪聲的韌性,儘管使用的模型規模遠小於其他方法,仍常與最先進的少樣本方法表現相當或更佳。
RAFT 基準測試結果
在 RAFT 少樣本分類基準測試中,SetFit(使用 all-roberta-large-v1 模型,參數量 3.55 億)優於 PET 與 GPT-3。其準確率達 71.3%,僅次於 110 億參數的 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 與普通微調的 transformer。它的表現亦可與 T-Few 3B 相媲美,且模型規模小 27 倍且無需提示。
訓練與推論效能
SetFit 的訓練與執行速度遠快於大型少樣本模型,且成本更低。
- 訓練速度:在 NVIDIA V100 上使用 8 個標記樣本訓練 SetFit 約需 30 秒,成本為 $0.025。相比之下,在 NVIDIA A100 上訓練 T-Few 3B 需要 11 分鐘,成本約為 $0.70——成本與時間皆增加了 28 倍。
- 硬體可及性:SetFit 可在單一 GPU(例如 Google Colab 提供的 GPU)上訓練,甚至在 CPU 上也能在數分鐘內完成。
- 推論: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進行對比學習以及分類頭的訓練。