首页
学习
活动
专区
圈层
工具
发布
50 篇文章
1
解密Prompt系列1. Tunning-Free Prompt:GPT2 & GPT3 & LAMA & AutoPrompt
2
解密Prompt系列2. 冻结Prompt微调LM: T5 & PET & LM-BFF
3
解密Prompt系列3. 冻结LM微调Prompt: Prefix-tuning & Prompt-tuning & P-tuning
4
解密Prompt系列4. 升级Instruction Tuning:Flan/T0/InstructGPT/TKInstruct
5
​解密prompt系列5. APE+SELF=自动化指令集构建代码实现
6
解密Prompt系列6. lora指令微调扣细节-请冷静,1个小时真不够~
7
解密Prompt7. 偏好对齐RLHF-OpenAI·DeepMind·Anthropic对比分析
8
解密Prompt系列8. 无需训练让LLM支持超长输入:知识库 & Unlimiformer & PCW & NBCE
9
解密Prompt系列9. 模型复杂推理-思维链基础和进阶玩法
10
解密Prompt系列10. 思维链COT原理探究
11
​解密Prompt系列11. 小模型也能思维链推理
12
解密Prompt系列12. LLM Agent零微调范式 ReAct & Self Ask
13
解密Prompt系列13. LLM Agent指令微调方案: Toolformer & Gorilla
14
解密Prompt系列14. LLM Agent之搜索应用设计:WebGPT & WebGLM & WebCPM
15
解密Prompt系列15. LLM Agent之数据库应用设计:DIN & C3 & SQL-Palm & BIRD
16
解密Prompt系列16.LLM对齐经验之数据越少越好?LTD & LIMA & AlpaGasus
17
解密Prompt系列17. LLM对齐方案再升级 WizardLM & BackTranslation & SELF-ALIGN
18
解密Prompt系列18. LLM Agent之只有智能体的世界
19
解密Prompt系列19. LLM Agent之数据分析领域的应用:Data-Copilot & InsightPilot
20
解密Prompt系列20. LLM Agent 之再谈RAG的召回多样性优化
21
解密Prompt系列21. LLM Agent之再谈RAG的召回信息密度和质量
22
​解密Prompt系列22. LLM Agent之RAG的反思:放弃了压缩还是智能么?
23
解密Prompt系列23.大模型幻觉分类&归因&检测&缓解方案脑图全梳理
24
解密prompt24. RLHF新方案之训练策略:SLiC-HF & DPO & RRHF & RSO
25
解密prompt系列26. 人类思考vs模型思考:抽象和发散思维
26
解密prompt25. RLHF改良方案之样本标注:RLAIF & SALMON
27
解密prompt系列27. LLM对齐经验之如何降低通用能力损失
28
解密Prompt系列28. LLM Agent之金融领域智能体:FinMem & FinAgent
29
解密Prompt系列29. LLM Agent之真实世界海量API解决方案:ToolLLM & AnyTool
30
解密Prompt系列30. LLM Agent之互联网冲浪智能体们
31
​解密Prompt系列31. LLM Agent之从经验中不断学习的智能体
32
​解密Prompt系列33. LLM之图表理解任务-多模态篇
33
解密Prompt系列32. LLM之表格理解任务-文本模态
34
​解密prompt系列34. RLHF之训练另辟蹊径:循序渐进 & 青出于蓝
35
解密prompt系列35. 标准化Prompt进行时! DSPy论文串烧和代码示例
36
解密Prompt系列36. Prompt结构化编写和最优化算法UNIPROMPT
37
解密Prompt系列37.RAG之前置决策何时联网的多种策略
38
解密Prompt系列38.多Agent路由策略
39
解密prompt系列39. RAG之借助LLM优化精排环节
40
解密prompt系列40. LLM推理scaling Law
41
解密prompt系列41. GraphRAG真的是Silver Bullet?
42
解密prompt系列42. LLM通往动态复杂思维链之路
43
解密prompt系列43. LLM Self Critics
44
解密prompt系列44. RAG探索模式?深度思考模式?
45
解密Prompt45. 再探LLM Scalable Oversight -辩论、博弈哪家强
46
解密prompt系列46. LLM结构化输出代码示例和原理分析
47
解密prompt系列47. O1 Long Thought的一些特征分析
48
​解密prompt系列48. DeepSeek R1 & Kimi 1.5长思维链 - RL Scaling
49
​解密prompt系列49. 回顾R1之前的思维链发展
50
解密prompt系列50. RL用于优化Agent行为路径的一些思路

