actor-critic 相关算法简述

本文通过整理李宏毅老师的机器学习教程的内容,简要介绍深度强化学习(deep reinforcement learning)中基于 actor-critic 的相关算法。

李宏毅老师课程的B站链接:
李宏毅, 深度强化学习, actor-critic

相关笔记:
策略梯度法(policy gradient)算法简述
近端策略优化(proximal policy optimization)算法简述
DQN(deep Q-network)算法简述


asynchronous advantage actor-critic(A3C)


参考文献:
Volodymtr Mnih, Adria Puigdomenech Badia, Mehdi Mirza, Alex Graves, Timothy P. Lillicrap, Tim Harley, David Silver, Koray Kavukcuoglu, Asynchronous Methods for Deep Reinforcement Learning, ICML 2016

在基于 actor-critic 的相关算法里面,最知名的方法是 asynchronous advantage actor-critic,简称 A3C。
如果去掉异步(asynchronous),就是 advantage actor-critic,即 A2C。

首先回顾一下策略梯度法:
▽ R ˉ θ ≈ 1 N ∑ n = 1 N ∑ t = 1 T n ( ∑ t ′ = t T n γ t ′ − t r t ′ n − b ) ▽ ln ⁡ p θ ( a t n ∣ s t n ) \triangledown \bar R_{\theta} \approx \frac{1}{N} \sum_{n=1}^{N} \sum_{t=1}^{T_n} (\sum_{t^{\prime}=t}^{T_n} \gamma^{t^{\prime} - t} r_{t^{\prime}}^n - b) \triangledown \ln p_\theta(a^n_t | s^n_t) RˉθN1n=1Nt=1Tn(t=tTnγttrtnb)lnpθ(atnstn)

记累计激励为 G G G
G t n = ∑ t ′ = t T n γ t ′ − t r t ′ n G^n_t = \sum_{t^{\prime}=t}^{T_n} \gamma^{t^{\prime} - t} r_{t^{\prime}}^n Gtn=t=tTnγttrtn

但是由于互动的过程本身是有随机性的,累计激励可能很不稳定,而每次更新参数前的采样次数又不可能很多,就有可能出现问题:

G, unstable

于是考虑用累计激励 G G G 的期望值来代替采样的值,获取期望的方法就是基于价值的(value-based)方法,即 DQN。

DQN 有两种 critic,即状态价值函数(state value function) V π ( s ) V^\pi(s) Vπ(s) 和状态-动作价值函数(state-action value function) Q π ( s , a ) Q^\pi(s, a) Qπ(s,a)
DQN, critics

其中,使用基于蒙特卡洛的方法(Monte-Carlo based approach, MC)和基于时序差分的方法(temporal-difference approach, TD)的估计方法均可,时序差分比较稳定,蒙特卡罗比较精确。

实际上,累计激励 G G G 的期望值就是 Q Q Q,即:
E [ G t n ] = Q π θ ( s t n , a t n ) E[G^n_t] = Q^{\pi_\theta}(s^n_t, a^n_t) E[Gtn]=Qπθ(stn,atn)

关于基线,一个常见的做法使用状态价值函数 V π θ ( s t n ) V^{\pi_\theta}(s^n_t) Vπθ(stn) 来表示,即:
G and baseline

上述方法的缺点是,需要估计 Q Q Q V V V 两个网络,估计不准确的风险会加倍。实际上,我们可以只估计一个网络,即 V V V 网络,用 V V V 的值来表示 Q Q Q 的值。由于:
Q π ( s t n , a t n ) = E [ r t n + V π ( s t + 1 n ) ] ∗ Q^{\pi}(s^n_t, a^n_t) = E[r^n_t + V^\pi(s^n_{t+1})] \quad * Qπ(stn,atn)=E[rtn+Vπ(st+1n)]

把期望去掉,即可直接用 V V V 表示 Q Q Q
Q π ( s t n , a t n ) = r t n + V π ( s t + 1 n ) ∗ ∗ Q^{\pi}(s^n_t, a^n_t) = r^n_t + V^\pi(s^n_{t+1}) \quad ** Qπ(stn,atn)=rtn+Vπ(st+1n)

于是得到优势函数(advantage)的表达式:
r t n + V π ( s t + 1 n ) − V π ( s t n ) r^n_t + V^\pi(s^n_{t+1}) - V^\pi(s^n_t) rtn+Vπ(st+1n)Vπ(stn)

这里有一个新的问题,即激励 r r r 也是一个随机变量,但由于它只是第 t t t 步的激励,而前面的 G G G 是第 t t t 步之后的累计激励,相比之下 r r r 的波动会小很多。

