当前位置: 首页 > news >正文

策略梯度定理公式的详细推导

策略梯度定理公式的详细推导

以下是策略梯度定理公式从基础概率公式到最终形式的完整推导,帮助更清晰地理解推导过程中的每一个步骤。


1. 策略梯度的目标

我们希望最大化期望累积奖励 ( J ( θ ) J(\theta) J(θ) ),其定义为:

J ( θ ) = E π θ [ R t ] J(\theta) = \mathbb{E}_{\pi_\theta} \left[ R_t \right] J(θ)=Eπθ[Rt]

根据期望的定义,可以将 ( J ( θ ) J(\theta) J(θ) ) 写为积分形式:

J ( θ ) = ∫ τ P ( τ ; θ ) R t d τ J(\theta) = \int_{\tau} P(\tau; \theta) R_t \, d\tau J(θ)=τP(τ;θ)Rtdτ

其中:

  • ( τ = ( s 0 , a 0 , s 1 , a 1 , … ) \tau = (s_0, a_0, s_1, a_1, \dots) τ=(s0,a0,s1,a1,) ) 表示一条轨迹;
  • ( P ( τ ; θ ) P(\tau; \theta) P(τ;θ) ) 是轨迹的概率分布。

接下来,我们对目标 ( J ( θ ) J(\theta) J(θ) ) 求梯度:

∇ θ J ( θ ) = ∇ θ ∫ τ P ( τ ; θ ) R t d τ \nabla_\theta J(\theta) = \nabla_\theta \int_{\tau} P(\tau; \theta) R_t \, d\tau θJ(θ)=θτP(τ;θ)Rtdτ

根据微积分中的交换求导与积分的规则,将梯度符号与积分符号交换位置:

∇ θ J ( θ ) = ∫ τ ∇ θ [ P ( τ ; θ ) R t ] d τ \nabla_\theta J(\theta) = \int_{\tau} \nabla_\theta \left[ P(\tau; \theta) R_t \right] d\tau θJ(θ)=τθ[P(τ;θ)Rt]dτ

因为 ( R t R_t Rt ) 不依赖于参数 ( θ \theta θ ),所以可以提取出来:

∇ θ J ( θ ) = ∫ τ R t ∇ θ P ( τ ; θ ) d τ \nabla_\theta J(\theta) = \int_{\tau} R_t \nabla_\theta P(\tau; \theta) \, d\tau θJ(θ)=τRtθP(τ;θ)dτ


2. 引入对数梯度

为了化简 ( ∇ θ P ( τ ; θ ) \nabla_\theta P(\tau; \theta) θP(τ;θ) ),我们引入对数梯度技巧

∇ θ P ( τ ; θ ) = P ( τ ; θ ) ⋅ ∇ θ log ⁡ P ( τ ; θ ) \nabla_\theta P(\tau; \theta) = P(\tau; \theta) \cdot \nabla_\theta \log P(\tau; \theta) θP(τ;θ)=P(τ;θ)θlogP(τ;θ)

将其代入梯度公式:

∇ θ J ( θ ) = ∫ τ R t ⋅ P ( τ ; θ ) ⋅ ∇ θ log ⁡ P ( τ ; θ ) d τ \nabla_\theta J(\theta) = \int_{\tau} R_t \cdot P(\tau; \theta) \cdot \nabla_\theta \log P(\tau; \theta) \, d\tau θJ(θ)=τRtP(τ;θ)θlogP(τ;θ)dτ

根据概率分布 ( P ( τ ; θ ) P(\tau; \theta) P(τ;θ) ) 的性质,可以用期望形式重新表示:

∇ θ J ( θ ) = E π θ [ R t ⋅ ∇ θ log ⁡ P ( τ ; θ ) ] \nabla_\theta J(\theta) = \mathbb{E}_{\pi_\theta} \left[ R_t \cdot \nabla_\theta \log P(\tau; \theta) \right] θJ(θ)=Eπθ[RtθlogP(τ;θ)]

这一步的重要性在于将积分转化为在策略 ( π θ \pi_\theta πθ ) 下的期望,使得后续计算能够通过采样来实现。


3. 轨迹概率分布的分解

轨迹 ( τ \tau τ ) 的概率 ( P ( τ ; θ ) P(\tau; \theta) P(τ;θ) ) 可以分解为以下形式:

