尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
强化学习目标函数 J(θ) 梯度推导:从期望到蒙特卡洛采样的 3 步数学拆解
强化学习目标函数 J(θ) 梯度推导从期望到蒙特卡洛采样的 3 步数学拆解强化学习中的策略优化问题本质上是在寻找一个能够最大化长期回报的策略。当我们用参数θ表示策略π_θ时目标函数J(θ)就是期望回报的数学表达。然而这个期望涉及对所有可能轨迹的积分直接计算几乎不可能。本文将深入剖析如何将这个理论期望转化为可计算的梯度估计这是理解现代强化学习算法的关键一步。1. 目标函数的期望形式与梯度难题在强化学习中我们定义目标函数为$$ J(\theta) \mathbb{E}{\tau \sim p\theta(\tau)}[G(\tau)] $$其中τ表示从初始状态到终止状态的完整轨迹G(τ)是轨迹的折扣回报总和。策略梯度方法的核心思想是直接对这个目标函数进行梯度上升$$ \theta \leftarrow \theta \alpha \nabla_\theta J(\theta) $$关键难点在于p_θ(τ)依赖于策略参数θ而期望又对所有可能轨迹τ求积分。这意味着我们不能简单地交换梯度和积分的顺序。为了突破这个困境我们需要对目标函数梯度进行数学变形。提示策略梯度定理的妙处在于它通过巧妙的数学变换将梯度表达式中的轨迹概率梯度转换为了对数概率梯度这使得采样估计成为可能。2. 从期望到采样的三步推导2.1 第一步展开期望表达式首先我们明确写出期望的积分形式$$ \nabla_\theta J(\theta) \nabla_\theta \int p_\theta(\tau) G(\tau) d\tau $$根据微积分中的莱布尼茨规则梯度可以进入积分内部但需要注意p_θ(τ)也依赖于θ$$ \int \nabla_\theta [p_\theta(\tau) G(\tau)] d\tau $$由于G(τ)不依赖于θ可以将其提出$$ \int G(\tau) \nabla_\theta p_\theta(\tau) d\tau $$2.2 第二步引入对数导数技巧这里我们需要一个关键的数学技巧——对数导数$$ \nabla_\theta p_\theta(\tau) p_\theta(\tau) \nabla_\theta \log p_\theta(\tau) $$将其代入前式$$ \int p_\theta(\tau) G(\tau) \nabla_\theta \log p_\theta(\tau) d\tau $$这实际上又回到了一个期望的形式$$ \mathbb{E}{\tau \sim p\theta(\tau)} [G(\tau) \nabla_\theta \log p_\theta(\tau)] $$2.3 第三步分解轨迹概率现在我们需要计算∇_θ log p_θ(τ)。根据马尔可夫性质轨迹概率可以分解为$$ p_\theta(\tau) p(s_0) \prod_{t0}^{T-1} \pi_\theta(a_t|s_t) p(s_{t1}|s_t,a_t) $$取对数后变为求和$$ \log p_\theta(\tau) \log p(s_0) \sum_{t0}^{T-1} [\log \pi_\theta(a_t|s_t) \log p(s_{t1}|s_t,a_t)] $$求梯度时只有策略项π_θ(a_t|s_t)依赖于θ其他项消失$$ \nabla_\theta \log p_\theta(\tau) \sum_{t0}^{T-1} \nabla_\theta \log \pi_\theta(a_t|s_t) $$3. 蒙特卡洛梯度估计的实现3.1 基本估计器将上述结果代入我们得到策略梯度的最终表达式$$ \nabla_\theta J(\theta) \mathbb{E}{\tau \sim p\theta(\tau)} \left[ \left( \sum_{t0}^{T-1} \nabla_\theta \log \pi_\theta(a_t|s_t) \right) \left( \sum_{t0}^{T-1} \gamma^t r_{t1} \right) \right] $$这个期望可以通过采样来估计——我们只需要用当前策略π_θ与环境交互收集N条轨迹然后计算$$ \nabla_\theta J(\theta) \approx \frac{1}{N} \sum_{i1}^N \left[ \left( \sum_{t0}^{T-1} \nabla_\theta \log \pi_\theta(a_t^{(i)}|s_t^{(i)}) \right) \left( \sum_{t0}^{T-1} \gamma^t r_{t1}^{(i)} \right) \right] $$3.2 减少方差的技巧原始估计器的方差往往很大我们可以采用以下改进基准线减法引入与状态相关的基准线b(s_t)通常选择值函数V(s_t)$$ \nabla_\theta J(\theta) \approx \frac{1}{N} \sum_{i1}^N \sum_{t0}^{T-1} \nabla_\theta \log \pi_\theta(a_t^{(i)}|s_t^{(i)}) (G_t^{(i)} - b(s_t^{(i)})) $$折扣回报使用从时刻t开始的折扣回报G_t代替完整回报时间相关权重只考虑动作a_t之后获得的回报改进后的估计器$$ \nabla_\theta J(\theta) \approx \frac{1}{N} \sum_{i1}^N \sum_{t0}^{T-1} \nabla_\theta \log \pi_\theta(a_t^{(i)}|s_t^{(i)}) \left( \sum_{tt}^{T-1} \gamma^{t-t} r_{t1}^{(i)} - b(s_t^{(i)}) \right) $$4. Python实现示例import torch import torch.nn as nn import torch.optim as optim import numpy as np class PolicyNetwork(nn.Module): def __init__(self, state_dim, action_dim, hidden_dim64): super().__init__() self.fc1 nn.Linear(state_dim, hidden_dim) self.fc2 nn.Linear(hidden_dim, action_dim) def forward(self, x): x torch.relu(self.fc1(x)) return torch.softmax(self.fc2(x), dim-1) def get_action(self, state): probs self.forward(torch.FloatTensor(state)) dist torch.distributions.Categorical(probs) action dist.sample() log_prob dist.log_prob(action) return action.item(), log_prob def reinforce(env, policy, episodes1000, gamma0.99, lr0.01): optimizer optim.Adam(policy.parameters(), lrlr) for episode in range(episodes): state env.reset() log_probs [] rewards [] # 收集轨迹 done False while not done: action, log_prob policy.get_action(state) next_state, reward, done, _ env.step(action) log_probs.append(log_prob) rewards.append(reward) state next_state # 计算折扣回报 returns [] G 0 for r in reversed(rewards): G r gamma * G returns.insert(0, G) # 归一化回报 returns torch.tensor(returns) returns (returns - returns.mean()) / (returns.std() 1e-9) # 计算策略梯度 policy_loss [] for log_prob, G in zip(log_probs, returns): policy_loss.append(-log_prob * G) # 参数更新 optimizer.zero_grad() loss torch.stack(policy_loss).sum() loss.backward() optimizer.step()5. 实际应用中的考量在实际实现策略梯度方法时有几个关键因素需要考虑批量大小每次更新使用多少条轨迹小批量更新频繁但高方差大批量更稳定的更新但计算成本高学习率调度随着训练调整学习率初始阶段可以使用较大学习率后期需要减小学习率以稳定训练优势估计使用GAE(Generalized Advantage Estimation)等技术平衡偏差和方差公式$A_t^{GAE} \sum_{l0}^{\infty} (\gamma\lambda)^l \delta_{tl}$并行采样使用多个环境同时采样加速数据收集增加样本多样性方法偏差方差样本效率REINFORCE无偏高低带基准线无偏中中优势函数无偏低高GAE有偏可调高策略梯度方法虽然理论优美但在实际应用中常常面临梯度估计方差大的问题。这促使了后续Actor-Critic架构的发展通过引入值函数来降低方差。理解从期望到蒙特卡洛采样的推导过程是掌握这些高级算法的基础。
RELATED

