欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > 【大模型应用开发极简入门】提示工程二:零样本学习、少样本学习与改善提示效果

【大模型应用开发极简入门】提示工程二:零样本学习、少样本学习与改善提示效果

2025/2/27 12:43:10 来源:https://blog.csdn.net/hiliang521/article/details/139625914  浏览:    关键词:【大模型应用开发极简入门】提示工程二:零样本学习、少样本学习与改善提示效果

文章目录

  • 一. 逐步思考:零样本思维链
    • 1. 数学计算推理
    • 2. 注意有效的方面
  • 二. 少样本学习
    • 1. 基于提示词示例的学习
    • 2. 单样本学习
  • 三. 改善提示效果
    • 1.指示模型提出更多问题
    • 2.格式化输出
    • 3.重复指示
    • 4.使用负面提示
    • 5. 添加长度限制

一. 逐步思考:零样本思维链

1. 数学计算推理

我们知道,GPT-4不擅长计算。比如,它无法计算369 × 1235:

prompt = "How much is 369 * 1235?"
chat_completion(prompt)

模型给出的答案是454965,但正确答案是455715。

GPT-4不能解决复杂的数学问题吗?

  • 该模型从左侧开始,通过依次预测答案中的每个标记来给出完整的答案。这意味着GPT-4首先生成最左侧的数字,然后将其作为上下文的一部分生成下一个数字,以此类推,直到形成完整的答案。挑战在于,每个数字都是独立预测的,与最终的正确值无关。
  • GPT-4将数字视为标记,它没有数学逻辑。

后面的文章将探讨OpenAI如何通过插件来增强GPT-4。一个例子是计算器插件(agent),它可用于进行准确的数学运算。

 

提高语言模型的推理能力有一个诀窍。
比如,当要求模型计算369 × 1235时,我们可以看到模型试图一次性直接回答。

  • 考虑到即使是我们自己,也很难在没有纸和笔的情况下计算这个乘法算式,因此我们可以通过提示词鼓励模型进行中间推理。 就像我们使用纸和笔计算一样,如果给模型足够的时间进行推理,它也可以解决复杂的问题。
  • 在提示词的末尾添加“让我们逐步思考”这样的话,已被证明可以使模型解决更复杂的推理问题。

 
这种技术称为零样本思维链策略(zero-shot-CoT strategy),由Takeshi Kojima等人在2022年发表的论文“Large Language Models are Zero-Shot Reasoners”中提出。

 

思维链是指使用提示词鼓励模型逐步模仿推理的技术。

零样本这个术语意味着模型不依赖于特定任务的示例来执行这种推理,它已经准备好根据其一般的训练结果来处理新任务。与我们稍后就会讨论的少样本学习等技术不同,零样本学习试图在不需要特定任务示例的情况下进行泛化。

prompt = "How much is 369 * 1235? Let's think step by step."
chat_completion(prompt)

模型的输出如下所示:

Step 1: Multiply 369 by 5 (the last digit of 1235).
369 * 5 = 1845
Step 2: Multiply 369 by 30 (the second last digit of 1235 is 3,so multiply by 3 and add a 0 at the end).
369 * 30 = 11070
Step 3: Multiply 369 by 200 (the third digit of 1235 is 2,so multiply by 2 and add two 0s at the end).
369 * 200 = 73800
Step 4: Multiply 369 by 1000 (the first digit of 1235 is 1,so multiply by 1 and add three 0s at the end).
369 * 1000 = 369000
Step 5: Add the results from steps 1 to 4.
1845 + 11070 + 73800 + 369000 = 455715
So, 369 * 1235 = 455,715.

模型所用的方法发生了显著的改变。现在它将主要问题分解为更小、更容易管理的步骤,而不是试图直接解决问题。

 

2. 注意有效的方面

尽管提示模型逐步思考,但仍需注意,要仔细评估其回答,因为GPT-4并非绝对可靠。
对于更复杂的算式,比如3695 × 123548,即使使用这个技巧,GPT-4也可能无法算出正确答案。

尽管这个技巧对大多数数学问题有效,但并不适用于所有情况。论文“Large Language Models are Zero-Shot Reasoners”的作者发现,

  • 它对于多步算术问题、涉及符号推理的问题、涉及策略的问题和其他涉及推理的问题非常有效。
  • 然而,它对于模型回答常识性问题没有显著效果。

 

