AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


谷歌最新 | Prompt的Few-shot究竟写几个例子,输出效果最好?全网最全
发布日期:2024-05-12 22:12:09 浏览次数: 4125 来源:AI修猫Prompt



本文:4500字阅读12分钟 

大家很熟悉:从大语言模型获得更好输出的最佳方法之一是在提示中包含示例。这种方法称为 shot prompting。通过在提示中提供示例,您可以准确地向模型展示您在输出结构、语气和风格方面所希望的内容。Shot这个词很多翻译软件翻译成为射击、镜头,其实它还有概率、可能性的意思,在LLM语境下理解成为示例、样本是恰当的。

结合谷歌最新的(4月17日)这篇文章《Many-Shot In-Context Learning 》(2404.11018)以及另外三篇相关论文,我将为大家介绍shot的不同使用方法、何时使用它、以及一些使用时的细节、和偏差。

图片来自DALL.E

三种Shot prompting方式

这种prompting方式主要有三种Zero-shot、Few-shot、Many-shot,这三种方式中的每一种都有多篇顶级论文作为学术支撑,尤其是上一篇文章中告别手写Prompt怕DSPy学不会?10行代码捏一个Agent,用DSPy Optimizers帮你优化PromptDSPy也用到了BootstrapFewShot作为一种优化方法,所以了解一下Shot很重要。

简单来说,Zero-shot大家都在用,比如Step by step,Take a deep breath之类,这其中又细分为很多类别,什么CoT核心、情感刺激、贿赂小费之类,每一种模型的敏感度也都不一样,但总体的共同点都是不需要具体的示例也能够提升模型的输出性能。

大家有兴趣可以扒一下Zero-shot的这些论文,有具体的数据支撑和论证实验,能发出来毕竟也要受到一些严格审查。告诉你一个技巧,你从ArXiv上找一篇本主题的最新论文(当然ICLR上发过的更有营养价值),找个时间,来一杯咖啡,从这篇论文的Reference上仔细研究,你就可以串起来很多本主题的相关研究(作者总要引述别人已经发表的观点来佐证自己每个字的出处,大致是这个意思),得到一些个究竟的知识。这些知识,比你从公众号等自媒体上来得要更节省时间和精力,当然也包括我的公众号和我的赞赏群。

Many-shot是一个主要用于提高模型性能的一个方式,和我们普通人写Prompt用于网页和大语言模型交互关系不大,论文里的多样本In-Context学习(Many-Shot In-Context Learning)主要是一种提升大型语言模型性能的技术手段,而不是普通用户与网页或对话式AI系统交互时使用的Prompt技术。

多样本In-Context学习是一种面向研究人员和开发人员的技术,它的核心思想是在推理阶段向语言模型提供大量相关的示例数据,使其能够更好地理解和学习所需完成的任务。这一技术主要应用于复杂的特定任务领域,如机器翻译、文本摘要、数学推理、规划等,旨在充分发挥大型语言模型的泛化能力。

与之相比,普通用户在与网页或对话式AI系统交互时,更多地使用少样本(Few-Shot)或零样本(Zero-Shot)Prompt。这些Prompt往往更加简洁、直接,目的是指导AI系统产生恰当的回应。用户无需提供大量示例,而是依赖AI系统在训练过程中已经学习到的知识。

无法破除的逆转诅咒

