提示工程方法总结

提示方法的产生、演变与挑战

提示方法的产生源于与大型语言模型(LLMs)有效交互的需求,它们随着技术进步经历了从简单的手动设计到复杂的自动优化的演变。这一过程带来了诸多挑战,包括如何精确地引导模型理解并执行复杂任务,以及如何在闭源模型上应用这些方法。提示方法同时要解决计算效率和模型准确性的平衡问题,这要求研究者探索硬提示和软提示的协同优化,以及如何在有限的参数空间内实现更高效的模型微调。
 

1. 提示的产生与演变:从手动设计到自动优化

提示(Prompting)技术与预训练语言模型(PLMs)的发展和大语言模型(LLMs)的进步紧密相关。PLMs从Transformer架构开始,逐步演变为BERT和GPT系列模型,通过多种优化策略提高解决特定任务的效率。由此,NLP训练范式经历了从完全监督学习到预训练和微调,再到预训练、提示和预测的转变(下图)。

 

6e13b5b9a0c33eb075b3ecc75f0f24c7.png

GPT-3在引入硬提示方面具有里程碑意义,使得人们可以用自然语言与模型交互,无需微调即可进行少量样本学习。ChatGPT进一步巩固了LLM与提示结合的范式,其整合了自然语言理解(NLU)和自然语言生成(NLG)的能力,展现了LLMs的显著能力。

提示方法作为适配特定自然语言处理任务的主流范式,为LLMs的上下文学习打开了大门,但同时也带来了模型推理所需的额外计算资源和手动设计提示所需的人力投入,尤其是在使用冗长和复杂提示来指导和控制LLMs行为的情况下。因此,如何实现高效的提示方法成为了研究领域的焦点。从依赖手工设计的提示向自动化优化的转变,不仅降低了对人力资源的需求,还提升了任务执行的准确性和计算效率。

2. 硬提示与软提示

提示的核心目的就是在不进行繁琐的全面参数调整,避免资源浪费的同时,实现高效的少数样本学习。而提示的表达方式主要有两大类,如下图所示,一种是离散的、直接用自然语言表达的提示,我们称它为“硬提示”;另一种则是连续的、可以学习的向量,我们称之为“软提示”。

 

4caeefa05809826fe7d7a0a7f6014621.png

有必要强调硬提示之间的多样化变体。最初,硬提示包括类似于为完形填空任务设计的简洁任务指令。然而,随着LLMs理解能力的不断进步,硬提示已经发展到包含更广泛的元素,最常见的包括示例和思维链。下图是一个硬提示的详细示例,高亮部分表示额外的推理过程。当前NLP社区对硬提示日益增长的兴趣表明了对人模对齐以实现人工通用智能(AGI)的渴望。

 

3de706e61bc6c1497d9526d1432fa53b.png

3. 硬提示面临的挑战

硬提示在各类下游任务中得到了广泛应用,但为提升任务精度而设计的更细致提示,往往冗长且复杂。本次调查从效率角度出发,揭示了硬提示面临的两大核心挑战:冗长的提示内容和困难的提示设计,从而导致内存需求增大、推理速度下降等情况发生。因此,本调查深入探讨了LLM中的高效提示方法。

高效计算提示的策略

1. 知识蒸馏:压缩提示内容

知识蒸馏(KD)是一种经典的压缩方法,其核心思想是指导一个轻量级的学生模型去“模仿”一个表现更好、更复杂的教师模型。在提示压缩的场景中,KD的目的是通过软提示调整,将硬提示中的自然语言信息压缩进LLMs。例如,Askel等人[1](下图)通过上下文蒸馏技术成功地将一个包含4600个单词的HHH(helpful, honest, and harmless)提示压缩进LLMs,实现了与ICL相比更有益的人类一致性效果。

 

86bdfffee393966b1deea0bcca4fb84b.png

2. 编码:将文本转换为向量

编码是将输入文本转换为向量的过程,这种文本到向量级别的压缩被称为编码。当前的编码方法通过交叉熵目标进行微调,有效地将硬提示的大量信息压缩成一组简洁且模型可访问的向量,从而缓解了冗长文本带来的效率问题。例如,Ge等人[2]提出的可扩展提示(X-Prompt)可以将自然语言中无法描述的风格编码进可扩展词汇表中的虚构词中。下图中,假想词w̃u与X-Prompt中的NL标记混合,以指导其学习。除了w̃u允许更新外,其他权重都被冻结。

 

