Netflix 机器学习科学家的提示词优化经验分享

编者按: 如何充分发挥大模型的潜能,用好大模型,关键在于如何优化向它们发送的提示词(prompt),是为提示词工程(prompt engineering)。

本文Netflix 机器学习科学家Cameron R. Wolfe的提示词优化经验分享,阐述了目前提示词的主要构成要素,介绍了与提示词相关的上下文窗口相关信息,并总结了一些行之有效的优化策略,如实事求是,实证为本、先从简单着手、若无必要,尽量简单明了、使用示例等,这些策略应能为在实践中优化提示词提供参考思路。

作者 | Cameron R. Wolfe, Ph.D.

编译 | 岳扬

本文将介绍一些提示词工程(prompt engineering)的基本概念,以及如何应用这些概念来提升大语言模型(LLM)的性能。

1. LLM 的界面极其简便易用

LLMs 如此受欢迎的主要原因之一是它们采用了 text-to-text 的输入输出界面(译者注:用户只需要在Web或客户端界面上输入文本提示词,模型就能根据输入的文本生成相应的文本输出。),使得使用起来非常简单直观。在之前,使用深度学习解决一项任务至少需要我们通过一些数据对模型进行微调,以教会模型如何解决这项任务。此外,大多数此类模型都是专门解决单一任务的专家模型。由于 LLMs 具有一种新出现的上下文学习(in-context learning)能力,我们可以通过文本提示词解决各种问题。以往复杂的问题解决过程现在已经被简化为通过自然语言描述解决问题!

“prompt工程作为一个相对新兴的学科领域,其目标是开发和改进优化提示词(prompt),使大模型(LMs)能基于这些提示词充分发挥潜力,高效地被用于各项应用方向和研究领域。” ------ 摘自文献 [1]

2. 什么是提示词工程?

得益于大语言模型基于文本对话的简单交互界面,使用它们已不再是专业人士(数据科学家或机器学习工程师(MLE))的"私房菜"。普通大众只要掌握一定的语言能力,就可以直接与这些模型对话交互,借助它们的能力解决较为复杂的问题。不过,在使用 LLM 解决问题时,我们得到的结果很大程度上取决于提供给模型的文本提示词。由于这个原因,提示词工程(通过大量的实证试验和反复优化,指导如何为特定任务设计高质量的prompt)变得极其受欢迎和具有影响力,行业目前已经积累了诸多有效的技术手段和优秀的实践方法。

3. 提示词的主要构成要素

为大语言模型设计 prompt,有多种不同的方法。但是,大多数 prompt 设计策略通常会包含以下几个共同的组成要素:

  • 要处理的输入数据(Input Data): 大模型需要处理的输入数据,比如待翻译或分类的句子、待总结的文档等。
  • 具体的示例(Exemplars):在 prompt 中介绍输入数据和期望输出之间的对应关系,明确地指导模型产生所需的输出形式,提高任务完成的准确性,使得大模型完成预期的文本输入到模型输出的映射转换。
  • 指令型文本(Instruction):使用自然语言文字对期望的模型输出的性质、格式等进行描述和指导。
  • 结构化和格式化的元素或标签(Indicators):通过标签、格式化元素( tags、formatting elements)等方式在 prompt 中引入一些人工结构,使其不只是简单的自然语言文本,而是带有一些额外的语义信息和视觉提示,从而指导模型的输出更契合要求。
  • 上下文(Context):prompt 中提供给大模型的一些背景信息、情况说明、限制条件等内容,有助于模型更好地把握语境,理解 prompt 的全部含义,从而生成更准确、更符合预期的输出结果。

在下图中展示了一个真实的 prompt 实例,它将上述所有提示词的主要构成要素都整合到了一个句子分类任务的提示词中。

4. 上下文窗口(The context window)

在预训练阶段,模型有一个固定的最大输入长度,如果输入的内容超过这个长度,模型的输出就可能失常。这个预训练时设定的序列长度限制,就决定了模型实际运行时能够一次性处理的最大文本长度,被称为上下文窗口(The context window)。如果文本序列的长度大大超过了这一预设的上下文长度,那么模型的行为就可能无法预测,并产生错误的输出。不过,有一些方法可以用来扩展模型的上下文窗口,例如 Self-Extend [2] 或位置插值法(positional interpolation)[3]。

近期关于 LLMs 的最新研究强调了创建长上下文窗口(long context windows)的重要性,从而使得模型能够在每个提示词(prompt)中处理更多的信息(例如,更多的示例对(Exemplars)或更多的上下文内容)。然而,并非所有的 LLM 都能完美地利用上下文 !通常通过 “大海捞针测试”(needle in the haystack test) [4] 来评估 LLM 利用长上下文窗口信息的能力,这项测试具体包括:

  1. 在上下文中嵌入一个随机 fact(译者注:独立存在、真实无误但与上下文无关的陈述性信息,可以检验模型在真实应用场景中对关键信息的识别和提取能力。)。
  2. 要求模型检索这个 fact。
  3. 反复地改变上下文长度以及 fact 在上下文中的位置,并在各种上下文配置下反复测试。

