大数跨境
0
0

提示词工程:少样本提示词设计

提示词工程:少样本提示词设计 枭龙云技术团队
2025-11-11
1
导读:少样本提示是提供少量任务示例,帮助模型理解任务需求并提升相似任务的表现。这些示例存在于提示词本身之中。

少样本提示是提供少量任务示例,帮助模型理解任务需求并提升相似任务的表现。这些示例存在于提示词本身之中。它们起到引导作用,向模型展示如何处理和回应特定类型的任务或问题。当我们提供这些示例时,本质上是在对模型说:“在类似情况下,你应该这样回应。”

比如,我们要模型对电影评论做情感分类,我们会先提供 2 个标注示例:

根据前两个示例中的信息,判断第三条电影评论的情感倾向。评论 1:“这部电影完全是浪费时间。” 情感倾向:负面。评论 2:“我在看这部电影的全程都忍不住笑!” 情感倾向:正面。评论 3:“这部电影的特效很棒,但剧情很混乱。” 情感倾向:

然后模型根据两个标准实例,给出结果:

评论 3 的情感倾向为中立(或混合)

小样本提示的核心优势在于:

  1. 提升表现:让模型更精准理解任务,输出更贴合需求、准确率更高。
  2. 快速适配:仅通过更换示例,即可让模型快速切换任务类型或领域。
  3. 降低数据需求:仅需 2-5 个示例即可有效引导模型,无需大量标注数据,也无需微调(Fine-Tuning,FT)模型。

在 Language Models are Few-Shot Learners 这篇论文中提到,模型越大越能高效的利用上下文信息,无需进行 “微调” 即可有效引导模型。下图是给模型的一个简单的任务,要求模型从单词中移除无关符号:

  • 随着自然语言任务描述的增加以及模型上下文中示例数量 K 的增多,模型性能会有所提升
  • 少样本学习会随着模型规模的增大而显著改善

少样本提示的原则

提示结构清晰合理,合理的提示结构可降低模型的理解成本,标准结构应包含“任务描述-示例集-待解决问题”三部分,具体优化技巧如下:

  • 任务描述简洁明确:用直白语言说明任务目标、输出要求(如“输出仅保留标签,无需解释”),避免模糊表述。例如“给新闻标题分类,输出‘科技’或‘体育’,不添加额外说明”。
  • 示例排序有逻辑:可按“简单 → 复杂”“基础场景 → 边缘场景”的顺序排列示例,帮助模型逐步建立认知;对于分类任务,可按标签字母顺序或频率顺序排列,减少模型记忆负担。
  • 添加解释增强可解释性:复杂任务中,在示例输出后补充简短解释(如“此处判定为消极,因评论使用反讽手法”),帮助模型理解决策逻辑,提升推理准确性。

示例是少样本提示提示的核心,其质量直接决定模型的任务理解精度,需遵循“典型性、一致性、多样性”三大原则:

  • 典型性优先:选择覆盖任务核心场景的示例,避免边缘案例主导。例如在情感分析任务中,优先纳入包含明确情感倾向的评论,再补充反讽、混合情感等复杂案例。
  • 格式绝对一致:所有示例需保持“输入-输出”结构统一,包括标点、标签格式、专业术语表述等。如代码生成任务中,示例需统一包含“功能描述-代码实现-注释风格”三部分。
  • 覆盖多样性:示例需涵盖任务的主要变体,如文本分类任务中确保各标签示例数量均衡,避免模型学习到偏见;翻译任务中覆盖不同句式与专业领域术语。
  • 控制数量与长度:示例数量以 3-5 个为宜,过多会导致上下文溢出,过少则无法传递完整规则;单示例长度需精简,优先保留与任务相关的核心信息。

影响示例质量的因素

为提示词选择示例是一项复杂的任务——示例的各种因素都会对性能造成影响,特别是在早期的一些大语言模型(LLM)的上下文窗口中,只能容纳有限的示例。下面介绍了六个不同的设计策略,都会影响到大模型的输出质量。具体参考论文 The Prompt Report: A Systematic Survey of Prompt Engineering Techniques

示例数量 增加提示词中的示例数量通常会提高模型性能,特别是在较大的模型中。然而,在某些情况下,当示例数量超过 20 个时,其收益可能会减弱。对于长上下文大型语言模型,额外的示例会持续提升性能,不过效率会因任务和模型而异。

