策略梯度方法
策略梯度方法
数学背景
给定一个标量函数 J ( θ ) J\left(\theta\right) J(θ),利用梯度上升法,使其最大化,此时的 π θ \pi_\theta πθ就是最优策略。
θ t + 1 = θ t + α ∇ θ J ( θ t ) \theta_{t+1}=\theta_t+\alpha \nabla_\theta J(\theta_t) θt+1=θt+α∇θJ(θt)
标量函数 J ( θ ) J(\theta) J(θ)
就是上面提到的最优指标 J J J,一般有以下几种定义:
-
平均状态价值
v ˉ π = ∑ s ∈ S d π ( s ) v π ( s ) = E [ v π ( S ) ] \bar v_\pi =\sum_{s\in\mathcal{S}}d_\pi(s)v_\pi(s) =\mathbb{E}\left[ v_\pi(S) \right] vˉπ=s∈S∑dπ(s)vπ(s)=E[vπ(S)]
如果 d d d与 π \pi π无关,那么记 d π = d 0 d_\pi=d_0 dπ=d0,就Grid World问题,由于状态价值 v v v是回报的期望,考虑两种具体情况:- 起始在随机位置,均匀考虑每个状态价值: d 0 = 1 / ∣ S ∣ d_0=1/|\mathcal{S}| d0=1/∣S∣
- 起始在固定位置,只考虑 s 0 s_0 s0状态价值即可: d 0 ( s 0 ) = 1 , d 0 ( s ≠ s 0 ) d_0(s_0)=1,\ d_0(s\neq s_0) d0(s0)=1, d0(s=s0)
如果 d d d与 π \pi π有关,求解 d π T P π = d π T d_\pi^TP_\pi=d_\pi^T dπTPπ=dπT得到 d π d_\pi dπ,其中 P π P_\pi Pπ是在策略 π \pi π下的状态转移矩阵。此时,如果一个状态经常出现,对应的 d ( s ) d(s) d(s)就会变大。
-
平均瞬时奖励
r ˉ π = ∑ s ∈ S d π ( s ) r π ( s ) = E [ r π ( S ) ] \bar r_\pi=\sum_{s\in \mathcal{S}}d_\pi(s)r_\pi(s)=\mathbb{E}\left[r_\pi(S)\right] rˉπ=s∈S∑dπ(s)rπ(s)=E[rπ(S)]其中 r π ( s ) r_\pi(s) rπ(s)是agent在某状态按策略 π \pi π在动作空间中采取动作的瞬时奖励
r π ( s ) = ∑ a ∈ A π ( s ∣ a ) r ( s , a ) r_\pi(s)=\sum_{a\in \mathcal{A}}\pi(s\mid a)r(s,a) rπ(s)=a∈A∑π(s∣a)r(s,a)此定义与episode reward等价,即当episode长度无限大时, s s s按 d π d_\pi dπ分布,即
lim n → ∞ 1 n E [ ∑ k = 1 n R t + k ] ⟺ r ˉ π \lim_{n\to\infty}\frac{1}{n}\mathbb{E}[\sum_{k=1}^{n}R_{t+k}] \iff \bar r_\pi n→∞limn1E[k=1∑nRt+k]⟺rˉπ
J ( θ ) J(\theta) J(θ)的梯度
上面两类指标函数的梯度都可以写成:
∇ θ J ( θ ) = ∑ s ∈ S η ( s ) ∑ a ∈ A ∇ θ π ( a ∣ s , θ ) q π ( s , a ) = ∑ s ∈ S η ( s ) ∑ a ∈ A π ( a ∣ s , θ ) ∇ θ log π ( a ∣ s , θ ) q π ( s , a ) = E [ ∇ θ log π ( A ∣ S , θ ) q π ( S , A ) ] \begin{aligned} \nabla_\theta J(\theta) &=\sum_{s\in \mathcal{S}}\eta(s)\sum_{a\in \mathcal{A}} \nabla_\theta \pi(a|s,\theta)q_\pi(s,a)\\ &=\sum_{s\in \mathcal{S}}\eta(s)\sum_{a\in \mathcal{A}} \pi(a|s,\theta)\nabla_\theta \log\pi(a|s,\theta)q_\pi(s,a)\\ &=\mathbb{E}[\nabla_\theta \log\pi(A|S,\theta)q_\pi(S,A)] \end{aligned} ∇θJ(θ)=s∈S∑η(s)a∈A∑∇θπ(a∣s,θ)qπ(s,a)=s∈S∑η(s)a∈A∑π(a∣s,θ)∇θlogπ(a∣s,θ)qπ(s,a)=E[∇θlogπ(A∣S,θ)qπ(S,A)]
其中, S ∼ η S\sim \eta S∼η, A ∼ π ( a ∣ s , θ ) A\sim \pi(a|s,\theta) A∼π(a∣s,θ)
训练时,使用随机近似的梯度:
∇ θ J ≈ ∇ θ log π ( a ∣ s , θ ) q π ( s , a ) \nabla_\theta J\approx\nabla_\theta \log\pi(a|s,\theta)q_\pi(s,a) ∇θJ≈∇θlogπ(a∣s,θ)qπ(s,a)
REINFORCE伪代码

