在所有人都在谈论R1的今天,作为算法也是有些千头万绪无从抓起。所以这一章先复盘,我先按照自己的思路来梳理下R1之前整个模型思维链的发展过程。下一章再展望主要去看RL在Agent上的一些尝试,毕竟Agent规划和长思考的本质是非常像的,在优化中面临的问题也是类似的。

梳理大模型出来后的这两年时间,个人认为思维链的技术在R1出现之前,可以分成大致3个阶段(哈哈可能每个人都有自己的分类标准吧):

  • 大模型能思考,各式各样的思维链能不同程度提升模型在不同领域的效果
  • 外生慢思考:Inference Scaling正式提出,推理侧的范式逐渐收敛到MCTS
  • 内生慢思考:探索把推理侧的模型思考能力内化到模型内,包含以RFT为代表的各类训练方案,PRM为代表的打分方案,STaR为代表的各类样本优化方案

下面我们细说下每个阶段的一些代表方案

阶段1-模型能思考:思维链能提升任务效果

  • COT相关的各类论文可以直接看Github

开始讨论如何使用思维链来提升大模型效果的起点就是Let's think step by step的论文,它首次提出了Chain of Thought概念,也就是让模型先思考再回答可以有效提升任务完成效果。

之后差不多1年的时间里出现了很多探索如何优化COT方案的论文,主要集中在以下几个方向

  • 是否使用few-shot:zero-shot,few-shot
  • 自动选择few-shot样例:AutoCOT, Active Prompting等动态few-shot构建和选择方案,提升few-shot难度和多样性可以进一步提升思维链效果
  • 重点在思考形态调整:Tree of Thought,Graph of Thought,Tree-of-Mixed-Thought,Algorithm of Thought,
  • 重点在思考逻辑调整:Least-to-Most(分而治之),CogTree(假设检验),Step-Back(后退思考),HtT(演绎推理+归纳推理),Abstraction of Thought(抽象思维),Plan-and-Slove(系统思维)
  • 重点在思考角度的调整:DIVISE(多样性),Self-Consistency(一致性)

不难发现以上的论文还基本停留在,通过指令告诉模型你应该如何思考,或者通过few-shot像模型示范正确的思考方式,以及探索使用不同的逻辑思维方式来提升模型在各个领域的思考效果上。

同期结合Agent的概念,也出现了不少的论文是探索如何把COT和Action,工具调用进行融合,包括

  • 基础编排方式:ReACT,Self-Ask
  • 进阶编排方式:ART(多步调用),ReWOO(并发执行)
  • 领域COT领域:ToRA(数学推理),PAL(代码),好像还是啥化学生物领域整分子,化学结构啥的忘记叫什么了

第一阶段的大模型思维链还相对基础,主要停留在面向不同领域任务的Prompt设计,面向结果居多,并未深入探讨思维链的过程,什么时候使用思维链更好,以及为何思维链能提升推理的效果。

阶段2-外生慢思考: Inference Scaling理论提出

  • DeepMind: Scaling LLM Test-Time Compute Optimally can be More Effective than Scaling Model Parameters
  • SELF-REFINE: Iterative Refinement with Self-Feedback
  • GLoRe: When, Where, and How to Improve LLM Reasoning via Global and Local Refinements
  • PRM: Let's verify step by step
  • rStar-Math: Small LLMs Can Master Math Reasoning with Self-Evolved Deep Thinking

第二个阶段的代表论文是DeepMind提出的Inference Scaling概念,论文首次抽象并量化了思考的过程,以及可以带来的收益,核心观点是

  • 通过增加推理阶段的计算资源,可以显著提升LLM性能,且效率优于单纯扩大模型参数。例如,采用优化策略后,较小规模的模型在部分任务上可超越参数规模大14倍的模型,同时减少约4倍的计算资源消耗。这表明,测试时计算的合理分配能够以更低的成本实现高性能输出。
  • 适应性“计算最优”策略,论文提出根据问题难度动态调整测试时计算策略:
    • 简单到中等难度问题:LLM本身有能力生成合理的推理结果,那在推理阶段分配更多资源(深度or广度搜索),能显著弥补预训练截断的不足
    • 复杂问题:但是超越LLM本身能力的,即便在推理侧分配更多资源也没用,还是要更多预训练提升能力才可以
    • 通过预测问题难度并自适应分配计算资源,可以达到最优的资源分配

