论文概述
这项突破性工作引入了自动提示工程师(Automatic Prompt Engineer, APE)框架,能够自动为大型语言模型生成和选择指令。APE将指令视为程序,通过搜索LLM提议的候选指令进行优化,并在另一个LLM上评估零样本性能来选择最佳指令。该方法在24个NLP任务中的19个上超过了人工编写的提示,标志着自动化提示工程过程的重大进展。
论文信息:
- 发布时间:2022-11-03
- 作者:Yongchao Zhou, Andrei Ioan Muresanu, Ziwen Han等
- 机构:University of Montreal, University of Oxford, UC Berkeley等
- 研究方向:提示工程、LLM推理
- 核心技术:自动提示工程(APE)
研究背景
提示工程通常需要大量人工尝试和专业知识,这限制了其应用范围和效率。本研究针对以下问题展开:
现有问题
- 人工设计提示耗时且需要专业知识
- 提示质量严重影响模型性能,但难以系统化优化
- 缺乏自动化的提示生成和优化方法
研究动机
本研究旨在开发一种能够自动生成和优化提示的方法,使提示工程过程更加高效和系统化,特别关注提示工程(prompt-engineering)、自动提示生成(automatic-prompt-generation)、指令优化(instruction-optimization)等关键技术。
核心方法
方法概述
APE将指令视为可以优化的”程序”,通过搜索LLM提议的指令候选池来最大化选定的评分函数。所选指令的质量通过另一个LLM在遵循这些指令时的零样本性能来评估。
具体工作流程:
- 指令生成:使用LLM(如GPT-3)基于任务示例生成多个候选指令
- 指令评分:在验证集上评估每个候选指令的零样本性能
- 指令选择:选择得分最高的指令作为最终指令
- 可选优化:通过迭代改进进一步优化选定的指令
生成提示示例:
1 | 我给你一些输入-输出对的例子。请生成一个指令,这个指令能够将输入映射到输出。 |
本方法的核心在于利用LLM自身的能力来生成和评估提示,形成一个自动化的提示优化循环。
关键创新点
创新 1:引入了用于指令生成和选择的自动提示工程师(APE)框架
创新 2:在24个NLP任务中的19个上达到或超过人工编写提示的性能
创新 3:提供了通过基于LLM的搜索进行提示优化的系统方法
创新 4:展示了引导模型提高真实性和信息性的适用性
技术特点
- 自动化程度高:大幅减少人工提示设计的工作量
- 性能优越:生成的提示通常优于人工设计的提示
- 通用性强:适用于各种NLP任务
- 可扩展性:可以轻松扩展到新任务和模型
- 迭代优化:支持多轮优化以进一步提升性能
实验结果
Benchmark 性能
在24个NLP任务上进行的实验表明,自动生成的指令在大多数任务上超过了先前的LLM基线。APE工程的提示在添加到标准上下文学习提示之前时,也提高了少样本学习性能。
具体结果:
- 零样本任务:在19/24任务上超过人工提示
- 少样本学习:将APE提示与示例结合,性能进一步提升5-10%
- 真实性提升:在TruthfulQA上显著提高模型回答的真实性
- 效率提升:自动生成过程仅需数分钟,而人工设计可能需要数小时
性能分析
实验结果表明,APE方法在自动生成高质量提示方面非常有效,在大多数任务上都能达到或超过人类提示工程师的水平。
关键发现
- LLM理解任务:LLM能够通过少量示例理解任务并生成合适的指令
- 多样性重要:生成多个候选指令并评估比只生成一个更有效
- 评估策略:使用执行准确率作为评分函数效果最好
- 迭代改进:多轮优化可以进一步提升性能,但收益递减
实际应用
适用场景
- 新任务快速原型:快速为新任务生成有效的提示
- 提示优化:系统化地优化现有提示
- 批量任务部署:为多个任务自动生成提示
- 非专家用户:让没有提示工程经验的用户也能获得高质量提示
实现建议
在实际项目中应用APE时,建议:
- 准备示例数据:收集高质量的输入-输出示例用于指令生成
- 生成多样化候选:生成足够多的候选指令(建议20-50个)
- 设计评估指标:根据任务特点选择合适的评分函数
- 迭代优化:对表现最好的指令进行进一步改进
代码示例
1 | # APE框架示例实现 |
相关资源
- arXiv 论文:arXiv:2211.01910
- 相关论文:Instruction Induction, OPRO, PromptBreeder