大英做网站网站充值接口

张小明 2026/1/13 11:38:17
大英做网站,网站充值接口,房地产做网站不,电子商务网站开发与建设试卷为什么SFT之后仍需要RLHF#xff1f; 学习大模型的过程中#xff0c;我们常常会遇到Fine-Tuning相关的概念。SFT 是指监督微调#xff0c;RLHF 是指基于人类反馈的强化学习#xff0c;它们都是用于优化大语言模型的重要方法。 监督微调#xff08;SFT#xff0c;Supervi…为什么SFT之后仍需要RLHF学习大模型的过程中我们常常会遇到Fine-Tuning相关的概念。SFT 是指监督微调RLHF 是指基于人类反馈的强化学习它们都是用于优化大语言模型的重要方法。监督微调SFTSupervised Fine - Tuning定义SFT 是在预训练好的大语言模型基础上利用带有标签的数据集来进一步训练模型的方法。原理该方法依赖于大量标注数据每个输入都有预先定义的正确输出通过最小化预测输出和真实输出之间的差异使模型拟合这部分数据的特性从而优化模型在特定任务或领域上的性能。作用帮助引导大语言模型生成符合特定特征或领域知识的响应让模型更好地适应特定的任务或领域如特定类型的语言理解或生成任务。基于人类反馈的强化学习RLHFReinforcement Learning from Human Feedback定义RLHF 是一种将强化学习与人类反馈相结合的训练方法旨在使大语言模型与人类的价值观、偏好和期望保持一致。原理模型首先通过监督学习进行预训练然后人类对模型输出提供反馈如评分或在不同输出间做出选择偏好。这些反馈被用于训练一个奖励模型该模型将人类主观判断量化为可优化目标作为强化学习中的奖励函数引导模型调整行为以最大化长期奖励。作用弥补 SFT 的不足解决 SFT 难以建模主观偏好、缺乏对比学习等问题使模型能够生成更自然、更符合人类偏好的文本提升模型在没有明确标签的复杂任务中的表现。 一句话理解核心差异阶段目标原理结果SFT学习人类“怎么说”模仿人类标注的数据监督学习语言看起来像人说的但不一定好RLHF学习人类“更喜欢什么回答”利用人类偏好训练奖励模型并优化大模型输出策略强化学习回答更对、更有用、更让人满意SFT解决“说得像人”的问题而RLHF解决“说得好”的问题。对比维度SFTRLHF数据来源人类示例人类偏好排序学习目标模仿行为优化偏好得分学习方式监督学习强化学习PPO等模型输出形式像人更符合人类偏好️ 那 RLHF 是怎么补上这块短板的RLHF 有三个步骤Step 1️⃣构建奖励模型Reward Model, RM让多个标注者对同一个输入的多个模型回答打分形成“偏好排序”。用这些排序数据训练一个模型预测“人类偏好得分”。举例Prompt「如何找工作」回答A用通用建议语气冷漠回答B个性化分析、结构清晰、语气鼓舞人类更喜欢B → 用A vs B 的对比训练RMStep 2️⃣用强化学习优化语言模型策略使用 PPOProximal Policy Optimization等算法将语言模型的行为视为一个“策略”奖励来自 Reward Model目标生成让人“更满意”的回答简单来说就是模型输出一句话 → RM 给分 → 调整模型参数 → 让它以后更倾向得高分 举个通俗的例子想象你是一名客服机器人SFT 相当于给你一堆历史客服对话让你模仿说话方式。RLHF 相当于让真实用户给你评分根据评分调整你的说话风格让你以后更让客户满意。SFT 与 RLHF 的完整流程关系 企业应用中的真实效果在 OpenAI 的 InstructGPT、ChatGPT、Claude 等模型训练流程中RLHF 起到了以下关键作用应用场景SFT 效果RLHF 提升点助手问答模仿口吻但容易重复或不够准确提高回答准确性与多样性内容生成有语法但无深度更逻辑清晰、更结构化多轮对话不保持上下文更自然衔接、贴近人类沟通安全性会产生危险或偏见回答通过 RM 惩罚抑制此类行为RLHF 的重要理论支撑论文​RLHF 技术的发展离不开这些里程碑式的研究成果论文标题简介arXiv 链接《Training language models to follow instructions with human feedback》这篇论文由 OpenAI 团队发表首次系统介绍了将 RLHF 应用于语言模型的方法是 ChatGPT 等产品的核心技术基础。论文展示了 RLHF 如何使模型更好地对齐人类意图。https://arxiv.org/abs/2203.02155《Deep Reinforcement Learning from Human Preferences》较早提出从人类偏好中学习的概念展示了如何用人类对两个行为的偏好比较来替代传统强化学习中的奖励信号。https://arxiv.org/abs/1706.03741《InstructGPT: Training language models to follow instructions with human feedback》详细介绍了 InstructGPT 的训练过程包括 SFT、奖励模型训练和 PPO 强化学习三个阶段提供了完整的 RLHF 实践框架。https://arxiv.org/abs/2203.02155《Truthful AI: Developing and governing AI that does not lie》探讨了如何使用 RLHF 提高模型的真实性减少虚假信息生成展示了 RLHF 在特定对齐目标上的应用。https://arxiv.org/abs/2110.06674《A General Language Assistant as a Laboratory for Alignment》研究了 RLHF 在大型语言模型中的扩展性探讨了不同规模模型对 RLHF 的响应差异为实际应用中的模型选择提供参考。https://arxiv.org/abs/2209.07858这些论文构建了 RLHF 的理论基础和实践框架值得深入研究尤其是 InstructGPT 的论文几乎包含了企业应用 RLHF 所需的所有关键细节。RLHF 的核心原理与技术细节​让我们深入了解 RLHF 三个核心步骤的技术细节​监督微调SFT​SFT 是 RLHF 的基础其目标是让预训练模型学会理解和遵循指令。与普通微调不同SFT 使用的是高质量的 “指令 - 响应” 对数据这些数据通常由人类专家编写确保输出不仅正确而且符合人类期望。​在企业实践中SFT 数据的质量直接影响最终效果。一个好的 SFT 数据集应具备​多样性覆盖目标应用场景的各种可能指令​高质量由领域专家编写或审核​一致性相同类型的指令应有一致的回答风格​安全性避免包含有害或偏见内容​SFT 的实现与我们之前介绍的指令微调类似但更强调数据质量而非数量。​奖励模型训练RM​奖励模型是 RLHF 的核心创新它将人类的主观偏好转化为可量化的数值奖励为后续的强化学习提供信号。​工作原理​让 SFT 模型对同一指令生成多个不同输出​让人类标注者对这些输出进行排序或比较表明偏好​使用这些偏好数据训练奖励模型使其能预测人类会偏好哪个输出​关键技术点​奖励模型通常是在 SFT 模型基础上修改最后一层使其输出一个标量奖励值​训练目标是使模型对人类偏好的输出给出更高奖励​为避免过拟合奖励模型的训练数据应与 SFT 数据不同​在企业应用中收集高质量的偏好数据是最大挑战之一。通常采用 “pairwise comparison”成对比较方式给标注者展示同一指令的两个输出让其选择更优的一个这种方式比直接打分更可靠。​强化学习微调RL​这一步使用强化学习算法以奖励模型的输出作为奖励信号微调 SFT 模型。最常用的算法是 PPOProximal Policy Optimization它在稳定性和性能之间取得了很好的平衡。​PPO 的工作原理​让当前模型策略生成输出​用奖励模型评估输出得到奖励值​根据奖励值调整模型参数使模型更可能生成高奖励输出​通过约束参数更新幅度确保训练稳定这是 “Proximal” 的含义​企业实践中的优化​引入 KL 散度惩罚项防止模型输出与 SFT 模型偏差过大​使用滚动平均奖励Moving Average Reward减少奖励信号的噪声​定期用 SFT 模型的输出 “校准” 训练过程防止性能退化​RL 阶段的关键是平衡探索与利用既需要让模型探索可能获得高奖励的新输出又不能偏离 SFT 模型已经学到的基本能力。​动手实践实现一个简单的 RLHF 流程​下面我们将实现一个简化的 RLHF 流程包括 SFT、奖励模型训练和 PPO 微调三个步骤。由于完整的 RLHF 需要大量计算资源和人类标注数据我们会使用公开数据集和简化模型来演示核心流程。​准备工作​我们将使用trlTransformer Reinforcement Learning库它提供了实现 RLHF 的便捷工具。​首先安装所需库pip install transformers datasets accelerate peft bitsandbytes torch reinforcement-learning trl步骤 1监督微调SFT​加载指令微调数据集使用 alpaca 格式的数据集​dataset load_dataset(tatsu-lab/alpaca)​ tokenizer AutoTokenizer.from_pretrained(distilgpt2)​ tokenizer.pad_token tokenizer.eos_token数据预处理将数据转换为 “指令 - 输入 - 输出” 格式​def format_prompt (sample):​ if sample [input]:​ prompt f 以下是一个任务指令和相关输入请根据指令要求完成任务。​ 指令{sample [instruction]}​ 输入{sample [input]}​ 输出{sample [output]}​ else:​ prompt f 以下是一个任务指令请根据指令要求完成任务。​ 指令{sample [instruction]}​ 输出{sample [output]}​ return {text: prompt}应用格式化函数并分词​formatted_dataset dataset[train].map(format_prompt)​ def tokenize_function(examples):​ return tokenizer(​ examples[text],​ truncationTrue,​ max_length256,​ paddingmax_length,​ return_tensorspt​ )​ tokenized_dataset formatted_dataset.map(tokenize_function, batchedTrue, remove_columnsformatted_dataset.column_names)加载基础模型​:model AutoModelForCausalLM.from_pretrained(distilgpt2)​定义训练参数​:training_args TrainingArguments(​ output_dir./sft_model,​ learning_rate2e-5,​ per_device_train_batch_size4,​ num_train_epochs3,​ logging_dir./logs/sft,​ logging_steps100,​ save_strategyepoch,​ report_tonone​)数据整理器​:data_collator DataCollatorForLanguageModeling (​ tokenizertokenizer,​ mlmFalse # 因果语言模型不需要掩码语言建模​ )​训练器​trainer Trainer(​ modelmodel,​ argstraining_args,​ train_datasettokenized_dataset,​ data_collatordata_collator​ )开始 SFT 训练​:trainer.train()​保存 SFT 模型​model.save_pretrained(./sft_model_final)​ tokenizer.save_pretrained(./sft_model_final)代码解析在这个步骤中我们使用了 alpaca 格式的指令数据集包含指令、输入和输出三部分将数据格式化为统一的 “指令 - 输入 - 输出” 格式这是 SFT 的标准做法选择 distilgpt2 作为基础模型小型模型适合演示进行 3 轮训练保存 SFT 模型供后续步骤使用实际应用中SFT 数据应根据目标场景定制由领域专家编写或审核确保数据质量。步骤 2训练奖励模型RM奖励模型需要判断哪个输出更符合人类偏好。我们将使用成对比较数据来训练它。from datasets import load_dataset from transformers import ( AutoModelForSequenceClassification, AutoTokenizer, TrainingArguments, Trainer, DataCollatorWithPadding ) import torch import numpy as np加载偏好数据集包含人类对输出的偏好标注dataset load_dataset(Dahoas/full-hh-rlhf) tokenizer AutoTokenizer.from_pretrained(./sft_model_final) tokenizer.pad_token tokenizer.eos_token数据预处理将成对比较数据转换为适合分类的格式def preprocess_function(examples): # 每个样本包含两个回答和人类偏好chosen 是更优的回答 chosen_inputs tokenizer( examples[chosen], truncationTrue, max_length256, paddingmax_length, return_tensorspt ) rejected_inputs tokenizer( examples[rejected], truncationTrue, max_length256, paddingmax_length, return_tensorspt )合并两个输入用于训练inputs { input_ids: torch.cat ([chosen_inputs [input_ids], rejected_inputs [input_ids]], dim0), attention_mask: torch.cat ([chosen_inputs [attention_mask], rejected_inputs [attention_mask]], dim0), labels: torch.tensor ([1]*len (examples) [0]*len (examples)) # 1 表示偏好0 表示不偏好 } return inputs应用预处理processed_dataset dataset[train].map( preprocess_function, batchedTrue, remove_columnsdataset[train].column_names )加载奖励模型基于 SFT 模型修改reward_model AutoModelForSequenceClassification.from_pretrained ( ./sft_model_final, num_labels1, # 输出一个标量奖励值 problem_typeregression )确保分类头的输入维度正确:reward_model.config.pad_token_id tokenizer.pad_token_id训练参数:training_args TrainingArguments( output_dir./reward_model, learning_rate1e-5, per_device_train_batch_size8, num_train_epochs2, logging_dir./logs/rm, logging_steps100, save_strategyepoch, report_tonone )数据整理器data_collator DataCollatorWithPadding(tokenizertokenizer)定义评估函数计算准确率对于成对数据只要 chosen 的分数高于 rejected 就算正确:def compute_metrics(eval_pred): predictions, labels eval_pred predictions np.squeeze(predictions) correct 0 for i in range(0, len(predictions), 2): if predictions[i] predictions[i1]: correct 1 return {accuracy: correct / (len(predictions) // 2)}训练奖励模型trainer Trainer ( modelreward_model, argstraining_args, train_datasetprocessed_dataset, eval_datasetprocessed_dataset.select (range (1000)), # 使用小部分数据作为验证集 tokenizertokenizer, data_collatordata_collator, compute_metricscompute_metrics ) trainer.train() reward_model.save_pretrained(./reward_model_final)代码解析奖励模型训练是 RLHF 的核心步骤我们使用了包含人类偏好的数据集full-hh-rlhf其中每个样本包含两个回答和人类的偏好选择将 SFT 模型修改为序列分类模型使其能输出一个标量奖励值训练目标是让模型对人类偏好的回答chosen给出更高的奖励评估指标是模型正确识别更优回答的准确率在实际应用中收集高质量的偏好数据是最大挑战通常需要设计专门的标注界面和指南确保标注一致性。步骤 3使用 PPO 进行强化学习微调最后一步是使用 PPO 算法以奖励模型的输出作为奖励信号微调 SFT 模型。from datasets import load_dataset from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig from trl import PPOTrainer, PPOConfig, AutoModelForCausalLMWithValueHead, create_reference_model from trl.core import respond_to_batch加载数据集和 tokenizerdataset load_dataset(tatsu-lab/alpaca) tokenizer AutoTokenizer.from_pretrained(./sft_model_final) tokenizer.pad_token tokenizer.eos_token准备训练数据只使用指令部分让模型生成输出def prepare_prompts (examples): prompts [] for instruction, input_text in zip (examples [instruction], examples [input]): if input_text: prompt f 以下是一个任务指令和相关输入请根据指令要求完成任务。 指令{instruction} 输入{input_text} 输出 else: prompt f 以下是一个任务指令请根据指令要求完成任务。 指令{instruction} 输出 prompts.append (prompt) return {prompt: prompts}取少量数据进行演示:train_dataset dataset[train].select(range(1000)).map(prepare_prompts, batchedTrue)加载 SFT 模型作为基础模型并添加价值头用于 PPOmodel AutoModelForCausalLMWithValueHead.from_pretrained (./sft_model_final) reference_model create_reference_model (model) # 创建参考模型用于 PPO加载奖励模型from reward_model import RewardModel # 简化的奖励模型加载 reward_model RewardModel.from_pretrained (./reward_model_final) reward_model.eval ()配置 PPO 参数ppo_config PPOConfig( batch_size4, learning_rate1e-6, reward_modelcustom, log_withtensorboard, logging_dir./logs/ppo)定义响应生成函数def generate_responses(model, queries, tokenizer, max_length100): responses [] for query in queries: input_ids tokenizer.encode(query, return_tensorspt).to(model.device) output_ids model.generate( input_ids, max_lengthlen(input_ids[0]) max_length, temperature0.7, do_sampleTrue, pad_token_idtokenizer.pad_token_id ) response tokenizer.decode(output_ids[0][len(input_ids[0]):], skip_special_tokensTrue) responses.append(response) return responses定义奖励计算函数def compute_rewards(query, response): inputs [f{q} {r} for q, r in zip(query, response)] inputs tokenizer(inputs, return_tensorspt, paddingTrue, truncationTrue).to(reward_model.device) with torch.no_grad(): rewards reward_model(** inputs).logits.squeeze() return rewards创建 PPO 训练器ppo_trainer PPOTrainer ( configppo_config, modelmodel, reference_modelreference_model, tokenizertokenizer, datasettrain_dataset, data_collatorlambda x: x, # 使用简单的数据整理器 )开始 PPO 训练for epoch in range(3): for batch in ppo_trainer.dataloader: queries batch[prompt]生成模型响应responses generate_responses(model, queries, tokenizer)计算奖励rewards compute_rewards(queries, responses)格式化数据用于 PPOquery_tensors [tokenizer(q, return_tensorspt)[input_ids].squeeze(0) for q in queries] response_tensors [tokenizer(r, return_tensorspt)[input_ids].squeeze(0) for r in responses]执行 PPO 步骤stats ppo_trainer.step(query_tensors, response_tensors, rewards) ppo_trainer.log_stats(stats, batch, rewards) print(fEpoch {epoch1} completed)保存最终模型model.save_pretrained(./rlhf_final_model)代码解析这部分实现了 PPO 强化学习步骤我们使用之前训练的 SFT 模型作为初始模型并添加了一个价值头Value Head用于 PPO 算法创建了一个参考模型用于计算策略的 KL 散度惩罚防止模型输出与 SFT 模型偏差过大奖励计算函数使用我们训练的奖励模型为每个输出打分PPO 训练循环中模型不断生成输出根据奖励调整参数使高奖励输出的概率增加实际应用中PPO 训练需要更长时间和更精细的参数调整还需要考虑适当的 KL 惩罚系数平衡探索与稳定学习率调度避免训练不稳定奖励标准化使训练更稳定企业级 RLHF 应用场景与实践经验RLHF 在企业级应用中已经展现出巨大价值以下是几个典型场景和实践经验1. 智能客服优化应用场景使客服 AI 的回答不仅准确还能符合企业的品牌语气如友好、专业、简洁同时避免敏感内容。实践经验收集客服人员对 AI 回答的修改和评分作为偏好数据奖励模型应特别关注回答的相关性、语气和合规性PPO 训练时增加对敏感内容的惩罚项某电商平台应用 RLHF 后客服满意度提升了 23%人工转接率下降了 18%同时成功避免了多起潜在的合规风险。2. 内容生成与编辑应用场景使 AI 生成的营销文案、产品描述等更符合目标受众的偏好提高转化率。实践经验结合 A/B 测试结果作为反馈信号点击率高的内容视为更优针对不同受众群体训练专门的奖励模型定期更新奖励模型以适应市场趋势变化某内容平台使用 RLHF 后生成内容的平均点击率提升了 35%大大降低了内容制作成本。3. 代码助手优化应用场景使 AI 生成的代码更符合企业编码规范更注重可读性和安全性。实践经验让资深工程师对生成代码进行评分重点关注安全性和可维护性在奖励模型中整合静态代码分析工具的结果针对特定技术栈如 Java、Python定制奖励模型某科技公司应用 RLHF 后生成代码的人工修改量减少了 40%安全漏洞数量下降了 52%。RLHF 的挑战与解决方案在实际应用中RLHF 面临一些挑战需要特别注意1. 反馈数据的质量与偏差挑战人类标注者的偏好可能存在偏差且高质量标注成本高。解决方案建立明确的标注指南减少标注者间差异使用多个标注者并取多数意见降低个体偏差结合客观指标如点击率、完成率作为辅助反馈定期审核标注质量及时纠正偏差2. 训练不稳定性挑战PPO 训练可能不稳定导致模型性能波动或崩溃。解决方案合理设置 KL 惩罚系数防止模型过度偏离 SFT 模型使用学习率调度和梯度裁剪监控奖励值分布避免奖励崩塌所有输出奖励趋同定期用 SFT 模型的权重 “校准” 当前模型3. 分布偏移问题挑战模型在训练分布之外的表现可能退化即 “分布偏移” 问题。解决方案保持训练数据的多样性覆盖各种边缘情况定期在测试集上评估检测性能退化使用 “领域适应” 技术使模型在新场景中也能保持鲁棒性实现模型性能监控系统及时发现问题总结与展望RLHF 技术为解决大模型与人类需求对齐的问题提供了有效方案它通过将人类偏好融入强化学习过程使模型不仅能完成任务还能以符合人类期望的方式完成任务。从技术角度看RLHF 连接了监督学习、强化学习和人类反馈形成了一个完整的闭环优化系统。在企业应用中RLHF 的价值体现在显著提升用户体验和满意度使 AI 系统更好地符合业务需求和品牌调性降低人工审核和修改成本有效管理 AI 系统的风险和合规性随着技术的发展RLHF 正朝着更高效、更自动化的方向演进减少对人类反馈的依赖结合更多客观指标开发更高效的强化学习算法降低训练成本实现多目标 RLHF同时优化多个维度的表现结合因果推理使模型更好地理解人类偏好的原因最后说一句掌握 RLHF 技术不仅能提升大模型的实际应用价值更能帮助我们理解如何构建更安全、更有用的 AI 系统。无论是技术研究还是企业应用RLHF 都是未来几年大模型领域的核心技术之一。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

