2026/1/11 3:41:14
网站建设
项目流程
那个网站做的调查准确,wordpress products,系统软件开发流程,c 2015 做网站强化学习基础#xff1a;行业黑话想象你正在和一个刚训练好的语言模型聊天。你问#xff1a;“今天过得怎么样#xff1f;”模型可能回#xff1a;“还行。” 也可能回#xff1a;“我是个 AI#xff0c;没有感情。”人类觉得前者更自然、更友好——这就是偏好反馈。强化…强化学习基础行业黑话想象你正在和一个刚训练好的语言模型聊天。你问“今天过得怎么样”模型可能回“还行。” 也可能回“我是个 AI没有感情。”人类觉得前者更自然、更友好——这就是偏好反馈。强化学习RL在 LLM 中的核心任务就是让模型学会生成“人类更喜欢”的回复。为了做到这一点我们需要一套语言来描述这个过程。下面我们以 LLM 场景为基础介绍几个 RL 的“行业黑话”。1.1 基本概念时刻t就是对话的第几步。比如t0用户输入 “今天过得怎么样” → 这是初始状态s0t1模型输出第一个词 “今” → 动作a0“今”t2模型输出第二个词 “天” → 动作a1“天”… 直到生成完整回复比如 “今天过得不错”在 LLM 中状态st通常就是到第t步为止已生成的 token 序列包括用户输入和模型已输出的部分动作at就是模型在第t步选择的下一个 token。奖励rt这是人类或奖励模型对模型行为的真实反馈信号。比如如果模型最终生成了“今天过得不错”人类觉得回答的不错打 5 分 → 这个分数会折算成一个最终奖励rT通常只在序列结束时给即最后一个 token中间步骤一般没有即时奖励rt0fortT价值v奖励r是真实的、来自外部的信号比如人类打分相对应的价值value是对未来奖励的估计——因为模型不能预知未来只能靠猜。1.2. 价值Value对未来奖励的“预判”既然模型不能看到未来它就需要一个“预判能力”我现在处在某个状态未来大概能拿多少分这就引出了两个核心函数1) 状态价值函数V(st)V(st)∑a∈Aπ(a|st)Q(st,a)它表达的是在当前已生成的对话上下文st比如用户刚问完 “今天过得怎么样”而模型还没开始回答或已输出“今”模型按照当前策略继续生成后续内容平均能获得多少人类打分。π(a|st)是模型在状态st下选择下一个词a的概率例如在“今天过得怎么样”之后选“今”还是“还”Q(st,a)表示如果此刻选了某个具体词a最终能拿到的预期总分把所有可能的下一个词按模型当前的偏好加权平均就得到了该状态的整体“预期得分”——也就是V(st)。举个例子当模型已经输出 “今天过得”它会评估“按我现在的风格继续回答人类大概率会觉得自然可能打 4 分”于是V(st)≈4。2) 动作价值函数Q(st,a)Q(st,a)rtγV(st1)γ2V(st2)⋯它表达的是如果我现在处于状态st比如上下文是“今天过得”并选择动作a比如生成“不”那么我能获得当前的真实奖励rt通常是 0因为回复还没结束再加上未来所有状态价值的折扣和。对应到 LLM 应用场景就表示“如果我现在在‘今天过得’后面接‘不’形成‘今天过得不’那接下来我大概率会说‘错’组成一句完整、积极的回复最终人类可能会打 5 分。”其中rt是真实发生的奖励但在 LLM 生成过程中只有完整回复结束后才有非零值例如人类打分rT5在中间步骤如生成“今”“天”时rt0V(st1),V(st2),…是模型自己估计的未来价值比如生成“不”之后预估“今天过得不错”能拿 4.9 分γ∈[0,1]是折扣因子如 0.95表示“未来的分不如现在的分值钱”——越靠后的 token 对当前决策的影响越小。虽然中间每一步的rt0但Q(st,a)依然非常关键它通过V(st1)等未来价值把对最终人类反馈的预判传递回当前决策。这正是 LLM 在生成每个词时具备“前瞻能力”的来源——它不是随机选词而是基于“这样说人类会不会喜欢”的长期预期来做选择。为什么估计的价值函数 Q 里包含真实的rt因为 RL 的目标是用真实奖励来校准价值估计。模型通过不断对比“预测的未来得分”和“实际拿到的奖励”来修正自己的V和Q函数。2. PPORLHF 的“老大哥”PPOProximal Policy Optimization是传统 RLHF基于人类反馈的强化学习流程中的核心算法是 openai 在 2016年左右提出来的。原来 closeAI 的成功在那个时候就开始蓄力了。PPO的目标很直接让语言模型生成更受人类欢迎的回复。PPO 中的几个关键角色模型 是否训练 输入 输出 输出维度说明Policy Modelπθ✅ 是 promptxtoken IDs长度Lx 生成回复y(a1,…,aT)以及每个 token 的 log-problogπθ(at|st)y:[T]logprobs:[T]Reference Modelπref❌ 冻结 同上x同上 log-problogπref(at|st)[T]Critic ModelVψ✅ 是 状态序列stx⊕y≤ttoken IDs长度Lxt 价值估计Vψ(st)标量或[1]对每个t0,…,T输出一个值 → 总输出[T1]Reward Modelrϕ❌ 冻结(x,y)完整 prompt response 标量奖励Rrϕ(x,y)标量或[1]注⊕表示 token 拼接T是生成回复的长度可变但训练时通常 padding 到固定长度。PPO 的两阶段训练流程PPO通过分阶段解耦“数据生成”和“策略学习”在保证训练稳定性的同时让模型逐步学会生成更符合人类偏好的回复。整个流程分为如下两个阶段阶段 1采样与反馈Sample Label✅ 目标用当前策略模型生成一批回复并利用冻结的奖励模型打分再结合当前评论家模型估计价值最终为每个 token 动作计算出优势Advantage 和回报Return作为后续训练的监督信号。 关键点此阶段不更新任何模型参数只是“收集数据”。Policy 和 Critic 在采样时使用的是当前最新参数但输出会被 detach视为常数作为“旧策略”和“旧评论家”的快照。 参与模型与接口模型 是否更新 输入 输出 输出维度Policy Modelπθ❌采样时不更新 promptx∈ZLx生成回复y∈ZT及每个 token 的 log-problogπθ(at|st)y:[T]logprobs:[T]Critic ModelVψ❌采样时不更新 状态stx⊕y≤t∈ZLxt价值估计Vψ(st)∈R对t0,…,T输出[T1]个标量Reward Modelrϕ❌始终冻结(x,y)标量奖励Rrϕ(x,y)[1]注Lx是 prompt 长度T是生成回复长度实际中常 padding 到固定 max_len。 核心计算逻辑生成轨迹对每个 promptx用当前策略生成完整回复y(a1,...,aT)形成状态序列s0x,s1x⊕a1,…,sTx⊕y获取最终奖励调用冻结的 Reward ModelRrϕ(x,y)中间步骤无奖励即rt0fortT计算回报Return^RtT∑ktγk−trkγT−tR因为只有最后一步有奖励。回报序列^R0,^R1,...,^RT构成目标值。计算优势AdvantageAt^Rt−Vψ(st),t0,1,...,T−1表示在状态st下执行动作at比“平均水平”好多少。保存“旧”值将当前策略的 log-prob 和评论家的 value detach作为阶段 2 的基准即“old policy”和“old critic”。 伪代码阶段 1trajectories []for x in prompts: # x: [L_x]# 1. 用当前策略生成回复 y 和 log-proby, logprobs policy_model.generate_with_logprobs(x) # y: [T], logprobs: [T]# 2. 构建状态序列 s_0 ... s_Tstates [torch.cat([x, y[:t]]) for t in range(len(y) 1)] # len T1# 3. 用当前评论家估计每个状态的价值values torch.stack([critic_model(s) for s in states]) # [T1]# 4. 奖励模型打分仅最终奖励R reward_model(x, y) # scalar# 5. 计算回报R_t γ^{T−t} * RT_len len(y)returns torch.zeros(T_len 1)returns[T_len] Rfor t in reversed(range(T_len)):returns[t] gamma * returns[t 1]# 6. 计算优势A_t R_t - V(s_t)仅对 t0..T-1 有效advantages returns[:-1] - values[:-1] # [T]# 7. 保存“旧”值detach 阻断梯度trajectories.append({x: x,y: y,logprobs_old: logprobs.detach(), # [T]values_old: values.detach(), # [T1]advantages: advantages.detach(), # [T]returns: returns.detach() # [T1]})✅ 此阶段结束时我们得到一个固定的数据集后续训练将在此数据上多次迭代。阶段 2策略与评论家更新Policy Critic Learning✅ 目标利用阶段 1 收集的固定轨迹数据更新策略模型Policy和评论家模型Critic使得策略更倾向于选择高优势的动作评论家更准确地预测未来回报同时通过 PPO-clip 和 KL 正则防止策略突变或偏离合理语言分布。 参与模型与接口模型 是否更新 作用Policy Modelπθ✅ 被优化的主模型Critic ModelVψ✅ 被优化的价值估计器Reference Modelπref❌始终冻结 提供 KL 正则基准通常是 SFT 后的初始模型Reward Model ❌ 不参与此阶段 核心计算逻辑策略损失PPO-Clip定义概率比rt(θ)πθ(at|st)πold(at|st)exp(logπθ(at|st)−logπold(at|st))PPO 损失为LPPOEt[min(rt(θ)At,clip(rt(θ),1−ϵ,1ϵ)At)]若At0鼓励增加动作概率但最多增加(1ϵ)倍若At0鼓励减少概率但最多减少到(1−ϵ)倍。KL 散度正则防止语言退化