关注我公众号的朋友们,抱歉了,转眼本号已经断更了9个月了,这大半年一直很忙,实习、写博士论文,更重要的是我角色转变了——当爹了!所以得忙着照顾老婆孩子哈哈,实在没空没心思提笔写文章了。
很快就博士毕业了,四年一晃而过,今天介绍的这篇论文,可能是我博士阶段主要参与的最后一项学术研究了,由我和两位实验室学妹、实验室和业界的老师一起合作完成,源于大模型下游落地的实践和思考。希望能对大模型的下游应用带来一些启发~ 也希望读者提出宝贵意见!
提示工程(Prompt Engineering)已经成为提升大模型的零样本、少样本推理能力的基本操作。然而,在大模型实际落地解决下游业务问题的时候,我们往往还需要一些针对性的样本对模型进行微调训练。我们在大模型实际落地研发中发现:虽然大模型已经足够强大,但是微调样本的不同设计,依然会显著影响大模型微调后的效果。因此,如何设计更好的微调样本,成为了一个新的问题。对此,本文首次提出了样本设计工程(Sample Design Engineering, SDE)的概念,系统性地探究了影响大模型下游任务微调的多种设计选项,发现了诸多有趣且引人深思的结论,并提出了一种在多个复杂下游任务上均稳定优异设计方案。本研究表明,细致地考虑大模型微调样本的设计,可以使用更少的样本训练出在下游任务上表现更好的模型。
大模型(LLMs)的出现,完全改变了NLP任务处理的方式,以往需要复杂的模型设计、模型协同才能完成的一些下游任务,如今可以使用大模型轻松解决。由于大模型使用文本生成的方式来处理各种任务,因此提示工程(Prompt Engineering,下文简称PE)成为了研究的热点,许多学者提出了各种PE技术,通过改善输入给LLMs的prompt,来提升模型的推理能力。这方面的研究非常丰富,学者们和社区研究者们提出了诸如CoT, RAG, CoVe, EmotionPrompt等技术,甚至一些“咒语”,来提升LLM的零样本或少样本(ICL)推理能力。
无论学术界还是工业界,对PE的研究,主要还是围绕GPT3、GPT4、PaLM等等超大的、最先进的大模型展开的。然而,由于成本问题、政策问题、数据安全问题,许多中小企业或个人是无法使用GPT3/4这种级别的大模型的,转而选择一些开源的稍小的LLMs(尤其10B左右),这时,仅仅使用PE技巧来设计prompt是无法解决许多稍微复杂点的下游任务的,因此往往需要一些下游样本进行微调。相比于“如何设计prompt”这方面繁荣的PE研究,“如何设计下游微调样本”,相关研究则十分匮乏。正如不同的prompt设计会影响LLMs零样本推理的性能,不同的样本设计也可能会对微调后的模型有影响。对此,本文类比提示工程,提出了样本设计工程(Sample Design Engineering, SDE),并首次做了系统性的分析和实验探究,期待学界和业界未来能围绕SDE展开更多的研究。
下图展示了SDE和PE的关系:
下表罗列了最直接的差异:
针对模型 | 场景 | 操作对象 | |
---|---|---|---|
提示工程(PE) | 闭源/超大LLMs,参数冻结 (e.g. ChatGPT, PaLM) | Zero-Shot / ICL推理 | 模型输入(prompt) |
样本设计工程(SDE) | 稍小LLMs,参数可调 (e.g. LLaMA, Qwen) | 下游微调 | 模型输入和输出(sample) |
为了探究SDE的影响,研究SDE如何提高LLM下游表现,本文的研究思路和主要内容如下:
我们希望大模型解决的下游任务,往往较为复杂。举一个例子,多方面情感分析(Multi-Aspect Sentiment Analysis,MASA),是一个常见的极具商业价值的应用场景,但是其涉及到的模型输入、预测往往是比较复杂的。下图是一个MASA任务的示意图:
如图所示,某用户针对餐厅写了一段详细点评,其中涉及了很多方面的评价。作为餐厅的一方,或者提供情感分析的服务商,我们希望对大量类似的评论进行多方面情感分析,会有一批我们预先定义的、比较关心的方面,例如食品评价、饮料评价、卫生条件、价格水平、服务态度、停车方便程度等等。MASA任务的目标就是一次性对所有方面进行情感分析,可以看出,LLM处理对于这样的任务,可能涉及到较为复杂的输入、输出设计。
经过分析和一些预先的实践经验,我们对典型的样本设计进行了分类——输入设计、输出设计、推理设计,并提出其中涉及到的一些典型的 SDE 设计选项(options):
三类 SDE 设计选项
在输入设计方面,我们可能会面临如下选择:
至于输入本身的内容(例如应该如何编写指令),这里暂不考虑,我们认为是输入本身的波动。
在输出设计方面,我们可能会面临如下选择:
除了输入和输出之外,我们还额外考虑了一个更加全局的设计选择——推理设计。CoT是一种典型的提升模型推理能力的PE技巧,因此,我们猜测类似CoT的样本设计,可能也会影响LLM微调后的效果。因此,我们设置了No-CoT, CoT 和 R-CoT 三种推理设计选项。在使用CoT样本设计的时候,我们需要对样本额外标注一个推理的部分,可以是描述、解释或者原文抽取等,放置在预测部分的前面,从而让模型学习“先思考再预测”。R-CoT作为对照,则是将推理部分放置在预测部分的后面,即“先预测再解释”。
值得强调的是,PE中CoT是一种低成本的技巧,因为只需要添加一个咒语,或是提供极少量的推理实例即可,而针对微调样本进行CoT设计,则成本相对高昂,因为我们需要对每一个微调样本都添加推理方面的标注。
以上三个方面的设计选项,可以参照上面示意图中给出的例子来理解,更详细的解释,请参考论文原文。
关于这个问题,我们进行了丰富的实验探究,来看看上一节中讲到的每一个设计选择,都有什么样的影响。
任务和数据:
我们使用MASA作为实验场景,由合作公司提供真实业务场景中的数据(中文)和标注,包含了两个领域的方面情感标注:
D1: 食品、饮料、价格、卫生、服务态度、停车情况
D2: 交通便利程度、排队情况、上菜速度、装修情况、噪音情况
基于这两个领域,我们设计了 2 组In-Domain (ID) 任务和 2 组Out-of-Domain (OOD) 任务:D1->D1, D2->D2, D1->D2, D2->D1。对于OOD任务,我们在前一个领域上进行训练,然后在后一个领域上进行测试。
模型:
我们为了探究样本设计是否在不同LLMs上存在差异/一致性,我们采用了3个系列的 6 种被广泛使用的开源模型:
模型微调均采用 LoRA 参数高效微调技术,其他微调方法均可使用。
测评指标:
我们从任务本身的理解能力(情感分析能力)和格式遵循能力两方面对模型微调效果进行评价,这是因为大模型使用文本生成的方式进行任务处理,存在天然的输出不稳定的风险,因此除了任务本身的测评指标之外,能够正确按照预定义的格式进行输出,也是非常值得关注的问题。具体详见论文。
不同设计选项的影响(建议放大观看)
我们针对Input、output、reasoning都设置了baseline,然后通过变化其中一个选项,来探究该选择对模型性能的影响。每一种选项我们进行48次实验,包括了在6个模型、4个任务(2个ID和2个OOD)、2个训练大小(500和1000)上的实验,然后将ID、OOD内结果进行平均,不同训练大小结果进行平均,绘制了如上图所示的柱状图。
针对输入设计,我们有以下重要发现:
输出方面,则有更加丰富的发现:
推理方面,我们有以下结论:
再来看看格式遵循方面的表现:
总体上可以看出:
值得注意的是,任务理解能力和格式遵循能力在实际应用中可能是两个互补的方面,需要根据业务需求进行权衡。
通过前面的大量实验,我们发现了一系列在多种LLMs上通用的规律。为了进一步验证SDE方法的影响和普适性,我们觉得根据前面的实验证据,设计一套优秀的SDE集成方案,并验证改方案是否可以拓展到其他的新任务、新模型上。
根据前面的实验,我们提出了一个实证上较强的SDE方案——ES-SDE(Empirically-Strong SDE strategy),它由如下设计选项组成:Inst-first, No-MI 的输入设计,Lines, PU, TxtLabel 的输出设计。由于考虑到CoT的不稳定性和成本问题,这里没有使用。
作为对照,我们还设置了一个 EW-SDE(Empirically-Weak SDE strategy),它的不同之处在于使用了 Inst-last, Natural 和 OU 选项,我们预期该方面应该比 ES-SDE 更差。
除此之外,我们还采用了一种经验主义方案——heuristic strategy,借鉴于其他学术论文中对某些下游任务根据人为经验而设置的prompt设计。其输入上类似于本文中的 Inst-first 和 OU,但输出格式则使用了一种类似List的方式。
我们使用了 3 个新的复杂下游任务数据集和 2 个新的 LLMs 来对上述方面进行对比:
对于GENIA和MAVEN两个英文数据集,我们采用 LLaMA2-7B-Chat 进行实验,对于 Review11 中文数据集,我们采用近期刚发布的性能强大的 Qwen1.5-4B-Chat 进行实验。
我们从三个方面,探究样本设计方案的效果和鲁棒性:不同训练大小、不同decoding种子、不同instruction内容。实验结果如下:
可以看出,ES-SDE 是一种优秀且鲁棒的样本设计方案,在不同任务、不同模型、不同训练大小、不同扰动的情况下,都明显优于 EW-SDE 和 heuristic 方案。例如,500 个 ES-SDE 样本的训练效果,就相当于约 2000 个 EW-SDE / heuristic 样本! 这印证了 ES-SDE 生成的微调样本具有极高的质量。
Prompt 是打开大模型内部秘密的一把钥匙,大模型在预训练、SFT、RL 阶段的数据和训练细节往往是不可知的,但是通过 prompt,我们可以某种程度上探查大模型自身的一些特性和能力,一个效果好的 prompt 往往预示着大模型对某种模式更加熟悉或者更加擅长。于是,一个很自然的问题是:好的 Prompt,能否帮我们设计好的 Sample?或者说,PE 能否指导 SDE 呢?
为了回答这个问题,我们基于前面的各种 SDE 选项,来构造对应的 zero-shot 或 ICL prompts,让模型直接进行推理(不经过微调),来评价不同 prompt 的优劣。初次之外,有研究指出,Perplexity (PPL,困惑度)是一个很好的评价 prompt 的指标,一个 prompt 的 PPL 越低,其效果通常也更好,因此,我们还额外对 ICL prompts 和 predictions 计算 PPL。
下图给出了在 MASA 的 ID 任务中各种 SDE 选项的性能的各模型平均排名,以及对应的 prompts 的Zero-shot、ICL、PPL排名:
上图中,output 的 baseline 为 [Natural, TxtLabel, PU], 简记为 Natural,其余方法均只在 baseline 上改变一个选项
从中可以看出PE和SDE有一些一致的模式:
然而,还有一些明显的不同:
这些结果表明:好的 prompt 可能并不能转化成好的 sample,PE 无法直接指导 SDE。这个发现为未来的研究挖下了一个新坑,期待有更多的学者能一起探究 SDE 背后的机理,从而帮助大模型更好地发挥其自身潜力,助力大模型的下游场景落地。
本文提出了样本设计工程(Sample Design Engineering, SDE),系统性地探究了如何设计更好的大模型下游微调样本。通过在6个常用大模型上进行的一系列ID和OOD实验,我们揭示了诸多对下游微调有显著影响的样本设计选项,发现了一些有趣的规律。基于此,我们提出了一种鲁棒的样本设计方案,在3个复杂下游任务上均取得了优异且稳定的性能,大幅超越经验主义的样本设计。进一步的对PE和SDE关系的实验分析说明了在零样本/少样本推理下好的prompt,不一定能指导我们设计好的下游微调样本,这表明了SDE背后复杂的机理,期待更多的后续研究。