点击“AladdinEdu你的AI学习实践工作坊”注册即送-H卡级别算力沉浸式云原生集成开发环境80G大显存多卡并行按量弹性计费教育用户更享超低价。1. 引言当标注数据成为奢侈品深度学习的成功建立在海量标注数据之上。然而在无数真实场景中——医疗文本的专家标注、濒危语言的语料建设、新兴事件的快速响应——获取大规模高质量标注数据代价高昂甚至不可能。少样本文本分类正是在这一困境中诞生它要求模型仅凭每类寥寥数个通常1到5个标注样本便能准确分类新样本。少样本学习的核心矛盾在于模型既要从小样本中捕捉类别区分性特征又不能过拟合到这些极少的示例上。为解决这一矛盾两条技术路径各自发展并日益融合度量学习与原型网络通过非参数化的距离度量替代参数化的分类器在嵌入空间中比较样本相似性无需针对新任务进行梯度更新。提示调优依托在海量文本上预训练的大语言模型将分类任务重构为语言模型原生的填空或续写格式以自然语言提示激活模型内部知识实现零样本或少样本推理。本文将系统梳理这两条路径的核心理念、数学基础与工程实践。我们将从问题形式化出发深入原型网络的距离度量与episodic训练、提示调优从离散到连续的范式演进并探讨两者在大模型时代的融合趋势。全文辅以可运行的PyTorch代码力求为读者提供从理论到落地的全景指南。2. 少样本文本分类的形式化与评估2.1 N-way K-shot 设定少样本分类的标准评估协议是N-way K-shot每个任务episode从数据集中随机抽取N个类别每类提供K个标注样本作为支持集其余样本作为查询集。模型基于支持集进行快速学习在查询集上评估分类准确率。这一设定严格考验模型的跨类别泛化能力。2.2 核心挑战过拟合K极小标准梯度微调极易陷入过拟合。领域间隔训练时的基类base classes与测试时的新类novel classes类别不重叠要求模型习得可迁移的类别概念。表示崩塌在小样本上微调大模型可能破坏预训练学到的通用语义结构。2.3 评估指标常用指标为平均准确率在大量随机采样episode上的均值及其95%置信区间。对于多领域场景还会报告各领域的宏平均。3. 度量学习与原型网络在嵌入空间中比较度量学习的核心思想是学习一个深度嵌入函数 (f_\phi)将文本映射到一个语义空间使得在该空间中同类样本彼此靠近异类样本相互远离。分类时查询样本的类别由它与支持集样本在嵌入空间中的距离决定。3.1 孪生网络最早的度量学习范式。孪生网络接收一对样本通过共享权重的编码器提取特征然后计算特征向量的绝对差或拼接输入一个小型全连接网络预测是否同类。训练时使用二元交叉熵损失。在测试时需将查询样本与每个支持样本配对投票决定类别计算量随支持集大小线性增长。3.2 匹配网络匹配网络引入注意力机制来聚合支持集信息。给定查询样本 (\mathbf{x})其嵌入 (\mathbf{z} f_\phi(\mathbf{x})) 与每个支持样本嵌入 (\mathbf{z}_i) 计算余弦相似度经softmax得到注意力权重最终类别概率为支持集标签的加权和[P(y \mid \mathbf{x}, \mathcal{S}) \sum_{i \in \mathcal{S}} a(\mathbf{z}, \mathbf{z}_i) \cdot \mathbf{y}_i]其中 (a(\cdot, \cdot)) 为注意力核函数。匹配网络在训练时采用episodic training每个训练迭代采样一个少样本任务模拟测试场景。这种训练方式使模型学会跨任务泛化。3.3 原型网络原型网络进一步简化它为每个类别计算一个原型向量(\mathbf{c}_k)即该类所有支持样本嵌入的均值[\mathbf{c}_k \frac{1}{|\mathcal{S}k|} \sum{\mathbf{x}_i \in \mathcal{S}k} f\phi(\mathbf{x}_i)]查询样本 (\mathbf{x}) 的分类概率由嵌入向量与各原型的负平方欧氏距离经softmax得到[P(yk \mid \mathbf{x}) \frac{\exp(-|f_\phi(\mathbf{x}) - \mathbf{c}k|^2)}{\sum{k’} \exp(-|f_\phi(\mathbf{x}) - \mathbf{c}_{k’}|^2)}]优势简洁高效无需复杂注意力计算。样本效率类别由多个支持样本共同定义更具鲁棒性。可解释性原型向量可视为类别的语义中心。训练同样采用episodic采样损失函数为查询集上的负对数似然。值得注意的是原型网络在测试时可不进行任何参数更新仅通过计算原型即可完成分类天然适合少样本场景。3.4 半监督原型网络当支持集不仅包含K个标注样本还有额外的无标注样本时原型网络可扩展为半监督版本。方法包括软标签传播用当前原型为无标注样本分配软标签再重新计算原型。掩码建模将无标注样本作为“噪声”支持集通过一致性正则化约束。这些扩展在标注样本极少时能有效利用领域内未标注数据提升性能。3.5 文本编码器的选择原型网络的性能高度依赖于嵌入函数 (f_\phi)。早期工作使用TextCNN或BiLSTM。近年来预训练语言模型如BERT成为标配。通常的做法是在基类数据上对BERT进行episodic微调或全参数微调。将[CLS]向量作为文本表示。在测试新类时冻结BERT仅计算原型。代码示例基于BERT的原型网络importtorchimporttorch.nnasnnimporttorch.nn.functionalasFfromtransformersimportBertModel,BertTokenizerclassPrototypicalNetwork(nn.Module):def__init__(self,bert_namebert-base-uncased):super().__init__()self.encoderBertModel.from_pretrained(bert_name)self.tokenizerBertTokenizer.from_pretrained(bert_name)defforward(self,support_texts,query_texts,support_labels):# 编码支持集support_embself.encode(support_texts)# [N_s, D]# 编码查询集query_embself.encode(query_texts)# [N_q, D]# 计算原型unique_labelstorch.unique(support_labels)prototypes[]forlblinunique_labels:masksupport_labelslbl protosupport_emb[mask].mean(dim0)prototypes.append(proto)prototypestorch.stack(prototypes)# [N_way, D]# 计算欧氏距离并分类diststorch.cdist(query_emb,prototypes)# [N_q, N_way]logits-distsreturnlogitsdefencode(self,texts):inputsself.tokenizer(texts,return_tensorspt,paddingTrue,truncationTrue)outputsself.encoder(**inputs)returnoutputs.last_hidden_state[:,0,:]# [CLS]向量4. 提示调优将分类转化为语言建模度量学习方法通常需要在基类数据上训练编码器且依赖episodic采样。提示调优另辟蹊径它不训练或少训练模型参数而是通过重构输入格式将分类任务对齐到语言模型的预训练任务上。4.1 离散提示手工模板与自动搜索对于掩码语言模型如BERT分类任务可转化为完形填空。例如情感二分类模板文本[TEXT] 情感倾向是 [MASK] 。模型在[MASK]位置预测词汇“好”正面或“差”负面通过比较两个词的概率完成分类。对于自回归模型如GPT则构造前缀续写模板文本[TEXT] 这条评论的情感是离散提示的优势零样本能力无需任何标注样本直接依赖模型预训练知识。可解释模板为自然语言人类可理解。局限性能不稳定对措辞极度敏感同义替换可能导致准确率大幅波动。不可优化离散符号阻断梯度无法根据任务损失调整提示。4.2 自动搜索离散提示为减轻人工设计负担研究者提出自动化搜索方法基于梯度AutoPrompt通过计算模板token的梯度迭代替换为词表中梯度最大的token。基于生成用T5等生成模型直接产生候选模板在验证集上筛选。基于挖掘从大规模语料中检索包含标签词的常见句式。这些方法能发现性能优于人工设计的模板但搜索空间巨大且跨模型迁移性有限。4.3 连续提示Prefix-Tuning与P-tuning连续提示的核心突破在于直接在嵌入空间定义可训练的“软提示”向量通过梯度下降端到端优化。Prefix-Tuning在自回归语言模型如GPT-2的每一层自注意力前拼接一组可训练的前缀向量。这些前缀向量作为额外的上下文影响后续token的键和值计算。训练时冻结语言模型主干仅优化前缀向量。由于参数量极少通常1%能有效避免小样本过拟合。P-tuning针对双向掩码模型如BERT在输入嵌入层插入可训练的连续提示token。为增强优化稳定性使用小型双向LSTM将可训练潜变量映射为提示嵌入。P-tuning在SuperGLUE等少样本NLU任务上超越了全参数微调。Prompt Tuning进一步简化直接优化输入层的软提示向量无需任何重参数化网络。研究发现当模型规模足够大10B时这种极简方法即能达到全参数微调性能展现了超大规模模型对提示的鲁棒性。4.4 连续提示在少样本分类中的实践在少样本设定下连续提示的优势尤为明显参数高效仅优化极少参数如每个类别一个连续向量极大降低过拟合风险。知识保留语言模型主干冻结预训练通用知识完整保留。跨任务迁移学习到的软提示可作为任务“指纹”用于快速任务切换。代码示例使用PEFT库实现Prefix-TuningfromtransformersimportAutoModelForCausalLM,AutoTokenizerfrompeftimportPrefixTuningConfig,get_peft_model,TaskType model_namegpt2modelAutoModelForCausalLM.from_pretrained(model_name)tokenizerAutoTokenizer.from_pretrained(model_name)# 配置前缀微调prefix_configPrefixTuningConfig(task_typeTaskType.CAUSAL_LM,num_virtual_tokens20,prefix_projectionTrue,encoder_hidden_size512,)modelget_peft_model(model,prefix_config)model.print_trainable_parameters()# 约0.1%参数5. 元学习视角统一度量学习与提示调优少样本学习的本质是学会学习——元学习。度量学习和提示调优可被统一在元学习的框架下度量学习元学习器通过跨任务episodic训练学习一个通用的嵌入空间。内层任务适配是无参数的计算原型或最近邻。提示调优元学习器是预训练语言模型自身其海量参数编码了任务分布的先验。内层适配通过优化少量提示参数完成可视为元学习的一种高效实现。近年来两者呈现融合趋势元提示网络在多个源任务上训练一个提示生成器面对新任务时生成器基于支持集动态产生任务特定的连续提示。原型提示将类别原型向量作为软提示的一部分直接注入语言模型引导其生成类别相关特征。6. 对比分析与方法选择指南6.1 性能与资源对比方法零样本能力少样本性能训练成本推理成本可解释性原型网络BERT编码器无中高中需episodic训练低中原型可解释离散提示高低无低高连续提示P-tuning无高极低低低大模型上下文学习极高高无高中6.2 选型指南无任何标注数据追求快速验证离散提示或大模型上下文学习。有少量标注每类5-20个模型规模中等1B原型网络或度量学习。有少量标注拥有大型预训练模型7B连续提示Prompt Tuning/P-tuning。追求极致性能允许适度计算在基类数据上episodic微调BERT原型网络。跨领域泛化需求强连续提示不同领域可训练独立软提示。7. 前沿挑战与未来方向7.1 跨模态少样本学习将文本少样本方法扩展至图文多模态场景利用图像信息辅助文本分类或反之。例如通过CLIP等对齐模型将类别原型映射到多模态空间。7.2 终身少样本学习模型需要连续学习一系列少样本任务而不遗忘旧知识。参数高效方法如Adapter、LoRA天然支持为每个任务存储独立模块实现终身学习。7.3 大模型时代的少样本新范式随着GPT-4等超大模型展现惊人的零样本与少样本能力少样本文本分类的研究重心正从“设计精巧的学习算法”转向“挖掘预训练模型潜藏的知识”。未来高效提示工程、检索增强生成与上下文示例优选将成为核心技术。7.4 理论基础与泛化边界少样本学习为何有效元学习的泛化误差界、度量学习的嵌入理论、提示调优的隐式贝叶斯推断——这些理论问题尚待深入探索。更坚实的理论基础将指导我们设计更鲁棒的算法。8. 结语少样本文本分类是机器学习从“数据驱动”走向“知识驱动”的缩影。原型网络以简洁的距离度量实现了无须微调的快速适配提示调优以精妙的模板重构激活了预训练模型的潜在知识。二者分别从表示学习和知识迁移的角度回应了小样本下的泛化难题。对于NLP从业者掌握这两种范式不仅意味着能在标注数据稀缺时构建可用系统更代表着理解“模型如何从少量示例中学习”这一根本问题的钥匙。随着大语言模型能力的持续涌现少样本学习正从一项专门技术演变为通用智能的基础素养。愿本文为你在这条探索之路上提供清晰的地图与可用的工具。点击“AladdinEdu你的AI学习实践工作坊”注册即送-H卡级别算力沉浸式云原生集成开发环境80G大显存多卡并行按量弹性计费教育用户更享超低价。