首页
学习
活动
专区
圈层
工具
发布
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系列17. LLM对齐方案再升级 WizardLM & BackTranslation & SELF-ALIGN

话接上文的指令微调的样本优化方案,上一章是通过多样性筛选和质量过滤,对样本量进行缩减,主打经济实惠。这一章是通过扩写,改写,以及回译等半监督样本挖掘方案对种子样本进行扩充,提高种子指令样本的多样性和复杂度,这里我们分别介绍Microsoft,Meta和IBM提出的三个方案。

Microsoft:WizardLM

WizardLM: Empowering Large Language Models to Follow Complex Instructions https://github.com/nlpxucan/WizardLM 要点:使用prompt对种子指令样本进行多样化,复杂化改写可以有效提升模型效果

wizardLM提出了一套指令改写的方案Evol-Instruct对原始指令样本进行改写,改写后的指令用于微调模型显著超过了之前Vicuna使用ShareGPT微调LLAMA的效果,甚至在复杂指令上号称超过ChatGPT。

指令改写是使用大模型直接进行的,分成深度改写和广度改写两个类型,其中深度改写有5种不同的改写指令,广度改写有1种改写指令。Evol-Instruct对初始的指令集,也就是52K的Alpaca指令,总共进行了4轮改写,每轮改写会等权重随机选择一种深度、广度改写指令,经过过滤后总共得到了250K的改写指令用于模型微调。下图是一个指令改写的示例

下面我们具体看下改写指令是如何设计的

深度改写

深度改写把指令改写的更加复杂,包括加入限制条件,指令复杂化,指令具象化,增加推理步骤,输入复杂化等5种类型的指令。以下是加入限制条件的prompt指令,以下指令控制每次改写增加的字数,以及改写的程度,每次只增加部分难度,这样通过多轮的改写,就可以得到不同难度,多样性更高的指令集。

其他的四类prompt的差异主要在高亮部分,分别为

  • 指令复杂化:If #Given Prompt# contains inquiries about certain issues, the depth and breadth of the inquiry can be increased
  • 指令具象化:Please replace general concepts with more specific concepts.
  • 增加推理步骤:If #Given Prompt# can be solved with just a few simple thinking processes, you can rewrite it to explicitly request multiple-step reasoning.
  • 输入复杂化:You must add XML data format text as input data in Rewritten Prompt

广度改写

广度改写的目的就是为了扩充指令覆盖的范围,包括更多的话题,技能等等

改写基本是论文最大的亮点,除此之外的细节就不多细说啦。通过4轮改写,加上简单的样本过滤后得到的250K指令样本用于模型微调,效果上在收集的Evol-Instruct测试集,Vicuna的测试集,以及更高难度的测试集上WizardLM的效果都略超过vicuna还有alapca。但略有些奇怪的是vicuna似乎表现还略差于alpaca?Anyway, LLM时代评估指标的置信度都有限,方法学到手就好,模型表现莫要太当真.......

Meta:BackTranslation

Self-Alignment with Instruction Backtranslation ClueWeb数据集:https://lemurproject.org/clueweb12/specs.php Open Assistant数据集:https://huggingface.co/datasets/OpenAssistant/oasst1 要点:结合质量过滤和半监督的指令样本挖掘方案扩充种子样本,多次迭代后可以提高模型效果

对比以上WizardLM从指令侧入手,通过改写指令来生成更多样,复杂的指令样本,来扩充种子样本集。Back Translation则是用了半监督的思路,从输出侧入手,通过从网络上爬取优质的人工编辑的内容作为输出,并为这些输出配上合适的指令来扩展已有的指令样本集。

因为是先有输出再有输入,所以论文使用了回译来命名此方案,核心两个步骤如下

1. Self-Augmentation

指令生成部分,论文先使用Open Assistant里面人工标注的3200指令样本数据作为种子数据来训练LLama模型,得到初版的对齐模型。SFT训练和常规略有不同,采用了反向对齐,也就是给定Output生成Instruction(P(X|Y))的条件生成任务。

然后论文针对爬取的网页数据,经过清洗后作为指令样本的输出,然后使用以上模型直接推理得到指令本身,对应以上P(X|Y)的条件生成任务。

这一步其实感觉也可以使用类似APE的prompt逆向工程方案来实现,让模型基于输出猜测最合适的指令是什么。这样SFT的模型可能也能完成这个步骤?

2. Iterative Self-Curation

第二步考虑以上生成的指令样本对可能存在很多低质量样本,因此需要进行质量过滤。质量过滤的模型同样是基于3200个种子指令样本,进行常规SFT得到初始模型。然后基于Prompt模板对以上得到的指令样本进行1-5分的绝对打分。主要评估回答是否明确有用无争议,能合理回答指令中的问题,并且回答的主语模型而非其他第三人称,Prompt如下,

同时论文使用了多轮迭代的训练,以上第一轮打分过滤出的高分样本,会和种子样本混合,重头进行SFT。然后微调后的模型会再用来对样本进行打分过滤,然后再混合重新SFT。

在SFT的样本构建中,论文使用了不同的Prompt来区分样本是来自人工标注的种子集,还是来自机器生成的扩展集,前者的prompt=“Answer in the style of an AI Assistant,后者的prompt=Answer with knowledge from web search,从而降低样本间不同回答format带来的模型学习混淆。

效果

整体效果评估,论文使用了混合测试集包括Vicuna,self-instruct, opena assistant,koala,HH-RLHF, LIMA等总共1130个指令数据。使用人工进行两两偏好对比,以下使用回译训练的HumpBack优于LIMA等质量过滤微调模型,以及Davinci,Claude等闭源模型。