那结合DeepMind以及众多其他推理搜索的论文,我们可以总结归纳出来,推理阶段的思维链生成,包含两个核心能力也就是推理链路的生活能力和打分能力

  • 推理生成能力:推理链路的中间过程如何生成,以什么样的形态生成

    • 深度搜索:self-refine(RISE),self-reflection(GLoRE), 思考本身是串行的,整个流程就是思考->反思->优化->再思考
    • 广度搜索:Major-Vote,Best-of-N,Beam-Search
    • 深度+广度:MCTS,REBEASE等相比Beam-search的局部最优,复杂度更高的全局优化方案
  • 推理打分能力:如何选择更优的推理路径,从而指导以上的推理过程生成?
    • 基于结果的价值函数:ORM
    • 基于过程的价值函数:PRM,PRM + Lookahead
    • 基于蒙特卡洛模拟:根据每个节点通向最终正确答案的概率来计算节点打分

在Inference Scaling的基础上再进一步,很自然就会想到既然我们能通过在推理阶段海量的探索和打分找到相对更优的推理链路,那我们是否就能把这更优的推理链路直接通过训练内化大模型的参数中,这样在推理侧不就不需要这么高的推理资源了么?

那如何如何把外生推理搜索过程内化到模型中,既保留思考效果,又保证全场景泛化能力;以及是否能突破MCTS的上限,获得更稳定,质量更高的思考链路就是下一个阶段大家核心探讨的问题了。

虽然后面R1的推出让大家开始怀疑推理搜索技术的合理性,但可能殊途也能同归。如果搜索推理走到极致也能媲美O1的思考能力,例如rstart-Math已经部分跑通,在数学任务上只靠外生推理搜索就能让下模型在部分任务媲美O1的推理能力。只不过当前搜索推理的一个问题更多在非STEM问题的泛化上。

阶段3-内生慢思考:O1开启的Long Thought时代

下一个阶段,自然以跨时代的O1作为代表,也就是把更强思考能力内化到模型中的方案,可以分成以下两个部分

  • 如何进一步提升思考样本的质量:这一阶段的尝试多脱离人工标注,毕竟在思考任务上Scabality Oversight是最容易出现的,就是人类标注Golden Answer的上限很低,自优化,持续迭代优化是核心。
  • 如何把思考能力训练内化到模型中,如何提高训练的效率和泛化性

思考样本优化

首先是思考样本质量的提升方案,主要是以STaR为代表的模型自由化Bootstrap方案和OpenAI提出的Prover-Verifier对抗优化方案。 其中Bootstrap方案主要通过对模型生成的多个推理结果进行拒绝采样,筛选更优推理链路,再通过SFT训练进模型,再基于新的模型生成更优的推理链路再训练,这样反复迭代不断提升样本质量。R1的训练过程中,也用了类似的方案,就是RL训练得到R1-Zero后,会使用R1-Zero通过拒绝采样来构建大规模的思维链样本重新训练DeepSeek-V3。

而对抗优化的重心更多在Verfier,也就是随着大模型Generator能力的提升,对应Reward模型的能力也要随之提升,才能持续为模型提供有效的监督信号。所以会借助辩论,或者Proposal尝试迷惑Verifier等博弈对抗方案,来同时提升生成器和校验器的模型能力。

但最近常看R1的Reasong思考过程也让我产生了一个疑问:在训练过程中构造的COT,真的是过程越正确的思维链更好么?会不会基于PRM步骤打分得得到的更加正确的思维链,在一定程度上本身会抑制模型的反思能力,以及思维链的泛化性?毕竟中间过程都是正确的,类似于找到了整个思考链路中的Shortest Path,把反思,错误优化,尝试其他假设等基于错误思考节点的反思优化能力都抛弃掉了。而R1-Zero完全基于RL训练的思维链只基于目标优化,没有冷启动过程,反而不存在这个问题?

内化思考

其次是如何把长思考能力内化到模型参数中,方案还是主要集中在SFT上,但通过SFT训练的模型,在样本外的思考泛化能力较差,因此有很多方案都集中在如何提高SFT训练的泛化性。

前期主要方案在Data Augumentation(offline Training),通过更充分的利用推理时生成的思维链正负样本,让模型在学习时有更多的选择,降低对单一思考链路的拟合,包括

  • 充分利用正样本:生成更多正确推理路径同时进行SFT,例如RFT同时采样100个思考链路,所有正确的推理路径一起训练
  • 充分利用负样本:增加关键错误节点样本进行SFT,让模型通过对比识别正确和错误的关键差异例如 V-STaR,GLoRE,Incorrect Synthetic Data等等

