【强化学习的数学原理】第10课-Actor-Critic方法-笔记

学习资料:bilibili 西湖大学赵世钰老师的【强化学习的数学原理】课程。链接:强化学习的数学原理 西湖大学 赵世钰

文章目录

  • 一、最简单的Actor-Critic(QAC)
  • 二、Advantage Actor-Critic(A2C)
  • 三、重要性采样和Off-Policy Actor-Critic
  • 四、Deterministic Actor-Critic (DPG)
  • 五、Summary


一、最简单的Actor-Critic(QAC)

Actor-Critic算法和上节课所学习的policy gradient方法是一种方法,但不同的是,Actor-Critic方法把基于value的方法引入到policy gradient中。

什么是actor?什么是critic?
actor对应的是策略,是更新策略(policy update)的一个过程。
critic对应的是policy evaluation/value estimation的过程。
在这里插入图片描述
先回顾一下上节课讲的policy gradient方法。在policy gradient中,最终要计算的是公式1。这个一整个公式1其实就是一个actor,因为这个公式在更新参数 θ \theta θ,更新 θ \theta θ其实就是更新策略。这就对应着actor的作用。公式1中的 q t ( s t , a t ) q_t(s_t,a_t) qt(st,at)其实就是一个critic,通过计算action value来估计当前这个策略好不好。
在这里插入图片描述
如何计算 q t ( s t , a t ) q_t(s_t,a_t) qt(st,at)
有两种方法。
第一,蒙特卡洛的方法。从状态 ( s , a ) (s,a) (s,a)出发收集一个episode,计算这个episode所对应的return作为 q t ( s t , a t ) q_t(s_t,a_t) qt(st,at)的近似值。按照这种方式计算出来的 q t ( s t , a t ) q_t(s_t,a_t) qt(st,at),再配上刚刚说的算法,这就是REINFORCE。(上节课已经讲过)
第二,用TD方法来估计 q t ( s t , a t ) q_t(s_t,a_t) qt(st,at),用这种方法估计 q t ( s t , a t ) q_t(s_t,a_t) qt(st,at),再配上刚刚说的算法,这种方法被称为actor-critic。
在这里插入图片描述
最简单的actor critic算法的伪代码。其目标是去优化函数 J ( θ ) J(\theta) J(θ)。首先根据当前的策略生成experience ( s t , a t , r t + 1 , s t + 1 , a t + 1 ) (s_t,a_t,r_{t+1},s_{t+1},a_{t+1}) (st,at,rt+1,st+1,at+1)。然后在critic的部分用Sarsa算法去计算 q ( s , a ) q(s,a) q(s,a),在actor部分讲critic部分中计算好的 q ( s , a ) q(s,a) q(s,a)拿过来,去更新策略。随后用更新后的策略,去在下一步中生成新的数据。
在这里插入图片描述
补充说明:

  • Critic对应的是Sarsa+value function approximation
  • Actor对应的是策略更新算法
  • 这个算法是on-policy的
  • 这个算法(QAC)是最简单的actor-critic algorithm之一

二、Advantage Actor-Critic(A2C)

A2C是QAC的推广,其基本思想是在QAC的基础上引入一个偏置量来减少估计的方差。

性质:policy gradient梯度对于引入一个新的偏置是不会变化的。比如下图,引入b(S),对梯度的结果是没有影响的。
在这里插入图片描述

