news 2026/5/3 8:15:19

【2026】 LLM 大模型系统学习指南 (26)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【2026】 LLM 大模型系统学习指南 (26)

策略梯度(Policy Gradient):直接优化策略的强化学习方法 —— 用 “修课心情” 理解核心逻辑

策略梯度(Policy Gradient, PG)是强化学习中 “直接优化策略” 的核心算法 —— 它不通过 Q 表间接学习,而是直接调整策略参数,让智能体更倾向于选择能带来高回报的动作。这种思路就像 “修课选方向”:不纠结于 “每门课好不好”(类似 Q 值),而是直接调整 “选课策略”(类似 RL 的策略),最终让总 GPA(类似累积回报)最高,直观又高效。

本文将用 “修课心情” 的通俗类比拆解 PG 的核心原理,对比 Q-Learning 的差异,再通过完整实操代码落地,帮你快速掌握这种 “直接优化” 的强化学习思路。

一、PG 的核心定位:为什么需要 “直接优化策略”?

之前学的 Q-Learning(价值型 RL)通过学习 “状态 - 动作价值(Q 值)” 间接推导最优策略,但存在两个明显局限:

  1. 仅适用于离散动作空间(如上下左右),无法处理连续动作(如机器人关节角度、自动驾驶车速);
  2. Q 值估计易受噪声影响,当状态 / 动作空间复杂时,Q 表或 Q 网络难以准确拟合。

而 PG(策略型 RL)的核心突破是 “直接优化策略”:

  • 策略本身是可参数化的模型(如神经网络),输入状态,输出动作或动作概率;
  • 通过 “梯度上升” 最大化累积回报,直接调整策略参数,无需中间 Q 值估计;
  • 天然支持连续动作空间,对复杂场景适应性更强。

通俗类比(修课心情)

  • Q-Learning:先打听每门课的 “预期分数”(Q 值),再选分数最高的课;
  • PG:不打听单门课分数,直接根据 “过去选课的总 GPA”(累积回报)调整选课偏好,比如 “之前选 AI 类课总拿高分,以后多选这类课”。

二、PG 的核心原理:用 “梯度上升” 让好动作更易被选中

PG 的核心逻辑只有一句话:计算策略的梯度,沿着梯度方向更新参数,让 “能带来高累积回报的动作” 被选中的概率越来越高。就像修课中,若选 “AI 课” 的总回报(分数)高,就调整选课策略,下次更倾向于选 AI 课。

1. 通俗理解:“加权更新”—— 好动作多选,坏动作少选

PG 的优化本质是 “加权调整动作概率”:

  • 若某个动作 A 在状态 S 下带来的累积回报 G 很高(好动作),就增大 “状态 S 下选 A” 的概率;
  • 若累积回报 G 很低(坏动作),就减小该动作的概率;
  • 权重就是累积回报 G,回报越高,调整幅度越大。

2. “修课心情” 深度类比

RL 组件修课场景类比核心逻辑
策略 π(参数 θ)选课偏好(如 “倾向选 AI 课”)状态(学期需求)→ 动作(选课)的概率分布
动作 A选某一门课(如《机器学习》)策略输出的可选选项
累积回报 G该门课的 “最终总收益”(分数 + 技能提升)动作带来的长期价值
梯度上升调整选课偏好让 “总收益高的课” 下次更易被选中
基线(Baseline)平均 GPA避免个别极端分数影响,让调整更稳定

比如:若选《机器学习》的总回报(90 分 + 技能提升)远高于平均 GPA(基线),就大幅提升下次选 AI 类课的概率;若选《量子力学》的回报(60 分 + 难度大)低于基线,就降低选这类课的概率。

3. 核心数学原理(简化版)

无需复杂推导,记住两个关键公式即可:

  • 目标函数:最大化所有轨迹(状态 - 动作 - 回报序列)的累积回报期望J(θ)=Eτ∼πθ​​[G(τ)]其中τ是一条轨迹(如 “选课→上课→得分” 的完整流程),G(τ)是这条轨迹的累积回报。

  • 梯度更新公式:沿着梯度方向调整参数 θ(梯度上升,因为要最大化目标函数)∇θ​J(θ)≈N1​∑i=1N​∑t=0T−1​∇θ​logπθ​(Ai,t​∣Si,t​)⋅(Gi,t​−b)关键部分解释:

    1. logπθ​(A∣S):动作 A 在状态 S 下的对数概率,梯度越大,调整空间越大;
    2. (G−b):加权系数(b 是基线,如平均累积回报),正数表示 “好动作”,负数表示 “坏动作”;
    3. 核心逻辑:用(G−b)加权更新,好动作的概率被放大,坏动作被缩小。

三、PG 与 Q-Learning 的核心区别:一张表看懂

