Unlock the Correlation between Supervised Fine-Tuning and Reinforcement Learning in Training Code

本文是LLM系列文章,针对《Unlock the Correlation between Supervised Fine-Tuning and Reinforcement Learning in Training Code Large Language Models》的翻译。

在训练代码大型语言模型中解锁监督式微调和强化学习之间的相关性

摘要

自动代码生成一直是一个由来已久的研究课题。随着通用大型语言模型 (LLM) 的进步,编码能力成为衡量模型推理性能的重要指标之一。通常,为了获得 Code LLM,会实施两个阶段的训练范式,即预训练和微调。在微调中,监督微调 (SFT) 和强化学习 (RL) 通常用于提高模型的零样本能力。已经进行了大量工作,通过修改算法或优化数据集来提高模型在代码相关基准上的性能。然而,我们仍然缺乏对 SFT 和 RL 之间相关性的深刻见解。例如,应该使用什么样的数据集来确保泛化,或者如果我们在微调中放弃 SFT 阶段怎么办。在这项工作中,我们试图理解 SFT 和 RL 之间的相关性。为了促进我们的研究,我们手动制作了 100 个基础 python 函数,称为原子函数,然后部署了一个综合管道,以在原子函数之上创建大量合成函数。通过这种方式,我们尽量避免数据污染等问题。通过全面的消融研究,我们发现:(1) 原子和合成函数对于 SFT 的泛化都是必不可少的,只有少数合成函数是足够的;(2) 通过 RL,即使在相同的训练提示下,也可以大大增强 SFT 对目标域的泛化;(3) 从头开始训练 RL 可以缓解 SFT 阶段引入的过拟合问题。

1 引言

2 相关工作

3 方法

4 实验结果

5 结论

自动代码生成一直是一个由来已久的研究课题。随着通用大型语言模型 (LLM) 的进步,编码能力成为衡量模型推理性能的重要指标之一。通常,为了获

在 CatBoost 中,编写基于预测值和真实值之间相关性的 `eval_metric` 函数,需要创建一个自定义评估指标类,该类继承自 `catboost.EvalMetric` 并实现必要的方法。以下是具体的实现代码: ```python import numpy as np from catboost import CatBoostRegressor from catboost import EvalMetric # 自定义相关性评估指标类 class CorrelationMetric(EvalMetric): def get_final_error(self, error, weight): return error def is_max_optimal(self): return True def evaluate(self, approxes, target, weight): approx = approxes[0] corr = np.corrcoef(approx, target)[0, 1] return corr, 1 # 生成示例数据 X = np.random.rand(100, 5) y = np.random.rand(100) # 假设第一列是分类特征 cat_features = [0] # 创建 CatBoostRegressor 模型实例 model = CatBoostRegressor(iterations=100, learning_rate=0.1, depth=6, random_seed=42) # 使用自定义评估指标进行训练 model.fit(X, y, cat_features=cat_features, eval_set=(X, y), eval_metric=CorrelationMetric(), early_stopping_rounds=10, verbose=10) ``` ### 代码解释 - **自定义评估指标类 `CorrelationMetric`**:继承自 `EvalMetric`,实现了三个必要的方法。`get_final_error` 直接返回误差值,`is_max_optimal` 表明相关性是越大越好,`evaluate` 方法计算预测值和真实值之间的相关性。 - **数据生成**:使用 `numpy` 生成了一些示例数据 `X` 和 `y`,并假设第一列是分类特征。 - **模型创建和训练**:创建 `CatBoostRegressor` 模型实例,并使用 `fit` 方法进行训练,将自定义评估指标类 `CorrelationMetric` 传递给 `eval_metric` 参数。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UnknownBody

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值