1.为什么引入b(S)对计算梯度没有影响呢?
请看下面的推导过程。
在这里插入图片描述
2.为什么要考虑这个baseline?它究竟有什么用?
把梯度简写成 E [ X ] E[X] E[X]的形式,经过刚刚的推导,已经知道 E [ X ] E[X] E[X] b ( S ) b(S) b(S)是没有任何关系的。但是 v a r ( X ) var(X) var(X)(X的方差)和 b ( S ) b(S) b(S)是有关系的。
t r [ v a r ( X ) ] tr[var(X)] tr[var(X)],也就是矩阵的迹(对角线元素的和)来作为评价方差大小的一个工具。通过计算得出, v a r ( X ) var(X) var(X)是和 b ( S ) b(S) b(S)有关的。
在这里插入图片描述
目标:找一个最好的baseline,让X的方差达到最小。
方差小的好处是,在采样的时候,误差也更小。
但在以前介绍的REINFORCE 和 QAC 中,是没有baseline的,或者说,b=0。最优的b*,其计算公式如下图公式1所示。但因为公式1比较复杂,所以一般不用,一般我们有公式2对应的 b ( s ) b(s) b(s)。公式2对应的 b ( s ) b(s) b(s)实际上就是 v π ( s ) v_{\pi}(s) vπ(s)
在这里插入图片描述
b ( s ) b(s) b(s)(实际上是 v π ( s ) v_{\pi}(s) vπ(s))代入到梯度上升算法中。定义一个新的量 δ π ( S , A ) \delta_{\pi}(S,A) δπ(S,A),这个量被称作advantage function。 δ π ( S , A ) = q π ( S , A ) − v π ( S ) \delta_{\pi}(S,A)=q_{\pi}(S,A)-v_{\pi}(S) δπ(S,A)=qπ(S,A)vπ(S) v π ( S ) v_{\pi}(S) vπ(S)就是相当于很多 q π ( S , A ) q_{\pi}(S,A) qπ(S,A)加起来的再取平均的一个均值。如果当前这个 q π ( S , A ) q_{\pi}(S,A) qπ(S,A)是大于 v π ( S ) v_{\pi}(S) vπ(S)的,说明这个动作a的效果还不错, δ π ( S , A ) \delta_{\pi}(S,A) δπ(S,A)为一个正值。选择 ( S , A ) (S,A) (S,A)的概率就会变大。
在这里插入图片描述
advantage function也可以用TD error来近似(如下图所示)。这样的变换是合理的,因为 q π ( S , A ) q_{\pi}(S,A) qπ(S,A)本来就等于 R + γ v π ( S ′ ) R+\gamma v_{\pi}(S') R+γvπ(S)。并且这样做有一个好处,原来需要用两个神经网络:一个网络去近似 q π ( s t , a t ) q_{\pi}(s_t,a_t) qπ(st,at),另一个网络去近似 v π ( S ) v_{\pi}(S) vπ(S),现在只需要用一个神经网络 v π ( S ) v_{\pi}(S) vπ(S)就好了。
在这里插入图片描述
这是A2C算法的伪代码。Critic中是TD算法和value function approximation相结合的算法。
在这里插入图片描述

三、重要性采样和Off-Policy Actor-Critic

之前讲到的策略都是on policy的,如下图所示,在采样时,要遵循策略 π \pi π,更新时,也是更新的这个策略 π \pi π。但我们也可以使用重要性采样,把on policy改成off policy。
在这里插入图片描述
1.一些简单的例子
假设有一个随机变量X,X是一个集合,里面只有两个值。X的分布如下图所示,据此分布,算出来X的期望为0。那么问题来了,如果这个随机变量的分布是未知的,那是否能通过采样的方式来求 E [ X ] E[X] E[X]
在这里插入图片描述
在第一种情况下,假设 x i {x_i} xi是在X的真实分布 p 0 p_0 p0上进行采样的,那么当采样足够多的时候, x i {x_i} xi的均值和方差就等于 X X X的均值和方差。
在这里插入图片描述

在第二种情况下,假设 x i {x_i} xi是在另一个分布 p 1 p_1 p1上进行采样的,那么这个采样的均值算出来肯定和真实分布上的均值不一样。
在这里插入图片描述
问题是:我们现在有一个概率分布 p 1 p_1 p1,在 p 1 p_1 p1上产生了一些sample,想用这些sample来估计在分布 p 0 p_0 p0下的expectation。为什么要做这个呢?因为想做off-policy。off-policy中用策略 β \beta β来产生数据(相当于分布 p 1 p_1 p1),用策略 π \pi π作为target policy(相当于分布 p 0 p_0 p0)。用重要性采样来实现这个目的。
在这里插入图片描述
2.重要性采样
如下图所示可以通过估计 E X ~ p 1 [ f ( X ) ] E_{X~p_1}[f(X)] EXp1[f(X)],来估计满足分布 p 0 p_0 p0的随机变量 X X X的期望。如何估计 E X ~ p 1 [ f ( X ) ] E_{X~p_1}[f(X)] EXp1[f(X)]?通过采样 x i x_i xi,然后对 f ( x i ) f(x_i) f(xi)求和再求平均就可以,平均数用下图中的 f ˉ \bar{f} fˉ来表示。
在这里插入图片描述
重要性采样的计算方式如下图所示。
在这里插入图片描述
在这里插入图片描述
小结:
有一些服从 p 1 p_1 p1分布的sample x i {x_i} xi,下图中的 x ˉ \bar{x} xˉ是对这些sample求平均,计算结果是在 p 1 p_1 p1分布下的expectation。目标是求 f ˉ \bar{f} fˉ f ˉ \bar{f} fˉ的计算结果是在 p 0 p_0 p0分布下的expectation。
在这里插入图片描述
3.off-policy policy gradient 的理论
假设 β \beta β是一个behavior policy,用来生成很多的经验采样。 π \pi π是target policy,目标是优化下面的 J ( θ ) J(\theta) J(θ)函数。 d β ( s ) d_{\beta}(s) dβ(s)是在策略 β \beta β下的一个stationary distribution。
在这里插入图片描述
这个目标函数对应的梯度如下所示。和之前在on policy中的区别在于,on policy中, A ~ π A~\pi Aπ,但在off policy中, A ~ β A~\beta Aβ。除此之外,还多了一个重要性采样的项。
在这里插入图片描述
下面用梯度上升的方法去优化。在梯度中加上一个baseline b ( s ) b(s) b(s),之前已经证明过,这个baseline不改变梯度。一般设置 b ( S ) = v π ( S ) b(S)=v_{\pi}(S) b(S)=vπ(S)
在这里插入图片描述
公式1中用stochastic gradient去计算梯度,加上了 v π ( S ) v_{\pi}(S) vπ(S)作为baseline。公式2在公式1的基础上加了一个TD error,得到公式3。最后就以公式3来计算梯度。公式4是对公式3进行一个变形,目的是为了提取出step size,对公式进行定性分析。(详见课程)
在这里插入图片描述
这是对应的伪代码。
在这里插入图片描述

四、Deterministic Actor-Critic (DPG)

前面几节所讲到的策略,其 π ( a ∣ s , θ ) \pi(a|s,\theta) π(as,θ)一定是大于0的,也就是说,这些策略都是stochastic的策略。下面介绍Deterministic Actor-Critic。
在这里插入图片描述

在deterministic policy中,策略不再用 π ( a ∣ s , θ ) \pi(a|s,\theta) π(as,θ)来表示,而是用下图中的 a = μ ( s , θ ) a=\mu(s,\theta) a=μ(s,θ)来表示,其输出不再是选择某个动作a的概率值,而直接就是一个实实在在的动作a。所以 μ \mu μ是状态空间到动作空间的映射。在实际应用过程中,可以用一个神经网络来实现。
在这里插入图片描述deterministic policy gradient的目标函数 J ( θ ) J(\theta) J(θ)。其中 d 0 ( s ) d_0(s) d0(s)表示概率分布。 d ( s ) d(s) d(s)是独立于 μ \mu μ的,在这种情况下,梯度更加容易计算。
在这里插入图片描述
这是求出来的梯度结果。这是一个off policy的算法。
在这里插入图片描述
然后用梯度上升的方法进行优化。
在这里插入图片描述
伪代码如下。
在这里插入图片描述
补充说明:

  • 这是一个off policy的算法,其中behaviour policy 是 β \beta β,target policy 是 μ \mu μ
  • β \beta β可以用 μ \mu μ+noise 来代替。
    在这里插入图片描述

五、Summary

从去年11月底开始断断续续看,到今天为止,这门课终于看完了第一遍了。由于基础有限,部分知识还没能消化完全。希望可以在后续实践过程中不断思考、不断学习。

“关于学具有系统性的知识,建议放弃速成的想法,比如一小时入门,一上午精通。很多焦虑都来源于时间安排不合适。举个例子,读一篇论文需要五天,但你只给自己一天的时间,到晚上也许发现,连introduction部分都没搞明白。但是如果给自己足够的时间,心态放平,稳扎稳打,也许三天就可以读完一篇论文。” 这是赵老师在课程里说过的原话,深受启发。做学问切忌心浮气躁,而是应该放平心态,给自己一些消化和适应的时间。在以后的科研生活中,也一直要铭记在心呀!

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

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

相关文章

vtkCamera类的Dolly函数作用及相机拉近拉远

录 1. 预备知识 1.1.相机焦点 2. vtkCamera类的Dolly函数作用 3. 附加说明 1. 预备知识 要理解vtkCamera类的Dolly函数作用,就必须先了解vtkCamera类表示的相机的各种属性。  VTK是用vtkCamera类来表示三维渲染场景中的相机。vtkCamera负责把三维场景投影到二维平面,如…

JavaScript中的函数基础知识

JavaScript中的函数基础知识 1.函数声明的三种方式1.1 函数声明语句1.2 函数表达式1.3 new Function 2.函数的返回值3.函数调用的几种方法4.函数参数4.1 函数内部的arguments对象(是个伪数组)4.2 获取形参的个数4.3 函数不存在重载4.4 参数传递(1) 基本数…

fpga助教面试题

第一题 module sfp_pwm( input wire clk, //clk is 200M input wire rst_n, input wire clk_10M_i, input wire PPS_i, output reg pwm ) reg [6:0] cunt ;always (posedge clk ) beginif(!rst_n)cunt<0;else if(cunt19) //200M是10M的20倍cunt<0;elsecunt<cunt1;…

调用openssl实现加解密算法

由于工作中涉及到加解密&#xff0c;包括Hash&#xff08;SHA256&#xff09;算法、HMAC_SHA256 算法、ECDH算法、ECC签名算法、AES/CBC 128算法一共涉及5类算法&#xff0c;笔者通过查询发现openssl库以上算法都支持&#xff0c;索性借助openssl库实现上述5类算法。笔者用的op…

RTSP协议讲解及漏洞挖掘

文章目录 前言一、RTSP协议简介二、RTSP协议常见应用场景包括三、攻击RTSP协议的好处四、RTSP多种认证模式五、工具使用下载地址六、RTSP协议漏洞挖掘手法 前言 实时流传输协议&#xff08;Real Time Streaming Protocol&#xff0c;RTSP&#xff09;&#xff0c;RFC2326&…

Mysql各操作系统安装全详情

" 至高无上的命运啊~ " MySQL是一个关系型数据库管理系统&#xff0c;由瑞典 MySQL AB 公司开发&#xff0c;属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一&#xff0c;在 WEB 应用方面&#xff0c;MySQL是最好的RDBMS (Relational Database Mana…

Elasticsearch7.1.1 配置密码和SSL证书

生成SSL证书 ./elasticsearch-certutil ca -out config/certs/elastic-certificates.p12 -pass 我这里没有设置ssl证书密码&#xff0c;如果需要设置密码&#xff0c;需要再配置给elasticsearch 在之前的步骤中&#xff0c;如果我们对elastic-certificates.p12 文件配置了密码…

EasyExcel 自定义头信息导出

需求&#xff1a;需要在导出 excel时&#xff0c;合并单元格自定义头信息(动态生成)&#xff0c;然后才是字段列表头即导出数据。 EasyExcel - 使用table去写入&#xff1a;https://easyexcel.opensource.alibaba.com/docs/current/quickstart/write#%E4%BD%BF%E7%94%A8table%E…

C++基础知识学习记录—模版和泛型编程

1、模板 概念&#xff1a; 模板可以让类或者函数支持一种通用类型&#xff0c;在编写时不指定固定的类型&#xff0c;在运行时才决定是什么类型&#xff0c;理论上讲可以支持任何类型&#xff0c;提高了代码的重用性。 模板可以让程序员专注于内部算法而忽略具体类型&#x…

Django 连接(sqlserver)数据库方法

文章目录 django 的SQL server适配器&#xff0c;例如django-pyodbc-azure 或 mssql-django1、django-pyodbc-azure2、mssql-django3、注意 Django只内置了几个 Database Backend&#xff08;mysql、oracle、sqllite3&#xff08;默认&#xff09;、postgresql_psycopg2&#x…

华为 eNSP:MSTP

一、MSTP是什么 MSTP是多业务传送平台&#xff08;Multi-Service Transport Platform&#xff09;的缩写&#xff0c;它是一种基于SDH&#xff08;同步数字体系&#xff09;技术的传输网络技术&#xff0c;用于同时实现TDM、ATM、以太网等多种业务的接入、处理和传送。 MSTP技…

Mac端homebrew安装配置

拷打了一下午o3-mini-high&#xff0c;不如这位博主的超强帖子&#xff0c;10分钟结束战斗 跟随该文章即可&#xff0c;2025/2/19亲测可行 mac 安装HomeBrew(100%成功)_mac安装homebrew-CSDN博客文章浏览阅读10w次&#xff0c;点赞258次&#xff0c;收藏837次。一直觉得自己写…

一台服务器将docker image打包去另一天服务器安装这个镜像

一台服务器将docker image打到去另一天服务器安装这个镜像 1. 打包2.另一台服务器执行 1. 打包 docker save -o nebula-graph-studio.tar harbor1.vm.example.lan/dockerio/vesoft/nebula-graph-studioxxx.tar 是打包好的文件 后面的是 docker image 2.另一台服务器执行 docke…

Web开发技术概述

Web开发技术涵盖了前端和后端开发&#xff0c;以及数据库技术。前端开发包括使用HTML、CSS、JavaScript等原生技术&#xff0c;以及jQuery、Bootstrap、AngularJS、React、Vue等框架。后端开发则涉及ASP.NET、PHP、Python Web&#xff08;Flask、Django&#xff09;、Java Web&…

【项目日记】仿RabbitMQ实现消息队列 --- 模块设计

你要的答案不在书本里&#xff0c; 也不能靠别人来解决&#xff0c; 除非你想一辈子当小孩。 你必须在自我内部找到答案&#xff0c; 感受到该做的正确事情。 --- 《献给阿尔吉侬的花束》--- 仿RabbitMQ实现消息队列 1 数据管理模块1.1 交换机数据管理模块1.2 队列数据管…

C++ Primer 构造函数再探

欢迎阅读我的 【CPrimer】专栏 专栏简介&#xff1a;本专栏主要面向C初学者&#xff0c;解释C的一些基本概念和基础语言特性&#xff0c;涉及C标准库的用法&#xff0c;面向对象特性&#xff0c;泛型特性高级用法。通过使用标准库中定义的抽象设施&#xff0c;使你更加适应高级…

SQL 注入攻击详解[基础篇]:Web 应用程序安全漏洞与防御策略

目录 SQL注入的简介 现代 Web 应用程序中的数据库交互与 SQL 注入攻击 数据库管理系统&#xff08;DBMS&#xff09;架构与 SQL 注入 什么是 SQL 注入&#xff1f; SQL 注入的工作原理 SQL 注入的用例与影响 如何预防 SQL 注入&#xff1f; 数据库分类 数据库类型&am…

自制AirTag,支持安卓/鸿蒙/PC/Home Assistant,无需拥有iPhone

苹果的AirTag很贵&#xff0c;虽然某强北有平价代替品&#xff0c;但是仍需要苹果设备才能绑定&#xff0c;才能查看位置。不支持安卓/鸿蒙/PC&#xff0c;也不支持集成到Home Assistant中。 AirTag 的原理 每个AirTag都会发送一个蓝牙信号&#xff0c;其可以被临近的苹果设备…

网络技术变迁:从IPv4走向IPv6

目录 前言 旧时代产物&#xff1a;IPv4 什么是IPv4&#xff1f; IPv4的工作方式 IPv4的缺点 为什么要从IPv4过渡到IPv6&#xff1f; 走向IPv6&#xff1a;新一代互联网协议 IPv6的技术特性 我们需要过渡技术 双栈&#xff08;Dual Stack&#xff09; 隧道技术&#…

uniapp 滚动尺

scale组件代码&#xff08;部分class样式使用到了uview1.0的样式&#xff09; <template><view><view class"scale"><view class"pointer u-flex-col u-col-center"><u-icon name"arrow-down-fill" size"26&qu…