更新策略 π \pi π 的策略梯度公式即为:
▽ R ˉ θ ≈ 1 N ∑ n = 1 N ∑ t = 1 T n ( r t n + V π ( s t + 1 n ) − V π ( s t n ) ) ▽ ln ⁡ p θ ( a t n ∣ s t n ) ∗ ∗   ∗ \triangledown \bar R_{\theta} \approx \frac{1}{N} \sum_{n=1}^{N} \sum_{t=1}^{T_n} (r^n_t + V^\pi(s^n_{t+1}) - V^\pi(s^n_t)) \triangledown \ln p_\theta(a^n_t | s^n_t) \quad ** \ * RˉθN1n=1Nt=1Tn(rtn+Vπ(st+1n)Vπ(stn))lnpθ(atnstn) 

至于去掉期望值的原因(从 ∗ * 式到 ∗ ∗ ** 式),是原始 A3C 论文尝试各种方法进行实验比较的结果。

整体流程如下(顺时针):
流程图

在策略梯度方法中,收集资料后,就要拿去更新策略;
但是在 actor-critic 方法中,不是直接用那些资料去更新策略,而是先用这些资料去估计价值函数 V V V (可以用基于蒙特卡罗的方法或基于时序差分的方法),再基于价值函数,使用 ∗ ∗ ∗ *** 式更新策略 π \pi π

这里有两个技巧。

其一,在实现 actor-critic 时,我们需要估计两个网络,即 V V V 函数的网络和策略的网络 π \pi π。由于这两个网络的输入都是状态 s s s,因此前面几层是可以共享的,尤其是输入为图像的游戏:

tip 1

其二,我们需要探索(exploration)的机制。一个常见的方法是对策略 π \pi π 的输出做一个约束,使输出分布的熵(entropy)不要太小,即希望不同的动作被探索的概率平均一些。这样可以尝试各种不同的动作,对环境探索得更好。

上述算法即为 advantage actor-critic(A2C),最后解释什么是异步(asynchronous)。

如下图所示,每个 actor 都是并行运行的,即“各做各的,不管彼此”,当某个进程运行结束准备回传参数时,原来的参数可能已经被其他 actor 覆盖了,但也没关系,直接更新就可以了,即为“异步”。
(注:图中的 △ θ \triangle \theta θ 应为 ▽ θ \triangledown \theta θ

在这里插入图片描述


pathwise derivative policy gradient


参考文献:
David Silver, Guy Lever, Nicolas Heess, Thomas Degris, Daan Wierstra, Martin Riedmiller, Deterministic Policy Gradient Algorithms, ICML 2014
Timothy P. Lillicrap, Jonathan J. Hunt, Alexander Pritzel, Nocolas Heess, Tom Erez, Yuval Tassa, David Silver, Daan Wierstra, Continuous Control with Deep Reinforcement Learning, ICLR 2016

接下来介绍 pathwise derivative policy gradient 算法。该算法的思路是,critic 不止评价动作的好坏,还要告诉 actor 什么动作是好的,即:
arg ⁡ max ⁡ a Q π ( s , a ) \arg \max_a Q^\pi(s, a) argamaxQπ(s,a)

但是如果是连续动作的场景,求解上述优化问题会比较困难,所以可以另外学习一个网络来求解这个优化问题(类比 GAN):

pathwise derivative policy gradient, network

算法流程是,先用一个策略 π \pi π 与环境互动,估计出 Q Q Q 函数,然后固定 Q Q Q,再去学习策略 π \pi π,得到一个更好的 actor,如此循环往复,如下图所示:

pathwise derivative policy gradient, 流程图

类似目标网络(target network)中的真正 Q Q Q 网络和目标 Q Q Q 网络(参见 DQN 部分),该算法中也有两个 actor,即真正的 π \pi π 和目标 π ^ \hat \pi π^
此外,之前提到的技巧,如 replay buffer 和 exploration 等都能用到。

回顾原始的 DQN 的流程:
原始 DQN 流程

对比原始的 DQN,pathwise derivative policy gradient 的具体流程如下:

pathwise derivative policy gradient, 具体流程


actor-critic 与 GAN 的关系


actor-critic 与 GAN 是很类似的,具体可参考论文:
David Pfau, Oriol Vinyals, Connecting Generative Adversarial Networks and Actor-Critic Methods, arXiv preprint 2016

两者都以很难训练闻名,所以文章中收集了各种方法,讲述了如何把 GAN 训练起来。又由于做 GAN 和 actor-critic 的是两群人,因此文章有列出两种算法中分别有哪些方法有人尝试过,如下图所示:

actor-critic & GAN

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值