[Google DeepMind] LARGE LANGUAGE MODELS AS OPTIMIZERS

Large Language Models as Optimizers

文章链接

在这里插入图片描述
总体架构Optimization by PROmpting (OPRO):最开始输入meta-prompt,这个初始的meta-prompt基本上只是对优化任务进行了描述(也会有few-shot example)。输入后LLM便会生成一个solution,这个solution由objective function评估并打分。(solution, score)组合成一对添加到meta-prompt中,如此完成一个循环。多次循环后取分数最高的solution作为优化结果。

meta-prompt design

meta-prompt分为两部分,问题描述和优化轨迹,问题描述就是用自然语言描述想要优化的问题,比如“generate a new instruction that achieves a higher accuracy”。而优化弹道(Optimization trajectory)则是指之前提到的(solution, score)对,即之前生成的解决方案和对应的分数,可以看作优化的“日志”。但是要注意这个弹道不是按时间顺序排的,而是按照打分升序排的。因为之前的研究也发现,越靠后的样例对输出的影响越大,所以把分数高的排在后面有利于LLM向其学习。

下图是一个meta-prompt的示例:
在这里插入图片描述

solution generation

稳定性:由于生成的solution并不一定就是好的,特别是在优化的初期,将这些烂solution加入meta-prompt可能对后续优化产生负面影响,这也会导致整个优化过程不稳定。所以作者让每个优化步生成多个solution,这样可以更好的explore找到好的方向。

explore-exploit tradeoff: 温度低的时候LLM倾向于exploit,而温度高的时候模型倾向于explore。

Application

整个优化框架甚至可以优化数值问题,比如线性回归和旅行商问题,在这里我们着重说一下其在prompt优化上的应用。

还是如上面贴的图所示,这基本上就是作者给LLM的meta-prompt的全部组成部分了。橙色的为meta-instruction,第一段告诉LLM prompt中的优化弹道是什么意思,第二段告诉LLM输入输出的格式,第三段则告知LLM它的任务是什么。蓝色的部分就是优化弹道没啥好说的,紫色的部分则是一些few-shot examples,配合第二段meta-instruction让LLM明白数据集是什么以及输入输出格式。这个样例可以是每个优化步随机采样得到的,也可以是上一个instruction做错的。

这个优化任务的打分就很简单了,直接用prompt在数据集上的正确率。优化弹道按照分数升序排列,在prompt的长度限制内,每次优化完更新并保留得分高的instruction。

测试的时候还比较了这个优化出来的instruction放在不同位置对表现的影响,分为Q_begin(放在问题前面), Q_end(放在问题后面), A_begin(放在答案第一句话)如下图:
在这里插入图片描述
实验结果如下:
在这里插入图片描述
可以看到基本上还是同种模型来自己优化自己效果好,跨模型的提升没有那么明显。

作者在GSM8K上做优化只用了3.5%的样例,整个GSM8K的训练集有7473条数据,也就是说只用了261条左右个问题就把prompt优化出来了。整个迭代次数也就80-200次,在BBH上则是20%的样例150-200次,整个收敛还是很快的,主要取决的LLM的速度。

消融实验

meta-prompt design

分析了meta-prompt中可能影响表现的因素

  • 优化弹道的顺序
    在这里插入图片描述
    显然升序效果比较好,降序最差,随机介于两者之间。

  • 打分的呈现形式
    在这里插入图片描述
    有百分制、二十分制和不给打分默认升序排列,可以看到效果没有那么明显,但基本上还是百分制有优势,说明给分给细一点更能让LLM明白不同问题的优劣区别。

  • 样例数量
    在这里插入图片描述
    从图上看,3个样例的效果最好,10个样例和无样例效果都远不如3个样例的效果好,作者分析说example很重要,因为它提供了有关任务的信息,并帮助优化器模型更好优化指令。 然而,更多的示例并不一定会提高性能,因为几个示例通常足以描述任务。 此外,包含更多样本会稀释meta-prompt的其他部分,分散 LLM 对其他重要部分(如优化弹道)的注意力。

初始prompt


影响不是很大,200轮基本都能收敛,起点好的要收敛的更快一些。

温度

在这里插入图片描述
跟前面分析的差不多,温度高explore多exploit少,温度低exploit多explore少,温度为1最好。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
优化器(optimizer)是机器学习中用于最小化损失函数的算法。在深度学习中,常见的优化器是对梯度下降算法的优化。常用的优化器包括GradientDescentOptimizer、AdagradOptimizer、MomentumOptimizer、AdamOptimizer等\[1\]。在TensorFlow中,可以通过设置优化器的参数来自定义优化器\[2\]。在PyTorch中,可以使用AdamW优化器来进行模型参数的优化\[3\]。不同的优化器在不同的曲面、鞍点和等高线上的表现也有所差异\[3.1\]。 #### 引用[.reference_title] - *1* [【TensorFlow 入门】2、优化器函数 Optimizer](https://blog.csdn.net/jiaoyangwm/article/details/79242237)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [新手入门深度学习 | 3-6:优化器optimizers](https://blog.csdn.net/qq_38251616/article/details/124097632)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [【机器学习】详解 Optimizers](https://blog.csdn.net/qq_39478403/article/details/119061124)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ShadyPi

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

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

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

打赏作者

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

抵扣说明:

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

余额充值