强化学习p3-策略学习

news/2024/5/10 16:36:52/文章来源:https://blog.csdn.net/qq_44641344/article/details/130581303

Policy Network (策略网络)

我们无法知道策略函数 π \pi π所以要做函数近似,求一个近似的策略函数
使用策略网络 π ( a ∣ s ; θ ) \pi(a|s;\theta) π(as;θ) 去近似策略函数 π ( a ∣ s ) \pi(a|s) π(as)

在这里插入图片描述
∑ a ∈ A π ( a ∣ s ; θ ) = 1 \sum_{a\in A} \pi(a|s;\theta) = 1 aAπ(as;θ)=1
动作空间A的大小是多少,输出向量的维度就是多少。

策略学习的目标函数

状态价值函数(State-value function)
V π ( s t ) = E A [ Q π ( s t , A ) ] = ∑ a π ( a ∣ s t ) ⋅ Q π ( s t , a ) V_\pi(s_t)=E_A[Q_\pi(s_t,A)] = \sum_a\pi(a|s_t)\cdot Q_\pi(s_t,a) Vπ(st)=EA[Qπ(st,A)]=aπ(ast)Qπ(st,a)
对A求期望,去掉A的影响
用策略网络 π ( a ∣ s t ; θ ) \pi(a|s_t;\theta) π(ast;θ) 去近似策略函数 π ( a ∣ s t ) \pi(a|s_t) π(ast)
V π ( s t ; θ ) = E A [ Q π ( s t , A ) ] = ∑ a π ( a ∣ s t ; θ ) ⋅ Q π ( s t , a ) V_\pi(s_t;\theta)=E_A[Q_\pi(s_t,A)] = \sum_a\pi(a|s_t;\theta)\cdot Q_\pi(s_t,a) Vπ(st;θ)=EA[Qπ(st,A)]=aπ(ast;θ)Qπ(st,a)
近似状态价值既依赖于当前状态 s t s_t st,也依赖于策略网络 π \pi π的参数 θ \theta θ
如果一个策略很好,那么状态价值函数的近似 V π ( s ; θ ) V_\pi(s;\theta) Vπ(s;θ)的均值应当很大。因此我们定义目标函数:
J ( θ ) = E S [ V π ( s ; θ ) ] J(\theta)=E_S[V_\pi(s;\theta)] J(θ)=ES[Vπ(s;θ)]
目标函数 J ( θ ) J(\theta) J(θ) 排除了状态 S S S的因素,只依赖于策略网络 π \pi π的参数 θ \theta θ。策略越好,则 J ( θ ) J(\theta) J(θ) 越大,所以策略学习可以被看作是这样一个优化问题:
m a x θ J ( θ ) \mathop{max}_{\theta}J(\theta) maxθJ(θ)
通过学习参数 θ \theta θ ,使得目标函数 J ( θ ) J(\theta) J(θ)
越来越大,也就意味着策略网络越来越好。

使用策略梯度上升更新 θ \theta θ ,使得 J ( θ ) J(\theta) J(θ)增大。
设当前策略网络的参数为 θ \theta θ,做梯度上升更新参数,得到新的参数 θ ′ \theta' θ, β \beta β为学习率
θ ′ = θ + β ⋅ ∂ V ( s ; θ ) ∂ θ \theta' =\theta+\beta \cdot \frac{\mathrm{\partial}V(s;\theta)}{\mathrm{\partial}\theta} θ=θ+βθV(s;θ)

策略梯度(Policy Gradient)

∂ V ( s ; θ ) ∂ θ \frac{\mathrm{\partial}V(s;\theta)}{\mathrm{\partial}\theta} θV(s;θ)大概推导 不严谨 实际上 Q π Q_\pi Qπ中也有 θ \theta θ要求导
在这里插入图片描述

使用策略梯度更新策略网络