相关推荐

WebStorm 2018官方安装包获取与离线部署全指南

WebStorm 2018官方安装包获取与离线部署全指南

1. 项目概述:为什么2018版WebStorm至今仍有真实需求? WebStorm 2018不是过时的古董,而是特定开发场景下依然稳如磐石的生产工具。我接手过三个真实项目:一个运行在CentOS 6.5上的老旧ERP前端维护任务,JDK版本被锁死在1…

📅 2026/7/20 12:24:44
WebStorm 2018 实操指南:JVM底层适配与遗留项目精准开发

WebStorm 2018 实操指南:JVM底层适配与遗留项目精准开发

1. 这不是“一键安装”,而是真正能跑起来的 WebStorm 2018 实操指南 WebStorm 2018 是 JetBrains 在 2018 年 3 月正式发布的稳定版本(最终版号为 2018.1.6,构建号 181.5281.33),它处在前端开发工具演进的关键节点上&…

📅 2026/7/26 1:57:56
STM32L152ZD与TLA2518高精度ADC信号采集方案

STM32L152ZD与TLA2518高精度ADC信号采集方案

1. 项目背景与核心需求在工业自动化、医疗设备和消费电子等领域,模拟信号到数字信号的可靠转换一直是嵌入式系统设计的关键环节。TLA2518作为一款高精度模数转换器(ADC),配合STM32L152ZD这款低功耗MCU,能够为各类传感器信号采集提供稳定可靠的…

📅 2026/8/15 7:17:58
MORE NEWS

更多资讯

📰

OmniRoute 发布检查清单:从版本号、OpenAPI 契约到 CI 同步守卫的完整发布流程

OmniRoute 发布检查清单:从版本号、OpenAPI 契约到 CI 同步守卫的完整发布流程 【免费下载链接】OmniRoute Never stop coding. Free MIT AI gateway: one endpoint, 352 providers (150 free), 1200 models Kimi, Claude, GPT, Gemini, GLM, DeepSeek, MiniMax. Wo…

📰

形参对实参的影响:值传递与引用传递的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

marimo 云服务示例实战:用 uv 沙箱运行 GCP 数据应用,用 Modal 部署 GPU 笔记本与应用

marimo 云服务示例实战:用 uv 沙箱运行 GCP 数据应用,用 Modal 部署 GPU 笔记本与应用 【免费下载链接】marimo A reactive notebook for Python — run reproducible experiments, query with SQL, execute as a script, deploy as an app, and version…

📰

AI Agent多意图路由与查询分发技术解析

1. AI Agent架构中的核心挑战与解决方案在构建现代AI智能体系统时,我们常常面临一个根本性矛盾:用户习惯用自然语言表达需求,而系统底层需要结构化指令才能精准执行。这种语义鸿沟直接影响了AI Agent的实用性和用户体验。以一个典型IT支持场景…

📰

超帧(HyperFrame)设计指南:解决多传感器数据同步与封装的工程方法论

干了这么多年数据采集和实时系统,我慢慢发现一个规律:凡是涉及多路数据同步的场景,不管前端怎么折腾,最后几乎都会收敛到同一个思路上——把多个杂乱无章的帧,打包成一个更大的结构来统一处理。这个结构就是 hyperfram…

📰

CogVideoX LoRA 微调手把手:单卡完成定制视频生成的完整路径

CogVideoX LoRA 微调手把手:单卡完成定制视频生成的完整路径 【免费下载链接】CogVideo text and image to video generation: CogVideoX (2024) and CogVideo (ICLR 2023) 项目地址: https://gitcode.com/GitHub_Trending/co/CogVideo CogVideoX 是清华大学…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