ReFT: Reasoning with Reinforced Fine-Tuning
核心贡献:
- 使用和SFT相同的训练数据上(不需要额外造数据 以及 不需要额外的 reward model), 这种使用强化学习的强化微调技术,比单纯用SFT训练出的模型更好。
- 做了实验,说ReFT结合多数投票 和 奖励模型排序 的方法,可以进一步提升ReFT的效果。
Q: 为什么要用这种 在线强化学习的方式? 和 直接造一批数据,进行离线强化学习方式 有什么区别?:
A: 这种在线强化学习的方式,在学习的过程中,每一次梯度更新之后,生成的负样本干扰性都会更强。
这就是离线强化学习 和 在线强化学习 最大的差别。
训练数据:
完整的训练数据,是带cot的数据, 格式为(x, e, y),其中x为原始question, e是cot的思考步骤, y 是最终生成的数值答案。注意y是可以在e中提取出来的。
训练数据 可以参照下面图中的样例(画红线部分 已经标记出来 x, e, y )
训练数据样例 以及 训练过程
SFT 和 ReFT的对比图
SFT只训练一条推理路径(训练集给出的标注路径); ReFT自己采样生成多条推理路径,通过对比最后的答案,给出不同路径的reward。
SFT 和 ReFT 的 对比
ReFT算法(伪代码)
ReFT包含两个阶段:
- 使用sft进行1-2个epoch的热身,使得模型在原本的数据集领域(math),有一个基本的推理能力。(sft阶段的训练数据是x, e)
- 进行完热身之后,接着在线的强化学习,主要做法是,针对同一个问题question, 采样多种cot推理路径,验证这些推理路径的答案,给予reward, 没有使用额外的reward model。(rl 阶段的训练数据是 x, y)。
- 这个阶段的值模型value model 采用的是在第一个阶段产生的策略模型 加上一个线性头,输出一个值。
- 对于奖励值reward, cot中间步骤的reward都是0, 只有最后一步根据生成的完整cot,提取答案,和训练数据中的真实值对比,用0或1 给予奖励,表示正确与否。
- 还给了一个特殊的奖励,0.1,数学问题中,如果可以从最后的cot中抽取中数值类型的答案,但是答案不正确,给予0.1的奖励,用来激励模型,多多生成这种可以抽取数值的答案。(参照下面奖励函数r)
ReFT 算法步骤
奖励函数
实验结果:
- 这里说明一下
- Offline Self-Training (Offline-ST). 使用之前的SFT模型,对一个问题采样多个COT推理路径, 只保留答案验证正确的那些, 再将这些数据与原来的数据进行结合,然后再进行微调。
- Online Self-Training (Online-ST). 和ReFT一样也有预热,之后继续进行训练(在线的)。
- 在每个训练step中,模型首先为一个batch采样CoT,只保留那些是正确答案的CoT。生成的batch包含了采样的CoT和真实答案的CoT。然后,我们使用监督微调目标 𝐿𝑆𝐹𝑇 (论文中有提供公式) 在这个batch上更新模型参数。
- 与ReFT相比,Online-ST没有利用负反馈(即错误答案的反馈),也没有专门的机制来防止模型显著偏离初始模型,这可能会过拟合和训练不稳定性。
ReFT与其他训练方式的效果对比
- 作者还对比了多数投票和reward model 排序的效果。可以看出:
- rerank的效果要好于voting
-
ReFT的效果要好于SFT(不管是voting 还是 rerank)
image.png