在介绍Few-shot之前,有一些概念我需要对我的公众号(AI修猫Prompt)读者厘清。那就是,你需要理解,我们现阶段的大语言模型语境下提到的learning和我们人类的learning是不一样的,或者说大语言模型目前很难突破逆转诅咒,情境学习根本不是学习。还是你熟悉的ICLR024重磅 | 逆转诅咒,LLMs接受"A是B"的训练却无法学习"B是A"(The Reversal Curse: LLMs trained on "A is B" fail to learn "B is A"(2309.12288),用这篇文章中的例子Few-shot一下,关于现实世界名人的问题,例如“谁是汤姆克鲁斯的母亲?”[答:玛丽李菲佛]”和反向“谁是玛丽李菲佛的儿子?“. GPT-4在79%的时间内正确回答了前一个问题,而后者只有33%。

这种泛化失败揭示了自回归LLMs的学习能力的显著局限性。尽管模型可以处理“A是B”的场景,但在没有对这种模式进行明确训练的情况下,它很难推断出相反的关系。人类可以利用创造力和推理来处理新的情况,但当面对与训练数据严重偏离的场景或问题时,LLMs可能会动摇。他们的反应受到他们所受训练的程度和多样性的限制,他们无法超越它。而人类反思自己的错误并从中学习,和LLM的学习不是一个意思。

究竟什么是Few-shot,这种方法建立在 LLM 从少量示例中学习和概括信息的能力之上。当您没有足够的数据来微调模型时,这使得它特别有用。

以下是一个可用于coze、质谱、Dify上的Few-shot示例,可以用于workflow,假如

你的工作是为用户{{user_name}}创建内容。以下是我们过去根据简要介绍创建的一些内容示例:

"""

示例 1:

简介:{{introduce_1}}

内容:{{content_1}}

示例 2:

简介:{{introduce_2}}

内容:{{content_2}}

"""


以下是创建的最新内容输出:

"""

简介:{{introduce}}

内容:{{content}}


通过以前简要介绍和根据此介绍生成的内容,模型将了解特定客户的语气和风格。我将示例封装在分隔符(三个引号)中,以设置提示的格式,并帮助模型更好地理解提示的哪一部分是示例与指令。这个提示虽然很简单,但适用于任何智能体,你需要做的就是拷走更新和设置变量。

为什么要用Few-shot Prompting

  1. 资源效率:Few-shot提示只需要几个示例数据

  2. 节省时间:它加快了模型适应新任务的能力,这意味着 AI 驱动的功能和产品的部署时间更快,上市时间更快。

  3. 降低成本:与收集和标记数据以微调模型所花费的时间相比,小样本提示要便宜得多,尤其是对于较小的团队而言。

  4. 小改变大收获:设置和测试少量样本提示相对容易,可以帮助您获得更好的输出。

你应该掌握的Few-shot细节:

1、我的prompt应该包括多少个示例?

添加更多示例并不一定能提高准确性;在某些情况下,添加更多示例实际上会降低准确性。多篇研究论文指出,在两个例子之后,先是大获全胜,然后是停滞不前。在 2 个示例之后,你只是在燃烧Token而已。

来源:语言模型是少数学习者《Language Models are Few-Shot Learners 》

2、示例的顺序重要吗?

是的,示例的顺序很重要。它对输出质量的影响程度取决于您使用的模型。这篇名为Calibrate Before Use:Improving Few-Shot Performance of Language Models的论文通过改变GPT-3提示中相同示例的顺序来证明这一点。我认为可以肯定的是,“更智能”的模型应该受到顺序的影响较小。不仅如此,小的改动对模型输出的改变都是巨大的应该自动生成 Prompt 还是手写?提示措辞中微不足道的变化对生成内容有重大影响

研究人员发现,该模型的预测根据示例顺序而有很大差异。在某些情况下,正确的示例排列导致了近乎最先进的性能,而另一些则下降到几乎是偶然的水平。下图显示了更多详细信息。

‍来源:《用途:用少样本提高语言模型性能》(Calibrate Before Use:Improving Few-Shot Performance of Language Models)

告诉你一个只有在我的公众号(AI修猫Prompt)你才能看到的策略:将最关键的例子放在顺序的最后。众所周知,LLM 非常重视他们处理的最后一条信息。

3、Few-shot中哪种示例方法更好?

这要视情况而定,但这里有几件事需要记住。

3.1 在以下情况下,多条示例可能会更好:

  • 模拟交互:现实世界的应用程序涉及来回交互,例如在客户服务聊天机器人中,模型需要在对话流中理解和响应。

  • 上下文连续性:您的目标是在多个交互中保持叙述或上下文连续性,并且模型需要生成在正在进行的序列中连贯的响应。

  • 增量复杂性:该任务受益于上下文的逐步构建,其中每条消息都可能为对话增加一层复杂性或细微差别,而单个提示可能无法封装。

3.2 在以下情况下,单个示例的提示可能更好:

  • 简化处理:效率是重中之重,您希望模型一次性处理示例并生成响应

  • 输出的统一性:您正在寻求输出中一致的样式或格式,如果所有示例都在单个提示中提供,则可能会更可靠地生成。

我建议你需要反复测试,看看它们的表现如何。

4、何时使用Few-shot prompting

什么时候应该使用少样本提示?以下是一些用例,我的实践经验是:在这些用例中,Few-shot可能特别有用。

  • 专业领域:在法律、医学或技术领域等专业领域工作时,收集大量数据可能很困难,只需少量提示即可获得高质量的特定领域输出,而无需大量数据集。

  • 动态内容创建:非常适合内容生成等任务,在这些任务中,一致的风格和语气至关重要。

  • 严格的输出结构要求:很少有镜头提示在向模型展示您希望输出的结构方面特别有用。

  • 定制用户体验:在个性化应用程序中,例如聊天机器人或推荐系统,人工智能需要根据个人用户的偏好和输入快速调整。

Few-shot prompting的偏差

尽管Few-shot prompting很棒,但它并不完美。最大的限制是它依赖于所提供示例的质量和多样性。正如,垃圾进,垃圾出。

有时,这些示例甚至会降低性能,或将模型引导到错误的方向。

此外,还存在模型过度拟合的风险,即模型无法概括示例,并创建过于接近示例的输出。这也是我上一篇文章开头给你的那些我尝试过的苦涩教训之一,找开源模型还是要用大厂的,读到这里,你能理解了吗?此外,还有一些偏见需要注意:

  • 多数标签偏差(Majority Label Bias):该模型倾向于支持提示中更频繁的答案。这种偏差的大小因模型而异。

  • 新近偏差(Recency Bias):众所周知,LLM 偏爱他们收到的最后一块信息。上面提到的。

我在群里为你准备了不少Prompt的示例,关于DSPy的问题SEMMO的问题你都可以来群里问我。另外,群里为你准备了开群以来大量的Prompt模板、模块和一些代码文件完整示例,等你来一起讨论!另外,如果你有更多关于论文里Prompt的问题也可以到群里来,我会耐心解答你的问题。

<本文完结>

转载请与本喵联系,私自抓取转载将被起诉
AI已成为我洞察世界并输出想法的工具

本地部署LLM成为你自己AI资源的掌控者

本地离线生成式AI文生文全要素提效指南,更安全更经济更高效


这份指南还包含8500条复杂Prompt,以及管理工具和方法(包含system提示词)

想把方法论转化为复杂提示词?Prompt心法与算法高级指南,帮你从知到行升维实践


关于Prompt,这本手册,是你和我沟通的桥梁

第一性原理下的Prompt,助你跃升为大师的指导手册


53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询