对比维度策略梯度(PG)Q-Learning(价值型)
优化对象直接优化策略 π(参数化模型)间接优化(通过 Q 值推导策略)
动作空间支持离散 + 连续动作仅支持离散动作(需离散化连续动作)
稳定性方差大(需基线优化)方差小,但易受 Q 值估计偏差影响
适用场景复杂状态 / 动作空间、连续控制简单离散场景(如迷宫、小游戏)
核心优势无需 Q 值估计,直接高效实现简单,适合入门

四、实操:用 Policy Gradient 玩转 CartPole(PyTorch 实现)

我们继续用 CartPole 环境(小车平衡杆)实现 PG,对比之前的 Q-Learning,感受 “直接优化策略” 的优势。

1. 环境说明(同之前 Q-Learning)

  • 状态 S:4 维连续向量(小车位置、速度、杆角度、角速度);
  • 动作 A:2 种离散动作(0 = 左移,1 = 右移);
  • 回报 R:每保持平衡 1 步 + 1 分,杆倒下游戏结束。

2. 完整代码(分步骤解释)

python

运行

# 安装依赖 # pip install gym numpy torch import gym import numpy as np import torch import torch.nn as nn import torch.optim as optim # ---------------------- 1. 定义策略网络(直接优化的“策略模型”) ---------------------- class PolicyNetwork(nn.Module): def __init__(self, state_dim=4, action_dim=2): super().__init__() # 简单神经网络:输入状态(4维)→ 输出动作概率(2维) self.network = nn.Sequential( nn.Linear(state_dim, 32), nn.ReLU(), nn.Linear(32, 16), nn.ReLU(), nn.Linear(16, action_dim), nn.Softmax(dim=-1) # 输出动作概率分布(和为1) ) def forward(self, x): return self.network(x) # 输入状态,输出动作概率 def select_action(self, state): # 输入状态→生成动作概率→随机采样动作(体现随机性策略) state_tensor = torch.tensor(state, dtype=torch.float32).unsqueeze(0) action_probs = self.forward(state_tensor) action_dist = torch.distributions.Categorical(action_probs) # 分类分布 action = action_dist.sample() # 随机采样动作 return action.item(), action_dist.log_prob(action) # 返回动作和对数概率 # ---------------------- 2. 计算累积回报(带折扣+基线) ---------------------- def compute_discounted_returns(rewards, gamma=0.99, baseline=True): """ 计算每条轨迹的折扣累积回报,并可选减去基线(减少方差) """ discounted_returns = [] running_add = 0 # 反向计算折扣回报(从最后一步往回算) for r in reversed(rewards): running_add = r + gamma * running_add discounted_returns.insert(0, running_add) # 减去基线(所有轨迹的平均回报),减少更新方差 if baseline: baseline_val = np.mean(discounted_returns) discounted_returns = [r - baseline_val for r in discounted_returns] # 标准化回报(进一步稳定训练) discounted_returns = torch.tensor(discounted_returns, dtype=torch.float32) discounted_returns = (discounted_returns - discounted_returns.mean()) / (discounted_returns.std() + 1e-8) return discounted_returns # ---------------------- 3. 训练策略网络(梯度上升最大化回报) ---------------------- def train_policy_gradient(episodes=1000, gamma=0.99, lr=1e-3): env = gym.make("CartPole-v1") state_dim = env.observation_space.shape[0] action_dim = env.action_space.n # 初始化策略网络、优化器(Adam) policy_net = PolicyNetwork(state_dim, action_dim) optimizer = optim.Adam(policy_net.parameters(), lr=lr) for episode in range(episodes): # 存储单条轨迹的:对数概率、即时回报 log_probs = [] rewards = [] state = env.reset() done = False # 生成一条轨迹(玩一局游戏) while not done: # 选动作(策略网络输出概率→采样) action, log_prob = policy_net.select_action(state) # 执行动作,获取环境反馈 next_state, reward, done, _ = env.step(action) # 记录对数概率和回报 log_probs.append(log_prob) rewards.append(reward) state = next_state # 计算累积回报(带基线和标准化) discounted_returns = compute_discounted_returns(rewards, gamma) # 计算损失(目标是最大化回报→等价于最小化负的“对数概率×回报”) loss = 0 for log_prob, ret in zip(log_probs, discounted_returns): loss -= log_prob * ret # 负号:梯度上升→转为梯度下降优化 loss = loss / len(log_probs) # 平均损失,稳定训练 # 梯度更新(标准反向传播) optimizer.zero_grad() loss.backward() optimizer.step() # 打印训练进度 total_reward = sum(rewards) if (episode + 1) % 100 == 0: print(f"第{episode+1}轮 | 总回报:{total_reward:.0f} | 平均损失:{loss.item():.4f}") # 测试训练效果(可视化) test_env = gym.make("CartPole-v1", render_mode="human") state = test_env.reset() done = False while not done: action, _ = policy_net.select_action(state) state, _, done, _ = test_env.step(action) test_env.render() test_env.close() return policy_net # 启动训练 if __name__ == "__main__": trained_policy = train_policy_gradient(episodes=1000)