2ab9d2f02154845d7ef439097092a3c7.png

3. 过滤:简化用户提示

过滤是文本到文本级别的压缩,涉及到评估提示中不同词汇结构的信息熵,然后尽可能过滤掉冗余信息,最终简化用户提示。例如,Li等人[3]利用“自信息”概念量化提示内的信息量,并通过基于百分位数的过滤方法,定义了三种不同的语义单元(词、短语和句子)作为过滤信息单元,其中短语级别的过滤被验证为最有效的信息保留方法。下图所示基于https://arxiv.org/abs/2303.07352论文引言部分的过滤结果。

 

8e09439be298946882fd87b4f94ebf12.png

通过这些策略,从手动设计到自动优化的转变不仅提高了任务的准确性和计算效率,还为未来的研究方向提供了理论基础和实践指导。

高效设计提示的方法

在设计高效提示方法时,我们可以采用基于梯度的优化方法和基于进化的优化方法。这些方法旨在自动化提示优化过程,以减少人力资源的消耗,并提高LLMs的任务准确性。其工作流程大致如下图所示。

 

b5586cb6a4aad520782e258ebcd4e0a2.png

1. 基于梯度的优化方法:实梯度调整与模拟梯度提示

基于梯度的优化方法主要包括实梯度调整和模拟梯度提示。实梯度调整适用于开源模型,可以直接对模型参数进行微调。如下图所示,AutoPrompt[4]框架通过构建包含触发词和掩码词的提示模板,利用梯度搜索自动选择触发词,从而优化硬提示。

 

3dc428c474195d5b95516171a92e0964.png

而对于闭源模型,由于无法直接访问模型参数,研究者们采用模拟梯度提示的方法。例如,GrIPS[5]方法通过编辑操作(删除、交换、改写、添加)扩展提示优化空间,并利用迭代搜索找到最有效的提示。

 

e49f6dda72cfaa24abcfec60795aaf4b.png

2. 基于进化的优化方法:利用自然选择原理

进化算法模拟自然界中“适者生存”的生物进化过程,通过样本多样性的利用和迭代探索来寻找优化方向。例如,OPRO[6]方法将优化轨迹集成到元提示中,使得LLM能够理解高分解决方案的共性,并独立确定优化的最佳方向(下图)。

 

3be8131adeb3c8051ff13d49a9624dea.png

此外,Hsieh等人[7]的研究关注长提示的离散优化,通过将长提示分解为多个单独的句子,并使用“beam search”算法生成语义相似的提示,从而提高任务性能(如下表所示)

 

289723fe99d6021d7a862cb95569835c.png

理论视角下的未来提示方法:多目标优化问题

从理论角度来看,我们可以将高效提示方法抽象为一个多目标优化问题,旨在同时压缩提示以减少计算复杂性(目标1)和优化LLM任务准确性(目标2)。我们定义输入为X,输出为Y,可访问参数为Θ。其中X是离散的,包括指令、示例等硬提示组件,而Θ是连续的,包括模型自身的可访问参数以及硬提示的向量表示。

未来的研究方向可能包括:

  • 过滤X:测量对LLMs有益的自然语言信息量,并尽可能过滤掉冗余信息。
  • 微调Θ:在构建压缩器时,LLMs应关注不同语义空间的合理转换,而较小的LMs应关注压缩训练数据的构建。
  • 协同优化:硬提示和软提示的同时优化尚未出现,两种不同语义空间的结合值得进一步探索,这在一定程度上是人机对齐的重要发展方向。

 

总结

高效提示方法的发展经历了从手动设计提示到自动优化提示的转变,未来的提示方法可能会将高效提示范式抽象为一个多目标优化问题,旨在压缩提示以降低计算复杂性,同时优化LLM任务的准确性。可以预见,未来的提示研究将围绕硬提示展开,因为LLM的不可访问性已成为不可逆转的趋势。未来的研究方向可能包括:过滤掉冗余信息、微调LLM的可访问参数、以及硬提示和软提示的协同优化。

论文链接:
https://arxiv.org/pdf/2404.01077.pdf

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

科技之歌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值