🗒️Prompt工程的当代进展[译]— 1
2024-4-29
| 2024-4-29
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
作者:CAMERON R. WOLFE, PH.D.
 
由于其使用便捷性,大语言模型 (LLM) 已经迅速走红。即使是对深度学习一无所知的人,也可以通过简单构建一个文本提示,利用强大的神经网络迅速解决各种复杂的问题。随着时间的发展,这些模型因为指令跟随能力和对齐性的改进而变得更易于使用。然而,有效地使用提示来引导大语言模型既是艺术也是科学——通过微调我们的提示实施方式或策略,可以显著提升性能。在这篇综述中,我们将从基础概念入手,深入到最近几个月提出的最前沿的提示工程技术。
大语言模型(LLM)之所以广受欢迎的一个重要原因是,它们的文本到文本接口极其简单易用。在之前的技术中,使用深度学习解决任务通常需要我们至少在一些数据上微调模型,来训练模型解决特定任务。此外,这些模型多数是针对特定任务的专家。然而,得益于大语言模型的即时上下文学习能力,我们现在可以通过一个文本提示解决多种问题,如上所述。过去那些复杂的问题解决流程现在已被转化为自然语言形式!

什么是提示工程?

notion image
“提示工程是一个新兴学科,专注于开发和优化提示,以便高效地利用语言模型 (LM) 应对各种应用和研究议题。” - 引自 [1]
什么是提示工程?大语言模型(LLM)的简便性已经普及了其使用。使用大语言模型不必是数据科学家或机器学习工程师(MLE)——只要你通晓英语(或你选择的语言),就能利用大语言模型解决相对复杂的问题!但是,在使用大语言模型解决问题时,我们取得的成果很大程度上取决于提供给模型的文本提示。因此,提示工程——这门通过实验不同提示以优化大语言模型表现的科学——已变得极其流行和重要,带来了许多技术和最佳实践的发现。
包含指示符的提示词
包含指示符的提示词

提示组件

引导大语言模型(LLM)的方法有很多,但多数提示策略通常包含以下几个共同的组件:
  • 输入数据:大语言模型预期要处理的实际数据(比如,待翻译或分类的句子,或是待总结的文档等)。
  • 示例:提示中包含的正确的输入输出对的具体实例。
  • 指令:模型所期望输出的文本描述。
  • 指示符:用于在提示内构建结构的标签或格式化元素;参见上文。
  • 上下文:在提示中向大语言模型提供的任何额外信息。
在下图中,我们看到一个示例,该示例在一个单一的提示中结合了上述所有提到的提示组件,用于句子分类。
包含所有部分的LlaMA-2风格的提示词
包含所有部分的LlaMA-2风格的提示词

上下文窗口

在预训练过程中,大语言模型(LLM)处理的是特定长度的输入序列。这个预设的序列长度决定了模型的“上下文长度”,即模型能处理的最大序列长度。如果输入的文本序列远超这个预设的上下文长度,模型的反应可能会变得不可预测,从而导致输出错误。但是,有一些方法,比如自我扩展(Self-Extend)或位置插值(positional interpolation),可以用来扩大模型的上下文窗口。
RoPE的位置插值([34])
RoPE的位置插值([34])
最近的大语言模型(LLM)研究强调了创建更长的上下文窗口的重要性,这样模型就能在每个提示中处理更多的信息(比如更多的示例或更广的上下文)。然而,正如我们所见,不是所有大语言模型都能完美地关注它们的上下文!一个大语言模型在长上下文窗口中利用信息的能力通常通过“大海捞针”测试来评估,这个测试包括:i) 在上下文中嵌入一个随机事实,ii) 让模型找出这个事实,iii) 在不同的上下文长度和事实在上下文中的位置重复这个测试。这样的测试会产生如下图所示的图像,我们可以从中轻松识别出上下文窗口的缺陷。
notion image

我的提示工程策略。

提示工程的细节因所用模型而异,但有几个常用原则常常有助于指导整个过程:
  • 实证性:提示工程的首步是设立一种可靠的评估方法(例如通过测试案例、人工评估或用LLM作为裁判),使你能够轻松评估提示修改的效果。
  • 从简单做起:你的第一个尝试不应是连锁思维提示或其他复杂技术。应从尽可能简单的提示开始,逐步增加复杂性,并测量性能变化(如上所述)来决定是否需要这种复杂性。
  • 具体且直接:消除提示中的不确定性,尝试在描述LLM期望输出时做到简洁、直接和明确。
  • 使用示例:如果难以描述期望的输出,试着在提示中加入一些示例。示例通过提供预期的具体示例来消除歧义。
  • 尽可能避免复杂性:有时可能需要复杂的提示策略(如解决多步骤推理问题),但在采用这些方法前应仔细考虑。通过实证方法和既定的评估策略来判断复杂性是否必要。
总结上述内容,我的个人提示工程策略包括:i) 建立一个优秀的评估框架,ii) 从最简单的提示开始,iii) 根据需要逐步增加复杂性,以实现所需的性能水平。
notion image

参考文献

[1] Saravia, Elvis, et al. “Prompt Engineering Guide”, https://github.com/dair-ai/Prompt-Engineering-Guide (2022).
[34] Chen, Shouyuan, et al. "Extending context window of large language models via positional interpolation." arXiv preprint arXiv:2306.15595 (2023).
  • LLM
  • 公网IP环境下的安全内网穿透指南:使用SSH隧道技术使用Langchain对LLM摘要生成的质量进行评估
    Loading...
    目录