提示工程指南(三):提示的基本结构与少量(few-shot)提示技巧

上一篇博客已经讲解了zero-shot和few-shot提示,在few-shot提示中,需要给模型一些与所问问题相关的示例,那么什么样的示例能够最大化的激发模型的能力呢?

few-shot提示技巧

当选择示例的时候,可以参考如下技巧:

  • Liu et al., 2021:在选择示例之前,可以将示例和测试实例在嵌入空间中进行K-NN聚类,然后选择处于同一类的示例。

  • Su et al. (2022):为了选择多样化且有代表性的示例集

    1. 首先,根据嵌入(例如通过SBERT或其他嵌入模型)的余弦相似度构建有向图 <math xmlns="http://www.w3.org/1998/Math/MathML"> G = ( V , E ) G=(V, E) </math>G=(V,E),其中每个节点指向其 <math xmlns="http://www.w3.org/1998/Math/MathML"> k k </math>k个最近邻居;
    2. 从一组选定的样本 <math xmlns="http://www.w3.org/1998/Math/MathML"> L = ∅ \mathcal{L}=\emptyset </math>L=∅和一组剩余样本 <math xmlns="http://www.w3.org/1998/Math/MathML"> U \mathcal{U} </math>U开始。每个样本 <math xmlns="http://www.w3.org/1998/Math/MathML"> u ∈ U u \in \mathcal{U} </math>u∈U通过以下公式评分:

    <math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> score ( u ) = ∑ v ∈ { v ∣ ( u , v ) ∈ E , v ∈ U } s ( v ) where s ( v ) = ρ − ∣ { ℓ ∈ L ∣ ( v , ℓ ) ∈ E } ∣ , ρ > 1 \text{score}(u) = \sum_{v \in \{v \mid (u, v) \in E, v\in \mathcal{U}\}} s(v)\quad\text{where }s(v)=\rho^{- \vert \{\ell \in \mathcal{L} \vert (v, \ell)\in E \}\vert},\quad\rho > 1 </math>score(u)=v∈{v∣(u,v)∈E,v∈U}∑s(v)where s(v)=ρ−∣{ℓ∈L∣(v,ℓ)∈E}∣,ρ>1

    这样的评分机制鼓励选择多样化的样本,如果 <math xmlns="http://www.w3.org/1998/Math/MathML"> v v </math>v的许多邻居被选中,则 <math xmlns="http://www.w3.org/1998/Math/MathML"> s ( v ) s(v) </math>s(v)较低。

  • Rubin et al. (2022):提出通过对比学习选择训练嵌入。给定每对训练样本 <math xmlns="http://www.w3.org/1998/Math/MathML"> ( x , y ) (x, y) </math>(x,y),一个示例 <math xmlns="http://www.w3.org/1998/Math/MathML"> e i e_i </math>ei(格式化的输入-输出对)的质量可以通过语言模型分配的条件概率来衡量: <math xmlns="http://www.w3.org/1998/Math/MathML"> score ( e i ) = P LM ( y ∣ e i , x ) \text{score}(e_i) = P_\text{LM}(y \mid e_i, x) </math>score(ei)=PLM(y∣ei,x)。我们可以识别其他示例的top- <math xmlns="http://www.w3.org/1998/Math/MathML"> k k </math>k和bottom- <math xmlns="http://www.w3.org/1998/Math/MathML"> k k </math>k分数作为每对训练样本的正选和负选候选集,并使用这些进行对比学习。

  • Diao et al. (2023):建议找到在多次采样试验中具有高分歧或熵的示例。然后为这些示例打标签,并用于少次提示。

  • 选择示例时应采用多样化的示例选择方案,尽可能使用测试样本的相关信息,并将示例随机排序,以避免多数标签偏见和最近性偏见。

  • Lu et al. 2022:增加模型大小或包含更多的训练示例并不能减少不同排列的上下文示例所导致的模型输出差异。相同的顺序可能对一个模型效果很好,但对另一个模型效果很差。

提示词的结构

事实上,所有的提示词可以总览为固定的结构,每一个提示词都可涵盖为以下元素:

  • 指令 - 你希望模型执行的特定任务或指令
  • 上下文 - 可以引导模型给出更好响应的外部信息或额外上下文
  • 输入数据 - 我们希望找到回应的输入或问题
  • 输出指示 - 输出的类型或格式。

以上一篇中的prompt为例:

markdown 复制代码
任务:情感分析
示例1:这段文字真是太棒了,我非常喜欢! - 积极
示例2:我不太喜欢这个,感觉很一般。 - 消极
示例3:这本书的内容很客观,提供了很多事实信息。 - 中性

现在,请对以下文本进行情感分析,模型需要对每个输入文本给出一个情感标签,即判断文本是积极的、消极的还是中性的:
1. 我真的对这个产品感到失望,它没有达到我的期望。
2. 这是我看过的最好的电影之一,强烈推荐给大家!
3. 报告详细介绍了市场的现状,很中立。
  1. 指令(Instruction):

    • 任务:情感分析 这个指令明确告诉模型需要执行的任务是情感分析,即识别文本中的情感倾向。
  2. 上下文(Context):

    示例1:这段文字真是太棒了,我非常喜欢! - 积极
    示例2:我不太喜欢这个,感觉很一般。 - 消极
    示例3:这本书的内容很客观,提供了很多事实信息。 - 中性

这些示例提供了情感分析的上下文,展示了不同类型的文本和它们对应的情感标签。这些上下文信息帮助模型理解如何根据文本内容判断情感倾向。

  1. 输入数据(Input Data):

    我真的对这个产品感到失望,它没有达到我的期望。
    这是我看过的最好的电影之一,强烈推荐给大家!
    报告详细介绍了市场的现状,很中立。

这些是模型需要分析的具体文本输入。模型需要根据之前的指令和上下文来对这些输入数据进行分类。

  1. 输出指示(Output Indication):

    模型需要对每个输入文本给出一个情感标签,即判断文本是积极的、消极的还是中性的。

这个输出指示告诉模型我们期望的输出类型是分类标签。

相关推荐
余弦的倒数几秒前
知识蒸馏和迁移学习的区别
人工智能·机器学习·迁移学习
Allen Bright1 分钟前
【机器学习-线性回归-2】理解线性回归中的连续值与离散值
人工智能·机器学习·线性回归
青松@FasterAI42 分钟前
【程序员 NLP 入门】词嵌入 - 上下文中的窗口大小是什么意思? (★小白必会版★)
人工智能·自然语言处理
AIGC大时代1 小时前
高效使用DeepSeek对“情境+ 对象 +问题“型课题进行开题!
数据库·人工智能·算法·aigc·智能写作·deepseek
硅谷秋水1 小时前
GAIA-2:用于自动驾驶的可控多视图生成世界模型
人工智能·机器学习·自动驾驶
偶尔微微一笑1 小时前
AI网络渗透kali应用(gptshell)
linux·人工智能·python·自然语言处理·编辑器
深度之眼1 小时前
2025时间序列都有哪些创新点可做——总结篇
人工智能·深度学习·机器学习·时间序列
晓数2 小时前
【硬核干货】JetBrains AI Assistant 干货笔记
人工智能·笔记·jetbrains·ai assistant
jndingxin2 小时前
OpenCV 图形API(60)颜色空间转换-----将图像从 YUV 色彩空间转换为 RGB 色彩空间函数YUV2RGB()
人工智能·opencv·计算机视觉
Sherlock Ma2 小时前
PDFMathTranslate:基于LLM的PDF文档翻译及双语对照的工具【使用教程】
人工智能·pytorch·语言模型·pdf·大模型·机器翻译·deepseek