解密prompt系列27. LLM对齐经验之如何降低通用能力损失

前面我们已经聊过众多指令微调的方案,这一章我们重点讨论下如何注入某一类任务或能力的同时,尽可能不损失模型原有的通用指令理解能力。因为在下游或垂直领域应用中,我们设计的推理任务风格或形式,往往很难通过prompt来稳定实现。这种情况下就会依赖微调来注入稳定的推理风格,但同时在部分场景下我们又需要模型微调前的通用指令理解能力。虽然理论上说有得必有失,但成年人真的不想做选择!这里我们讨论两种方案,来尽可能降低通用能力的损失,一种数据方案,一种训练方案。

Two Stage Finetune - ProMoT

Preserving In-Context Learning ability in Large Language Model Fine-tuning

TWO-STAGE LLM FINE-TUNING WITH LESS SPECIALIZATION AND MORE GENERALIZATION

先说训练方案,论文先是分析了模型在微调过程中能力损失的一个主要原因是Format Specialization,也就是模型过拟合了微调任务的输出格式。举几个例子

  • 下游是二分类任务的,微调之后即便丢掉分类任务的指令,模型的输出还是True/False,损失了对话和其他指令理解能力
  • 下游是摘要任务的,微调之后即便丢掉TL;DL的总结指令,你让模型翻译模型还是给你总结。这个在当前推出的一些长文本无敌的基座模型上可能会看到,他们后期的指令微调中指令分布都比较偏向于长文本的QA和总结,其他能力会略弱
  • 通过微调让模型学习拒绝回答的,你会发现你的模型可能在很多不该拒绝的场景也拒绝你

其实核心就是我们本想让模型学习条件生成能力,也就是在分类指令时分类,摘要指令下摘要,该拒绝的场景下再拒绝。但论文通过分析发现在SFT微调任务中,模型是先无脑拟合输出格式,例如二分类的True/False,拒绝里的对不起,在微调后期才开始学习input和ouput之间的关系(Semantic Relation),例如何时该分类,何时该拒绝。

那能否把下游任务的Task Format先行注入到额外的参数中,之后把这部分信息喂给模型,让大模型微调直接学习Semantic Relation,这样在稳定注入新的Format的前提下,尽可能不影响其他通用指令的理解能力

论文提出了两阶段微调,第一阶段也使用了谷歌提出的Prompt Tuning用来学习推理格式,第二阶段再进行全量微调。如下

第一阶段Prompt Tuning,简单说就是冻结大模型,只微调Embedding层的一组虚拟Token,这一组虚拟Token学习的就是下游推理任务Format的任务表征。

这里可以反过来思考,之前有论文提出任务指令(prompt)其实可以压缩成一个Task Vector的任务表征用来引导模型给出不同的推理输出;那反过来我们想让模型学习一种推理风格/任务,其实就是构建该Format对应的Task Vector,以及Task Vector对应的任务指令的过程。只不过prompt tunning的prompt使用的是虚拟Token。想更多了解Prompt Tuning的童鞋看这里解密Prompt系列3. 冻结LM微调Prompt: Prefix-tuning & Prompt-tuning & P-tuning

第二阶段Fine-tuning默认在输入层Embedding前拼接Prompt Embedding,并冻结这部分Embedding,然后全量微调大模型, 让模型在已知输出格式的前提下,学习Input和Output格式之间的Semantic联系。之前有些疑惑这里为何要冻结prompt,后来又想了想应该是为了避免模型再把Task Format相关信息更新到模型内部参数中,但感觉不冻结的方式也值得测试下。

几个值得聊聊的细节

  1. 第一阶段微调能否用Lora,从Prompt实际学习的是推理格式的任务表征这个逻辑原理来说其实Adapter类的微调方案,似乎并不合理。论文测试后也发现Lora的效果并不好
  2. 能否把两个阶段合二为一,既加上一个虚拟Prompt,同时微调模型和prompt,论文测试后发现效果和SFT相差不多,都会有过拟合。毕竟这种微调方式无法引导模型把格式学到Prompt Embedding上。