相关文章:
策略梯度方法
策略梯度方法 数学背景 给定一个标量函数 J ( θ ) J\left(\theta\right) J(θ),利用梯度上升法,使其最大化,此时的 π θ \pi_\theta πθ就是最优策略。 θ t 1 θ t α ∇ θ J ( θ t ) \theta_{t1}\theta_t\alpha \nabla_\theta…...
博客系统之单元测试
对博客系统进行单元测试 1、测试查找已存在的用户 测试名称 selectByUsernameTest01 测试源码 //查找用户,存在 Test public void selectByUsernameTest01 () { UserDao userDao new UserDao(); String ret1 userDao.selectByUsername("张三").toStr…...
【ARM v8】如何在ARM上实现x86的rdtsc()函数
博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。 博客…...
redis--事务
redis事务 在Redis中,事务是一组原子性操作的集合,它们被一起执行,要么全部执行成功,要么全部回滚。虽然Redis的事务并不遵循传统数据库的ACID特性,但它仍然提供了一种将多个命令打包成一组执行的机制,适用…...
111. 二叉树的最小深度
111. 二叉树的最小深度 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明:叶子节点是指没有子节点的节点。 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeN…...
SpringMVC归纳与总结
前言 Spring的核心是IOC,一种依赖反转的解耦思想。MVC是一种处理Web请求的架构模式,当两者的作用结合,就形成了SpringMVC。 组成及运行原理 1. 两次映射 2. 为什么用适配器模式 过滤器与拦截器 1. 范围 静态资源与动态资源2. 生命周期…...
Python学习笔记_进阶篇(三)_django知识(二)
本章内容 Django model Model 基础配置 django默认支持sqlite,mysql, oracle,postgresql数据库。 <1> sqlite django默认使用sqlite的数据库,默认自带sqlite的数据库驱动 引擎名称:django.db.backends.sqlite3 <2>mysql …...
RISC-V 整型通用寄存器介绍
简介 RISC-V64位/32位提供了32个整型通用寄存器,编号是x0~x31,这些整型通用寄存器的宽度与架构位数一致。 浮点数寄存器与整形寄存器一样也提供了32个:f0~f31,位数与架构位数一致。 通用寄存器介绍 零寄存器 x0/zero x0寄存…...
学习Vue:【性能优化】异步组件和懒加载
在Vue.js应用开发中,性能优化是一个至关重要的主题,而异步组件和懒加载是提升性能的有效方法之一。本文将介绍什么是异步组件和懒加载,以及如何在Vue.js中应用这些技术来提升应用性能。 异步组件和懒加载 异步组件 异步组件是指在需要的时候…...
pdf格式文件下载不预览,云存储的跨域解决
需求背景 后端接口中返回的是pdf文件路径比如: pdf文件路径 (https://wangzhendongsky.oss-cn-beijing.aliyuncs.com/wzd-test.pdf) 前端适配是这样的 <ahref"https://wangzhendongsky.oss-cn-beijing.aliyuncs.com/wzd-test.pdf&…...
httplib + nlohmann::json上传数据时中文乱码解决
1、nlohmann::json 1.1 编码格式使用UTF-8 参考 nlohmann::json 中文乱码解决方案 (1)将数据先转为UTF-8格式 2、httplib 2.1 上传数据前 (1)调用httplib::Response对象的set_header()方法来设置编码格式 httplib::Response res…...
JavaScript中的设计模式之一--单例模式和模块
虽然有一种疯狂天才的感觉可能很诱人,但重新发明轮子通常不是设计软件的最佳方法。很有可能有人已经遇到了和你一样的问题,并以一种聪明的方式解决了它。这样的最佳实践在形式化后被称为设计模式。今天我们来看看它们的概念,并检查单例模式和…...
回归预测 | MATLAB实现GAM广义加性模型多输入单输出回归预测(多指标,多图)
回归预测 | MATLAB实现GAM广义加性模型多输入单输出回归预测(多指标,多图) 目录 回归预测 | MATLAB实现GAM广义加性模型多输入单输出回归预测(多指标,多图)效果一览基本介绍程序设计参考资料 效果一览 基本…...
css学习4(背景)
1、CSS中,颜色值通常以以下方式定义: 十六进制 - 如:"#ff0000"RGB - 如:"rgb(255,0,0)"颜色名称 - 如:"red" 2、background-image 属性描述了元素的背景图像. 默认情况下,背景图像进…...
二、SQL,如何实现表的创建和查询
1、新建表格(在当前数据库中新建一个表格): (1)基础语法: create table [表名]( [字段:列标签] [该列数据类型] comment [字段注释], [字段:列标签] [该列数据类型] comment [字段注释], ……,…...
大数据及软件教学与实验专业实训室建设方案
一 、系统概述 大数据及软件教学与实验大数据及软件教学与实验在现代教育中扮演重要角色,这方面的教学内容涵盖了大数据处理、数据分析、数据可视化和大数据应用等多个方面。以下是大数据及软件教学与实验的一般内容:1. 数据基础知识:教授学生…...
信创办公–基于WPS的EXCEL最佳实践系列 (公式和函数)
信创办公–基于WPS的EXCEL最佳实践系列 (公式和函数) 目录 应用背景相关知识操作步骤1、认识基本的初级函数2、相对引用,绝对引用,混合引用3、统计函数4、文本函数 应用背景 熟练掌握Excel的函数工具能让我们在日常的使用中更加方…...
【Apollo】自动驾驶感知——毫米波雷达
作者简介: 辭七七,目前大一,正在学习C/C,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖…...
SpringBoot部署到腾讯云
SpringBoot部署到腾讯云 此处默认已经申请到腾讯云服务器,因为本人还没有申请域名,所以就直接使用的ip地址 XShell连接到腾讯云 主机中填写腾讯云的公网ip地址 公网ip地址在下图中找到 接下来填写服务器的用户名与密码 一般centOS用户名为rootÿ…...
Git 设置代理
Git 传输分两种协议,SSH和 http(s),设置代理也需要分两种。 http(s) 代理 Command Line 使用 命令行 模式,可以在Powershell中使用以下命令设置代理: $env:http_proxy"http://127.0.0.1:7890" $env:https_proxy&quo…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...
