-推荐关注-
目录:
1. 什么是少样本提示(Few-Shot Prompting) 2. 少样本提示是怎么生成一个合理答案的? 2.1 情景学习 2.2 少样本提示的设计策略 3 少样本提示的应用场景 4 少样本提示的局限性
在探讨如何提高 ChatGPT 等大型语言模型的回应效果时,我们经常谈到的一个方法就是在 prompt 指令中提供样本范例。
如ChatGPT官网提到的六大获得更好结果策略之一:提供样例(Provide examples)
https://platform.openai.com/docs/guides/prompt-engineering/strategy-test-changes-systematically#six-strategies-for-getting-better-results
因为虽然大型语言模型展示了惊人的零样本能力,但在使用零样本提示时,它们在更复杂的任务上仍然表现不佳。
1. 什么是少样本提示(Few-Shot Prompting)
少样本提示就像在尝试新事物之前先得到一个小课程。
想象一下,你以前从未做过某种特定的菜,比如说鱼香肉丝。但并不是毫无参考地直接尝试,而是先给你一些示例或食谱来参考。
这些少量示例创建上下文学习。它帮助您理解您需要做的基本内容,例如哪些原料是必需的,以及最终摆盘应该是什么样子。
现在,将这个想法应用于人工智能。
在少样本提示中,一个已经在广泛信息上训练过的 AI 模型被给出少量与它之前未见过的任务相关的特定示例。
这些具体例子就像那些食谱,帮助指导 AI 如何处理这项特定任务。仅凭这些用户输入的少量提示,AI 就能根据从例子中学到的知识调整其方法,比没有任何指导时执行新任务更有效。
所以,简单来说,少样本提示就像获得一个迷你速成课程(示例)
通过这些示例能够显著提升模型对使用者需求和上下文的理解,使其能够产出更加精准、更符合期望的回答或解决方案。
例:
将以下陈述分类为正面或负面。
示例 1:“我喜欢这个产品!它工作得非常完美。” → 正面
示例 2:“这太糟糕了。我想退款。” → 负面
示例 3:“服务快捷,员工友好。” → 正面
“产品使用一次就坏了。浪费钱。”
结果:
负面
这种方法与零样本提示(Zero-Shot Prompting)形成对比,零样本提示不接收任何示例
2. 少样本提示是怎么生成一个合理答案的?
2.1 情景学习
提供样本示例是一种有效的沟通方式,当面对这些示例时,语言模型会进行一种常被称为“情境学习”或“通过示例学习”的过程:
模式识别:
模型分析提供的示例,识别输入与输出之间的转化模式。
任务推断:
模型通过这些规律推断出所需完成任务的性质。
泛化:
模型尝试将从给定示例中学到的规律应用于新的、未见过的输入。
应用:
最后,模型将学到的规律应用于提示中最后提供的新输入。
2.2 少样本提示的设计策略
选择准确的示例
确保示例与您希望模型执行的任务直接相关。不相关的示例可能会使模型困惑并导致性能不佳。 使用涵盖任务不同方面的多样化示例。这有助于模型更好地泛化到新的输入。 示例应该清晰明了。避免复杂或曲折的示例,以免混淆模型。
设计有效的提示词
为所有示例保持一致的格式。这有助于模型识别它需要遵循的模式。 在提示词中提供足够的上下文信息,以确保任务清晰明了。有时,一段清晰的指令或描述可以为示例奠定基础。 保持提示词尽可能简单,同时提供必要信息。过于复杂的提示词可能会导致混淆。
避免过拟合
少样本提示的一个风险是模型可能会过拟合提供的例子,从而导致输出过于类似于这些例子,或者无法很好地泛化到新的输入。为了避免这种情况:
使用多样化的示例,涵盖不同场景和特殊情况。这可以帮助模型实现泛化能力,而不是单纯模仿示例内容。 避免使用过多的例子,因为这可能导致过拟合。几个精心挑选的例子通常比大量相似的例子更有效。 在一系列新的输入上测试模型的性能,以确保其具有良好的泛化能力。根据这些测试结果,调整示例和提示词内容。
3 少样本提示的应用场景
希望大模型(LLM)生成具有特定语气和格式的描述
通过示例,模型更有可能生成与办公椅相关且风格恰当的描述
提示词:
生成产品描述:
产品:无线耳塞 描述:让自己沉浸在水晶般清晰的音频与我们圆滑的无线耳塞。具有降噪技术和舒适的配合,这些耳塞是完美的音乐爱好者在旅途中。
产品名称:智能手表
描述:保持联系,跟踪您的健康与我们先进的智能手表。配有心率监测、GPS和充满活力的触摸屏,它是你积极生活方式的完美伴侣。
产品:人体工学办公椅
描述:
结果:
产品名称:人体工学办公椅
描述:体验极致舒适与支持,选择我们的人体工学办公椅。专为长时间坐姿设计,提供最佳背部支撑,缓解压力,促进健康坐姿。不论是办公还是家庭使用,这款椅子都能让你保持高效、舒适一整天。
提高大模型(LLMs)处理特定领域任务的逻辑推理能力
这个提示引导模型不仅提供医学诊断,还解释其背后的推理,展示复杂的医学推理。
提示词:
提供一个可能的诊断并解释你的理由:
症状:发烧、咳嗽、疲劳
诊断:普通感冒
解释:发烧、咳嗽和疲劳是普通感冒的典型症状。没有出现严重症状,可能是轻微的病毒感染。
症状:胸痛、气短、头晕
诊断:可能是心脏病发作
解释:胸痛、呼吸短促和头晕是可能的心脏病发作的警告信号。需要立即就医。
症状:头痛,对光敏感,恶心
诊断:
解释:
结果:
诊断:偏头痛(Migraine)
解释: 头痛、对光敏感(畏光)和恶心是偏头痛的典型症状。偏头痛通常表现为中度到重度的头痛,可能伴有其他症状,例如对声响敏感、视力模糊,甚至在某些情况下出现先兆(如视力出现闪光或盲点)。这些症状与普通的紧张型头痛或严重疾病(如脑膜炎)的表现有所不同。如果头痛异常严重或伴随其他神经系统症状,应进一步检查以排除其他潜在病因。
帮助大模型(LLMs)生成符合特定约定、满足特定要求的代码方面非常有用,示例可以提示特定编程语言的正确语法和结构
提示:
def calculate_area(length: float, width: float) -> float:
""" 计算一个矩形的面积。
Args:
length (float): 矩形的长度.
width (float): 矩形的宽度.
Returns:
float: 矩形的面积.
"""
return length * width
def celsius_to_fahrenheit(celsius: float) -> float:
""" 把温度从摄氏转换成华氏
Args:
celsius (float): 温度单位是摄氏度。
Returns:
float: 温度单位是华氏度。
"""
return (celsius * 9/5) + 32
def calculate_bmi(weight: float, height: float) -> float:
"""[给函数生成docstring]
"""
# [生成函数体]结果:
def calculate_bmi(weight: float, height: float) -> float:
"""
计算身体质量指数(BMI)。
BMI 是一个通过体重和身高评估身体健康状态的指标。
Args:
weight (float): 体重,以千克为单位。
height (float): 身高,以米为单位。
Returns:
float: BMI 值,单位为 kg/m²。
"""
return weight / (height ** 2)
4 少样本提示的局限性
能力有限 :尽管少样本方法在处理简单任务时表现出色,但它在需要更大规模和更丰富训练数据的复杂任务中可能难以胜任。
对示例的敏感性 :模型的性能会因提供的示例质量而显著变化。选择的示例不当可能导致结果不准确。高质量的示例可以显著提高模型的总体性能。
过拟合 :当模型过于紧密地基于一小部分示例进行预测时,可能会出现过拟合,这可能导致无法准确代表任务
无法胜任突发或未知任务 :少样本提示技术可能难以应对全新或未知任务,因为它高度依赖所提供示例进行指导
零样本提示(Zero-Shot)“不需要提供任何示例,仅依赖模型本身预训练的知识来理解和回答问题”的优点在于能够快速用于各种普遍性问题,尤其是当我们无法提供具体范例或者对模型的能力有足够信心的时后。然而,由于缺乏具体范例的引导,零样本提示有可能在某些复杂或特定范畴的任务中无法达到最好的品质。
少量样本提示(Few-Shot)由于通过提供多个示例让模型有足够的信息和上下文去理解并完成特定任务,在大多数情况下能提供最高品质的结果。
零样本提示(Zero-Shot)和少量样本提示(Few-Shot)各有各的独特优势和应用情境。因此,应该采用何种方式产生的结果质量更好,取决于实际上具体的目标和任务。
怎么说大模型才会听 :零样本提示(Zero-Shot Prompting) 从0到1开发AI Agent(智能体)(六)| 智能体1 :通过LangChain中的ReAct框架实现自动定价 LangChain实战 | Tool Calling :让AI真正动起来的关键技术 一文说清楚什么是多模态大模型,与大模型有什么区别
--END--
点亮“赞”和“在看”,“分享”好友一起看