3. 代码核心逻辑(对应 PG 原理)

  • 策略网络:直接输出动作概率,用 Categorical 分布采样动作(体现随机性策略);
  • 累积回报:带基线和标准化,减少训练方差,让模型更稳定;
  • 损失计算:负的 “对数概率 × 回报”,通过梯度下降间接实现梯度上升(最大化回报);
  • 梯度更新:每局游戏结束后(一条轨迹)更新一次参数,批量更新更稳定。

4. 预期效果

  • 训练 1000 轮后,平均总回报≥200(杆能长时间保持平衡);
  • 对比 Q-Learning:PG 训练速度更快,对连续状态空间的适配性更好。

五、PG 的关键优化技巧:让训练更稳定高效

1. 基线(Baseline):减少方差

  • 核心作用:避免个别高回报轨迹导致参数更新波动过大;
  • 实现:用所有轨迹的平均累积回报作为基线,将(G−b)作为加权系数,让好动作的判断更客观。

2. 折扣回报与标准化

  • 折扣回报:用γ(0.9-0.99)加权未来回报,让智能体 “有远见”;
  • 回报标准化:将累积回报归一化(均值 0,方差 1),避免不同轨迹的回报尺度差异导致更新失衡。

3. 策略随机性

  • PG 的策略是随机性的(输出动作概率分布),天然具备 “探索能力”,无需像 Q-Learning 那样设计ϵ-greedy;
  • 训练后期,策略会逐渐收敛到 “近似确定性”(最优动作的概率趋近于 1)。

4. 学习率调整

  • 初始学习率建议 1e-3~1e-4,过大易震荡,过小训练过慢;
  • 可使用学习率调度器(如 ReduceLROnPlateau),根据训练效果动态调整。

六、总结:PG 的核心要点与学习建议

  1. 核心逻辑:直接优化策略,通过梯度上升最大化累积回报,好动作多选、坏动作少选,无需 Q 值估计;
  2. 通俗记忆:修课选方向→根据总 GPA 调整选课策略,让高分课的选择概率越来越高;
  3. 适用场景:连续动作空间、复杂状态 / 动作场景(如机器人控制、自动驾驶);
  4. 学习顺序:
    • 入门:用 CartPole 跑通 PG 代码,理解 “直接优化策略” 的流程;
    • 进阶:学习 PG 的变体(如 A2C、PPO),解决 PG 方差大的问题;
    • 实操:尝试连续动作环境(如 Pendulum),感受 PG 的天然优势。

PG 是强化学习从 “离散动作” 走向 “连续动作” 的关键算法,掌握它后,你能应对更多实际场景(如机器人关节控制、无人机路径规划),也是后续学习高级 RL 算法(如 PPO、SAC)的基础。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 23:44:44

太流批了,神仙工具,值得收藏

今天给大家推荐两款软件,一款图吧工具箱,一款是某大师绿色版,有需要的小伙伴可以下载收藏。 第一款:图吧工具箱 图吧工具箱,是一款专为硬件爱好者和系统维护人员打造的免费开源工具合集,集成硬件检测、性能…

作者头像 李华
网站建设 2026/5/1 9:26:04

焊缝焊接处裂纹气孔飞溅缺陷检测数据集VOC+YOLO格式1494张6类别

注意数据集中有部分增强图片数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件)图片数量(jpg文件个数):1494标注数量(xml文件个数):1494标注数量(txt文件个数…

作者头像 李华
网站建设 2026/5/3 6:56:33

【第三套】好难!笔试3门,复试占比很高!

26复试课程已上线~另外还有线下复试集训营。1V1的简历修改自我介绍修改模拟面试1V1直系学长的复试专属讲解等内容。 祝大家复试顺利,成功上岸! 写在前面 为了帮助大家顺利通过最后一关,今天开始我将每天更新一套复试真题!复试真…

作者头像 李华
网站建设 2026/5/2 17:50:56

Creo许可证管理绩效评估指标体系

Creo许可证管理绩效评估指标体系:为什么它很重要?作为一名长期从事CAD软件管理工作的技术人员,我经常会遇到一个问题:如何衡量我们所使用的Creo许可证管理系统的运行效率和使用效果?是在企业规模扩展、项目需求增多的情…

作者头像 李华
网站建设 2026/5/1 9:27:21

参数运行文档的使用

摘要对于给定的光学系统,通过控制和调整选定的参数来检查其性能是很有帮助的。VirtualLab Fusion 提供了一个完全灵活且计算效率高(通过并行化)的参数运行功能,使用户能够指定不同的参数变化方式。举个例子,它可以用于…

作者头像 李华
网站建设 2026/5/1 11:40:50

2026必备!本科生毕业论文必备!9款AI论文网站深度测评

2026必备!本科生毕业论文必备!9款AI论文网站深度测评 2026年本科生论文写作工具测评:为何需要这份榜单? 随着AI技术的不断进步,越来越多的本科生开始借助AI工具辅助论文写作。然而,面对市场上琳琅满目的A…

作者头像 李华