这项测试会生成如下图所示的测试结果(摘自文献 [4]),我们可以很容易地发现上下文窗口的不足之处。

5. 我的提示词(prompt)工程策略

针对不同的大型语言模型,提示词工程的具体细节会有很大区别。但是,有一些通用的原则是非常有用的,可以用来指导如何设计提示词:

  • 实事求是,实证为本:提示词工程的首要步骤是建立一个可靠的评估机制(例如通过测试用例评估、人工评估或让大模型进行评估),从而轻松地评估或测量提示词工程中 prompt 的优化效果。
  • 先从简单着手:刚开始接触提示词工程时,不应当直接尝试 “chain-of-thought prompt” 这种复杂技术,而应先从最简单的形式着手,然后逐步添加复杂元素,同时根据提示词的性能变化(见上文)来判断是否有必要继续增加提示词的复杂度。
  • 追求明确具体而直接:尽可能消除 prompt 中的任何歧义,尽量使用简洁、明确、直接和具体的自然语言来描述期望大模型输出的内容。
  • 使用一些具体的示例(exemplars):如果很难具体描述期望的理想输出,可以尝试在提示词中添加一些具体的示例,通过具体实例消除歧义,明确期望输出的形式。
  • 若无必要,尽量简单明了:有些情况下确实需要使用很多复杂的 Prompt 策略(如解决多步推理问题),但我们在使用这些方法之前应三思而后行。要根据经验,通过判断实践效果和采用评估方法来确定是否必须引入复杂提示词策略。

综上所述,本文介绍的提示词工程策略主要是:i) 先加大投入构建一个非常好的评估框架 ;ii) 从简单的 Prompt 形式入手 ;iii) 根据实际需求,逐步适度引入复杂提示词策略,以便尽可能达到理想的性能水平

Thanks for reading!


Cameron R. Wolfe, Ph.D.

I’m a researcher with an interest in deep learning and a passion for explaining scientific concepts to others.

END

参考资料

[1]https://www.promptingguide.ai/zh

[2]https://arxiv.org/abs/2401.01325

[3]https://arxiv.org/abs/2306.15595

[4]https://github.com/gkamradt/LLMTest_NeedleInAHaystack

本文经原作者授权,由 Baihai IDP 编译。如需转载译文,请联系获取授权。

原文链接:

https://x.com/cwolferesearch/status/1786025095959298234

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/27422.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SwiGLU激活函数与GLU门控线性单元原理解析

前言 SwiGLU激活函数在PaLM,LLaMA等大模型中有广泛应用,在大部分测评中相较于Transformer FFN中所使用的ReLU函数都有提升。本篇先介绍LLaMA中SwiGLU的实现形式,再追溯到GLU门控线性单元,以及介绍GLU的变种,Swish激活…

分布式技术导论 — 探索分析从起源到现今的巅峰之旅(逻辑架构)

探索分析从起源到现今的巅峰之旅 背景介绍技术系列 逻辑架构连接处理层数据缓存层SQL处理层存储引擎逻辑层次的分工 模块执行连接处理层初始化模块核心API模块网络交互模块Client&Server 交互协议模块用户模块案例 访问控制模块案例 连接管理、连接线程和线程管理连接管理模…

学习资料分析

学习资料分析 速算运算 √截位直除分数比较等比修正其他速算方法基期与现期基本概念求基期求现期增长率与增长量增长相关统计术语求一般增长率比较一般增长率增长量比重比重相关公式求比重平均数倍数间隔增长乘积增长率年增长率混合增长率资料分析:主要测查报考者对文字、数字…

UML与设计模式

1、关联关系 关联关系用于描述不同类的对象之间的结构关系,它在一段时间内将多个类的实例连接在一起。关联关系是一种静态关系,通常与运行状态无关,而是由“常识”、“规则”、“法律”等因素决定的,因此关联关系是一种强关联的关…

层出不穷的大模型产品:使用体验、倾向选择及未来展望

✨作者主页: Mr.Zwq✔️个人简介:一个正在努力学技术的Python领域创作者,擅长爬虫,逆向,全栈方向,专注基础和实战分享,欢迎咨询! 您的点赞、关注、收藏、评论,是对我最大…

哪些因素驱动新零售发展?新零售与传统零售、电子商务区别在哪?

零售业正经历着一场前所未有的变革,这场变革由多种因素驱动,涉及技术、消费习惯以及商业模式的全面升级。我们称之为”新零售”,它不仅仅是一个概念,更是零售业未来发展的方向。新零售的兴起,标志着零售行业正在迈向一…

