导语:
随着ChatGPT-o1的发布,大型语言模型在复杂推理上取得进展,但传统监督式微调(SFT)仍存在局限。字节跳动研究院提出的增强微调(ReFT)技术结合了SFT和PPO算法,旨在提升模型泛化能力。ReFT首先使用SFT预热训练,然后应用PPO深入微调,使模型探索多种推理路径。
研究团队详细阐述了ReFT的工作原理,并展示其在标准数学数据集上的优越表现。ReFT创新地融合了监督学习和强化学习的优势,为提升大型语言模型在复杂推理任务上的能力开辟了新途径,为AI研究和实际应用提供了宝贵见解。©️【深蓝AI】编译
1. 引言
革新数学问题求解:强化微调法的突破性进展
在人工智能解决数学问题的前沿领域,一项名为"“强化微调”(Reinforced Fine-Tuning,简称ReFT)的创新方法正在引起学术界的广泛关注。这项由顶尖研究团队开发的技术,不仅展示了令人瞩目的实验结果,还为AI在数学领域的应用开辟了新的可能性。
传统的监督式微调(Supervised Fine-Tuning,SFT)方法在训练AI模型解决数学问题时面临阻碍:如图1所示,SFT过程通过多个训练周期(epochs)对模型进行训练,每个训练样本包含问题(x)、推理过程(e)和答案(y)。然而,这种方法往往只能学习到单一的解题路径,限制了模型的泛化能力。
为了突破这一瓶颈,研究团队提出了强化微调(ReFT)方法。如图1下半部分所示,ReFT包括两个关键阶段:
- warm-up阶段
- 强化学习阶段
在warm-up阶段,模型通过SFT获得数学推理初步能力。随后的强化学习阶段是ReFT的核心创新所在,模型在本阶段通过“On-Policy Sampling”生成多样化的解题路径,并使用“Golden Reward”机制评估这些路径的正确性,从而不断优化自身性能。
ReFT方法的优势在图2中得到了清晰的展示。与SFT仅关注单一“黄金”解题路径不同,ReFT能够探索和学习多种解题策略。如图2右侧所示,ReFT不仅能评估多条推理路径的正确性,还可能发现新的有效解法。这种方法显著提高了模型的灵活性和泛化能力,使AI在面对新的数学问题时能够更加灵活多变。
结合监督学习和强化学习的ReFT方法,能够在相同的训练数据基础上获得比传统SFT更丰富的监督信号。这不仅提高了模型的性能,更重要的是大大增强了其泛化能力。值得注意的是,ReFT无需额外的训练数据就能取得进步,这凸显了该方法在资源利用效率方面的优势。
在广泛的实验验证中,研究团队使用了CodeLLAMA和Galactica两个基础模型,并在GSM8K、MathQA和SVAMP等标准数学数据集上进行了测试。结果显示,ReFT在性能和泛化能力方面都取得了显著的提升。更令人兴奋的是,研究还发现ReFT可以从推理时的多数投票和奖励模型重排中获得进一步的性能提升。
这项突破性研究不仅提出了一种新方法来提高AI解决数学问题的能力,还为我们展示了人工智能在复杂推理任务中的巨大潜力。随着ReFT等创新方法的不断发展,我们可以期待在不久的将来,AI在数学教育、科学研究甚至日常生活中的应用将会更加广泛和深入。
强化微调法的成功再次证明,通过巧妙结合不同的学习策略,我们能够突破AI能力的既有界限,为人工智能的发展开辟新的道路。这项研究不仅是数学AI的一大进步,更是整个AI领域向着更智能、更灵活的方向迈进的重要一步。让我们共同期待AI在数学领域带来更多令人兴奋的突破,开启人工智能新的篇章!
2. 方法
2.1 强化精调:AI数学问题求解的革新之路
在人工智能领域,特别是在数学问题求解方面,一种名为强化精调(Reinforced Fine-Tuning,简称ReFT)的创新方法正在引起广泛关注。这项由顶尖研究团队开发的技术不仅展示了令人瞩目的实验结果,还为AI在复杂推理任务中的应用开辟了新的可能性。让我们深入了解这项突破性研究的核心内容。
2.2 概述
研究团队主要关注两种类型的思维链(Chain of Thought,CoT):
1.自然语言思维链(N-CoT):这是由Wei等人在2022年提出的方法。
2.基于程序的思维链(P-CoT):由Gao等人在2023年提出,使用Python语言实现。
P-CoT的一个显著优势是可以直接执行程序来获得答案,这大大简化了解答过程的验证。
2.3 强化精调(ReFT)的核心流程
ReFT过程包含两个关键阶段:
- warm-up阶段
- 强化学习阶段
warm-up阶段:
在这个阶段,模型在一个包含“问题-思维链”对的数据集上进行初步微调。这个过程可以形式化表示为:
●输入: ( x , e ) (x,e) (x,e),其中 x x x是问题, e e e是对应的思维链;
●目标:使模型具备基本的问题解决能力,能够对问题生成合适的响应。
思维链生成过程被分解为一系列预测下一个词(token)的动作。整个过程可以表示为:
e = [ a 1 , a 2 , . . . , a L − 1 , a L = < e o s > ] e=[a_1,a_2,...,a_{L-1},a_L=\lt eos \gt] e=[a1,a2,...,aL−1,aL=<eos>]
其中, L L L表示最大长度,<eos>
是结束符号,标志着生成过程的终止。
动作生成和状态更新
s t + 1 = { x , t = 0 [ s t , a t ] , 1 ≤ t ≤ L s_{t+1} = \begin{cases}x, & t = 0 \\ [s_t, a_t], & 1 \leq t \leq L \\ \end{cases} st+1={x,[st,at],t=01≤t≤L
在每个时间步 t t t:
● 动作 a t a_t at从策略 π θ ( ⋅ ∣ s t ) π_θ(·|st) πθ(⋅∣st)中采样
● 状态 s t s_t st包含问题中的所有词和已生成的所有词
● 新状态 s t + 1 s_{t+1} st+1是当前状态 s t s_t st和动作 a t a_t at的连接
损失函数
warm-up阶段使用的损失函数定义如下:
L S F T ( θ ) = − E e ∼ D [ ∑ t = 1 L log ( π θ ( a t ∣ s t ) ) ] \mathcal{L}_{SFT}(\theta)=-\mathbb{E}_{e \sim \mathcal{D}}\left[\sum_{t=1}^{L}\log\left(\pi_{\theta}(a_t\vert s_t)\right)\right] LSFT(θ)=−Ee∼D[t=1∑Llog(πθ(at∣st))]
该函数旨在最大化正确动作序列的对数概率,从而训练模型更准确地预测每一步的正确词。
强化学习阶段
r ( s t , a t , s t + 1 = { 1 , E X T R A C T ( s t + 1 ) = y 0.1 , E X T R A C T ( s t + 1 ) ≠ n u l l , ≠ y 0 , E X T R A C T ( s t + 1 ) = n u l l r(s_t,a_t,s_{t+1}{=}\begin{cases}1,\quad\mathsf{EXTRACT}(s_{t+1})=y\\0.1,\mathsf{EXTRACT}(s_{t+1})\neq\mathsf{null},\neq y\\0,\quad\mathsf{EXTRACT}(s_{t+1})=\mathsf{null}&\end{cases} r(st,at,st+1=⎩ ⎨ ⎧1,EXTRACT(st+1)=y0.1,EXTRACT(st+1)=null,=y0,EXTRACT(st+1)=null
上述公式是一个强化学习环境中的奖励函数,用于评估每个动作产生的结果。在这个强化学习任务中,模型的目标是通过一系列动作来生成一个回答,并且这个回答会与一个预设的正确答案(ground-truth answer y y y)进行比较。根据动作结果的不同,奖励函数会给出不同的奖励值。
这里的公式可以这样理解:
● 当答案正确时:如果模型生成的答案与正确答案完全一致,那么模型会获得奖励1。这表示模型做出了完全正确的决策。
● 当答案部分正确时:如果模型生成的答案虽然不是完全正确,但答案是数字类型且不为空,模型会获得一个较小的奖励0.1。这种情况通常发生在答案内容上与正确答案接近但不完全一致时,给予部分奖励可以鼓励模型在正确的方向上进行改进。
● 当答案为空或完全错误时:如果模型没有生成任何答案(即答案为null),或者答案完全错误,则不给予任何奖励(奖励为0)。这表示模型的这次尝试没有取得任何进展。
这种设计的目的是通过奖励机制引导模型学习如何更准确地回答问题。在许多情况下,正确的答案可能会很少出现(这称为稀疏奖励问题),而通过引入部分奖励,可以帮助模型在这种不利条件下更有效地学习。
总体奖励计算
r t o t a l ( s t , a t , s t + 1 ) = r ( s t , a t , s t + 1 ) − β K L ( π θ ( ⋅ ∣ s t ) , π θ ( 0 ) ( ⋅ ∣ s t ) ) r_{total}(s_t,a_t,s_{t+1})=r(s_t,a_t,s_{t+1})-\beta KL(\pi_{\theta}(\cdot|s_t),\pi_{\theta}^{(0)}(\cdot|s_t)) rtotal(st,at,st+1)=r(st,at,st+1)−βKL(πθ(⋅∣st),πθ(0)(⋅∣st))
首先,模型在每个状态和动作对的情况下会有一个基本的奖励 r ( s t , a t , s t + 1 ) r(s_{t},a_{t},s_{t+1}) r(st,at,st+1),这个基本奖励可能取决于模型的动作是否正确或接近正确。除此之外,还会计算一个叫做Kullback-Leibler(KL)散度的值,这个值衡量的是模型当前的策略与初始策略之间的差异。总的奖励 r t o t a l ( s t , a t , s t + 1 ) r_{total}(s_{t}, a_{t}, s_{t+1}) rtotal(st,at,st+1)是这个基本奖励减去KL散度乘以一个系数 β \beta β。这样做的目的是鼓励模型不要偏离初始策略太远,同时也能学到有效的策略。这里提到的“初始策略”( π θ ( 0 ) \pi_\theta^{(0)} πθ(0))指的是在文章中描述的“warm-up”阶段通过监督学习训练得到的策略。在这个阶段,模型在包含“( q u e s t i o n , CoT question,\textit{CoT} question,CoT)”元组的数据集上进行训练,这些元组由问题和相对应的思考过程组成。这个初始策略为后续的强化学习阶段提供了一个基础,使得模型可以在此基础上进一步优化以生成更准确或更合适的回答。
在“warm-up”阶段结束后,模型使用初始策略作为强化学习阶段的起点。在强化学习阶段,策略会根据环境反馈进行调整和优化,以提高生成的思考过程和答案的质量。
因此,初始策略是连接监督学习阶段和强化学习阶段的桥梁,确保了从有监督的预训练过渡到无监督的强化学习训练的平滑性。
优势估计
A ^ t = ∑ l = 0 L − t ( γ λ ) l δ t + l \hat{A}_t=\sum_{l=0}^{L-t}(\gamma\lambda)^l\delta_{t+l} A^t=l=0∑L−t(γλ)lδt+l
在上述公式中,用来评估一个动作相对于平均有多好的一个指标叫做优势估计( A t ^ \hat{A_t} At^)。这个估计通过一系列的计算得到,包括将未来的奖励折现回来,并与预期的值函数( V ϕ V_{\phi} Vϕ,即状态价值)进行比较。这样可以衡量每个动作相对于平均表现的优势,从而帮助模型做出更优的决策。
时序差分(TD)和返回值
δ t ′ = − V ϕ ( s t ′ ) + r t o t a l ( s t ′ , a t ′ , s t ′ + 1 ) + γ V ϕ ( s t ′ + 1 ) \delta_{{t^{\prime}}}=-V_{\phi}(s_{{t^{\prime}}})+r_{total}(s_{{t^{\prime}}},a_{{t^{\prime}}},s_{{t^{\prime}+1}})+\gamma V_{\phi}(s_{{t^{\prime}+1}}) δt′=−Vϕ(st′)+rtotal(st′,at′,st′+1)+γVϕ(st′+1)
时序差分 δ t ′ \delta_{t'} δt′是在特定时间点上,实际观测到的奖励和状态值与预期值之间的差异。这个差异会被用来更新状态的价值估计,帮助模型更准确地预测未来的情况。
R ^ t = A ^ t + V ϕ ( s t ) \hat{R}_t=\hat{A}_t+V_{\phi}(s_t) R^t=A^t+Vϕ(st)
最后, λ − r e t u r n R ^ t \lambda-return \hat R_t λ−returnR^t是基于优势估计和当前状态价值的一个综合估计,用来更新模型的策略和价值函数。它综合了即时奖励和未来奖励的信息,提供了一个全面的反馈,用于模型学习。
总之,这些计算帮助模型在复杂的环境中,通过不断更新策略和价值估计,做出更好的行动决策。
目标函数
1)策略损失(Policy Loss):
●这个公式的目的是调整策略(即模型决定采取什么行动的规则),使得获得的回报(reward)尽可能高。
● π θ ( a t ∣ s t ) \pi_{\theta}(a_t|s_t) πθ(at∣st)表示在参数 θ \theta θ下,给定状态 s t s_t st时选择行动 a t a_t at的概率。
● π θ o l d ( a t ∣ s t ) \pi_{\theta_{old}}(a_t|s_t) πθold(at∣st)是旧策略(即更新前的策略)给出的,在状态 s t s_t st下选择行动 a t a_t at的概率。
● A ^ t \hat{A}_t A^t是一个称为优势函数的值,用来评估采取行动 a t a_t at相对于平均情况的优势有多大。
● 公式中的 min
和 clip
函数用于控制策略更新的幅度,防止更新太剧烈,这有助于学习过程的稳定性。
L value ( ϕ ) = 1 2 E e ∼ π θ old [ max ( ∥ V ϕ ( s t ) − R ^ t ∥ 2 ∥ clip ( R ^ t − V ϕ ( s t ) , A ^ t − ϵ , A ^ t + ϵ ) ∥ 2 ) ] \begin{array}{r} \mathcal{L}_{\text {value }}(\boldsymbol{\phi})=\frac{1}{2} \mathbb{E}_{\boldsymbol{e} \sim \pi_{\theta_{\text {old }}}}\left[\operatorname { m a x } \left(\left\|V_{\boldsymbol{\phi}}\left(s_{t}\right)-\hat{R}_{t}\right\|^{2}\right.\right. \\ \left.\left.\left\|\operatorname{clip}\left(\hat{R}_{t}-V_{\phi}\left(s_{t}\right), \hat{A}_{t}-\epsilon, \hat{A}_{t}+\epsilon\right)\right\|^{2}\right)\right] \end{array} Lvalue (ϕ)=21Ee∼πθold [max( Vϕ(st)−R^t 2 clip(R^t−Vϕ(st),A^t−ϵ,A^t+ϵ) 2)]
2)价值损失(Value Loss):
●这个公式用于调整价值函数(即模型预测从当前状态开始能得到的总回报的函数)的参数,使其预测更准确。
● V ϕ ( s t ) V_{\phi}(s_t) Vϕ(st)是模型预测的在状态 s t s_t st下能够获得的总回报。
● R t ^ \hat{R_t} Rt^是实际观测到的从状态 s t s_t st开始可以获得的总回报。
●max
和clip
函数同样用于控制更新的幅度,确保价值函数的更新不会太过激进。
L R L ( θ , ϕ ) = L policy + α L value \mathcal{L}_{R L}(\boldsymbol{\theta}, \boldsymbol{\phi})=\mathcal{L}_{\text {policy }}+\alpha \mathcal{L}_{\text {value }} LRL(θ,ϕ)=Lpolicy +αLvalue
3)统一的损失函数(Unified Loss Function):
●这个公式是策略损失和价值损失的加权和, α \alpha α是一个权重系数,用于平衡两者的重要性。
●通过调整这个损失函数,可以同时优化策略和价值函数,使得模型在强化学习任务中表现更好。
强化精调的优势
1)多样化解决方案:与传统方法相比,ReFT能够探索和学习多种解题策略,显著提高了模型的灵活性和泛化能力。
2)自我改进:通过强化学习阶段,模型能够不断优化自身性能,发现新的有效解法。
3)资源效率:ReFT无需额外的训练数据就能取得性能提升,展现了其在资源利用效率方面的优势。
4)泛化能力:结合监督学习和强化学习的优势,ReFT方法在相同的训练数据基础上,获得了比传统方法更强的泛化能力。
3. 实验和结论
在实验部分,研究者使用了三个数学问题数据集:GSM8K、SVAMP和MathQA,以进行模型的测试和评估。GSM8K和SVAMP 数据集中的答案格式是数值型,而在 MathQA 数据集中,则是多选题(即ABCD格式)。此外,研究者还对MathQA的一个数值版本进行了额外的实验,这个版本的答案同样是数值型。所有这些数据集的统计信息在文中的表1中呈现。
实验中使用了GPT-3.5-turbo模型,通过少量样本提示(few-shot prompting)的方式来获取N-CoT(非结构化思考过程)和P-CoT(结构化思考过程)注解。文中实现了两种自我训练方法:离线自我训练(Offline Self-Training,简称OfflineST)和在线自我训练(Online Self-Training,简称Online-ST)。
实验设置涉及两个基础模型:Galactica-6.7B5和Codellama-7B6,这两个模型在解决数学问题方面表现出色,并常用于最近关于推理任务的研究。在所有实验中,训练均使用8块A100-80GB的GPU,采用DeepSpeed Zero stage 2和HuggingFace Accelerate技术。
表2比较了基线方法和提出的ReFT在GSM8K、SVAMP和MathQA数据集上的性能。 结果显示,ReFT在大多数情况下都显著优于SFT和自我训练方法。特别是在GSM8K数据集上,使用CodeLLAMA模型,ReFT在N-CoT和P-CoT任务上分别比SFT提高了9点和8点以上。
研究团队还发现,在MathQAMCQ数据集上,ReFT存在奖励黑客现象。图3展示了采样解决方案如何产生"不准确的奖励",从而影响RL训练。 为了进一步证明多选题的负面影响,研究团队在MathQA的数值变体MathQAnumeric上进行了实验。表3展示了与SFT的比较结果,显示ReFT在使用Galactica和CodeLLAMA时都consistently优于SFT。
研究团队还应用了多数投票和奖励模型重排技术来进行GSM8K数据集的测试。表4显示,ReFT在使用奖励模型重排时在GSM8K上始终表现最佳。ReFT+Voting平均比SFT+Voting高出9.2个百分点,ReFT与重排平均比SFT与重排高出3.3个百分点。
此外,研究团队使用小型语言模型Galactica-125M进行了实验,表5比较了监督式微调(SFT)和基于奖励的微调(ReFT)在P-CoT数据集上的性能。尽管模型较小,ReFT在三个数据集上仍然表现优于SFT。
此外,作者还在GSM8K P-CoT数据集上使用CodeLLAMA进行啦消融研究,如表6显示:在没有部分奖励时,ReFT的准确率为70.9,虽然低于包含部分奖励的情况,但仍然明显优于SFT。
在分析部分,研究人员探讨了ReFT在GSM8K P-CoT数据集上的训练过程中的一般化能力。图4显示了ReFT策略在训练过程中的平均奖励、评估准确性和KL散度。SFT在接近第40个周期时收敛并开始过拟合,而ReFT策略在第40周期的平均奖励约为80%至90%,且价值准确性也在增加。
最后,研究人员探讨了ReFT与SFT之间的关系,通过对ReFT进行不同预热步骤的训练来比较这两项技术:
图5展示了不同ReFT变体相对于SFT的价值准确性。结果显示,从第30周期开始,当SFT已经收敛时,所有ReFT变体仍在改进,并且所有变体均显著优于SFT,没有任何特定ReFT变体表现出明显优势。
4. 总结和未来方向
研究人员提出了一种新的模型微调方法——强化微调(ReFT),用于解决数学问题。与传统的监督式微调(SFT)相比,ReFT通过探索多个解题过程(CoT)注解来优化非可微目标,而不是依赖单一的CoT注解。通过在三个数据集上使用两种基础模型进行广泛实验,研究表明ReFT在性能和泛化能力方面均优于SFT。此外,研究还展示了使用ReFT训练的模型与多数投票技术和奖励模型重排技术的兼容性。ReFT在解决数学问题方面的性能也超过了多个公开可用的同等规模的开源模型,这证明了ReFT方法的有效性和实用价值。
未来,研究人员或许首次尝试将强化学习特别是PPO算法应用于大型语言模型(LLM)的数学问题解决微调中。未来的工作方向包括应用离线强化学习技术,开发无需预热的方法,以提高训练效率和性能,从而缩小与重排方法的性能差距。此外,研究还表明,一个训练有素的基于过程的奖励模型(PRM)可能显著提高性能,因此值得探索在强化学习训练中实施基于过程的奖励。最后,由于ReFT是一种多功能的方法,研究人员打算将其应用于更广泛的推理任务,其中推理可以用CoT形式化。
同样,ReFT需要比SFT更多的训练周期才能达到收敛,这主要是因为ReFT优化了一个非可微目标,并且需要探索生成空间以获得正确答案。虽然较大的学习率可能加速收敛,但也可能使策略更易于不稳定和潜在崩溃。另一种选择是使用更大的批量大小,但这会增加计算成本。此外,我们的奖励函数仅依赖于最终答案来确定奖励,但在MathQAMCQ N-CoT数据集上的实验表明,如果最终答案的可能空间有限,如A、B、C、D,则策略容易被操纵。为了缓解奖励黑客的问题,可能需要采用更详细或基于过程的奖励函数,以考虑更广泛的因素。
延伸必读🌟
1.[非常重要!!!]
https://github.com/hijkzzz/Awesome-LLM-Strawberry?tab=readme-ov-file
2.[原文]
ReFT: Reasoning with Reinforced Fine-Tuning.
3.Training large language models for reasoning through reverse curriculum reinforcement learning.
4.[OpenAI]Let’s verify step by step. arXiv preprint arXiv:2305.20050.
5.[播客]
https://x.com/rohanpaul_ai/status/1835427161370738983?s=46&t=iTysI4vQLQqCNJjSmBODPw
6.Bigger, better, faster: Human-level atari with human-level efficiency.
7.Star: Bootstrapping reasoning with reasoning.
8.Quiet-star: Language models can teach themselves to think before speaking.
©️【深蓝AI】
解读|Jeffery
审核|Los
本文原创于微信公众号【深蓝AI】,移步公众号【深蓝AI】,第一时间获取自动驾驶、人工智能与机器人行业最新最前沿论文和科技动态。👇
深蓝AI·赋能自动驾驶+机器人+AI