前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >好样本,事半功倍:使用样本设计工程 (SDE) 来构造更好的大模型下游微调样本

好样本,事半功倍:使用样本设计工程 (SDE) 来构造更好的大模型下游微调样本

作者头像
beyondGuo
发布2024-04-26 17:42:27
1030
发布2024-04-26 17:42:27
举报
文章被收录于专栏:SimpleAISimpleAI

关注我公众号的朋友们,抱歉了,转眼本号已经断更了9个月了,这大半年一直很忙,实习、写博士论文,更重要的是我角色转变了——当爹了!所以得忙着照顾老婆孩子哈哈,实在没空没心思提笔写文章了。

很快就博士毕业了,四年一晃而过,今天介绍的这篇论文,可能是我博士阶段主要参与的最后一项学术研究了,由我和两位实验室学妹、实验室和业界的老师一起合作完成,源于大模型下游落地的实践和思考。希望能对大模型的下游应用带来一些启发~ 也希望读者提出宝贵意见!

提示工程(Prompt Engineering)已经成为提升大模型的零样本、少样本推理能力的基本操作。然而,在大模型实际落地解决下游业务问题的时候,我们往往还需要一些针对性的样本对模型进行微调训练。我们在大模型实际落地研发中发现:虽然大模型已经足够强大,但是微调样本的不同设计,依然会显著影响大模型微调后的效果。因此,如何设计更好的微调样本,成为了一个新的问题。对此,本文首次提出了样本设计工程(Sample Design Engineering, SDE)的概念,系统性地探究了影响大模型下游任务微调的多种设计选项,发现了诸多有趣且引人深思的结论,并提出了一种在多个复杂下游任务上均稳定优异设计方案。本研究表明,细致地考虑大模型微调样本的设计,可以使用更少的样本训练出在下游任务上表现更好的模型。

  • 论文标题:Sample Design Engineering: An Empirical Study of What Makes Good Downstream Fine-Tuning Samples for LLMs (https://arxiv.org/abs/2404.13033)
  • 论文作者:Biyang Guo (1), He Wang (1), Wenyilin Xiao (1), Hong Chen (2), ZhuXin Lee (3), Songqiao Han (1), Hailiang Huang (1)
  • 作者机构:上财人工智能实验室 (1);蚂蚁集团 (2);云徙科技 (3)

unsetunset0. 简介unsetunset

大模型(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下游表现,本文的研究思路和主要内容如下:

  1. 梳理典型的SDE设计方面,包括输入设计、输出设计和推理设计;
  2. 在一个典型下游场景下,通过大量的ID、OOD实验和6种常用LLMs,探究各种SDE设计选项的影响,从中发现规律;
  3. 根据规律,提出一种有效的SDE集成方案,并在多个新的任务、新的LLMs上验证了其稳定的有效性;
  4. 进一步探究了SDE背后的机理,分析PE和SDE是否存在关联关系。

unsetunset1. 如何设计微调样本,是一个问题unsetunset

我们希望大模型解决的下游任务,往往较为复杂。举一个例子,多方面情感分析(Multi-Aspect Sentiment Analysis,MASA),是一个常见的极具商业价值的应用场景,但是其涉及到的模型输入、预测往往是比较复杂的。下图是一个MASA任务的示意图:

如图所示,某用户针对餐厅写了一段详细点评,其中涉及了很多方面的评价。作为餐厅的一方,或者提供情感分析的服务商,我们希望对大量类似的评论进行多方面情感分析,会有一批我们预先定义的、比较关心的方面,例如食品评价、饮料评价、卫生条件、价格水平、服务态度、停车方便程度等等。MASA任务的目标就是一次性对所有方面进行情感分析,可以看出,LLM处理对于这样的任务,可能涉及到较为复杂的输入、输出设计。

经过分析和一些预先的实践经验,我们对典型的样本设计进行了分类——输入设计、输出设计、推理设计,并提出其中涉及到的一些典型的 SDE 设计选项(options):

三类 SDE 设计选项

输入(Input)设计选项

输入设计方面,我们可能会面临如下选择:

  1. 指令的放置问题:指令是大模型微调的重要的元素,一般包含对任务的描述、输入输出的定义等。是否要添加指令(instruction)?指令应该放置在任务文本(例如评论)前面还是后面?这些均是需要考虑的问题。对此,我们设置了三种选项:Inst-last, Inst-first 以及 No-inst.
  2. 是否建模输入:有大模型训练微调经验的人可能会发现,习惯上,在对大模型进行指令微调的时候,常见做法是不对输入部分进行建模(记为No-MI)。而如果使用模型预训练同样的方式的话,则应该将输入输出是为一个整体进行建模,我们记为MI。虽然诸如 LLaMA等模型默认采用No-MI的方式,但微调时二者的差异尚未有定量的研究。

至于输入本身的内容(例如应该如何编写指令),这里暂不考虑,我们认为是输入本身的波动。

输出(Output)设计选项

输出设计方面,我们可能会面临如下选择:

  1. 输出的格式:复杂的任务,可能会涉及到多个预测目标(例如MASA任务中需要对多个方面同时输出预测),因此输出格式的设计成为需要考虑的问题。从最自然的方式,到最结构化的方式,我们设置了Natural, LinesJSON三种选项。
  2. 对未提及目标的处理:当存在多个预测目标时,常常会有部分目标并未在任务文本中出现(例如MASA任务中可能用户只写了部分方面的评价;NER任务中,文本中只出现了部分实体类型),对于这部分目标如何处理,我们设置了两种选项:直接忽略,不进行输出(记为 OU,omitting unmentioned)或者放置占位符(记为 PU,placeholding unmentioned)。
  3. 文本/数值标签:针对大模型,我们一般会采用文本形式的标签,而一些实践表明,数字标签可能能让模型输出更加稳定,因此我们可能面临文本标签(TxtLabel)和数值标签(NumLabel)两种选择。

推理(Reasoning)设计选项

除了输入和输出之外,我们还额外考虑了一个更加全局的设计选择——推理设计。CoT是一种典型的提升模型推理能力的PE技巧,因此,我们猜测类似CoT的样本设计,可能也会影响LLM微调后的效果。因此,我们设置了No-CoT, CoTR-CoT 三种推理设计选项。在使用CoT样本设计的时候,我们需要对样本额外标注一个推理的部分,可以是描述、解释或者原文抽取等,放置在预测部分的前面,从而让模型学习“先思考再预测”。R-CoT作为对照,则是将推理部分放置在预测部分的后面,即“先预测再解释”。

值得强调的是,PE中CoT是一种低成本的技巧,因为只需要添加一个咒语,或是提供极少量的推理实例即可,而针对微调样本进行CoT设计,则成本相对高昂,因为我们需要对每一个微调样本都添加推理方面的标注。

以上三个方面的设计选项,可以参照上面示意图中给出的例子来理解,更详细的解释,请参考论文原文。

unsetunset2. 不同的设计选项,各有什么影响?unsetunset

关于这个问题,我们进行了丰富的实验探究,来看看上一节中讲到的每一个设计选择,都有什么样的影响。

实验设置

任务和数据:

我们使用MASA作为实验场景,由合作公司提供真实业务场景中的数据(中文)和标注,包含了两个领域的方面情感标注:

D1: 食品、饮料、价格、卫生、服务态度、停车情况

D2: 交通便利程度、排队情况、上菜速度、装修情况、噪音情况

基于这两个领域,我们设计了 2 组In-Domain (ID) 任务和 2 组Out-of-Domain (OOD) 任务:D1->D1, D2->D2, D1->D2, D2->D1。对于OOD任务,我们在前一个领域上进行训练,然后在后一个领域上进行测试。

模型:

我们为了探究样本设计是否在不同LLMs上存在差异/一致性,我们采用了3个系列的 6 种被广泛使用的开源模型:

  • Chinese-LLaMA2:使用了 7B 大小的 chatbase 两个版本,分别记为 c-llama2-chatc-llama2-base
  • InternLM:使用了 7B 大小的 chatbase 两个版本,分别记为 intern-chatintern-base
  • Baichuan2:使用了 7B 大小的 chatbase 两个版本,分别记为 bc2-chatbc2-base

模型微调均采用 LoRA 参数高效微调技术,其他微调方法均可使用。

测评指标:

我们从任务本身的理解能力(情感分析能力)和格式遵循能力两方面对模型微调效果进行评价,这是因为大模型使用文本生成的方式进行任务处理,存在天然的输出不稳定的风险,因此除了任务本身的测评指标之外,能够正确按照预定义的格式进行输出,也是非常值得关注的问题。具体详见论文。

实验结果分析

不同设计选项的影响(建议放大观看)

我们针对Input、output、reasoning都设置了baseline,然后通过变化其中一个选项,来探究该选择对模型性能的影响。每一种选项我们进行48次实验,包括了在6个模型、4个任务(2个ID和2个OOD)、2个训练大小(500和1000)上的实验,然后将ID、OOD内结果进行平均,不同训练大小结果进行平均,绘制了如上图所示的柱状图。

针对输入设计,我们有以下重要发现:

  1. 虽然LLMs已经很强了,但是添加指令确实能让微调效果更好:从图中可以看出,No-inst 方式,相比于baseline在多个LLMs上均有明显的下降,而且一个严重问题是,不添加指令的话,模型是无法进行OOD推理的。指令的一个重要意义就是激发模型本身的能力,因此配合微调之后,模型也拥有了很强大的OOD能力。
  2. 指令放在前面更好!这是一个很有意思的发现,6个模型共12组结果中,有11组结果中,Inst-first 效果都是优于 Inst-last,这体现了这一规律的通用性。仅仅改变指令放置的位置,就有这么明显统一的效果,是我们意想不到的。针对这个问题,我们猜测也许跟模型的注意力机制有关系,这方面的探究详见论文。
  3. 微调时,对输入建模有损性能:我们发现 MI 方式明显拖累了模型微调的性能,这可能是由于模型需要学习额外的跟任务输出无关的内容,针对下游任务,我们关心的是模型看到输入的内容之后,应该怎样输出,而看到输入的前半部分,后半部分是什么,则并不需要模型去学习。

输出方面,则有更加丰富的发现:

  1. Lines 是一个优秀的自然表示和结构化表示的折中方案:Natural是最自然的拼接方式,而JSON则是最格式化的方式。其实我们一开始预期 JSON 会最好,因为我们日常实践中,JSON是经验中比较常用的方案,然而实验的结果表明,Lines的方式可能更好。
  2. Base 模型更相似,而 Chat 模型各有各的不同:在各种输出设计的实验中我们发现,三个系列的 Base 模型提现出了明显的一致性,而 Chat 模型则没有。我们猜测这是由于不同系列模型在SFT或者RLHF阶段使用的数据有显著不同,而预训练阶段,由于训练方式、训练数据更加通用,因此表现出的特点也更加相似。
  3. Base 模型更喜欢自然的格式,而 Chat 模型能接受更格式化或者更复杂的格式:我们看到,Base 模型中,JSON 格式表现较差;相反,Chat 模型中,Natural 则是最差的方案。这说明 Chat 模型在指令微调阶段,可能使用了更加格式化更加复杂的格式进行训练。
  4. 文字标签明显优于数值标签。
  5. 使用占位符来处理未提及的目标明显更好:这也是我们觉得十分有意思的一个发现!例如我们有6个预定义的方面,但是某评论中只出现了2个方面的描述,那么我们在标注输出的时候,就对剩下的4个方面,都使用占位符(比方使用“方面x:未提及”),而非忽略不输出,可以取得明显更好的效果。关于这一点我们的解释是,使用占位符,可以保持格式的一致性,虽然增加了一定的输出成本,但让模型更容易学习。

推理方面,我们有以下结论:

  1. CoT 设计对于ID任务上没有明显效果,但是在OOD场景下效果明显:OOD任务上,CoT 方式明显提升了模型泛化性能,但是在ID上效果不明显,甚至有的还有损害,这可能因为ID任务更简单,所以CoT本身增加的训练成本抵消掉了其在这种场景下的增益。
  2. “先思考再预测”比“先预测再解释”更好:对比R-CoT和CoT可以看到,总体上CoT还是明显更优的,这说明,单纯增加推理部分还不够,顺序也十分重要。

再来看看格式遵循方面的表现:

总体上可以看出:

  • Inst-first 虽然有助于模型的理解能力,但其格式遵循能力却比 Inst-last 更差:从图中可以看到,在部分模型上,Inst-first 存在稍微较高的格式错误率。
  • 设计越格式化,格式输出错误的几率就越低:JSON >= Lines > Natural,因此 JSON 格式在这方面表现非常优秀。
  • 部分设计则表现地非常不稳定,包括 MI, NumLabel 和 CoT,因此在设计样本时,这些设计选项可能需要谨慎使用。

值得注意的是,任务理解能力和格式遵循能力在实际应用中可能是两个互补的方面,需要根据业务需求进行权衡。

unsetunset3. 一个稳定优异的样本设计方案unsetunset

通过前面的大量实验,我们发现了一系列在多种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, NaturalOU 选项,我们预期该方面应该比 ES-SDE 更差。

除此之外,我们还采用了一种经验主义方案——heuristic strategy,借鉴于其他学术论文中对某些下游任务根据人为经验而设置的prompt设计。其输入上类似于本文中的 Inst-first 和 OU,但输出格式则使用了一种类似List的方式。

我们使用了 3 个新的复杂下游任务数据集和 2 个新的 LLMs 来对上述方面进行对比:

  • GENIA 数据集:一个分子生物学领域的嵌套实体识别(Nested-NER)任务,一个经典的较为复杂的NLP任务;
  • MAVEN 数据集:一个开放域事件抽取任务,我们使用了其中的10种事件进行实验,要求判断所有事件类型并提取触发词;
  • Review11 数据集:我们自行收集的多方面情感分析任务数据集,包含11个方面。

对于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 生成的微调样本具有极高的质量。

unsetunset4. 进一步思考:能通过 Prompt 预测什么是好样本吗?unsetunset

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有一些一致的模式:

  • Inst-first,对于 PE 和 SDE 都是更有效的设计;
  • CoT 的使用,均能提升效果;

然而,还有一些明显的不同:

  • OU 这种设计,在 SDE 中是一种对各种 LLMs都明显不好的设计,然而在 Zero-shot或者ICL中,其表现在一些模型中则效果明显强于 PU;
  • 在SDE中,对于 c-llama2-base 和 intern-base 模型, Natural > Lines ,然而 PE 中却正好相反;
  • 无论是 prompt 还是 prediction 的 PPL,都显示 JSON > Natural > Lines,这跟SDE中的结论差异较大。

这些结果表明:好的 prompt 可能并不能转化成好的 sample,PE 无法直接指导 SDE。这个发现为未来的研究挖下了一个新坑,期待有更多的学者能一起探究 SDE 背后的机理,从而帮助大模型更好地发挥其自身潜力,助力大模型的下游场景落地。

unsetunset总结unsetunset

本文提出了样本设计工程(Sample Design Engineering, SDE),系统性地探究了如何设计更好的大模型下游微调样本。通过在6个常用大模型上进行的一系列ID和OOD实验,我们揭示了诸多对下游微调有显著影响的样本设计选项,发现了一些有趣的规律。基于此,我们提出了一种鲁棒的样本设计方案,在3个复杂下游任务上均取得了优异且稳定的性能,大幅超越经验主义的样本设计。进一步的对PE和SDE关系的实验分析说明了在零样本/少样本推理下好的prompt,不一定能指导我们设计好的下游微调样本,这表明了SDE背后复杂的机理,期待更多的后续研究。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-04-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SimpleAI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • unsetunset0. 简介unsetunset
  • unsetunset1. 如何设计微调样本,是一个问题unsetunset
    • 输入(Input)设计选项
      • 输出(Output)设计选项
        • 推理(Reasoning)设计选项
        • unsetunset2. 不同的设计选项,各有什么影响?unsetunset
          • 实验设置
            • 实验结果分析
            • unsetunset3. 一个稳定优异的样本设计方案unsetunset
            • unsetunset4. 进一步思考:能通过 Prompt 预测什么是好样本吗?unsetunset
            • unsetunset总结unsetunset
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档