P ( τ ; θ ) = P ( s 0 ) ∏ t = 0 ∞ π θ ( a t ∣ s t ) P ( s t + 1 ∣ s t , a t ) P(\tau; \theta) = P(s_0) \prod_{t=0}^{\infty} \pi_\theta(a_t | s_t) P(s_{t+1} | s_t, a_t) P(τ;θ)=P(s0)t=0πθ(atst)P(st+1st,at)

其中:

  • ( P ( s 0 ) P(s_0) P(s0) ):初始状态的概率;
  • ( π θ ( a t ∣ s t ) \pi_\theta(a_t | s_t) πθ(atst) ):策略分布,表示在状态 ( s t s_t st ) 下采取动作 ( a t a_t at ) 的概率;
  • ( P ( s t + 1 ∣ s t , a t ) P(s_{t+1} | s_t, a_t) P(st+1st,at) ):环境的状态转移概率。

对 ( log ⁡ P ( τ ; θ ) \log P(\tau; \theta) logP(τ;θ) ) 求导时,仅有 ( π θ ( a t ∣ s t ) \pi_\theta(a_t | s_t) πθ(atst) ) 与参数 ( θ \theta θ ) 相关,因此可化简为:

∇ θ log ⁡ P ( τ ; θ ) = ∑ t = 0 ∞ ∇ θ log ⁡ π θ ( a t ∣ s t ) \nabla_\theta \log P(\tau; \theta) = \sum_{t=0}^{\infty} \nabla_\theta \log \pi_\theta(a_t | s_t) θlogP(τ;θ)=t=0θlogπθ(atst)

将此结果代入梯度公式:

∇ θ J ( θ ) = E π θ [ R t ⋅ ∑ t = 0 ∞ ∇ θ log ⁡ π θ ( a t ∣ s t ) ] \nabla_\theta J(\theta) = \mathbb{E}_{\pi_\theta} \left[ R_t \cdot \sum_{t=0}^{\infty} \nabla_\theta \log \pi_\theta(a_t | s_t) \right] θJ(θ)=Eπθ[Rtt=0θlogπθ(atst)]


4. 化简最终公式

将期望中的求和移到外部,可以得到:

∇ θ J ( θ ) = ∑ t = 0 ∞ E π θ [ R t ⋅ ∇ θ log ⁡ π θ ( a t ∣ s t ) ] \nabla_\theta J(\theta) = \sum_{t=0}^{\infty} \mathbb{E}_{\pi_\theta} \left[ R_t \cdot \nabla_\theta \log \pi_\theta(a_t | s_t) \right] θJ(θ)=t=0Eπθ[Rtθlogπθ(atst)]

在每个时间步 ( t t t ),我们只需要计算与当前动作 ( a t a_t at ) 和状态 ( s t s_t st ) 相关的对数梯度,从而得到:

∇ θ J ( θ ) = E π θ [ R t ⋅ ∇ θ log ⁡ π θ ( a t ∣ s t ) ] \nabla_\theta J(\theta) = \mathbb{E}_{\pi_\theta} \left[ R_t \cdot \nabla_\theta \log \pi_\theta(a_t | s_t) \right] θJ(θ)=Eπθ[Rtθlogπθ(atst)]

这就是策略梯度定理的最终公式。


5. 使用对数梯度性质验证

策略梯度公式的核心在于以下对数梯度性质:

∇ θ π θ ( a t ∣ s t ) = π θ ( a t ∣ s t ) ⋅ ∇ θ log ⁡ π θ ( a t ∣ s t ) \nabla_\theta \pi_\theta(a_t | s_t) = \pi_\theta(a_t | s_t) \cdot \nabla_\theta \log \pi_\theta(a_t | s_t) θπθ(atst)=πθ(atst)θlogπθ(atst)

证明如下:

  • 根据对数定义, ( log ⁡ x \log x logx ) 的导数为 ( 1 x \frac{1}{x} x1 );
  • 对 ( π θ ( a t ∣ s t ) \pi_\theta(a_t | s_t) πθ(atst) ) 求梯度:

∇ θ log ⁡ π θ ( a t ∣ s t ) = 1 π θ ( a t ∣ s t ) ⋅ ∇ θ π θ ( a t ∣ s t ) \nabla_\theta \log \pi_\theta(a_t | s_t) = \frac{1}{\pi_\theta(a_t | s_t)} \cdot \nabla_\theta \pi_\theta(a_t | s_t) θlogπθ(atst)=πθ(atst)1θπθ(atst)

