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 算法的具体流程:

  1. 观察到一个 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​);
  2. 计算 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);
  3. 计算 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​;
  4. 使用近似策略梯度来更新策略网络参数: θ ← θ − β ⋅ δ 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​;θ)​;
  5. 梯度下降更新价值网络: 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相关推荐

  1. 【强化学习】Actor Critic原理

    PG算法是一种只基于policy的一种方法,存在的问题就是该算法需要完整的状态序列,且单独对策略函数进行迭代更新,不太容易收敛. Actor-critic方法呢是一种将 策略(Policy Based ...

  2. 17种深度强化学习算法用Pytorch实现(附链接)

    来源:新智元 本文约1300字,建议阅读5分钟. 本文为你介绍一个用PyTorch实现了17种深度强化学习算法的教程和代码库,帮助大家在实践中理解深度RL算法. [ 导读 ]深度强化学习已经在许多领域 ...

  3. 几行代码轻松实现,Tensorlayer 2.0推出深度强化学习基准库

    2019-11-11 16:37:04 机器之心发布 机器之心编辑部 强化学习通过使用奖励函数对智能体的策略进行优化,深度强化学习则将深度神经网络应用于强化学习算法.深度强化学习由于其可扩展性,受到科 ...

  4. 中科院自动化所介绍深度强化学习进展:从AlphaGo到AlphaGo Zero

    来源:德先生 概要:2016年初,AlphaGo战胜李世石成为人工智能的里程碑事件.其核心技术深度强化学习受到人们的广泛关注和研究,取得了丰硕的理论和应用成果. 深度强化学习进展:  从AlphaGo ...

  5. 深度强化学习之:PPO训练红白机1942

    本篇是深度强化学习动手系列文章,自MyEncyclopedia公众号文章深度强化学习之:DQN训练超级玛丽闯关发布后收到不少关注和反馈,这一期,让我们实现目前主流深度强化学习算法PPO来打另一个红白机 ...

  6. 【论文解读】深度强化学习基石论文:函数近似的策略梯度方法

     导读:这篇是1999 年Richard Sutton 在强化学习领域中的经典论文,论文证明了策略梯度定理和在用函数近似 Q 值时策略梯度定理依然成立,本论文奠定了后续以深度强化学习策略梯度方法的基石 ...

  7. openssl 添加自定义算法_GitHub:用PyTorch实现17种深度强化学习算法

    [新智元导读]深度强化学习已经在许多领域取得了瞩目的成就,并且仍是各大领域受热捧的方向之一.本文推荐一个用 PyTorch 实现了 17 种深度强化学习算法的教程和代码库,帮助大家在实践中理解深度 R ...

  8. 深度强化学习综述论文 A Brief Survey of Deep Reinforcement Learning

    A Brief Survey of Deep Reinforcement Learning 深度强化学习的简要概述 作者: Kai Arulkumaran, Marc Peter Deisenroth ...

  9. 深度强化学习—— 译 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 ...

  10. 基于深度强化学习的机器人运动控制研究进展 | 无模型强化学习 | 元学习

    1.基于深度强化学习的机器人运动控制研究进展 1.1 深度强化学习 1.1.1 强化学习简介: 强化学习(Reinforcement Learning, RL)利用试错机制与环境进行交互,旨在通过最大 ...

最新文章

  1. 阿士比亚:搜索团队智能内容生成实践
  2. c#_Task用法总结
  3. Spring-boot国际化
  4. 电脑蓝屏终止代码irql_电脑蓝屏代码浅析
  5. java序列化层数_java序列化详解
  6. 通过分布式把本地图片上传到FTP(1)
  7. android studio或者IntelliJ代码样式的设置
  8. matlab生成的图片有边,科学网—图片空白边缘处理/统计直方图---matlab/保存生成高质量的清晰图 - 杨小林的博文...
  9. 《模式识别》期末考试考题汇总带答案
  10. 基于plc控制的太阳能追光逐日系统实训装置,QY-PV26
  11. 支付公司如何赚钱?支付网关如何设计?
  12. 自己实现的水版MPI_Bcast(使用binomial tree,跟mpich2实现思路一样)
  13. 手动删除oracle数据库
  14. python爬数据处理\ufeff、\xa0、\u3000的方法 (转载)
  15. 分布式事务解决方案(总览)
  16. 云堡垒机的作用_阿里云堡垒机详解
  17. 从代理模式再出发!Proxy.newProxyInstance的秘密
  18. Unity3D集成腾讯语音GVoice SDK
  19. 优酷投屏显示无法找到服务器,优酷投屏突然不能用了(优酷版权限制无法投屏)...
  20. 用mysql设计数据库管理系统_MySQL数据库--学生管理系统数据库设计

热门文章

  1. react native unable to load script from sets “index.android.bundle“.make sure your bundle is packag
  2. 1704_Linux与Windows使用体验对比
  3. EasyN网络摄像头无线连接
  4. 9月心得感悟(欲戴王冠,必承其重。忙着成长,变得坚强)
  5. 红帽子(Red hat)公司如何在开源linux软件下盈利?
  6. [转-记] 批量解密SQLSERVER数据库中的各种对象的工具dbForge SQL Decryptor2.1.11
  7. HTML radio 或者 checkbox 获取状态为选中的元素的值
  8. onestage方法_目标检测——One-stage和Two-stage的详解
  9. java swing入门教程_JAVA swing初级教程(二)
  10. 游戏开发新手入门之DirectX入门