强化学习学习(一)从MDP到Actor-critic演员-评论家算法

文章目录

        • From Markov chains to Markov decision process (MDP):
        • partially observed Markov decision peocess
      • Value Functions
      • Types of RL algorithms
        • Examples of algorithms
      • Policy gradient
        • 大量有趣的数学技巧,包括为梯度和=增加约束
      • Actor-critic
        • Estimate V
        • algorithms-with discount

From Markov chains to Markov decision process (MDP):

M = S , A , T , r \mathcal{M}=\mathcal{S},\mathcal{A},\mathcal{T},r M=S,A,T,r
T \mathcal{T} T now is a tensor of 3 division: T i , j , k = p ( s t + 1 = i ∣ s t = j , a t = k ) \mathcal{T}_{i,j,k}=p(s_{t+1}=i|s_t=j,a_t=k) Ti,j,k=p(st+1=ist=j,at=k)
r r r-reward funtion r : S × A → R r:\mathcal{S}\times\mathcal{A}\rightarrow\mathbb{R} r:S×AR,
image.png|400

partially observed Markov decision peocess

M = S , A , O , T , E , r \mathcal{M}=\mathcal{S},\mathcal{A},\mathcal{O},\mathcal{T},\mathcal{E},r M=S,A,O,T,E,r
E \mathcal{E} E-emmision probobality p ( o t ∣ s t ) p(o_t|s_t) p(otst)
image.png|450

image.png|600
由于 a t a_t at是根据 s t s_t st π θ \pi_{\theta} πθ共同推出的: p ( ( s t + 1 , a t + 1 ) ∣ s t , a t ) = p ( s t + 1 ∣ s t , a t ) π θ ( a t + 1 ∣ s t + 1 ) p((s_{t+1},a_{t+1})|s_{t},a_{t})=p(s_{t+1}|s_t,a_t)\pi_{\theta}(a_{t+1}|s_{t+1}) p((st+1,at+1)st,at)=p(st+1st,at)πθ(at+1st+1)
image.png|400
statinary: the same before and after transition: μ = T μ \mu=\mathcal{T}\mu μ=Tμ,因此 μ \mu μ T \mathcal{T} T的特征值为1的特征向量!
for statinary distribution, μ = p θ ( s , a ) \mu=p_{\theta}(s,a) μ=pθ(s,a)
利用期望,是为了将不连续的奖励变成连续的变量,从而适用于梯度下降等算法

Value Functions

image.png

Q-function