丰台建站推广帮人管理网站做淘宝客

YOLO-V5目标检测入门与实战应用 在智能安防摄像头自动识别可疑行为、工业流水线上精准检出缺陷零件,或是无人机实时追踪移动目标的场景中,一个共同的核心技术正在默默运行——实时目标检测。而在众多算法方案中,YOLO-V5 凭借其“快而准”的特…

张小明 2026/1/9 5:55:30 网站建设

建设企业网站源码海外营销网站建设

3分钟解锁Windows 11 LTSC微软商店:告别繁琐手动安装 【免费下载链接】LTSC-Add-MicrosoftStore Add Windows Store to Windows 11 24H2 LTSC 项目地址: https://gitcode.com/gh_mirrors/ltscad/LTSC-Add-MicrosoftStore 还在为Windows 11 LTSC系统缺少微软商…

张小明 2026/1/8 19:14:53 网站建设

w网站建设佛山制作网站公司哪家好

WELearn学习助手:智能化学习体验升级方案 【免费下载链接】WELearnHelper 显示WE Learn随行课堂题目答案;支持班级测试;自动答题;刷时长;基于生成式AI(ChatGPT)的答案生成 项目地址: https://gitcode.com/gh_mirrors…

张小明 2026/1/11 15:53:27 网站建设

西安网站建设淘猫网络seo外包公司哪家专业

3-甲基庚烷泄漏后应急处置:科学应对,守护安全引言3-甲基庚烷作为一种中闪点易燃液体,其泄漏可能带来严重的安全隐患。当3-甲基庚烷发生泄漏时,如何进行科学有效的应急处置至关重要。一、泄漏初期的快速响应(一&#xf…

张小明 2026/1/12 6:47:02 网站建设

网站开发的整体职业规划福永网站开发

Beyond Compare 5专业激活方案深度解析 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen 作为一款功能强大的专业文件对比工具,Beyond Compare 5在开发者和技术团队中享有盛誉。针对用…

张小明 2026/1/12 9:33:33 网站建设

线圈 东莞网站建设用wordpress框架建站

第一章:MCP续证的学分计算 在微软认证专业人员(MCP)续证过程中,学分计算是决定是否成功维持认证状态的关键环节。续证周期通常为三年,期间需积累足够的继续教育学分以证明技术能力的持续更新。 可计入学分的活动类型 …

张小明 2026/1/12 8:40:26 网站建设