DSPy程序优化Prompt的五个重要教训,NLP 的未来不是修改Prompt,而是构建更高抽象级别的模块

近日,DSPy的研究团队联合其它几家机构的研究者,发布了一项LM程序中Prompt优化的最大规模的联合研究《优化多阶段语言模型程序的说明和演示》(arXiv:2406.11695v1),DSPy的研究团队基于prompt优化用六个解决方案解决了两个难题,提出五条优化时的教训。这对于LM程序开发者具有非常重要的指导意义,接下来,让我们一起看看研究者是如何深入剖析DSPy的核心思想和关键技术的以,文末我抛砖引玉谈了些这项技术对NLP发展的一些影响。

DSPy程序优化Prompt的五个重要教训,NLP 的未来不是修改Prompt,而是构建更高抽象级别的模块

Prompt优化问题的定义和算法

给定一个由m个LM模块组成的程序Φ,每个模块都有一组开放变量v,如指令、示例等,需要用特定的字符串s来填充。优化的目标是,找到一组最优的变量赋值V7→S,使得在训练集D上该程序的性能指标μ最大化:

DSPy程序优化Prompt的五个重要教训,NLP 的未来不是修改Prompt,而是构建更高抽象级别的模块

再看他们提出的优化算法,这也是一个通用的、可扩展的LM程序自动优化框架。通过不断迭代生成、评估、更新参数配置,该算法可以在给定训练数据和评估指标的情况下,持续提升LM程序在目标任务上的性能,减少手工调参的成本。

DSPy程序优化Prompt的五个重要教训,NLP 的未来不是修改Prompt,而是构建更高抽象级别的模块

这是一个用于优化LM(Language Model)程序的算法,其输入包括:

1.优化器M(Optimizer)

2.初始的LM程序Φ(Initial Program)

3.评估指标μ(Metric)

4.最大迭代次数I(Max Iterations)

5.训练数据D(Training Data)

6.小批量数据大小B(Minibatch size)

7.Proposer超参数θ(Proposer Hyperparameters)

用中文翻译后再解释一下:

算法 1:使用优化器 M 优化 Φ

输入:
1. 优化器 M,初始程序 Φ,度量 μ
2. 最大迭代次数 I,训练数据 D
3. 小批量大小 B,提议者超参数 θ

输出: 优化后的 Φ

步骤:

1. M.Initialize(D, θ) ⟵ 使用数据初始化优化器
2. 对于 k 从 1 到 I,重