同时论文进行了消融实验,对训练数据的数量和质量的影响做了进一步的测试,对比了未使用Self-Curation过滤的数据集,4轮过滤的数据集和5轮过滤的数据集,不同的样本量带来的效果差异,主要结论有两个

  1. 高质量样本集提升数量会带来效果提升:这里的结论和上一章LIMA的结论有矛盾顿,LIMA中在过滤后的Stack Exchange数据集上增加采样比例并不会提升效果。猜测这里可能的差异有:
  2. Stack Exchange的指令丰富程度可能低于回译指令,和AlpaGasus中指令丰富程度有限的话增加样本量并不会带来效果提升的结论一致
  3. Stack Exchange本身的指令质量低于回译,导致数量增加带来的效果增幅不明显。Anyway LLM时代一切结论都不可尽信,只是拓宽下思路,实际情况下处理问题还是要具体问题具体分析。
  4. 质量的影响大于数量: 在未过滤的数据集上提升量级不会显著带来效果提升,简单理解就是1个低质样本需要很多的高质量样本来弥补,当低质量样本占比太高的时候,无论如何提升样本量都不会提升效果。

IBM: Self Alignment

Principle-Driven Self-Alignment of Language Models from Scratch with Minimal Human Supervision https://mitibmdemos.draco.res.ibm.com/dromedary 要点:使用prompt规则让大模型Self-Instruct生成的推理样本更加符合人类偏好,部分代替RLHF阶段大量的人工标注

同样是改写方案,Self-Align在Self-Instruct的基础上上,通过引入对抗指令样本和3H相关的指令prompt,在SFT阶段就让模型进行偏好对齐。让模型先基于外化的偏好原则生成符合3H原则的回答,再通过SFT对齐把偏好内化到模型参数中,因为指令样本是Base模型自己生成的所以叫Self-Alignment。有些类似自监督,只不过样本特征被人工抽象成了人类偏好规则。

指令样本生成分成以下4个步骤

Self-Instruct生成指令

不熟悉Self-Instruct的同学,请先看解密prompt系列5. APE+SELF=自动化指令集构建代码实现,原始论文基于175个种子指令通过多轮的Bootstrap让大模型生成新的指令。

IBM论文在此基础上人工补充了20个不同主题的对抗种子指令。对抗样本我们在解密Prompt7. 偏好对齐RLHF章节针对Anthropic如何设计对抗样本进行了很详细的介绍,这里不再展开。IBM设计对抗样本的原则是模型在没有获取外部信息下无法回答,或者会回答错误的指令,例如询问天气,知识问答类的指令。通过补充这类种子指令,让模型在bootstrap过程中生成更多的对抗指令,从而通过指令微调的对齐注入3H(helpful+harmless+honest)偏好。

Self-Alignment生成回答

指令生成完,下一步就是需要让模型生成符合3H偏好的回答。论文的实现方案是通过规则指令+fewshot样例来实现。其中规则指令总共包含以下16条原则:1 (ethical), 2 (informative), 3 (helpful), 4

(question assessment), 5 (reasoning), 6 (multi-aspect), 7 (candor), 8 (knowledge recitation), 9 (static),10 (clarification), 11 (numerical sensitivity), 12 (dated knowledge), 13 (step-by-step), 14 (balanced & informative perspectives), 15 (creative), 16 (operationa)。

以下是附录中具体规则指令的前5条

而In-context的few-shot样本同样是固定的,few-shot的样本是为了指导模型如何遵守以上16条规则来进行指令回答,并加入了类似chain-of-thought的Internal Thoughts步骤,来强化模型在不同的上文中遵从不同的规则,如下

微调

以上两步机器样本构造后,经过过滤总共得到了260K指令样本,用于模型微调。注意微调阶段不会使用以上的16条规则指令和few-shot样本,而是会直接使用回答部分。因为需要模型直接把3H原则指令通过微调内化到模型参数中,而不是基于条件上文进行符合偏好的回答。

微调的指令如下

微调后作者发现,以上构造的样本在微调模型后存在两个问题

  • 部分回答过于简短:个人感觉这和Prompt+few-shot的长度过长有关。因为条件上文过长,限制了下文的生成范围,导致回答过短。通俗点就是命题作文你的要求太多自然就没啥好写的了。
  • 部分回答未直接回答用户指令,而是去复述wikipedia上的内容:个人感觉这同样是以上的规则指令模型未能完全理解,影响了回答质量。

这里其实有个疑问,就是在大量指令和In-Context条件上文下,构造出的模型回答是否本身就是有偏的???而去掉条件上文直接去拟合回答后得到的模型是否也是bias的?这个问题要是有想法欢迎评论区留言~

为了解决以上问题,论文使用第一步对齐微调后,已经内化3H原则的模型,使用以下的Prompt指令引导模型重新对以上的260K指令进行回答生成,引导模型给出更丰富,跟全面的回答。然后再使用生成的样本进一步微调模型。

效果上在TruthfulQA的事实性评测,以及Big-Bench的3H评测上,微调后的模型相较LLama都有显著的提升。

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


Reference

  1. Self-instruct: Aligning language model with self generated instructions
  2. SELF-QA Unsupervised Knowledge Guided alignment
  3. Self-Consuming Generative Models Go MAD
  4. Tagged back-translation.
  5. Becoming self-instruct: introducing early stopping criteria for minimal instruct tuning

我正在参与2023腾讯技术创作特训营第二期有奖征文,瓜分万元奖池和键盘手表

下一篇
举报
领券