示例排序 示例的顺序会影响模型行为。在某些任务中,示例顺序会导致准确率在 50%以下到 90%以上之间波动。

示例标签分布 与传统的监督机器学习一样,提示词中示例标签的分布会影响模型的行为。例如,如果包含来自一个类别的 10 个示例和另一个类别的 2 个示例,这可能会导致模型偏向于第一个类别。

示例标签质量 尽管多个示例具有普遍益处,但严格有效的示例的必要性尚不明确。一些研究表明,标签的准确性无关紧要——为模型提供带有错误标签的示例可能不会对性能产生负面影响。然而,在某些情况下,这对性能有显著影响。更大的模型通常更善于处理错误或不相关的标签。讨论这一因素很重要,因为如果你要从可能包含不准确信息的大型数据集中自动构建提示词,可能会有必要研究标签质量如何影响你的结果。

示例格式 示例的格式也会影响性能。最常见的格式之一是“Q: {输入},A: {标签}”,但最佳格式可能因任务而异;尝试多种格式以确定哪种效果最好可能是值得的。有一些证据表明,在训练数据中频繁出现的格式会带来更好的性能。

示例相似性 选择与测试样本相似的范例通常有利于提升性能。然而,在某些情况下,选择更多样化的范例能够改善性能。

总体看来,在设计示例时需要考虑多个因素,包括示例数量、排序、标签分布、标签质量、格式和相似性等因素,示例会直接影响模型的性能,在模型的选择和构造上要尽量减少偏见。

消除模型的偏见

在Calibrate Before Use: Improving Few-Shot Performance of Language Models这篇论文中提到,模型做任务时不 “客观”,会被三个 “偏见” 带偏:

  • 多数标签偏见:提示词里哪个答案出现次数多,模型就爱选哪个。比如提示词里有 3 个 “正面”、1 个 “负面”,哪怕测试内容是负面的,模型也可能猜正面;
  • 近期偏见:模型偏爱提示词里 “最后出现” 的答案。比如提示词最后一个例子是 “负面”,哪怕前面全是 “正面”,模型也更爱猜负面;
  • 常见词偏见:模型偏爱自己预训练时见过的 “高频词”。比如问 “某人生于哪里”,模型可能总猜 “美国”(因为预训练里见得多),哪怕正确答案是小众地名 “圣卢西亚”。

为此,文中提出了一个简单的解决方案,给模型 “校准” 一下: 第一步:测偏见。把提示词里的测试内容换成 “无意义内容”(比如 “N/A”“[MASK]”),看模型怎么猜。比如情感分析的提示词,换成 “输入:N/A。情感:__”,如果模型猜 “正面” 占 62%、“负面” 38%,就说明它天生偏爱 “正面”; 第二步:调参数。根据刚才测的偏见,调整模型的输出,让 “无意义内容” 的猜测变得 “均匀”(比如情感分析就调成 50% 正面、50% 负面)。这样一来,模型的偏见就被抵消了。

构造更多的示例

现在模型的 “上下文窗口” 变大了(比如 Gemini 1.5 Pro 能处理 100 万个 token),能塞进去成百上千个示例。下面这篇论文中Many-Shot In-Context Learning,对多示例的效果进行了验证:

多示例虽好,但也带来了问题,即如何构造更多的示例。上面的论文中也提出了两种新方法用来构造示例:

  • 强化型上下文学习(Reinforced ICL):不用人写解释,让模型自己生成解题步骤,再筛选出答案对的步骤当示例。比如解数学题,模型生成 10 种步骤,挑出那些算对的当示例,结果比用人写的示例效果还略好。
  • 无监督上下文学习(Unsupervised ICL):更简单,连答案都不用给,只给问题(比如只列一堆数学题,不附解法),再简单说下要输出什么格式。结果发现,只要模型本身懂这个领域(比如数学),光给问题也能学好,甚至比少示例 + 人工解释还强。

【声明】内容源于网络
0
0
枭龙云技术团队
枭龙云技术团队
内容 233
粉丝 0
枭龙云技术团队 枭龙云技术团队
总阅读90
粉丝0
内容233