两边乘以 ( π θ ( a t ∣ s t ) \pi_\theta(a_t | s_t) πθ(atst) ):

∇ θ π θ ( a t ∣ s t ) = π θ ( a t ∣ s t ) ⋅ ∇ θ log ⁡ π θ ( a t ∣ s t ) \nabla_\theta \pi_\theta(a_t | s_t) = \pi_\theta(a_t | s_t) \cdot \nabla_\theta \log \pi_\theta(a_t | s_t) θπθ(atst)=πθ(atst)θlogπθ(atst)

将此性质代入公式,概率 ( π θ ( a t ∣ s t ) \pi_\theta(a_t | s_t) πθ(atst) ) 被约去,得到:

∇ θ J ( θ ) = E π θ [ R t ⋅ ∇ θ log ⁡ π θ ( a t ∣ s t ) ] \nabla_\theta J(\theta) = \mathbb{E}_{\pi_\theta} \left[ R_t \cdot \nabla_\theta \log \pi_\theta(a_t | s_t) \right] θJ(θ)=Eπθ[Rtθlogπθ(atst)]


总结

通过以上详细推导,可以看出策略梯度定理的核心在于以下两点:

  1. 引入对数梯度性质:将复杂的概率梯度转化为对数形式;
  2. 利用轨迹概率分布的分解:化简梯度公式,使得计算集中在策略部分 ( π θ ( a t ∣ s t ) \pi_\theta(a_t | s_t) πθ(atst) )。

最终的策略梯度公式为:

∇ θ J ( θ ) = E π θ [ R t ⋅ ∇ θ log ⁡ π θ ( a t ∣ s t ) ] \nabla_\theta J(\theta) = \mathbb{E}_{\pi_\theta} \left[ R_t \cdot \nabla_\theta \log \pi_\theta(a_t | s_t) \right] θJ(θ)=Eπθ[Rtθlogπθ(atst)]

这一公式既简洁又高效,是策略梯度方法的理论基础。

后记

2024年12月12日17点00分于上海,在GPT4o大模型辅助下完成。

相关文章:

策略梯度定理公式的详细推导

策略梯度定理公式的详细推导 以下是策略梯度定理公式从基础概率公式到最终形式的完整推导,帮助更清晰地理解推导过程中的每一个步骤。 1. 策略梯度的目标 我们希望最大化期望累积奖励 ( J ( θ ) J(\theta) J(θ) ),其定义为: J ( θ ) E…...

力扣-图论-10【算法学习day.60】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非…...

《Python WEB安全 库全解析》

《Python WEB安全 库全解析》 一、Python WEB安全 库概述二、常见的 Python WEB安全 库介绍1. Jiasule2. Awesome Python Security3. Flask-Security4. Flask-SeaSurf 三、Python WEB 安全库的优缺点1. 优点2. 缺点 四、Python WEB 安全库的使用场景1. 开发 Web 应用2. 处理敏感…...

Linux yum-config-manager命令异常

错误信息 使用 yum-config-manager命令时错误信息如下 sudo yum-config-manager \ > --add-repo \ > https://download.docker.com/linux/centos/docker-ce.repo sudo: yum-config-manager: command not found 解决办法 第一步: sudo yum -y install yum-u…...

ios 开发配置蓝牙

如果使用了蓝牙功能, 又没有配置, 会出现以下错误: This app has crashed because it attempted to access privacy-sensitive data without a usage description. The apps Info.plist must contain an NSBluetoothAlwaysUsageDescription key with a string value explaini…...

geoserver(1) 发布sql 图层 支持自定义参数

前提使用postgis 数据库支持关联 join 支持 in,not in,like,及其他sql原生函数 新增sql图层 编写自定义sql 编辑sql语句必须输出带有geom数据 正则表达式去除 设置id以及坐标参考系 预览sql图层效果 拼接sql参数 http://xxx.com/geoserver/weather/wms?SERVICEWMS&VERSI…...

Linux:network:添加ip的时候自动添加一个本地路由