二. 少样本学习

1. 基于提示词示例的学习

少样本学习(few-shot learning)是由Tom B. Brown等人在论文“Language Models Are Few-Shot Learners”中提出的,它指的是LLM仅通过提示词中的几个示例就能进行概括并给出有价值的结果。在使用少样本学习技巧时,你可以给模型提供几个示例,如图所示。这些示例指导模型输出所需的格式。

在这里插入图片描述

在本例中,我们要求LLM将特定的单词转换成表情符号。很难想象如何通过提示词给模型下达这种“指令”。但是通过少样本学习,这变得很容易。给模型一些例子,它将自动尝试复制它们的模式:

在这里插入图片描述

我们得到以下输出消息:

在这里插入图片描述

少样本学习技巧提供了具有目标输出的输入示例。然后,在最后一行,我们提供了想让模型完成的提示词。这个提示词与之前的示例具有相同的形式。模型将根据给定示例的模式执行操作。

我们可以看到,仅凭几个示例,模型就能够复现模式
 

注意:

在提示词中提供示例时,务必确保上下文清晰且相关。清晰的示例有助于模型匹配所需输出格式并解决问题。相反,信息不充分或模棱两可的示例可能导致意外或错误的结果。

 

2. 单样本学习

指导LLM的另一种方法是单样本学习(one-shot learning)。

顾名思义,在单样本学习中,我们只提供一个示例来帮助模型执行任务。尽管这种方法提供的指导比少样本学习要少,但对于简单的任务或LLM已经具备丰富背景知识的主题,它可能很有效。

单样本学习的优点是更简单、生成速度更快、计算成本更低(因而API使用成本更低)。然而,对于复杂的任务或需要更深入理解所需结果的情况,少样本学习的效果可能更好。

请注意,你可以将这些技巧(提示词、零样本、少样本)结合起来使用,以获得更好的效果。开发人员的工作是找到最有效的提示词来解决特定的问题。请记住,提示工程是一个反复试错的迭代过程。

 

三. 改善提示效果

我们已经了解了几种提示工程技巧。采用这些技巧,我们可以引导GPT模型的行为,以使模型给出的结果更好地满足我们的需求。接下来将介绍更多技巧,可以在GPT模型编写提示词时酌情使用。

1.指示模型提出更多问题

在提示词的末尾,询问模型是否理解问题并指示模型提出更多问题。如果你正在构建基于聊天机器人的解决方案,那么这样做非常有效。

举例来说,你可以在提示词的末尾添加如下文本:你清楚地理解我的请求了吗?如果没有,请问我关于上下文的问题。这样一来,当我回答时,你就能够更高效地执行我所请求的任务。

 

2.格式化输出

如果你想要一个JSON输出,那么模型往往会在JSON代码块之前和之后写入输出。如果你在提示词中说输出必须被json.loads接受,那么模型给出的结果可能更好。这种技巧适用于许多场景。

比如,使用此脚本:

prompt = """
Give a JSON output with 5 names of animals. The output must be
accepted by json.loads.
"""
chat_completion(prompt, model='gpt-4')

我们得到以下JSON代码块。

{"animals": ["lion","tiger","elephant","giraffe","zebra"]
}

 

3.重复指示

经验表明,重复指示会取得良好的效果,尤其是当提示词很长时。基本思路是,在提示词中多次添加相同的指令,但每次采用不同的表述方式。这也可以通过负面提示来实现。

 

4.使用负面提示

在文本生成场景中,负面提示是指通过指定不希望在输出中看到的内容来引导模型。负面提示作为约束或指南,用于滤除某些类型的回答。

对于复杂任务,这种技巧特别有用:当以不同的表述方式多次重复指令时,模型往往能够更准确地遵循指令。

Extract the keywords from the following question: {user_question}.
Do not answer anything else, only the keywords.

没有这个提示词的话,模型往往不会遵循指示。

 

5. 添加长度限制

限制长度通常是不错的做法。如果你只希望模型回答1个词或者10个句子,那么不妨将要求添加到提示词中。
如下例子

  • 指示模型用100个单词生成一篇内容翔实的新闻稿。
  • 利用提示词:“如果你能回答问题,回答ANSWER;如果你需要更多信息,回答MORE;如果你无法回答,回答OTHER。只回答一个词。”

如果没有最后一句话,模型往往会生成句子,而不会遵循指示。

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词