首页
学习
活动
专区
圈层
工具
发布
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系列11. 小模型也能思维链推理

前两章我们分别介绍了思维链的多种使用方法以及思维链(COT)的影响因素。这一章更多面向应用,既现实场景中考虑成本和推理延时,大家还是希望能用6B的模型就不用100B的大模型。但是在思维链基础和进阶玩法中反复提到不论是few-shot还是zero-shot的思维链能力似乎都是100B左右的大模型才有的涌现能力,而在小模型上使用思维链甚至会带来准确率的下降。

至于为啥小模型无法进行思维链推理,论文6通过把小模型回答错误但大模型可以回答正确的问题进行归纳总结,认为小模型的COT能力受到有限的语义理解和数学计算能力的限制。不过我们在实际尝试中发现小模型的few-shot理解能力似乎是更大的短板,表现在小模型无法很好理解抽象few-shot中的推理模板和样本间的共性。

不过以上的观点都是针对模型的先天能力,那我们是否可以把思维链推理作为一种生成风格,或者NLP任务类型,通过微调让模型获得COT能力呢ψ(`∇´)ψ

想要让小模型拥有推理能力,多数方案是通过思维链样本微调来实现的,以下论文1-44篇论文的核心差异就在COT样本构造和微调方式。以下我们把几篇论文合在一起来说,下图来自3

COT样本

以下Reference中的论文都是使用大模型来生成COT样本不过在数据集,COT样本构建和过滤机制上存在差异。

论文1使用了GSM8k的数据集,用Code-Davinci-002随机生成40个的思维链推理,选择答案正确的一条作为训练样本。样本生成这块写的相对比较模糊。

论文2优化了COT样本准确率。使用Palm540B和GPT3 175B模型,用8个few-shot样本来引导模型生成COT,这里为了提高大模型COT的准确率,作者修改了指令,在few-shot+question之后会直接给出正确答案作为Hint,来引导模型倒推出正确的COT,同样是只过滤答案正确的样本

论文3优化了思维链的多样性。考虑同一个问题其实有很多种解法,以及不同的解法间往往存在逻辑共性,与其让模型拟合单一的推理结果,不如让模型从多个推理路径中去抽象重要信息。因此论文提出了diverse reasoning,每个样本用text-davinci-002生成多个思维链,保留所有答案正确且推理逻辑不同的样本。并且在论文中验证了一个样本生成更多思维链会带来显著的效果提升

论文4优化了COT数据集的多样性,整了个COT Collection数据集包含1.88M的COT样本分布如下。具体的数据筛选和构建逻辑详见论文。使用了Codex来生成思维链,方案融合了2和3

模型训练

不同论文选择了不同的student模型,指令样本构建和指令微调方式,简单对比如下

论文

微调模型

微调样本

微调方式

1

FlanT5 250M~11B

Few-shot-COT+Zero-shot-COT+Few-shot-Answer Only

蒸馏:Top5 Token的KL距离

2

T5 60M~11B

Zero-shot-COT

指令微调SFT

3

GPT-3 0.3B~6.7B

prompt模板Zero-shot-COT

指令微调SFT

4

FlanT5 T0

Few-Shot-COT + Zero-shot-COT

两步指令微调

以上不同的指令样本Looklike如下,差异包括是否有few-shot上文,是否有COT推理

在指令样本构建上多数是直接输入问题,输出COT思维链的,但个人其实更偏好few-shot的COT方案。因为在实际应用中,其实需要分析和推理的很多场景都是非标准化的,远远不是解个数学题或者QA这类标准化问题可以覆盖。这种情况下需要定制场景所需的推理逻辑,这时zero-shot肯定就不行了,需要few-shot来给出不同场景所需的不同推理链路。例如问诊的流程要先问当前症状,病程,病史,用药,再基于用户不同的回答,选择是化验,拍片,还是听诊开药等等。因此大模型和小模型的能力差异除了小模型自身的推理能力有限,还有小模型的In-Context理解能力有限,而few-shot样本微调被证明可以提升模型In-context理解能力。

再说下微调的部分,除了常规的指令微调方案之外,1采用了蒸馏方案,不熟悉蒸馏的可以先看下Bert推理太慢?模型蒸馏。简单来说就是让Student模型拟合Teacher模型的分布,分布可以是对齐输出层也可以进一步对齐模型中间层,损失函数一般是两个分布的KL散度或者MSE。这里作者使用的蒸馏方案是对齐输出层分布,考虑OpenAI的接口每次只返回Top5 Token对应的概率,因此只对Student模型每步解码的Top5 Token计算KL散度作为loss。蒸馏过程还有一些例如tokenizer对齐的细节,详见论文1

论文4采用了两步微调,第一步在指令微调模型的基础上,使用范围更广的COT Collection样本集对模型进行COT微调,再在该模型的基础上,使用单一领域/任务的COT样本进一步微调,效果会有进一步提升。这一点其实可能说明COT推理本身除了是一种生成风格,也是一种模型能力,所以不同的推理数据集之间存在可迁移性,我们在单任务推理中混入数学COT也发现有效果提升。

Insights

效果其实不用太多说,小模型在经过以上COT训练后,在对应数据集上都有很显著的能力提升。考虑不同论文使用的模型checkpoint不同,Benchmark数据集的划分也不同,所以可比性不高,以及现在的很多random split的方案真的说不清楚是否有信息泄露问题。建议大家在自己的业务使用中去寻找更合适的方案。这里想更多说下论文中提到的一些insight

  • COT能力提升以其他任务能力下降为代价

论文1发现在数学COT能力提升的同时,模型在BigBench(BBH)上的打分会出现显著的下降,并且这个过程是随微调逐渐发生的。论文指出的可能原因是小模型能承载的能力有限,因此不像大模型可以许广泛任务上有很好的表现,小模型单一能力的提升,可能会以通用能力损失为代价。虽然这里我有些存疑,感觉BBH的效果下降也可能是因为COT的生成风格和很多通用任务的生成风格存在差异,如果在COT微调时在中加入额外的指令,把直接生成推理转化成基于指令推理的条件生成任务,可能会降低对其他任务的影响。

  • 小模型COT也存在规模效应

论文几乎都提到了这一点,简单说就是越大的模型越好,所以在ROI允许的范围内选择最大的小模型哈哈~

  • 使用Few-shot-COT微调,会同时提升zero-shot和few-shot能力,反之不成立

以上发现也是1使用混合样本(fewshot+zeroshot+无cot)样本进行微调的原因。其实比较好理解,因为COT推理的生成风格和其他指令任务是存在差异的(哈哈zero-shot-cot在我看来就像是无缘无故,别人问你问题,你本来可以直接给个答案,结果你突然开启柯南模式开始叭叭的推理)。因此如果用zero-shot-cot微调,会直接影响模型的解码分布,而使用few-shot-cot微调,充分的上文让模型更多拟合COT条件解码概率,只会有部分能力迁移到无条件解码概率,且对其他指令任务的影响也会更小。

  • 多步推理任务上COT微调可能比常规指令微调效果更佳,模型规模效应更明显

论文3对比了在同一个任务上使用COT样本微调和使用只有答案的常规样本微调,整体上在需要多步推理的任务上,COT微调有更明显的模型规模效应,随模型变大COT微调的效果会显著超过常规微调。

  • COT数据集的质量和数量都重要

论文2论证了COT数据集存在规模效应,样本越多,微调效果越好,这里的规模效应可能更多来自思维链的多样性覆盖。而论文3论证了相同数量的COT样本,人工筛选的正确推理样本对比从模型预测答案正确的COT中采样相同量级的样本,效果会有显著提升。毕竟1个错误的样本可能需要10个正确的样本来纠偏,因此在保证数据集多样性和规模的同时,更有效的样本过滤逻辑也很重要。

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

论文

  1. Specializing Smaller Language Models towards Multi-Step Reasoning
  2. Teaching Small Language Models to Reason
  3. Large Language Models are Reasoning Teachers
  4. The CoT Collection: Improving Zero-shot and Few-shot Learning of Language Models via Chain-of-Thought Fine-Tuning
  5. Chain-of-Thought Prompting Elicits Reasoning in Large Language Models
下一篇
举报
领券