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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

FPGA - 全局时钟资源

全局时钟资源是指FPGA内部为实现系统时钟到达FPGA内部各 CLB、IOB,以及BSRAM(Block Select RAM,选择性BRAM)等基本逻辑单元的延时和抖动最小化,采用全铜层工艺设计和实现的专用缓冲与驱动结构。 由于全局时钟资源的布线…

HAL库开发--串口

知不足而奋进 望远山而前行 目录 文章目录 前言 学习目标 学习内容 开发流程 串口功能配置 串口功能开启 串口中断配置 串口参数配置 查询配置结果 发送功能测试 中断接收功能测试 printf配置 DMA收发 配置 DMA发送 DMA接收(方式1) DMA接收(方式2) 总结 前言…

简单了解MySql以及一些简单的应用MySql

MySql基础篇 1、数据模型概述 关系型数据库 概念:建立在关系模型基础上,由多张相互连接的二维表组成的数据库。 特点: 使用表存储数据,格式统一,便于维护使用SQL语言操作,标准统一,使用方便 数…

基于Matlab的车牌识别停车场出入库计时计费管理系统(含GUI界面)【W6】

简介: 在当今城市化进程加快的环境下,停车管理成为了一个日益重要和复杂的问题。城市中的停车资源有限,如何高效利用和管理这些资源,不仅关乎市民出行便利性,也涉及到城市交通拥堵、环境污染等诸多问题的解决。 传统的…

计算机网络(7) 错误检测

一.校验和 使用补码计算校验和是一种常见的错误检测方法,应用于网络协议如IP和TCP。补码是二进制数的一种表示方法,可以有效地处理符号位和进位。下面是如何利用补码计算校验和的详细步骤和算数例子。 ### 计算步骤 1. **将数据分块**:将数…

缓存技术实战[一文讲透!](Redis、Ecache等常用缓存原理介绍及实战)

目录 文章目录 目录缓存简介工作原理缓存分类1.按照技术层次分类2.按照应用场景分类3.按照缓存策略分类 应用场景1.硬件缓存2.软件缓存数据库缓存Web开发应用层缓存 3.分布式缓存4.微服务架构5.移动端应用6.大数据处理7.游戏开发 缓存优点缓存带来的问题 常见常用Java缓存技术1…

服务器远程桌面经常连接不上,造成远程桌面连接不上的原因都有哪些

服务器远程桌面连接不稳定或经常连接不上是一个较为常见的技术问题,其可能的原因涉及多个层面,包括网络设置、服务器配置、系统安全等方面。下面将详细探讨一些可能造成远程桌面连接问题的主要原因: 首先,网络连接不稳定是导致远…

【类脑计算】突触可塑性模型之Hebbian学习规则和STDP

1 引言 突触可塑性 (Synaptic plasticity)指经验能够修改神经回路功能的能力。特指基于活动修改突触传递强度的能力,是大脑适应新信息的主要调查机制。分为短期和长期突触可塑性,分别作用于不同时间尺度,对感官刺激的短期适应和长期行为改变…

港理工最新综述:基于LLM的text-to-SQL调查(方法实验数据全面梳理)1

【摘要】文本到SQL旨在将自然语言问题转换为可执行的SQL语句,这对用户提问理解、数据库模式理解和SQL生成都是一个长期存在的挑战。传统的文本到SQL系统包括人工工程和深度神经网络。随后,预训练语言模型(PLMs)被开发并用于文本到SQL任务,取得了可喜的成绩。随着现代数据库变得…

前端开发和UI设计师的互怼,大概率逃不出这10个协作盲区。

前端和UI作为产品开发两个工序,按理说应该是合作亲密无间的,而实际工作中却是经常起摩擦,互怼成了常态,贝格前端工场通过本文带领大家一探背后的原因。 一、UI设计师和前端开发的岗位职责 UI设计师的职责: 1. 与产品…

iPad键鼠充电otg转接器 | LDR6020解决方案

随着科技的快速发展,iPad已经成为我们日常生活中不可或缺的一部分。它不仅是一个娱乐工具,更是一个高效的生产力工具。为了更好地满足用户的需求,iPad支持在充电的同时连接鼠标和键盘,极大地提升了使用的便捷性和效率。 iPad键鼠同…

SSM医院线上线下全诊疗系统-计算机毕业设计源码02210

目 录 摘要 1 绪论 1.1背景及意义 1.2研究现状 1.3ssm框架介绍 1.4论文结构与章节安排 2 医院线上线下全诊疗系统系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分…

多线程中run()和start()的区别

我们知道,在多线程中 Thread thread new Thread(runnable); thread.start();以及 thread.run();都可以执行runnable中run方法下的代码,但是二者又有所不同 下面给出一段代码用以体现二者的区别: 以下代码中,通过thread.start()启…

SAP RFC 输入一张表(C# 使用 SapNwRfc 二)

SapNwRfc中的配置参数,记录日志关闭 Trace0,可以得到很好的性能。 有网友在问,SAP RFC返回多张表(C# 使用 SapNwRfc 一)中如何输入一张表的数据,正好博主也遇到了这个场景,今天做了一个DEMO&…

一文带你搞清楚AI领域的高频术语!RAG、Agent、知识库、向量数据库、知识图谱、Prompt...都是在讲啥?

随着AI人工智能技术的不断发展,一些领域有关的概念和缩写总是出现在各种文章里,像是Prompt Engineering、Agent 智能体、知识库、向量数据库、RAG 以及知识图谱等等,但是这些技术和概念也的的确确在AI大模型的发展中扮演着至关重要的角色。这…

重塑IT审计的未来:数智化审计赋能平台的创新与实践

重塑IT审计的未来:数智化审计赋能平台的创新与实践 一、当前企业开展IT审计面临的挑战 随着信息技术的快速发展、企业数字化转型的持续深入,以及网络安全合规要求的不断增强,企业开展新型IT审计重要性越来越突出,但实施难度却越来…

自定义Unity组件——ABManager(AB包管理器)

需求描述 在Unity3D引擎中,AB包作为常用的游戏资源存储格式之一。而对于资源管理我们就不得不谈到集中管理的优势了,通过统一的接口加载和卸载AB包及其中的资源将进一步提升我们的编程效率。本文将围绕这个需求进行尝试。 功能描述 1. AB包的加载包括同…

软考初级网络管理员__Web网站的建立、管理维护以及网页制作单选题

1.在HTML 中,用于输出“>”符号应使用()。 gt \gt > %gt 2.浏览器本质上是一个()。 连入Internet的TCP/IP程序 连入Internet的SNMP程序 浏览Web页面的服务器程序 浏览Web页面的客户程序 3.HTML 语言中,单选按钮的…

工业 web4.0 的 UI 卓越非凡

工业 web4.0 的 UI 卓越非凡

深度学习(八)——神经网络:卷积层

一、卷积层Convolution Layers函数简介 官网网址:torch.nn.functional — PyTorch 2.0 documentation 由于是图像处理,所以主要介绍Conv2d。 class torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride1, padding0, dilation1, groups1, b…