中期大家开始更多考虑RL,不过RL目标的设计相对复杂,多采用了PRM的打分方案。 这类方案主要针对Math和Code这两个垂直领域,例如

  • MATH-SHEPHERD使用MCTS蒙特卡洛模拟作为PRM打分,进行RL优化
  • DeepSeekMATH先做SFT,再使用ORM+PRM共同对问题进行优化

后期方案同样是RL,但大道至简,RL的奖励函数重新回归简单,收敛到了基于结果(标准答案+规则打分)的优化方案。 分别有OpenAI在24年底推出的RFT(可申请测试),和同期字节推出的ReFT。前者更多针对system2到领域模型的思维链优化,后者主要针对system1到system2思考模型的优化。其中

  • OpenAI RFT:已有o1-mini模型,经过少量领域样本,和领域评分器,通过RL就能拥有该领域复杂问题的强大推理能力,适合法律,金融,医疗等专家能对样本给出标准答案和评分,并且任务复杂度超过通用模型能力的,这里的评分器主要为各种规则打分例如ranking

  • Bytedance REFT:两阶段训练先使用COT样本进行warm up训练,再在Policy模型基础上进行多轮采样,使用基于标准答案(0/1规则)的奖励函数进行PPO训练

如何就到R1了呢?

不难发现在RFT,REFT的阶段大家已经开始探索基于结果(标准答案) 的RL对于提升模型思维链泛化的效果,但是和R1的实现相比,个人认为有几个核心的差异点,主要来自SFT和RL的技术定位差异。

以SFT为主RL为辅,RFT和ReFT本质还是以SFT为主,也就是先把准备好的思维链样本喂给模型,而RL的作用更多是进行拒绝采样,也就是从模型推理的多个候选思维链中,奖励更好的,惩罚不好的。DeepSeek V3其实就是这种训练方案。但是这种方案可能会存在一些问题

  • 前期经过大规模的COT SFT可能会影响模型思考泛化能力,模型已经记忆了大量的思考范式,就很难再Think Out of Box了。即便有RL泛化也不会太好,同时前期标注COT的思考水平会一定程度上限制模型的上限。

    同时前期标注COT的思考水平会一定程度上限制模型的上限。
  • 前期标注的大规模COT或许不是质量越高越好,过优的COT中因为中间节点的推理正确概率较高,可能限制了模型的反思,优化,基于错误前置推理提出新假设的种种反思能力,Shortest Path是终极目标但不应该是初始目标。
  • 前期标注COT样本和模型分布存在偏移,本质上非相同基座模型生成的推理样本多少都存在分布偏移,而分布差异会导致模型更倾向于模仿而非学习

而R1-Zero揭示了模型思考能力这个领域上,可以是RL为主SFT为辅的技术方案。前期只依赖RL,让模型在更广泛的空间中直接进行思维链编排的各种探索,即便使用SFT进行warm-up,个人认为这部分的量级和训练steps也都不会太大,本质只是为了加入RL训练的收敛。

以及RL可以单纯依赖数学,代码,这些思考密度更高的领域训练得到。 本质上全领域世界知识能力的获取,和思维能力的获取是存在差异的,前者依靠背,后者靠探索习得。这两种能力本质可能存在差异,只不过之前有一些思维惯性在,因此更多沿着前期SFT的范式去做,但实际可能并非如此。

想看更全的大模型论文·微调预训练数据·开源框架·AIGC应用 >> DecryPrompt