算法
1、在 t t t时刻观测到状态 s t s_t st
2、根据策略网络 π ( . ∣ s t ; θ ) \pi(.|s_t;\theta) π(.∣st;θ)随机抽样一个动作 a t a_t at
3、计算动作价值 q t ≈ Q π ( s t , a t ) q_t \approx Q_\pi(s_t,a_t) qtQπ(st,at)
4、计算策略网络关于参数 θ \theta θ的微分 d θ = ∂ l n π ( a ∣ s ; θ ) ∂ θ ∣ θ = θ t d\theta = \frac{\mathrm{\partial}ln\pi(a|s;\theta)}{\mathrm{\partial}\theta}|_{\theta=\theta_t} dθ=θl(as;θ)θ=θt
5、计算近似策略梯度 g ( a t , θ t ) = q t , d θ g(a_t,\theta_t)=q_t,d\theta g(at,θt)=qt,dθ
6、更新策略网络: θ t + 1 = θ t + β ⋅ g ( a t , θ t ) \theta_{t+1}=\theta_t+\beta \cdot g(a_t,\theta_t) θt+1=θt+βg(at,θt)

在第 3 步中,怎么计算 q t q_t qt
在后面章节中,我们用两种方法对 Q π ( s , a ) Q_\pi(s,a) Qπ(s,a) 做近似。
1、REINFORCE 算法
用实际观测的回报 u u u近似 Q π ( s , a ) Q_\pi(s,a) Qπ(s,a)
2、actor-critic 算法
用神经网络 q ( s , a ; w ) q(s,a;w) q(s,a;w)近似 Q π ( s , a ) Q_\pi(s,a) Qπ(s,a)

所以想要近似求得 π \pi π函数 还要近似求得 Q π Q_\pi Qπ函数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_298098.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《狂飙》原著来了,邀你重新见证

2023年的开篇十分精彩且丰富,经历过生活的不幸,新的一年万物复兴,每个人心底那颗躁动的心又重新释放,希望新的开始不负所望,年末复盘时所得皆所愿! 开篇 开年影视第一炮,炸出了所有人被压抑的内…

告别PPT手残党!这6款AI神器,让你秒变PPT王者!

如果你是一个PPT手残党,每每制作PPT总是让你焦头烂额,那么你一定需要这篇幽默拉风的推广文案! 我向你保证,这篇文案将帮助你发现6款AI自动生成PPT的神器,让你告别PPT手残党的身份,成为一名PPT王者。 无论…

计算机图形学 | 实验六:旋转立方体

计算机图形学 | 实验六:旋转立方体 计算机图形学 | 实验六:旋转立方体Z-缓冲GLM函数库PVM矩阵PVM矩阵的使用 华中科技大学《计算机图形学》课程 MOOC地址:计算机图形学(HUST) 计算机图形学 | 实验六:旋转…

单词词义、词性、例句查询python代码

单词发音、词义、词性、例句查询、输出结果更简洁,一次可查多个单词 运行该代码,命令窗口输入单词,单词用“/”分开,例如:noisy/problem/community/neighbor 可以更多。先安装两个python包requests、 beautifulsoup4&…

卖一辆亏5.8万美元!福特的困扰

随着电动化进入关键的「抢量」周期,加上年初掀起的降价潮,对于还无法适应转型节奏的传统汽车制造商来说,现在是一个艰难的时刻。 本月初,福特首席执行官Jim Farley表示,电动汽车市场的降价是"令人担忧的趋势"…

2023/5/8总结

