Efficient Few-Shot Learning Without Prompts
Lewis Tunstall, Nils Reimers, Unso Eun Seo Jo, Luke Bates, Daniel Korat, Moshe Wasserblat, Oren Pereg
cs.CL
2022-09-22
SetFit 先用对比学习微调 Sentence Transformer,再在嵌入上训逻辑回归,全程不用 prompt。每类 8 条时 110M 模型平均分 62.3,与 3B 的 T-Few(63.4)持平,训练约快一个数量级。
2022 年前后,少样本文本分类的主流是三条路:GPT-3 那种 in-context learning、T-Few 那种 PEFT、PET 和 Adapet 那种把分类改写成填空。共同麻烦是模型动辄几十亿参数,还得手写 prompt 和 verbalizer,换数据集就要重新调模板,结果方差大。
工业里真正缺的是小模型、不写 prompt、每类几条标注就能用。SetFit(Sentence Transformer Fine-tuning)把问题收成两步:先把句子空间按类别拉开,再在嵌入上训一个分类头。
第一段拿现成的 Sentence Transformer,按类别造对比对。每个类采 R 个正对(同类两句,标签 1)和 R 个负对(不同类,标签 0),默认 R=20。K 条样本能组出的对数远大于 K,这是少样本里把监督信号放大的办法。损失是 cosine-similarity,学习率 1e-3,batch 16,最长 256 token,只训 1 个 epoch。
第二段很薄:用微调后的 ST 给原始 K 条样本出嵌入,再训一个逻辑回归。推理就是 embed 加线性分类。没有 mask、没有模板、没有 verbalizer。
主干试了三档:paraphrase-MiniLM-L3-v2(15M)、paraphrase-mpnet-base-v2(110M)、all-roberta-large-v1(355M)。
6 个英文分类集,每个样本数 10 个随机划分,报均值。平均分把 AGNews 拿掉,因为 T-Few 的训练数据里见过它。
| 方法 | 参数 | N=8 平均 | N=64 平均 |
| RoBERTa-Large 微调 | 355M | 43.0 | 69.7 |
| Perfect | - | 48.7 | 72.7 |
| Adapet | - | 58.3 | 73.8 |
| T-Few 3B | 3B | 63.4 | 70.3 |
| SetFit-MPNet | 110M | 62.3 | 75.3 |
N=8 时 SetFit 比标准微调高 19.3 分,和 T-Few 3B 的 63.4 基本持平,模型小 27 倍以上。N=64 时反超 T-Few 5 分。分任务并不均匀:Amazon Counterfactual 上 N=8 的 SetFit 到 40.3,T-Few 只有 19.0;五分类情绪 SST-5 上反过来,T-Few 55.0,SetFit 43.6。Customer Reviews 上每类 8 条已经 88.5,全量微调是 92.4。
RAFT(2022-09-05 榜):SetFit-RoBERTa 71.3,高于 GPT-3 的 62.7 和 PET 的 69.6,低于 T-Few 11B 的 75.8 和人类基线 73.5,11 项里有 7 项超过人类。MPNet 版 66.9。
多语言 Amazon 评论(MARC,5 星,MAE×100,越低越好),每类 8 条:SetFit 平均 86.4–88.3,XLM-R 微调 117–122,Adapet 135–152。用英语数据训、其他语言测,SetFit 平均 86.4,三档设定里最好。全量 2 万条时 XLM-R 降到 47.7,少样本和全量之间仍有洞。
按 Kaplan 的 FLOPs/token 估,SetFit-MPNet 推理和训练大约是 T-Few 3B 的 1/19。蒸馏到 MiniLM(15M)大约快 123 倍,平均分 60.3,掉 3.1。一张 p3.2xlarge 上 N=8 训大约 30 秒、0.025 美元;T-Few 3B 要 40GB 显存、约 700 秒、0.7 美元。权重 70MB 和 420MB,对 11.4GB 的 T0-3B 检查点。
无标注很少时,用 SetFit 当学生去学 110M teacher 的余弦相似度,N=8 无标注下 AGNews / Emotion / SST-5 相对普通 MiniLM 学生分别高 24.8、25.1、8.9 分;到 1000 条无标注就打平。
这篇把「少样本分类必须上大模型和 prompt」这条默认假设拆开了。对要在 CPU 或小 GPU 上快速迭代标注的业务,110M 加逻辑回归是能直接上的配方,代码和数据当时就公开了。多语言几乎是换一个 multilingual ST。
它解决的是分类,不是生成,也不是需要多步推理的任务。和后来的 instruction-tuned LLM 不在同一赛道:LLM 零样本覆盖面更宽,SetFit 在「每类有几条真标签、要稳定、要便宜」时更合适。
论文没有单独的局限节,数字里能读出几条。五分类细粒度情绪上明显弱于 T-Few,嵌入加线性头吃细粒度标签边界比较费劲。AmazonCF 在 N=8 的标准差到 11.8,划分很伤。对比学习至少要能组成同类对,极端 1-shot 时正对来源会很窄。序列上限 256,长文档没测。超参加过开发集,严格「无验证集」的 few-shot 协议并没有完全做到。RAFT 上仍落后 T-Few 11B 4.5 分。对比的是 2022 年的 prompt 方法,没有和后来的小型 instruction 模型比。