大模型为什么越来越“听话”?一文讲透强化学习、SFT、DPO
很多人学大模型时会听到三个词SFT、强化学习、DPO。它们看起来很高级其实核心问题很简单怎么把一个只会“续写文字”的大模型训练成一个真正能回答问题、听懂指令、符合人类偏好的 AI 助手。OpenAI 的 InstructGPT 论文就指出模型变大并不天然代表它更会遵循用户意图模型可能生成不真实、有害或不符合用户需求的内容所以需要用人类反馈来对齐模型行为。一、先说结论SFT、强化学习、DPO到底是什么1. SFT教模型“照着好答案学”SFT全称Supervised Fine-Tuning监督微调。通俗理解你给模型很多标准问答让它模仿优秀老师怎么回答。比如用户问“请解释一下 Java 中的线程池。”人工标准答案“线程池可以理解为提前准备好的一批线程……”模型反复学习这些“问题 好答案”慢慢就知道什么叫回答完整什么叫语气自然什么叫符合指令。所以 SFT 的本质是让模型从“会说话”变成“会按要求说话”。2. 强化学习/RLHF让模型知道“哪种回答更讨人喜欢”强化学习在大模型里最典型的形式叫RLHF也就是Reinforcement Learning from Human Feedback人类反馈强化学习。通俗理解模型先回答多个版本人类告诉它哪个更好然后模型朝着更受欢迎的方向优化。比如同一个问题用户问“我想转 AI 大模型工程师怎么规划”回答 A“多学习多实践。”回答 B“你有 8 年 Java 后端经验可以从 RAG、Agent、模型微调、向量数据库、工程部署几条线切入……”显然回答 B 更有价值。人类标注员会把 B 排在 A 前面模型就会逐渐学会回答要具体、可执行、贴近用户背景而不是空泛。InstructGPT 的经典训练流程就包含三步先做 SFT再训练奖励模型最后用强化学习优化模型。3. DPO不用复杂强化学习也能学习“人类更喜欢哪种答案”DPO全称Direct Preference Optimization直接偏好优化。通俗理解它跳过了复杂的奖励模型和强化学习流程直接拿“好答案 vs 差答案”来训练模型。比如一条数据长这样问题“解释一下混合检索。”更好的回答“混合检索就是关键词检索 向量检索结合……”较差的回答“混合检索是一种检索方法。”DPO 直接告诉模型以后遇到类似问题更应该靠近第一个答案远离第二个答案。DPO 论文指出传统 RLHF 流程复杂且可能不稳定而 DPO 可以用更简单的分类式训练目标来实现偏好优化训练更稳定、计算更轻量。二、大模型训练的完整链路从“预训练”到“对齐”很多人一上来就问 SFT、DPO、RLHF其实它们都属于后训练阶段。一个大模型大致可以分成四个阶段1. 第一阶段预训练让模型拥有基础能力预训练就是拿大量互联网文本、书籍、代码、网页等数据训练模型。这个阶段的目标不是让模型当助手而是让模型学会语言规律常识知识代码模式推理模式文本结构不同领域的表达方式预训练后的模型很强但它有个问题它更像一个“文本续写机器”不一定像一个“AI 助手”。比如你输入“请帮我写一份 Java 简历项目描述。”预训练模型可能会继续续写类似语料不一定真正按照你的要求输出结构化内容。所以还需要后面的 SFT、RLHF、DPO。2. 第二阶段SFT让模型学会听指令SFT 就是给模型大量高质量指令数据。数据格式通常是用户指令帮我解释一下 RAG 标准回答RAG 是检索增强生成可以理解为先查资料再让大模型基于资料回答……通过 SFT模型开始学会用户问什么我答什么用户要列表我给列表用户要通俗解释我不用复杂公式用户要文章我按文章结构写用户要代码我输出代码用户要总结我给总结所以 SFT 是大模型从“语言模型”变成“指令模型”的关键一步。3. 第三阶段偏好学习让模型学会“更好”SFT 只能教模型模仿标准答案。但问题是什么叫好答案不同答案可能都对但质量差别很大。比如用户问“怎么提高召回率”回答 A“可以优化召回算法。”回答 B“可以从数据源、Embedding 模型、切分策略、向量库参数、混合检索、Query 改写、召回数量、重排序等方面提升。”两个都没错但 B 明显更好。这时候就需要偏好数据。偏好数据通常不是“标准答案”而是问题怎么提高召回率 答案 A简单粗糙 答案 B详细专业 人类选择B 更好RLHF 和 DPO 主要就是用来学习这种偏好的。4. 第四阶段安全对齐与业务对齐除了回答质量大模型还要考虑不能胡说八道不能泄露隐私不能生成危险内容不能违背业务规则不能乱调用工具不能编造资料来源不能在客服场景乱承诺不能在金融医疗场景给高风险建议所以企业落地时SFT、DPO、RLHF 不只是为了“更聪明”更是为了让模型更稳定、更可控、更符合业务要求。三、SFT 详解大模型的“老师带教阶段”1. SFT到底解决什么问题SFT 主要解决三个问题。第一让模型听懂指令预训练模型可能只会续写不一定听指令。SFT 后模型能理解“请总结”“请改写”“请分类”“请提取关键词”“请生成 SQL”“请用通俗语言解释”“请按照一二三结构输出”这就是指令遵循能力。第二让模型学会固定输出格式企业项目里经常需要模型输出固定格式。比如意图识别{ intent: order_query, slots: { order_id: 123456 } }如果没有 SFT模型可能一会儿输出 JSON一会儿输出自然语言一会儿加解释。SFT 可以让模型稳定输出业务需要的格式。第三让模型学会领域知识表达比如你做金融客服、医疗问答、政务助手、法律咨询、企业知识库问答通用模型不一定懂你的业务话术。SFT 可以让模型学习公司产品说明业务流程标准客服话术行业术语常见问题回答方式风险提示模板所以 SFT 很适合做领域适配。2. SFT数据长什么样常见 SFT 数据格式是{ instruction: 请解释一下 RAG 是什么, input: , output: RAG 是检索增强生成可以理解为先从知识库中查资料再让大模型结合资料回答问题。 }或者对话格式[ { role: user, content: 帮我写一段 Java 简历项目描述 }, { role: assistant, content: 项目名称智能知识库问答系统…… } ]3. SFT数据怎么构造企业落地中SFT 数据可以来自几类。第一类人工编写人工写高质量问答。优点是质量高。缺点是成本高、速度慢。适合核心业务场景比如客服标准问答销售话术金融风控解释医疗合规问答简历项目包装模板第二类业务日志清洗从真实用户问题中筛选高频问题再人工整理答案。比如客服系统里有大量历史问答用户问“订单为什么一直不发货”客服答“您好您的订单目前处于仓库拣货中……”这些历史数据经过脱敏、清洗、改写就可以变成 SFT 数据。第三类用强模型生成再人工审核可以用更强的大模型生成训练数据。比如让 GPT-4、Claude、DeepSeek、Qwen 等生成一批问答然后人工审核。这种方式成本低但要注意不能完全相信模型生成的数据否则会把错误知识也训练进去。第四类基于知识库生成如果企业有文档、FAQ、产品手册可以把文档切分后生成问答。比如一段产品文档“会员有效期为 12 个月到期后需重新购买。”可以生成问题“会员多久过期”答案“会员有效期为 12 个月到期后需要重新购买。”4. SFT的优点第一简单直接SFT 是最容易理解、最容易落地的微调方式。你只要准备好“问题 标准答案”就能训练。第二适合领域适配如果你想让模型懂公司业务、懂项目流程、懂行业话术SFT 很有效。第三适合格式控制比如让模型稳定输出 JSON、Markdown、SQL、分类标签SFT 很好用。5. SFT的缺点第一只会模仿不一定会判断好坏SFT 的本质是模仿标准答案。但如果两个答案都看起来合理SFT 不一定知道哪个更好。第二数据质量决定上限如果训练数据很差模型会学坏。比如数据里全是空话模型也会学会说空话。第三容易过拟合业务话术如果 SFT 数据太单一模型可能变得死板。比如无论用户怎么问都套固定模板。四、强化学习/RLHF详解让模型学会“人类更喜欢什么”1. 什么是强化学习强化学习可以理解为模型做一个动作环境给一个奖励模型为了拿更高奖励不断调整行为。举个简单例子。训练小狗坐下奖励零食乱跑没有奖励听口令奖励更多时间久了小狗就知道什么行为更容易得到奖励。大模型里的强化学习也类似。模型生成一个回答如果这个回答更符合人类偏好就给高分如果回答差就给低分。2. 什么是RLHFRLHF 就是用人类反馈训练奖励模型再用强化学习优化大模型。它的完整流程通常是第一步先做 SFT先用高质量问答训练一个初始助手模型。这一步是基础。第二步收集偏好数据对同一个问题让模型生成多个答案。然后让人类标注员排序。比如问题解释一下向量数据库 回答 A向量数据库用于存储向量。 回答 B向量数据库可以理解为专门存储“语义特征”的数据库常用于相似度搜索…… 回答 C向量数据库是数据库。 人类排序B A C第三步训练奖励模型奖励模型的作用是给模型回答打分。输入问题 回答输出这个回答的质量分数奖励模型学会人类偏好后就能自动判断一个回答大概好不好。第四步用强化学习优化大模型大模型不断生成回答奖励模型不断打分。如果回答得好就强化这种输出方式。如果回答得差就减少这种输出方式。这就是 RLHF。OpenAI 的 InstructGPT 训练路线就是类似这种方式先收集人工示范数据做 SFT再收集比较数据训练奖励模型最后用 PPO 强化学习优化策略模型。3. RLHF为什么有用第一它不要求人类写完美答案写一个完美答案很难。但判断两个答案哪个更好相对容易。比如让你写一篇完美文章可能很费劲。但让你判断 A 文章和 B 文章哪个更好你很快就能判断。所以 RLHF 适合把人类偏好转化成训练信号。第二它能优化“主观质量”很多东西不是简单对错而是体验好不好。比如是否有帮助是否详细是否礼貌是否符合用户语气是否避免废话是否结构清晰是否安全可靠这些很难用传统标签定义但可以通过人类偏好学习。第三它能让模型更像助手SFT 让模型会回答。RLHF 让模型更会回答。区别在于SFT“这个问题应该这样答。”RLHF“这几种答法里人类更喜欢哪一种。”4. RLHF的缺点第一流程复杂RLHF 通常要训练多个模型SFT 模型奖励模型强化学习后的策略模型流程比 SFT 复杂很多。第二训练不稳定强化学习本身就比较难调。奖励模型如果学偏了大模型也会跟着偏。比如奖励模型喜欢“长答案”模型可能为了拿高分疯狂输出长篇废话。这叫奖励黑客。第三成本高RLHF 需要人类标注多轮模型生成奖励模型训练强化学习训练大量算力复杂工程调参所以它更适合资源比较充足的大厂或大模型公司。五、DPO详解更简单的偏好优化方法1. 为什么会有DPO因为 RLHF 太复杂了。传统 RLHF 要训练 SFT 模型收集偏好数据训练奖励模型用 PPO 等强化学习算法优化控制模型不要跑偏这套流程效果好但工程成本高。DPO 的出现就是为了简化这个过程。DPO 论文认为既然我们已经有了“哪个答案更好”的偏好数据就不一定非要先训练奖励模型再做强化学习可以直接用偏好数据优化语言模型。2. DPO怎么理解DPO 可以理解为直接告诉模型这个回答更好那个回答更差。以后你要更像好的回答少生成差的回答。比如问题SFT 和 DPO 有什么区别 好回答SFT 是模仿标准答案DPO 是学习偏好让模型更倾向于人类喜欢的答案。 差回答SFT 和 DPO 都是训练方法。DPO 训练时不需要奖励模型单独打分。它直接利用prompt问题chosen更好的回答rejected更差的回答让模型学会偏好。3. DPO数据格式DPO 数据通常长这样{ prompt: 请解释一下 RAG 是什么, chosen: RAG 是检索增强生成可以理解为先从知识库查资料再让大模型基于资料回答。, rejected: RAG 是一种技术。 }它不需要你给每个答案打具体分数。只需要知道chosen 比 rejected 更好。4. DPO和SFT有什么区别SFT 学的是问题 - 标准答案DPO 学的是问题 - 好答案 比 差答案更优也就是说SFT 更像“老师示范”。DPO 更像“老师点评”。SFT 告诉模型“你应该这样回答。”DPO 告诉模型“这两个回答里这个更好以后往这个方向靠。”5. DPO和RLHF有什么区别RLHF 是偏好数据 - 奖励模型 - 强化学习优化大模型DPO 是偏好数据 - 直接优化大模型所以 DPO 少了两个复杂环节不需要单独训练奖励模型不需要复杂强化学习采样过程Hugging Face 的 DPO Trainer 文档也提到DPO 的特点是稳定、高效、计算更轻量微调时不需要从语言模型中采样也不需要大量超参数调整。六、用一个生活例子讲清楚三者区别假设你要培养一个新人写技术文章。1. SFT给他看优秀范文你给新人 100 篇优秀文章让他模仿标题怎么写开头怎么写小标题怎么安排怎么举例子结尾怎么总结这就是 SFT。它解决的是从不会写到会按照样子写。2. RLHF让读者投票教他什么文章更受欢迎新人写了 3 篇文章。读者说第 1 篇太空第 2 篇最通俗第 3 篇太啰嗦你根据读者反馈建立一套评分标准然后让新人不断优化。这就是 RLHF。它解决的是从会写到更符合读者偏好。3. DPO直接告诉他哪篇比哪篇好你不建立复杂评分系统。你直接告诉新人“这篇比那篇好因为它更清晰、更具体、更有案例。”新人直接学习这种偏好。这就是 DPO。它解决的是用更简单方式学习偏好。七、SFT、RLHF、DPO对比表维度SFTRLHFDPO核心思想模仿标准答案根据奖励优化回答直接学习偏好数据形式问题 标准答案问题 多个回答 人类排序问题 好回答 差回答是否需要奖励模型不需要需要不需要是否需要强化学习不需要需要不需要训练难度较低较高中等工程成本较低高较低稳定性较稳定相对不稳定相对稳定适合场景指令微调、领域适配大规模对齐偏好优化、低成本对齐典型作用让模型会回答让模型回答更符合人类偏好简化版偏好对齐八、企业项目里怎么选择1. 如果你只是做领域问答优先SFT比如你做企业知识库助手智能客服简历优化助手法律文档问答医疗科普助手内部 OA 助手优先考虑 SFT。因为你最需要的是让模型懂业务让模型按格式输出让模型学习标准话术让模型回答稳定2. 如果你有大量偏好数据可以考虑DPO比如你的系统里有用户点赞/点踩人工审核记录A/B 测试结果客服质检结果多答案排序数据用户选择了哪个回答这些数据很适合做 DPO。比如用户问“怎么开通会员”模型回答 A 被用户点踩。模型回答 B 被用户采纳。那么就可以构造prompt怎么开通会员 chosen回答 B rejected回答 A这类数据可以用来做 DPO。3. 如果你是大模型公司可以考虑RLHF如果你有大量标注团队大量算力专门算法团队奖励模型训练能力强化学习经验安全对齐需求那么 RLHF 仍然很有价值。它适合做大规模通用模型对齐。九、结合RAG项目怎么理解SFT、DPO、RLHF假设你做了一个企业知识库问答系统。系统流程是用户问题 - 向量检索 - 找到相关文档 - 大模型生成答案这个系统常见问题有检索到了资料但模型回答不专业模型不会引用知识库内容模型喜欢自由发挥模型回答格式不统一用户觉得答案太长或太空模型不会拒答模型不知道什么时候该说“不确定”这时候三种方法都能发挥作用。1. SFT怎么用在RAG项目你可以构造 SFT 数据用户问题会员有效期多久 检索资料会员有效期为12个月到期后需重新购买。 标准回答根据知识库资料会员有效期为12个月到期后需要重新购买。训练目标是让模型学会基于检索资料回答不要脱离资料胡编答案要简洁必要时引用来源找不到资料时要说明无法确认这就是 RAG 场景里的 SFT。2. DPO怎么用在RAG项目构造偏好数据问题会员有效期多久 知识库会员有效期为12个月。 chosen根据知识库资料会员有效期为12个月。 rejected会员有效期一般是一年左右具体看平台规定。为什么 chosen 更好因为它明确基于知识库没有胡编表达准确DPO 可以让模型更偏向这种回答。3. RLHF怎么用在RAG项目如果你有很多真实用户反馈比如用户点赞用户点踩人工质检客服修正用户是否继续追问用户是否采纳答案可以训练奖励模型让它判断 RAG 答案质量。奖励模型可以考虑是否回答了问题是否基于检索内容是否有幻觉是否表达清楚是否符合公司口径是否安全合规然后再用强化学习优化模型。不过企业一般没必要一上来就做 RLHF成本较高。十、面试中怎么讲SFT、DPO、RLHF如果面试官问“你了解 SFT、DPO、RLHF 吗”可以这样回答SFT 是监督微调主要用高质量的指令问答数据训练模型让模型学会按照用户指令输出适合领域适配、格式控制和业务话术学习。RLHF 是基于人类反馈的强化学习通常先训练奖励模型再用强化学习优化大模型让模型更符合人类偏好。它效果好但流程复杂、成本高、训练不稳定。DPO 是直接偏好优化它不需要单独训练奖励模型也不需要复杂强化学习而是直接使用 chosen/rejected 这种偏好数据训练模型让模型更倾向于生成被人类偏好的答案。相比 RLHFDPO 更简单、更稳定更适合中小团队做偏好对齐。十一、简历项目里怎么体现如果你做的是 AI 应用项目可以这样写1. SFT项目描述参与构建领域指令微调数据集基于企业知识库、历史客服问答和业务规则整理多轮问答、格式化输出、拒答边界等训练样本用于提升模型在垂直业务场景下的指令遵循能力和回答稳定性。2. DPO项目描述基于用户点赞/点踩、人工质检和多版本回答对比结果构造 chosen/rejected 偏好数据用于 DPO 偏好优化训练使模型在回答准确性、知识库忠实度、表达清晰度和用户满意度方面得到提升。3. RLHF项目描述参与设计人类反馈对齐流程通过采集多候选回答排序数据训练奖励模型并结合强化学习策略优化模型输出使模型回答更加符合业务规范、用户偏好和安全边界。十二、最容易混淆的几个问题1. SFT之后还需要DPO吗不一定。如果你的目标只是让模型学会业务知识和输出格式SFT 可能够用。但如果你发现模型回答能用但不够好模型经常输出用户不喜欢的风格多个答案质量差异明显你有用户反馈数据那就可以考虑 DPO。2. DPO能不能替代SFT通常不能完全替代。更常见的流程是预训练模型 - SFT - DPO因为 DPO 更适合在模型已经具备基础指令能力后进一步做偏好优化。如果模型连基本回答格式都不会直接 DPO 效果可能不好。3. DPO能不能替代RLHF在很多场景下可以部分替代。DPO 的优势是简单稳定成本低工程实现更容易但在大规模复杂对齐场景下RLHF 仍然有价值。4. SFT是不是就是微调SFT 是微调的一种。微调是大概念SFT 是其中一种具体方式。微调可以包括SFTDPOLoRA 微调全参数微调领域继续预训练指令微调偏好微调十三、普通开发者应该怎么学习1. 第一阶段先理解整体流程先搞清楚预训练 - SFT - 偏好优化 - 安全对齐 - 部署评估不要一上来陷入公式。2. 第二阶段先实践SFT建议先用开源模型做 LoRA SFT。比如准备几十到几百条业务问答数据训练一个小模型。你会真正理解数据格式训练参数loss 变化模型输出变化过拟合问题数据质量问题3. 第三阶段再实践DPO准备 chosen/rejected 数据。比如同一个问题生成两个答案一个好一个差。训练后观察模型是否更倾向于好答案。4. 第四阶段最后再研究RLHFRLHF 工程复杂度更高不建议初学者直接上。可以先理解流程再看 PPO、奖励模型、KL 约束等概念。十四、总结SFT、RLHF、DPO 是大模型后训练中非常重要的三个概念。SFT 解决的是“会不会按要求回答”的问题。它像老师示范给模型大量标准答案让模型学会指令遵循、业务话术和输出格式。RLHF 解决的是“回答是不是更符合人类偏好”的问题。它通过人类排序训练奖励模型再用强化学习优化大模型让模型更有帮助、更安全、更符合用户期待。DPO 解决的是“能不能用更简单方式学习偏好”的问题。它不用单独训练奖励模型也不用复杂强化学习直接用“好答案 vs 差答案”训练模型工程上更简单、更稳定。一句话总结SFT 是打基础RLHF 是深度对齐DPO 是更轻量的偏好优化。对于普通开发者和企业项目来说建议路线是先做好RAG和提示词 再做SFT领域适配 有偏好数据后做DPO 资源充足再考虑RLHF真正落地大模型不是只会调用 API而是要理解模型为什么会听话、为什么会变好、为什么会更符合人的偏好。SFT、DPO、RLHF正是大模型从“会生成文字”走向“真正可用助手”的关键技术路线。