效果上,论文在mT5模型上对比了SFT,Prompt-Tuning,和ProMoT在下游微调任务,和微调任务之外其他通用任务的能力对比。发现ProMoTe可以在分类,翻译,NLI,QA等任务微调上对比全量微调都有更好的效果。同时以分类任务为例,在分类任务上进行微调后,在QA等其他任务上相比基座模型能力也没有显著下降,作为对照组的SFT会有显著的通用能力的下降。

Dual-Stage Mixed Finetuning - DMT

How Abilities in Large Language Models are Affected by Supervised Fine-tuning Data Composition

Scaling Relationship on Learning Mathematical Reasoning with Large Language Models

DMT的论文主要探究了不同领域数据混合,以及混合训练策略对模型在多领域能力的影响。

1. 单领域Scaling curve

要想设计更合理的多领域混合训练策略,首先要确认不同领域样本模型学习的scaling curve。这个问题之前已经有很多论文讨论过,这里简单回顾下,如下图所示

  • 数学和代码等领域能力,会随样本量上升而持续提升,并且模型规模越大scaling curve越单调且陡峭。 这一点和我们的测试效果相似,数学和代码样本你就可劲加,加一点模型好一点,更多细节看上面Scaling的论文。
  • 通用指令能力,基本在1K(1/256的样本)的样本上效果就很好了,后续能力提升会比较慢,并且在不同规模的模型上差异相对有限。 这一点我们在前文讨论过详见LLM对齐经验之数据越少越好?

2. 多领域混合Scaling curve

明确单一领域的scling curve之后,我们来看多领域的数据混合,这里会分别讨论数据混合中的两个要点:整体量级和混合比例

  1. 整体量级:和以上单领域实验相同的5种不同采样比例,直接对三个领域的数据进行混合,和上面的单领域实验结果进行对比。观察下图会发现在低资源上领域混合会有提升,但在更大的样本量级上单领域微调效果会略好 一个可能的解释是在小量级样本上会有彼此的能力迁移,而当单领域信息逐步提升后信息冲突会逐渐显现

混合比例:为了进一步探究以上全样本混合训练中出现的信息冲突的来源,作者进一步做了控制变量的实验。固定一个领域(math和code合成一个领域)的样本量改变另一个领域的样本量,看不同比例数据混合的影响。主要结论有

  • 主领域样本还是越多越好
  • 当领域样本差异(输出格式/输入分布)较大时,通用领域数据对特殊领域影响有限
  • 当样本存在相似性时混合会带来冲突,但冲突和数据比例没有显著单调性

3. 训练策略影响

论文实验了不同训练策略的影响,包括多领域联合训练,有序训练(Code->Math->General),以及先训练Math+Code再训练general的有序混合训练。这几种策略之前也有很多论文做过测试,这里简单说下结论

  • 多领域联合训练:会更多学到特殊领域(Math+code),更多损伤通用能力。这块可以更多借用ProMoT的逻辑,因为特殊领域输出风格一致模型更容易学到,而通用领域输出风格更多样些
  • 有序训练和有序混合训练:只要是先训练领域能力再训练通用能力,因为灾难遗忘的原因,最终模型会把先学到的领域能力遗忘

在以上三种训练方案的基础上,论文提出了两阶段混合训练(DMT)如下

第一阶段是领域数据的训练,按照单领域scaling curve,这一部分的数据量越大效果越好,所以使用全量级的数学和代码进行训练。

第二阶段用于恢复通用能力,同时尽量避免有序训练带来的灾难遗忘。 这里使用了上面多领域混合的insight,领域数据的混合比例对通用能力影响较小;同时低资源混合带来的冲突较小。因为论文使用了1/256的领域数据和通用数据进行混合进行第二阶段的训练。在尽量避免第一阶段模型学到的能力丢失的基础上,帮助模型恢复通用能力。

效果上在LLaMA7B,13B,和33B的模型上,DMT的训练方案能在保留单领域训练绝大多数领域能力的基础上,保证模型通用能力不受损失,甚至略微有所提升。如果想要保留更多的领域能力,允许更多的通用能力损失,则可以适当提高第二阶段的领域数据占比,具体要数据集上case by case的测试。

想看更全的大模型相关论文梳理·微调及预训练数据和框架·AIGC应用,移步Github >> DecryPrompt

下一篇
举报
领券