SetFit:高效的少样本学习(无需提示)

Hugging Face 与 Intel Labs 以及 UKP Lab 合作,发布了 SetFit,这是一种用于高效少样本微调 Sentence Transformers 的框架。SetFit 使开发者能够在仅有极少标注样本的情况下(有时每类仅需 8 条)实现高分类准确率,无需使用少样本学习中常见的手工提示或语言化器。

对比学习架构

SetFit 采用两阶段训练流程,从有限数据中生成高质量的嵌入向量:

  1. 对比微调: 框架首先使用少量标注样本对 Sentence Transformer 模型进行微调。它通过类内和类外的选择生成正负对(或三元组),训练模型生成在同类中聚集的密集向量。
  2. 分类头训练: 然后在微调后的 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 人类基准 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 库。训练工作流包括:

  1. 通过 pip install setfit 安装库。
  2. 加载预训练的 Sentence Transformer(例如 paraphrase-mpnet-base-v2)。
  3. 使用 SetFitTrainer 进行对比学习并训练分类头。

Sources