解密prompt系列49. 回顾R1之前的思维链发展路线的更多相关文章

  1. 解密Prompt系列6. lora指令微调扣细节-请冷静,1个小时真不够~

    上一章介绍了如何基于APE+SELF自动化构建指令微调样本.这一章咱就把微调跑起来,主要介绍以Lora为首的低参数微调原理,环境配置,微调代码,以及大模型训练中显存和耗时优化的相关技术细节 标题这样写 ...

  2. 解密prompt系列5. APE+SELF=自动化指令集构建代码实现

    上一章我们介绍了不同的指令微调方案, 这一章我们介绍如何降低指令数据集的人工标注成本!这样每个人都可以构建自己的专属指令集, 哈哈当然我也在造数据集进行时~ 介绍两种方案SELF Instruct和A ...

  3. 解密Prompt系列2. 冻结Prompt微调LM: T5 & PET & LM-BFF

    这一章我们介绍固定prompt微调LM的相关模型,他们的特点都是针对不同的下游任务设计不同的prompt模板,在微调过程中固定模板对预训练模型进行微调.以下按时间顺序介绍,支持任意NLP任务的T5,针 ...

  4. 解密Prompt系列3. 冻结LM微调Prompt: Prefix-Tuning & Prompt-Tuning & P-Tuning

    这一章我们介绍在下游任务微调中固定LM参数,只微调Prompt的相关模型.这类模型的优势很直观就是微调的参数量小,能大幅降低LLM的微调参数量,是轻量级的微调替代品.和前两章微调LM和全部冻结的pro ...

  5. 解密Prompt系列4. 升级Instruction Tuning:Flan/T0/InstructGPT/TKInstruct

    这一章我们聊聊指令微调,指令微调和前3章介绍的prompt有什么关系呢?哈哈只要你细品,你就会发现大家对prompt和instruction的定义存在些出入,部分认为instruction是promp ...

  6. 11.Java 加解密技术系列之 总结

    Java 加解密技术系列之 总结 序 背景 分类 常用算法 原理 关于代码 结束语 序 上一篇文章中简单的介绍了第二种非对称加密算法 — — DH,这种算法也经常被叫做密钥交换协议,它主要是针对密钥的 ...

  7. .NET Core加解密实战系列之——使用BouncyCastle制作p12(.pfx)数字证书

    简介 加解密现状,编写此系列文章的背景: 需要考虑系统环境兼容性问题(Linux.Windows) 语言互通问题(如C#.Java等)(加解密本质上没有语言之分,所以原则上不存在互通性问题) 网上资料 ...

  8. Java 加解密技术系列文章

    Java 加解密技术系列之 总结 Java 加解密技术系列之 DH Java 加解密技术系列之 RSA Java 加解密技术系列之 PBE Java 加解密技术系列之 AES Java 加解密技术系列 ...

  9. 10.Java 加解密技术系列之 DH

    Java 加解密技术系列之 DH 序 概念 原理 代码实现 结果 结束语 序 上一篇文章中简单的介绍了一种非对称加密算法 — — RSA,今天这篇文章,继续介绍另一种非对称加密算法 — — DH.当然 ...

  10. 9.Java 加解密技术系列之 RSA

    Java 加解密技术系列之 RSA 序 概念 工作流程 RSA 代码实现 加解密结果 结束语 序 距 离上一次写博客感觉已经很长时间了,先吐槽一下,这个月以来,公司一直在加班,又是发版.上线,又是新项 ...

随机推荐

  1. DataGridView频繁更新PLC报警信息数据源

    1.问题描述 当DataGridView频繁更新数据源时,可能会导致界面闪烁.性能下降等问题.这是因为每次更新数据源时,DataGridView都需要重新绘制和绑定数据,这是一个相对耗时的过程. 2. ...

  2. ESRI资源

    AO帮助 http://resources.arcgis.com/en/help/arcobjects-net/conceptualhelp/: 桌面帮助 10.1:http://resources. ...

  3. bridge模式下 所有容器的 网关 都是 宿主机docker0网卡的ip

    bridge模式下 所有容器的 网关 都是 宿主机docker0网卡的ip

  4. shell学习之路——取参数

    shell中参数的调用方式: 1.$0-9:表示第0个到第9个参数,其中$0表示文件执行路径.如:$0,$1. 2.${10以后}:如果参数数目大于9个,可以用${10},${11}...等方式表示. ...

  5. MessageConsumer

    @Slf4j @Component public class MessageConsumer { @Autowired private PpcRequestMessageListener ppcReq ...

  6. Java多线程处理文件详解与代码示例

    在Java编程中,文件处理是一项常见的任务.当需要处理大量文件或处理文件的时间较长时,单线程的处理方式可能会显得效率低下.为了提高文件处理的效率,我们可以使用多线程技术.本文将详细介绍如何使用Java ...

  7. 大型IM工程重构实践:企业微信Android端的重构之路

    本文由腾讯技术yeconglu分享,原题"企业微信大型Android系统重构之路",下文进行了排版和内容优化等. 1.引言 企业微信本地部署版(下文简称为本地版)是从2017年起, ...

  8. 即时通讯技术文集(第28期):IM开发技术合集(Part1) [共18篇]

    为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第28 期. [- 1 -] 新手入门一篇就够:从零开发移动端IM [链接] http://ww ...

  9. React基础笔记1

    官网:https://react.docschina.org/ 一.认知React 概述 React 起源于 Facebook(脸书) 的内部项目,它是一个用于构建用户界面的 javascript 库 ...

  10. Netty5 服务端和客户端-copy

    概述netty 5 已经放弃掉了,作为学习netty4和5的差别不大,本例子是基于netty5 https://github.com/netty/netty/issues/4466 线程安全一个thr ...