【深度强化学习】Advantage Actor-Critic
Advantage Actor-Critic
0 Actor and Critic
Policy network 被称之为 Actor,是对策略函数 π ( a ∣ s ) \pi(a|s) π(a∣s) 的近似,用来控制 agent 的动作,记为 π ( a ∣ s ; θ ) \pi(a \mid s ; \boldsymbol{\theta}) π(a∣s;θ);
Value network 被称之为 Critic,是对状态价值函数 V π ( s t ) V_\pi(s_t) Vπ(st) 的近似,用来评估当前状态的好坏,记为 v ( s ; w ) v(s ; \mathbf{w}) v(s;w).
注意一下,这里的 Value network 是对状态价值函数的近似,而之前 Actor-Critic 算法是对动作价值函数的近似。
1 Training of A2C
A2C 算法的具体流程:
- 观察到一个 transition ( s t , a t , r t , s t + 1 ) \left(s_{t}, a_{t}, r_{t}, s_{t+1}\right) (st,at,rt,st+1);
- 计算 TD Target: y t = r t + γ ⋅ v ( s t + 1 ; w ) y_{t}=r_{t}+\gamma \cdot v\left(s_{t+1} ; \mathbf{w}\right) yt=rt+γ⋅v(st+1;w);
- 计算 TD Error: δ t = v ( s t ; w ) − y t \delta_{t}=v\left(s_{t} ; \mathbf{w}\right)-y_{t} δt=v(st;w)−yt;
- 使用近似策略梯度来更新策略网络参数: θ ← θ − β ⋅ δ t ⋅ ∂ ln π ( a t ∣ s t ; θ ) ∂ θ \boldsymbol{\theta} \leftarrow \boldsymbol{\theta}-\beta \cdot \delta_{t} \cdot \frac{\partial \ln \pi\left(a_{t} \mid s_{t} ; \boldsymbol{\theta}\right)}{\partial \boldsymbol{\theta}} θ←θ−β⋅δt⋅∂θ∂lnπ(at∣st;θ);
- 梯度下降更新价值网络: w ← w − α ⋅ δ t ⋅ ∂ v ( s t ; w ) ∂ w \mathbf{w} \leftarrow \mathbf{w}-\alpha \cdot \delta_{t} \cdot \frac{\partial v\left(s_{t} ; \mathbf{w}\right)}{\partial \mathbf{w}} w←w−α⋅δt⋅∂w∂v(st;w).
2 推导
Discounted Return:
U t = R t + γ ⋅ R t + 1 + γ 2 ⋅ R t + 2 + γ 3 ⋅ R t + 3 + ⋯ U_{t}=R_{t}+\gamma \cdot R_{t+1}+\gamma^{2} \cdot R_{t+2}+\gamma^{3} \cdot R_{t+3}+\cdots Ut=Rt+γ⋅Rt+1+γ2⋅Rt+2+γ3⋅Rt+3+⋯
Action-Value function:
Q π ( s t , a t ) = E [ U t ∣ s t , a t ] . Q_{\pi}\left(s_{t}, a_{t}\right)=\mathbb{E}\left[U_{t} \mid s_{t}, a_{t}\right] . Qπ(st,at)=E[Ut∣st,at].
State-Value function:
V π ( s t ) = E A t [ Q π ( s t , A t ) ∣ s t ] V_{\pi}\left(s_{t}\right)=\mathbb{E}_{A_{t}}\left[Q_{\pi}\left(s_{t}, A_{t}\right) \mid s_{t}\right] Vπ(st)=EAt[Qπ(st,At)∣st]
动作价值函数具有如下性质:
Q π ( s t , a t ) = E S t + 1 , A t + 1 [ R t + γ ⋅ Q π ( S t + 1 , A t + 1 ) ] Q_{\pi}\left(s_{t}, a_{t}\right)= \mathbb{E}_{S_{t+1}, A_{t+1}}\left[R_{t}+\gamma \cdot Q_{\pi}\left(S_{t+1}, A_{t+1}\right)\right] Qπ(st,at)=ESt+1,At+1[Rt+γ⋅Qπ(St+1,At+1)]
进一步,把对 A t + 1 A_{t+1} At+1 的期望挪进括号中,我们就得到了关于动作价值函数的一个性质:
Q π ( s t , a t ) = E S t + 1 [ R t + γ ⋅ E A t + 1 [ Q π ( S t + 1 , A t + 1 ) ] ] = E S t + 1 [ R t + γ ⋅ V π ( S t + 1 ) ] . \begin{aligned} Q_{\pi}\left(s_{t}, a_{t}\right) &=\mathbb{E}_{S_{t+1}}\left[R_{t}+\gamma \cdot \mathbb{E}_{A_{t+1}}\left[Q_{\pi}\left(S_{t+1}, A_{t+1}\right)\right]\right] \\ &=\mathbb{E}_{S_{t+1}}\left[R_{t}+\gamma \cdot V_{\pi}\left(S_{t+1}\right)\right] . \end{aligned} Qπ(st,at)=ESt+1[Rt+γ⋅EAt+1[Qπ(St+1,At+1)]]=ESt+1[Rt+γ⋅Vπ(St+1)].
Theorem 1: Q π ( s t , a t ) = E S t + 1 [ R t + γ ⋅ V π ( S t + 1 ) ] \text { Theorem 1: } \quad Q_{\pi}\left(s_{t}, a_{t}\right)=\mathbb{E}_{S_{t+1}}\left[R_{t}+\gamma \cdot V_{\pi}\left(S_{t+1}\right)\right] Theorem 1: Qπ(st,at)=ESt+1[Rt+γ⋅Vπ(St+1)]
再来看状态价值函数。从状态价值函数的性质出发,然后使用(5)进行代换:
V π ( s t ) = E A t [ Q π ( s t , A t ) ] = E A t [ E S t + 1 [ R t + γ ⋅ V π ( S t + 1 ) ] ] \begin{aligned} V_{\pi}\left(s_{t}\right) &=\mathbb{E}_{A_{t}}\left[Q_{\pi}\left(s_{t}, A_{t}\right)\right] \\ &=\mathbb{E}_{A_{t}}\left[\mathbb{E}_{S_{t+1}}\left[R_{t}+\gamma \cdot V_{\pi}\left(S_{t+1}\right)\right]\right] \end{aligned} Vπ(st)=EAt[Qπ(st,At)]=EAt[ESt+1[Rt+γ⋅Vπ(St+1)]]
Theorem 2: V π ( s t ) = E A t , S t + 1 [ R t + γ ⋅ V π ( S t + 1 ) ] \text { Theorem 2: } \quad V_{\pi}\left(s_{t}\right)=\mathbb{E}_{A_{t}, S_{t+1}}\left[R_{t}+\gamma \cdot V_{\pi}\left(S_{t+1}\right)\right] Theorem 2: Vπ(st)=EAt,St+1[Rt+γ⋅Vπ(St+1)]
于是,有了定理一和定理二,我们就将动作价值函数和状态价值函数表示为期望的形式。A2C就使用了这两个期望。下一步,我们使用 Monte-Carlo 方法来近似期望。假设我们观测到一个 transition ( s t , a t , r t , s t + 1 ) \left(s_{t}, a_{t}, r_{t}, s_{t+1}\right) (st,at,rt,st+1),则针对定理一的近似如下:
Q π ( s t , a t ) ≈ r t + γ ⋅ V π ( s t + 1 ) Q_{\pi}\left(s_{t}, a_{t}\right) \approx r_{t}+\gamma \cdot V_{\pi}\left(s_{t+1}\right) Qπ(st,at)≈rt+γ⋅Vπ(st+1)
就是使用 r t r_t rt 来近似 R t R_t Rt,用 s t + 1 s_{t+1} st+1 来近似 S t + 1 S_{t+1} St+1。同样,针对定理二的近似如下:
V π ( s t ) ≈ r t + γ ⋅ V π ( s t + 1 ) V_{\pi}\left(s_{t}\right) \approx r_{t}+\gamma \cdot V_{\pi}\left(s_{t+1}\right) Vπ(st)≈rt+γ⋅Vπ(st+1)
2.1 Updating Policy Network
我们已经推导出带有 baseline 的随机策略梯度公式如下:
g ( a t ) = ∂ ln π ( a t ∣ s t ; θ ) ∂ θ ⋅ ( Q π ( s t , a t ) − V π ( s t ) ) \mathbf{g}\left(a_{t}\right)=\frac{\partial \ln \pi\left(a_{t} \mid s_{t} ; \boldsymbol{\theta}\right)}{\partial \boldsymbol{\theta}} \cdot\left(Q_{\pi}\left(s_{t}, a_{t}\right)-V_{\pi}\left(s_{t}\right)\right) g(at)=∂θ∂lnπ(at∣st;θ)⋅(Qπ(st,at)−Vπ(st))
其中, Q π − V π Q_\pi-V_\pi Qπ−Vπ 被称为 Advantage Function。我们结合(7)对 Q π Q_\pi Qπ 进行近似:
g ( a t ) ≈ ∂ ln π ( a t ∣ s t ; θ ) ∂ θ ⋅ ( r t + γ ⋅ V π ( s t + 1 ) − V π ( s t ) ) \mathbf{g}\left(a_{t}\right) \approx \frac{\partial \ln \pi\left(a_{t} \mid s_{t} ; \boldsymbol{\theta}\right)}{\partial \boldsymbol{\theta}} \cdot\left(r_{t}+\gamma \cdot V_{\pi}\left(s_{t+1}\right)-V_{\pi}\left(s_{t}\right)\right) g(at)≈∂θ∂lnπ(at∣st;θ)⋅(rt+γ⋅Vπ(st+1)−Vπ(st))
然而我们也不知道 V π V_\pi Vπ 是什么,因此需要对 V π V_\pi Vπ 做函数近似, v ( s ; w ) v(s;\mathbf{w}) v(s;w):
g ( a t ) ≈ ∂ ln π ( a t ∣ s t ; θ ) ∂ θ ⋅ ( r t + γ ⋅ v ( s t + 1 ; w ) − v ( s t ; w ) ) \mathbf{g}\left(a_{t}\right) \approx \frac{\partial \ln \pi\left(a_{t} \mid s_{t} ; \boldsymbol{\theta}\right)}{\partial \boldsymbol{\theta}} \cdot\left(r_{t}+\gamma \cdot v(s_{t+1};\mathbf{w})-v(s_t;\mathbf{w})\right) g(at)≈∂θ∂lnπ(at∣st;θ)⋅(rt+γ⋅v(st+1;w)−v(st;w))
其中,TD Target:
y t = r t + γ ⋅ v ( s t + 1 ; w ) y_t = r_{t}+\gamma \cdot v(s_{t+1};\mathbf{w}) yt=rt+γ⋅v(st+1;w)
于是,使用梯度上升算法更新策略网络:
θ ← θ + β ⋅ ∂ ln π ( a t ∣ s t ; θ ) ∂ θ ⋅ ( y t − v ( s t ; w ) ) \boldsymbol{\theta} \leftarrow \boldsymbol{\theta}+\beta \cdot \frac{\partial \ln \pi\left(a_{t} \mid s_{t} ; \boldsymbol{\theta}\right)}{\partial \boldsymbol{\theta}} \cdot\left(y_{t}-v\left(s_{t} ; \mathbf{w}\right)\right) θ←θ+β⋅∂θ∂lnπ(at∣st;θ)⋅(yt−v(st;w))
2.2 Updating Value Network
价值网络的更新仍旧是基于 TD 算法。根据式(8)和(12),TD 算法鼓励 v ( s t ; w ) v(s_t;\mathbf{w}) v(st;w) 接近 y t y_t yt。TD Error:
δ t = v ( s t ; w ) − y t \delta_{t}=v\left(s_{t} ; \mathbf{w}\right)-y_{t} δt=v(st;w)−yt
用 TD Error 的平方计算梯度:
∂ δ t 2 / 2 ∂ w = δ t ⋅ ∂ v ( s t ; w ) ∂ w \frac{\partial \delta_{t}^{2} / 2}{\partial \mathbf{w}}=\delta_{t} \cdot \frac{\partial v\left(s_{t} ; \mathbf{w}\right)}{\partial \mathbf{w}} ∂w∂δt2/2=δt⋅∂w∂v(st;w)
使用梯度下降更新参数:
w ← w − α ⋅ δ t ⋅ ∂ v ( s t ; w ) ∂ w \mathbf{w} \leftarrow \mathbf{w}-\alpha \cdot \delta_{t} \cdot \frac{\partial v\left(s_{t} ; \mathbf{w}\right)}{\partial \mathbf{w}} w←w−α⋅δt⋅∂w∂v(st;w)
Summary
A2C 方法使用了两个网络,策略网络和价值网络。对策略网络的更新:
对价值网络的更新:
Reference
https://www.youtube.com/watch?v=hN9WMIMMeAI&list=PLvOO0btloRnujjKTwoC5fOJxC7nmiQ4c4&index=4
【深度强化学习】Advantage Actor-Critic相关推荐
- 【强化学习】Actor Critic原理
PG算法是一种只基于policy的一种方法,存在的问题就是该算法需要完整的状态序列,且单独对策略函数进行迭代更新,不太容易收敛. Actor-critic方法呢是一种将 策略(Policy Based ...
- 17种深度强化学习算法用Pytorch实现(附链接)
来源:新智元 本文约1300字,建议阅读5分钟. 本文为你介绍一个用PyTorch实现了17种深度强化学习算法的教程和代码库,帮助大家在实践中理解深度RL算法. [ 导读 ]深度强化学习已经在许多领域 ...
- 几行代码轻松实现,Tensorlayer 2.0推出深度强化学习基准库
2019-11-11 16:37:04 机器之心发布 机器之心编辑部 强化学习通过使用奖励函数对智能体的策略进行优化,深度强化学习则将深度神经网络应用于强化学习算法.深度强化学习由于其可扩展性,受到科 ...
- 中科院自动化所介绍深度强化学习进展:从AlphaGo到AlphaGo Zero
来源:德先生 概要:2016年初,AlphaGo战胜李世石成为人工智能的里程碑事件.其核心技术深度强化学习受到人们的广泛关注和研究,取得了丰硕的理论和应用成果. 深度强化学习进展: 从AlphaGo ...
- 深度强化学习之:PPO训练红白机1942
本篇是深度强化学习动手系列文章,自MyEncyclopedia公众号文章深度强化学习之:DQN训练超级玛丽闯关发布后收到不少关注和反馈,这一期,让我们实现目前主流深度强化学习算法PPO来打另一个红白机 ...
- 【论文解读】深度强化学习基石论文:函数近似的策略梯度方法
导读:这篇是1999 年Richard Sutton 在强化学习领域中的经典论文,论文证明了策略梯度定理和在用函数近似 Q 值时策略梯度定理依然成立,本论文奠定了后续以深度强化学习策略梯度方法的基石 ...
- openssl 添加自定义算法_GitHub:用PyTorch实现17种深度强化学习算法
[新智元导读]深度强化学习已经在许多领域取得了瞩目的成就,并且仍是各大领域受热捧的方向之一.本文推荐一个用 PyTorch 实现了 17 种深度强化学习算法的教程和代码库,帮助大家在实践中理解深度 R ...
- 深度强化学习综述论文 A Brief Survey of Deep Reinforcement Learning
A Brief Survey of Deep Reinforcement Learning 深度强化学习的简要概述 作者: Kai Arulkumaran, Marc Peter Deisenroth ...
- 深度强化学习—— 译 Deep Reinforcement Learning(part 0: 目录、简介、背景)
深度强化学习--概述 翻译说明 综述 1 简介 2 背景 2.1 人工智能 2.2 机器学习 2.3 深度学习 2.4 强化学习 2.4.1 Problem Setup 2.4.2 值函数 2.4.3 ...
- 基于深度强化学习的机器人运动控制研究进展 | 无模型强化学习 | 元学习
1.基于深度强化学习的机器人运动控制研究进展 1.1 深度强化学习 1.1.1 强化学习简介: 强化学习(Reinforcement Learning, RL)利用试错机制与环境进行交互,旨在通过最大 ...
最新文章
- 阿士比亚:搜索团队智能内容生成实践
- c#_Task用法总结
- Spring-boot国际化
- 电脑蓝屏终止代码irql_电脑蓝屏代码浅析
- java序列化层数_java序列化详解
- 通过分布式把本地图片上传到FTP(1)
- android studio或者IntelliJ代码样式的设置
- matlab生成的图片有边,科学网—图片空白边缘处理/统计直方图---matlab/保存生成高质量的清晰图 - 杨小林的博文...
- 《模式识别》期末考试考题汇总带答案
- 基于plc控制的太阳能追光逐日系统实训装置,QY-PV26
- 支付公司如何赚钱?支付网关如何设计?
- 自己实现的水版MPI_Bcast(使用binomial tree,跟mpich2实现思路一样)
- 手动删除oracle数据库
- python爬数据处理\ufeff、\xa0、\u3000的方法 (转载)
- 分布式事务解决方案(总览)
- 云堡垒机的作用_阿里云堡垒机详解
- 从代理模式再出发!Proxy.newProxyInstance的秘密
- Unity3D集成腾讯语音GVoice SDK
- 优酷投屏显示无法找到服务器,优酷投屏突然不能用了(优酷版权限制无法投屏)...
- 用mysql设计数据库管理系统_MySQL数据库--学生管理系统数据库设计
热门文章
- react native unable to load script from sets “index.android.bundle“.make sure your bundle is packag
- 1704_Linux与Windows使用体验对比
- EasyN网络摄像头无线连接
- 9月心得感悟(欲戴王冠,必承其重。忙着成长,变得坚强)
- 红帽子(Red hat)公司如何在开源linux软件下盈利?
- [转-记] 批量解密SQLSERVER数据库中的各种对象的工具dbForge SQL Decryptor2.1.11
- HTML radio 或者 checkbox 获取状态为选中的元素的值
- onestage方法_目标检测——One-stage和Two-stage的详解
- java swing入门教程_JAVA swing初级教程(二)
- 游戏开发新手入门之DirectX入门