JAVA基础知识(2) 1.方法 1、方法定义 格式:public static void 方法名(){ //方法体 } 2、方法调用 格式:方法名(); 3、方法的通用格式 public static 返回值类型方法名&…

车载测试-can报文解析规则实例

报文解析 报文组成 一般报文主要有以下几个参数(比较全的情况下) 例 解析报文时主要用到的是帧ID和帧数据 帧ID 接收到的帧ID是十六进制的形式,由29位标识符转换的,目前大多数的通信协议中都直接给出了相应的帧ID&#xff0c…

mathtype不激活能用吗 mathtype产品密钥如何取得

在文档中输入数学式子时一般会用到mathtype,虽然mathtype为广大用户提供了一定期限的试用期,但试用期后如果没有成为正式用户,那么部分功能可能就用不了了。有些小伙伴可能会对mathtype不激活能用吗,mathtype产品密钥如何取得这两…

kt:reified和sam转换(Single Abstract Method Conversions)

什么是refied关键字 ​由于我们都知道Kotlin和Java一样都存在着泛型擦除问题,而Kotlin它知道Java所带来的这个问题,所以对此Kotlin留了一个后门,就是通过inline函数保证使得泛型类的类型实参在运行时能够保留,这样的操作 Kotlin 中…

git简介和使用、基础命令

文章目录 一、git的安装与配置二、Git工作区原理三、Git的使用和仓库的创建四、Git的常用操作五、配置公钥六、IDEA中配置Git 一、git的安装与配置 https://tortoisegit.org/ 下载对应版本安装即可 注意:配置中输入邮箱和密码一定要和自己的git账户一致 git的配置…

copilot 逆向

原文: copilot-explorer | Hacky repo to see what the Copilot extension sends to the server 对我来说,Github Copilot 极其有用。它经常能神奇地读懂我的想法并给出有用的建议。最让我惊讶的是,它能够从周围的代码中正确地“猜测”出函数…

设计模式 -- 备忘录模式

前言 月是一轮明镜,晶莹剔透,代表着一张白纸(啥也不懂) 央是一片海洋,海乃百川,代表着一块海绵(吸纳万物) 泽是一柄利剑,千锤百炼,代表着千百锤炼(输入输出) 月央泽,学习的一种过程,从白纸->吸收各种知识->不断输入输出变成自己的内容 希望大家一起坚持这个过程,也同…

电脑cpu占用率高?怎么办?1分钟快速解决!

案例:电脑cup过高怎么办? 【我的电脑运行缓慢,导致我学习和工作的效率很低。刚刚查看了一下电脑,发现它的cpu占用率很高。有没有小伙伴知道如何解决此电脑cpu过高的问题?】 电脑是我们生活中不可缺少的工具&#xff…

1— .Net MVC之控制器

在上下文中使用的控制器 问题 答案 什么是控制器? 控制器包含用于接收请求、更新应用程序状态或模型以及选择将发送给客户端的响应的逻辑 控制器有什么用? 控制器是MVC项目的核心,并包含Web应用程序的逻辑 如何使用控制器? …

接口自动化测试神器:Python+Requests+Unittest让你的测试用例飞起来

B站首推!2023最详细自动化测试合集,小白皆可掌握,让测试变得简单、快捷、可靠 随着互联网的发展,越来越多的应用程序采用了分布式架构,并通过API接口进行数据交换。因此,接口自动化测试已经成为了保证软件质…

过滤器对前端请求参数进行解码URLDecoder,接口接收参数类型为map,解码无效问题

文章目录 一、前言二、设计思路三、代码实现四、启动测试五、过滤器解码无效六、源码跟踪七、解决方案八、再次重启测试九、总结 一、前言 最近做的一个公司项目,因为客户需要对特殊字符做搜索,但是前端的请求参数无法传递到后端,所以前端对…

光耦继电器和普通继电器的区别概述

光耦继电器和普通继电器都是电气传感器元件中的一种,其都能够将电能转化成机械能,并实现各种开关控制和保护控制。但光耦继电器与普通继电器最大的区别在于其输入电路与输出电路之间通过光电转换器件,而不是实现物理接触。本文将从结构、工作…

Spring MVC——Rest风格

REST(Representational State Transfer) 当我们想表示一个网络资源的时候,可以使用两种方式: 我们分别用查询id为1的用户信息与保存用户信息举例传统风格资源描述形式 http://localhost/user/getById?id1http://localhost/user/saveUser RES…

记一次azkaban调度异常处理

一、背景 预发布环境使用的数据库性能比较低,根据业务测试的需求,需要将数据库更换成 稳定高性能的数据库。更换业务数据库后azkaban定时任务失败 二、数据库服务信息 说明:该部分使用代号来代替,非真实信息 该数据库存储了azka…

linux彻底卸载mysql步骤

第一步,先查看是否安装了mysql mysql -u root -p 如果提示bash: mysql: command not found...则没有安装过mysql 如果提示需要输入密码,那就证明安装了mysql 第二步,查看mysql运行状态并关闭 先查看下mysql的运行状态(如果已经…