原文地址:promptbreeder-evolves-adapts-prompts-for-a-given-domain
论文地址:https://arxiv.org/pdf/2309.16797.pdf
2023 年 10 月 6 日
提示方法分为两大类
- 硬提示是由人工精心设计的文本提示,包含离散的输入令牌;其缺点是创建一个有效的提示需要大量的努力。
- 软提示是可学习的张量,与输入嵌入连接起来,可以针对数据集进行优化;其缺点是它们不便于人类阅读,因为你没有将这些“虚拟令牌”与实际单词的嵌入相匹配。
退一步来看,大型语言模型(LLMs)需要被编程,而现在我们有一种编程方式,即提示工程(Prompt Engineering)。提示工程可以在三个阶段进行:训练时、生成时或使用增强工具时。
无梯度(Gradient-Free)实现是指使用不同的措辞技术和操作方法来构成和提供提示的实例。这些方法被称为无梯度,因为它们以任何方式都不改变或微调基础的大型语言模型。所有列在无梯度下的提示工程方法通常都是非常通用的,并且是手工设计的。
梯度(Gradient)方法更像是机器学习方法,可以看作是更自动化的;但与此同时,它也是一种不透明的方法,没有纯提示工程方法那样的透明度。
像PromptBreeder这样的梯度方法是一个自动的自我改进过程,并且可以适应手头的特定领域。
PromptBreeder这样的方法直接对连续提示表示进行微调。
需要注意的是,任何更新大型语言模型的所有或部分参数的方法,随着模型变得越来越大,将无法扩展,而且对于越来越多的隐藏在API后面的大型语言模型来说,这种方法也将无法工作。
回到PromptBreeder
PromptBreeder基于软提示的概念,这些软提示是在提示调整过程中创建的。
对于某些实现,与硬提示不同,软提示不能以文本形式查看和编辑。提示通常由一个嵌入组成,这是一串数字,从更大的模型中获取知识。
对于某些实现,软提示的一个缺点是缺乏可解释性。AI发现了对特定任务有意义的提示,但不能解释为什么选择了这些嵌入。与深度学习模型本身一样,软提示是不透明的。
软提示充当了额外训练数据的替代品。研究人员最近估计,一个好的语言分类器提示相当于数百到数千个额外的数据点。
PromptBreeder由一个大型语言模型支持,并在评估基于训练集的提示的同时,演化出面向任务的提示集合。
这个过程经过多代迭代来演化任务提示。
关键的是,这些任务提示的变异是由大型语言模型生成的变异提示所控制的,这些变异提示在整个演化过程中以自我参照的方式得到生成和改进。
根据DeepMind的说法,PromptBreeder在常用的算术和常识推理基准上,表现优于最先进的提示策略,如Chain-of-Thought和Plan-and-Solve提示。
以上是PromptBreeder的概述。给定一个问题描述和一组初始的通用思考风格和变异提示,PromptBreeder生成了一组进化的单元,每个单元通常由两个任务提示和一个变异提示组成。
任务提示的适应性是通过评估它在随机批次训练数据上的表现来确定的。在多代过程中,PromptBreeder使用五种不同的变异算子来变异任务提示和变异提示。
重点是自我参照地演化出适应特定领域的任务提示,以及越来越有用的变异提示。
PromptBreeder是一个通用目的的、自我参照的、自我改进机制,它演化并适应特定领域的提示。
考虑到上述图像,存在多种自我参照提示演化的版本。
(a) 直接:直接使用LLM生成提示策略P的变体P'。
(b) 变异提示引导:使用变异提示M,可以明确提示LLM产生变体。
(c) 超变异:通过使用超变异提示H,我们还可以演化变异提示本身,使系统成为自我参照的。
(d) PromptBreeder:通过从一组种子思考风格T、变异提示M以及问题领域D的高层次描述生成初始的提示策略种群,来改善演化的提示和变异提示的多样性。