Spring boot 使用AbstractRoutingDataSource实现数据源动态切换

目录 一、AbstractRoutingDataSource 二、具体实现 1、pom.xml 2、新建UserMapper 3、在spring boot 启动类上添加扫描mapper注解 4、在配置文件 application.properties 中添加多个(我这里是两个)数据源的配置信息 5、集成动态数据源模块 5.1、新建注解 CurDataSource…

186.二叉树:二叉搜索树中的插入操作(力扣)

代码解决 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* Tre…

pytest + yaml 框架 -61.jenkins+allure+钉钉通知添加测试结果

前言 上一篇pytest + yaml 框架 -60.git+jenkins+allure+钉钉通知反馈 已经实现测试结果用钉钉通知。 本篇继续在钉钉通知里添加测试的汇总结果,此功能在pytest-yaml-yoyo v1.5.2版本上实现。 Environment Injector 插件 在运行完用例后会生成一个summary.json 文件,汇总…

护眼台灯哪个品牌更好?五款市面主流的护眼台灯款式分享

近年来,护眼台灯的研发和创新不断推进,一些台灯配备了智能化功能,如定时开关机、自动调节光线等,使孩子们能够更好地控制用眼时间和光线环境。护眼台灯哪个品牌更好?一些高端的护眼台灯还采用了纳米光滤镜技术&#xf…

誉天5月红帽战报:恭喜14名学员通过RHCE认证,通过率87.5%!

红帽认证是全球公认的Linux权威认证之一,对于Linux从业者来说具有很高的价值和认可度。旨在评估考生在Linux系统管理和应用方面的专业知识和技能。红帽考试是Linux从业者提升自身技能水平和职业竞争力的重要途径之一。 5月份,誉天14名学员通过了RHCE认证…

Python基础教程(十九):网络编程

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝&#x1f49…

Midjourney提示词终极指南(完整版)

在这篇博客中,我们深入研究了使用提示的艺术,以利用Midjourney的AI功能的力量。我们将探索各种技术,以创建个性化和迷人的图像,将你的创意想法转变为令人惊叹的视觉杰作。 1. 了解提示词 提示是简短的文字描述或关键词&#xff…

基于Spring+Vue的前后端分离的计算器

麻雀虽小,五脏俱全 需求分析 表达式求值 支持加减乘除四则运算、支持高精度 获取日志 Api文档定义 前后端分离,人不分离 通过Apifox定义接口细节,协调前后端开发工作。 软件架构设计 Spring-MVC 把软件系统分为三个基本部分:模…

跨国大文件传输需要哪些方面?怎么实现数据快速传输?

跨国大文件传输涉及到许多方面,包括网络速度、安全性、可靠性和法律合规性等。 以下是跨国大文件传输时需要考虑的一些重要方面: 高速稳定的网络连接:确保有足够的带宽和稳定的网络连接以支持大文件的快速传输。这可能需要考虑到跨国网络的延…

数字孪生火电厂:传统能源的数字化转型

通过图扑自主研发的产品 HT for Web ,采用可视化与数字孪生技术,打造多样化设计风格和业务视角下的火电厂数字孪生方案。为智慧电厂综合“一张图”管理提供了上层展示技术支撑,助力企业增强对火电厂的信息化和数字化管理水平。

用android如何实现计算机计算功能

一.新建一个项目 步骤&#xff1a; 1.新建项目 2.选择 二.用户界面构建 找到项目的res的下面layout里面的activity.xml文件进行约束布局界面构建。 activity.xml代码如下&#xff1a; <?xml version"1.0" encoding"utf-8"?> <androidx.c…

电脑屏幕录制怎么录制?这7个录制屏幕的技巧值得一试!

电脑屏幕录制怎么录制&#xff1f;屏幕录制是什么? 简单地说&#xff0c;电脑屏幕录制就是在你的设备屏幕上录制视频。它可以捕捉屏幕上正在发生的事情&#xff0c;并让你与其他人分享。记录电脑、手机或笔记本电脑屏幕的原因有很多&#xff1a; 1. 一个简单的屏幕录制可以用…

STM32项目分享:智能大棚/智慧农业系统

目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 1.PCB图 2.PCB板打样焊接图 五、程序设计 六、实验效果 七、资料内容 项目分享 一、前言 项目成品图片&#xff1a; 哔哩哔哩视频链接&#xff1a; https://www.bilibili.co…

超全Midjourney自学教程,怒码1万3千字!这是我见过最良心的教程啦!

前段时间&#xff0c;后台有网友私信我&#xff0c;说想跟我一起学AI~当时一边开心一边惶恐&#xff0c;满足于被人看到自己的努力、又担心自己是不是教不好别人&#xff0c;毕竟我自己也是业余时间边学边发的那种~ 不过&#xff0c;我还是会继续搬运或整理一些我认为值得记录…