Q π ( s t , a t ) = ∑ t ′ = t T E π θ [ r ( s t ′ , a t ′ ) ∣ s t , a t ] Q^{\pi}(s_t,a_t)=\sum^T_{t'=t}E_{\pi_{\theta}}[r(s_{t'},a_{t'})|s_t,a_t] Qπ(st,at)=t=tTEπθ[r(st,at)st,at]: 在 s t s_t st状态下执行动作 a t a_t at的所有奖励

value function

V π ( s t ) = ∑ t ′ = t T E π θ [ r ( s t ′ , a t ′ ) ∣ s t ] V^{\pi}(s_t)=\sum^T_{t'=t}E_{\pi_{\theta}}[r(s_{t'},a_{t'})|s_t] Vπ(st)=t=tTEπθ[r(st,at)st] s t s_t st状态下的所有奖励(注意看自变量和它对什么去了取了期望)
So, V π ( s t ) = E a t ∼ π ( a t ∣ s t ) [ Q π ( s t , a t ) ] V^{\pi}(s_t)=E_{a_t\sim\pi(a_t|s_t)}[Q^{\pi}(s_{t},a_{t})] Vπ(st)=Eatπ(atst)[Qπ(st,at)],如果我们对状态再求一次期望呢?:
E s 1 ∼ p ( s 1 ) [ V π ( s 1 ) ] E_{s_1\sim p(s_1)}[V^{\pi}(s_1)] Es1p(s1)[Vπ(s1)] is the RL objective (对所有可能的出发的状态进行求期望,就是我们上面说的goal)

Using Q π Q^\pi Qπ and V π V^\pi Vπ
  • if we have policy π \pi π, and we know Q π ( s , a ) Q^\pi(s,a) Qπ(s,a), then we can improve π \pi π:
    • set π ′ ( a ∣ s ) = 1 \pi'(a|s)=1 π(as)=1 if a = arg ⁡ max ⁡ a Q π ( s , a ) a=\arg\max_aQ^\pi(s,a) a=argmaxaQπ(s,a)
    • this policy is better than π \pi π
  • compute gradient to increase probobality of good actions a:
    • if Q π ( s , a ) > V π ( s ) Q^\pi(s,a)>V^\pi(s) Qπ(s,a)>Vπ(s), then a is better than average 因为 V π V^\pi Vπ是平均的各种动作奖励值
    • modify π ( a ∣ s ) \pi(a|s) π(as) to increase probobality of a if Q π ( s , a ) > V π ( s ) Q^\pi(s,a)>V^\pi(s) Qπ(s,a)>Vπ(s)
      image.png|500
      Q-value和V-value都是用来评价策略好坏的

Types of RL algorithms

Our goal:
θ ∗ = arg ⁡ max ⁡ θ E τ ∼ p θ ( τ ) [ ∑ t r ( s t , a t ) ] \theta^*=\arg\max_\theta E_{\tau\sim p_\theta(\tau)}\left[\sum_t r(s_t,a_t)\right] θ=argθmaxEτpθ(τ)[tr(st,at)]

[!NOTE] Types of RL algorithms

  • Policy gradients: 直接计算目标函数对 θ \theta θ的导数,然后执行梯度下降
  • Value-based: 为最优策略去模拟(神经网络去模拟)值函数或者Q函数。(没有明确的策略)
  • Actor-critic: 上面两种的结合,模拟值/Q函数,然后去更新策略
  • Model-based: estimate the transition model T \mathcal{T} T
    • 用它来planning(没有明确的策略)
    • 用来更新策略

image.png

Examples of algorithms
  • Value function fitting
    • Q-learning, DQN
    • Temporal difference learning
    • Fitted value iteration
  • Policy gradient methods
    • Reinforce
    • Natual policy gradient
    • Trust region policy optimization
  • Actor-critic
    • A3C
    • SAC
    • DDPG
  • Model-based RL
    • Dyna
    • Guided policy search

Policy gradient

image.png

我们对着这个幻灯片来讨论讨论:
首先这个 J ( θ ) J(\theta) J(θ)表示某个特定的策略的轨迹奖励,也就按照这个策略,跑完整个的所有reward
因为最终的目标就是找到最佳策略使得 J ( θ ) J(\theta) J(θ)的期望最大,也就是说它就是优化函数,因此我们要对 J ( θ ) J(\theta) J(θ)求导。
积分和求导符号可以换位置。要求期望就得知道概率分布 p θ ( τ ) p_\theta(\tau) pθ(τ),而这个是不知道的。因此利用了蓝框里的,对 p θ ( τ ) p_\theta(\tau) pθ(τ)求导变成对 log ⁡ p θ ( τ ) \log p_\theta(\tau) logpθ(τ)求导,有了下面的:
image.png
几个和策略 θ \theta θ无关项求导之后都等于零, p θ ( τ ) p_\theta(\tau) pθ(τ)的展开又可以利用log转换为求和
因此得到最后一行,也就是剩下的参数我们都是知道的( π \pi π r r r

由于 J ( θ ) J(\theta) J(θ)是个期望,那么就可以通过多次实验采样然后平均得到:
∇ θ J ( θ ) ≈ 1 N ∑ i = 1 N ( ∑ t = 1 T ∇ θ log ⁡ π θ ( a i , t ∣ s i , t ) ) ( ∑ t = 1 T r ( s i , t , a i , t ) ) \nabla_\theta J(\theta)\approx\frac{1}{N}\sum_{i=1}^N\left(\sum_{t=1}^T\nabla_\theta \log\pi_\theta(a_{i,t}|s_{i,t})\right)\left(\sum_{t=1}^Tr(s_{i,t},a_{i,t})\right) θJ(θ)N1i=1N(t=1Tθlogπθ(ai,tsi,t))(t=1Tr(si,t,ai,t))

我们再对应着那三个box的颜色看看:
image.png

这里的 π θ ( a t ∣ s t ) \pi_\theta(a_t|s_t) πθ(atst)是什么?
可以是神经网络输出的概率(离散),
也可以是动作的概率分布(连续):
π θ ( a t ∣ s t ) = N ( f neural network ( s t ) ; Σ ) \pi_\theta(a_t|s_t)=\mathcal{N}(f_{\text{neural network}(s_t)};\Sigma) πθ(atst)=N(fneural network(st);Σ) (高斯分布例子)

把上面的式子稍微简化一点:
∇ θ J ( θ ) ≈ 1 N ∑ i = 1 N ( ∑ t = 1 T ∇ θ log ⁡ π θ ( a i , t ∣ s i , t ) ) ( ∑ t = 1 T r ( s i , t , a i , t ) ) = 1 N ∑ i = 1 N ∇ θ log ⁡ π θ ( τ i ) r ( τ i ) \begin{align}\nabla_\theta J(\theta)&\approx\frac{1}{N}\sum_{i=1}^N\left(\sum_{t=1}^T\nabla_\theta \log\pi_\theta(a_{i,t}|s_{i,t})\right)\left(\sum_{t=1}^Tr(s_{i,t},a_{i,t})\right)\\&=\frac{1}{N}\sum_{i=1}^N\nabla_\theta \log\pi_\theta(\tau_i)r(\tau_i)\end{align} θJ(θ)N1i=1N(t=1Tθlogπθ(ai,tsi,t))(t=1Tr(si,t,ai,t))=N1i=1Nθlogπθ(τi)r(τi)

考虑到因果性:现在的决策不会影响过去的reward,绿色框中可以改写一下:
Q ^ π ( x t , u t ) = ∑ t ′ = t T r ( x t ′ , u t ′ ) \hat{Q}^\pi(x_t,u_t)=\sum_{t'=t}^Tr(x_{t'},u_{t'}) Q^π(xt,ut)=t=tTr(xt,ut)
我们把轨迹 τ \tau τ写开,再利用因果性的 Q ^ \hat{Q} Q^
∇ θ J ( θ ) ≈ 1 N ∑ i = 1 N ∑ t = 1 T ∇ θ log ⁡ π θ ( a i , t ∣ s i , t ) Q ^ i , t π \nabla_\theta J(\theta)\approx\frac{1}{N}\sum_{i=1}^N\sum_{t=1}^T\nabla_\theta \log\pi_\theta(a_{i,t}|s_{i,t})\hat{Q}^\pi_{i,t} θJ(θ)N1i=1Nt=1Tθlogπθ(ai,tsi,t)Q^i,tπ
Q ^ i , t π \hat{Q}^\pi_{i,t} Q^i,tπ表示如果你在 s i , t s_{i,t} si,t状态采取 a i , t a_{i,t} ai,t动作,并按照 π \pi π策略继续下去跑完整个轨迹的奖励的估计。
image.png|300
重点就在于求和的下标,这样做的最大好处就是能够减少有限样本带来的方差
其实policy gradient的原理就是在最大似然估计的基础上,按照 Q ^ π ( x t , u t ) \hat{Q}^\pi(x_t,u_t) Q^π(xt,ut)进行加权:

J ~ ( θ ) ≈ 1 N ∑ i = 1 N ∑ i = 1 N log ⁡ π θ ( a i , t ∣ s i , t ) Q ^ i , t \tilde{J} (\theta)\approx\frac{1}{N}\sum_{i=1}^N\sum_{i=1}^N \log\pi_\theta(a_{i,t}|s_{i,t})\hat{Q}_{i,t} J~(θ)N1i=1Ni=1Nlogπθ(ai,tsi,t)Q^i,t

大量有趣的数学技巧,包括为梯度和=增加约束

在L5,gradient policy的最后一节,Trust region policy optimization

Actor-critic

来个baseline,接着我们上面的说,正因为 Q ^ \hat{Q} Q^只是多次采样的对期望的模拟,因此假设我们有一个理想的reward的期望:
Q ( s t , a t ) = ∑ t ′ = t T E π θ [ r ( s t ′ , a t ′ ) ∣ s t , a t ] Q(s_t,a_t)=\sum_{t'=t}^TE_{\pi_\theta}[r(s_{t'},a_{t'})|s_t,a_t] Q(st,at)=t=tTEπθ[r(st,at)st,at]
然后考虑在一个特定的状态 s t s_t st下,预期的所有动作的平均reward,就是值函数的定义(注意自变量和它是对谁取了期望)
V ( s t ) = E a t ∼ π θ ( a t ∣ s t ) [ Q ( s t , a t ) ] V(s_t)=E_{a_t\sim\pi_\theta}(a_t|s_t)[Q(s_t,a_t)] V(st)=Eatπθ(atst)[Q(st,at)]
这个就可以作为我们的baseline,代表就是平均的行动回报:(代替原本的恒定的 b b b
image.png|600

[!NOTE] AC和policy gradient的区别
所以以前的 ∑ t = 1 T r ( s i , t , a i , t ) \sum_{t=1}^Tr(s_{i,t},a_{i,t}) t=1Tr(si,t,ai,t)其实是一种蒙特卡洛估计,虽然无偏但是方差很大,我们用些许的偏差换来方差的巨大减小,也就是要直接去fit Q π , V π , o r A π Q^\pi,V^\pi,or A^\pi Qπ,Vπ,orAπ. 因为后者本质是期望,哪怕是我们拟合的期望函数,也比采样得到的 r ( ) r() r()更好

image.png|400
第一项实际上是确定的不是随机变量,因为是当下的状态和动作。 Q π ( s t , a t ) ≈ r ( s t , a t ) + V π ( s t + 1 ) Q^\pi(s_t,a_t)\approx r(s_t,a_t)+V^\pi(s_{t+1}) Qπ(st,at)r(st,at)+Vπ(st+1) 这里进行了小的近似:从t到t+1的过程相当于用单样本进行了近似,因为理论上来说这里的状态转移也是要取期望的,随后就可以得到:
A π ( s t , a t ) ≈ r ( s t , a t ) + V π ( s t + 1 ) − V π ( s t ) A^\pi(s_t,a_t)\approx r(s_t,a_t)+V^\pi(s_{t+1})-V^\pi(s_{t}) Aπ(st,at)r(st,at)+Vπ(st+1)Vπ(st)
A π ( s t , a t ) A^\pi(s_t,a_t) Aπ(st,at)意义是动作 a t a_t at比根据策略 π \pi π产生的平均动作reward好多少:Advantage

A和Q都取决于两个变量:状态和动作,而V只取决于状态,因此更好去模拟fit——接下来就用基于V函数的critic

image.png

Estimate V

V π ( s t ) ≈ ∑ t ′ = t T r ( s t ′ , a t ′ ) V^\pi(s_t)\approx\sum_{t'=t}^T r(s_{t'},a_{t'}) Vπ(st)t=tTr(st,at)
not as good as: V π ( s t ) ≈ 1 N ∑ n = 1 N ∑ t ′ = t T r ( s t ′ , a t ′ ) V^\pi(s_t)\approx\frac{1}{N}\sum_{n=1}^N\sum_{t'=t}^T r(s_{t'},a_{t'}) Vπ(st)N1n=1Nt=tTr(st,at), but still pretty good
So, our training data: { ( s i , t , ∑ t ′ = t T r ( s i , t ′ , a i , t ′ ) ) } \left\{(s_{i,t},\sum_{t'=t}^T r(s_{i,t'},a_{i,t'}))\right\} {(si,t,t=tTr(si,t,ai,t))} ,右边的就是 y i , t y_{i,t} yi,t
supervised learning: L ( ϕ ) = 1 2 ∑ i ∣ ∣ V ^ ϕ π ( s i ) − y i ∣ ∣ 2 \mathcal{L}(\phi)=\frac{1}{2}\sum_i||\hat{V}^\pi_\phi(s_i)-y_i||^2 L(ϕ)=21i∣∣V^ϕπ(si)yi2

algorithms-with discount

image.png|500

上面的方法需要我们去使用两个神经网络去拟合函数:
s-> V ^ ϕ π \hat{V}^\pi_\phi V^ϕπ和s-> π θ ( a ∣ s ) \pi_\theta(a|s) πθ(as)

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

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

相关文章

均匀圆形阵列原理及MATLAB仿真

均匀圆形阵列原理及MATLAB仿真 目录 前言 一、均匀圆阵原理 二、圆心不存在阵元方向图仿真 三、圆心存在阵元方向图仿真 四、MATLAB仿真代码 总结 前言 本文详细推导了均匀圆形阵列的方向图函数,对圆心不放置阵元和圆心放置阵元的均匀圆形阵列方向图都进行了仿…

MySQL-视图、存储过程和触发器

一、视图的定义和使用 视图是从一个或者几个基本表(或视图)导出的表。它与基本表不同,是一个虚表,视图只能用来查询。不能做增删改查(虚拟的表) 1.视图的作用 简化查询重写格式化数据频繁访问数据库过滤数据 2.创建视图 -- 创建视图 -- 语法…

【MATLAB APP】建立独立桌面APP

背景:已有MATLAB APP的.mlapp文件,但客户提出需要可以直接使用的exe文件。 要求:点开即用,无需下载MATLAB。使用者无法修改APP的代码。 一、环境配置 APP创建者:安装MATLAB R2023a,配置Application Compile…

创建vue3项目,以及使用示例

1.在根目录下cmd:vue create myobj(没有切换淘宝镜像记得切换,这样创建项目运行快) 2. 3.(按空格键选中,选好回撤就到下一步了) 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.然后输入执行以下两步就已经运行项目了 以…

Linux云计算 |【第二阶段】AUTOMATION-DAY4

主要内容: 部署Ansible、Ansible基础命令(Ansible ad-hoc命令格式、Ansible-doc帮助)、Ansible模块常用:脚本与命令模块、文件与账户模块、软件与服务模块、逻辑卷模块 补充:touch 除创建文件外,若再创建相…

vue3知识

目录 基础vue开发前的准备vue项目目录结构模板语法属性绑定条件渲染列表渲染通过key管理状态事件处理事件传参事件修饰符数组变化侦测计算属性Class绑定style绑定侦听器表单输入绑定模板引用组件组成组件嵌套关系组件注册方式组件传递数据Props(父传子)组件传递多种数据类型组件…

SpringBoot 数据访问操作

目录 一.SpringBoot整合Mybatis与Mybatis-Plus 二.SpringBoot切换druid数据源 3.1DRUID配置参数 3.2Druid监控平台 一.SpringBoot整合Mybatis与Mybatis-Plus 步骤&#xff1a; 1.坐标 <dependency><groupId>com.baomidou</groupId><artifactId>myb…

Android ConstraintLayout 约束布局

目录 1&#xff09;ConstraintLayout 约束布局是什么&#xff1f;为什么使用&#xff1f; 2&#xff09;如何使用 3&#xff09;可见性改变后的行为处理 4&#xff09;图形化界面的一些工具介绍 5&#xff09;Chains ( 链 ) 一、ConstraintLayout 约束布局是什么 Constraint…

【无人机】测绘行业新时代

【无人机】测绘行业新时代 无人机测绘主要指的是依托无人机系统为主要的信息接收平台&#xff0c;通过无人机机载遥感信息采集和处理设备&#xff0c;将最终所获取的遥感信息传输到测绘中心&#xff0c;经过数据技术处理&#xff0c;形成立体化的数字模型&#xff0c;以满足行…

JavaScript 输出

JavaScript 不提供任何内建的打印或显示函数。 JavaScript 显示方案 JavaScript 能够以不同方式“显示”数据&#xff1a; 使用 window.alert() 写入警告框使用 document.write() 写入 HTML 输出使用 innerHTML 写入 HTML 元素使用 console.log() 写入浏览器控制台 使用 in…

想要连接稳定的远程控软件吗?这4款软件不要错过

远程控制电脑是一种现代社会高效便捷的办公方式。这种方式可以不论时间不论地点都可以调用到办公电脑里的文件&#xff0c;如果你办公也有这个需求&#xff0c;那就看看我介绍的工具吧。 1.RL远程控制 直通车>>https://www.raylink.live 这个软件非常适合用来进行手机…

数据库安全综合治理方案(54页PPT)附下载

方案介绍&#xff1a; 数据库安全综合治理方案是一个综合性的策略&#xff0c;旨在确保数据库系统的完整性、保密性和可用性&#xff0c;防止未经授权的访问、数据泄露、篡改及滥用。该方案涉及多个层面&#xff0c;包括访问控制、数据加密、审计与监控、备份与恢复、以及安全…

Dreambooth on Stable Diffusion

Dreambooth on Stable Diffusion 1.DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Driven Generation 2.[论文简析]DreamBooth: Fine Tuning Text-to-Image Diffusion Models…[2208.12242] 3.sd_dreambooth_extension 4.stable-dreambooth 对3-5张特定…

17.5【C语言】static的补充说明

static &#xff08;静态的) 作用&#xff1a;修饰局部变量&#xff0c;修饰全局变量&#xff0c;修饰函数 对比两段代码 #include <stdio.h> void test() {int a 5;a;printf("%d ", a); } int main() {int i 0;for(i0; i<5; i){test();}return 0; } …

HarmonyOS 质量、测试、上架速浏

1.应用质量要求&#xff1a; 1. 应用体验质量建议: 功能数据完备 功能完备 数据完备 基础体验要求 基础约束 兼容性 稳定性 性能 功耗 安全…

网格布局 HTML CSS grid layout demo

文章目录 页面效果代码 (HTML CSS)参考 页面效果 代码 (HTML CSS) <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"…

高速传输新体验:探索最新USB-C移动硬盘盒的无限可能

在数字化时代&#xff0c;数据存储的重要性不言而喻&#xff0c;而硬盘盒作为连接外部硬盘与计算机的关键设备&#xff0c;其功能也在不断进化。近年来&#xff0c;随着技术的创新与发展&#xff0c;市场上出现了一种新型硬盘盒——它不仅能安全、高效地存储和传输数据&#xf…

安装VMware Workstation Pro

一、下载 通过百度网盘分享的文件&#xff1a;VMware-workstation-full-16.2.4-2008... 链接&#xff1a;https://pan.baidu.com/s/1mDnFhLQErBlpeX_KjsgtzA 提取码&#xff1a;0bw7 二、安装 &#xff08;1&#xff09;双击exe文件 &#xff08;2&#xff09;安装软件 &…

算法-bfs-八数码

题目一 解题思路 将每一串字符都想象成一个点&#xff0c;已知起点和终点,每一次更新相邻的节点&#xff0c;采用bfs得到到达终点的最短路径。 数据结构&#xff1a; unordered_map&#xff08;哈希表&#xff09;来存储每种字符串对应情况需要移动的次数。 queue(队列)存储…

刷题计划 day4 【双指针、快慢指针、环形链表】链表下

⚡刷题计划day4继续&#xff0c;可以点个免费的赞哦~ 下一期将会开启哈希表刷题专题&#xff0c;往期可看专栏&#xff0c;关注不迷路&#xff0c; 您的支持是我的最大动力&#x1f339;~ 目录 ⚡刷题计划day4继续&#xff0c;可以点个免费的赞哦~ 下一期将会开启哈希表刷题…