文章目录 问题问题 最近在看一个路由的问题,顺便看内核代码,发现在添加IP的时候,内核会自动添加一个local route。 net/ipv4/devinet.c inet_rtm_newaddr->__inet_insert_ifa /* Send message first, then call notifier.Notifier will trigger FIB update, so thatlis…...

go 集成nacos注册中心、配置中心

使用限制 Go>v1.15 Nacos>2.x 安装 使用go get安装SDK: go get -u github.com/nacos-group/nacos-sdk-go/v2 快速使用 初始化客户端配置ClientConfig constant.ClientConfig{TimeoutMs uint64 // 请求Nacos服务端的超时时间,默…...

ssd202d-badblock-坏块检测

这边文章讲述的是坏快检测功能 思路: 1.第一次烧录固件会实现跳坏块,但是后续使用会导致坏块的产生; 于是我在uboot环境变量添加了两个变量来控制坏快 lb_badnum //坏块个数 lb_badoff //坏块所在位置 2.第一次开机会根据lb_badnum是否…...

MySQL-练习-数据介绍

文章目录 一. 数据介绍1. 数据结构2. 创建数据库,数据表3. 员工表(employees)练习1 4. 顾客表(customers)练习2 5. 商品(products)和商品类别(categories)表练习3 6. 供应商表(suppliers)练习4 7. 订单和订单明细表练习5 二. 数据汇总三. 使用CASE WHEN …...

React框架:解锁现代化Web开发的新维度

在当今前端开发领域,React 无疑是一颗璀璨的明星。React 是由 Facebook 开发的用于构建用户界面的 JavaScript 库,它在前端开发中占据着重要的地位,为开发者提供了一种高效、灵活且可维护的方式来构建复杂的用户界面。 一、React 的背景与开…...

电阻功率,限流,等效电阻

1 电阻额定功率 2 电阻限流作用 3 电阻并联等效电阻...

Qt | 开发工具(top1)

Qt Creator 跨平台、完整的集成开发环境(IDE),供应用程序开发者创建用于多个桌面、嵌入式和移动设备平台的应用程序。 Qt Linguist 一套将Qt C和Qt Quick应用程序翻译成本地语言的工具。 qmake Qt自动化构建工具,简化了不同平台的构建过程。…...

Node.js express

1. express 介绍 express 是一个基于 Node.js 平台的极简、灵活的 WEB 应用开发框架,官方网址:https://www.expressjs.com.cn/简单来说,express 是一个封装好的工具包,封装了很多功能,便于我们开发 WEB 应用&#xff…...

ios h5中在fixed元素中的input被focus时,键盘遮挡input (van-popup、van-feild)

问题描述: 前提:我使用的是vant组件库,其中一个页面中有一个van-popup组件,van-popup组件中又嵌套了一个van-field组件预期结果:当点击van-feild输入框时,键盘弹起,输入框显示在键盘上方实际结…...

springboot整合lua脚本在Redis实现商品库存扣减

1、目的 使用lua脚本,可以保证多条命令的操作原子性;同时可以减少操作IO(比如说判断redis对应数据是否小于0,小于0就重置为100,这个场景一般是取出来再判断,再存放进行,就至少存在2次IO,用lua脚…...

MySQL ON DUPLICATE KEY UPDATE影响行数

目录 分析为什么Updates返回7 总结 数据库更新日志如下 insertOrUpdateList|> Preparing: INSERT INTO clue_user_tag (vuid, tag_id, tag_type, content) VALUES (?, ?, ?, ?) , (?, ?, ?, ?) , (?, ?, ?, ?) , (?, ?, ?, ?) ON DUPLICATE KEY UPDATE …...

uniapp小程序 slot中无法传递外部参数的解决方案

最近在封装一个List组件&#xff0c;外部传给我数据&#xff0c;我循环后将每个Item部分slot到外部&#xff0c;由调用者自己去写item布局&#xff0c;类似ElementUI、iView的Tabe列表。 List: <view v-if"list.length > 0" class"list-scroll__item&quo…...

umi实现动态获取菜单权限

文章目录 前景登录组件编写登录逻辑菜单的时机动态路由页面刷新手动修改地址 前景 不同用户拥有不同的菜单权限&#xff0c;现在我们实现登录动态获取权限菜单。 登录组件编写 //当我们需要使用dva的dispatch函数时&#xff0c;除了通过connect函数包裹组件还可以使用这种方…...

Pytest-Bdd-Playwright 系列教程(14):Docstring 参数

Pytest-Bdd-Playwright 系列教程&#xff08;14&#xff09;&#xff1a;Docstring 参数 前言一、什么是docstring?二、基本语法三、主要特点四、实际例子五、注意事项六、使用建议总结 前言 在自动化测试的过程中&#xff0c;我们经常需要处理复杂的测试数据或需要输入多行文…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

华为OD机考-机房布局

import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...