趋近智
监督微调(SFT)阶段使成功的人类反馈强化学习(RLHF)成为可能。它的目的是在引入强化学习之前,使通用预训练语言模型适应与您的对齐目标相关的特定风格、格式和领域。用于SFT的数据集质量直接影响初始策略模型的能力,并从而影响整个RLHF流程的有效性和效率。一个整理得好的SFT数据集能提供一个坚实的起点,通过示范教导模型期望的基线行为。
获取高质量的提示-响应对对SFT很重要。有几种常见方法,每种都有其利弊:
人工示范: 这通常被认为是黄金标准。人工编写者遵循特定指导方针,编写提示和期望的响应。
过滤现有数据集: 使用公开可用的指令遵循或对话数据集(例如,源自StackExchange的指令数据集、整理的学术数据集,或像OpenAssistant这样的数据集)。
模型生成数据与人工审查/编辑: 使用一个有能力的现有大型语言模型(有时称为“教师”模型)来生成对提示的初始响应,然后由人类进行审查、评分和编辑。
无论来源如何,重点都必须放在质量和与目标对齐目的的相关性上。一个规模较小但高质量的数据集通常比一个庞大、嘈杂的数据集对SFT更有效。
什么构成“高质量”的示范?有几个属性很重要:
整理SFT数据集的典型工作流程包括定义要求、获取数据、过滤或创建示例、执行质量检查、清理数据,并可能根据审查反馈完善准则。
创建有效的SFT数据集需要系统化方法:
prompt、response以及可能还有source、annotator_id或quality_rating等元数据字段。[
{
"prompt": "解释RLHF PPO中KL散度的概念,用简单的话语。",
"response": "在RLHF PPO中,KL散度衡量的是模型行为(策略)在训练期间与其原始行为(PPO微调前,通常是SFT模型)相比的改变程度。我们根据这种散度向PPO目标添加惩罚。 \n\n可以把它想象成一根牵引绳:我们希望模型从奖励信号中学习(根据人类偏好变得更好),但我们不希望它偏离SFT期间学到的通常合理的行为*太远*或*太快*。过多的散度可能导致不可预测或无意义的输出,或者找到漏洞(“奖励作弊”)。KL惩罚有助于保持训练稳定,并确保模型不会完全忘记其初始训练。",
"source": "human_annotator_v2",
"category": "RL_concepts"
},
{
"prompt": "编写一个Python函数来计算非负整数的阶乘。",
"response": "```python\ndef factorial(n):\n \"\"\"计算非负整数的阶乘。\n\n 参数:\n n:一个非负整数。\n\n 返回:\n n的阶乘。\n\n 异常:\n ValueError:如果n为负数。\n TypeError:如果n不是整数。\n \"\"\"\n if not isinstance(n, int):\n raise TypeError(\"输入必须是整数。\")\n if n < 0:\n raise ValueError(\"输入必须是非负数。\")\n if n == 0:\n return 1\n else:\n res = 1\n for i in range(1, n + 1):\n res *= i\n return res\n\n# 示例用法:\nprint(factorial(5)) # 输出:120\n```",
"source": "filtered_code_dataset_v1",
"category": "coding"
}
]
SFT数据点的示例结构,通常以JSON或类似格式存储。一致性对于训练期间的解析很重要。
整理这些数据集并非没有困难:
为整理高质量SFT数据集所投入的努力,在整个RLHF过程中都会带来回报。一个初始化良好的模型能为奖励建模提供更坚实的基础,在RL微调期间需要不那么剧烈的策略更新(通常导致更稳定的PPO训练),并最终有助于得到一个更好对齐的最终语言模型。忽视SFT数据质量可能导致后续阶段的困难,可能需要更广泛的偏好数据或更复杂的RL调优策略来实现期望的对齐目标。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造