【强化学习】八、Actor-Critic算法

八、Actor-Critic算法

演员-评论员算法是一种结合策略梯度和时序差分学习的强化学习方法,其中,演员是指策略函数 π θ ( a ∣ s ) \pi_\theta(a|s) πθ(as),即学习一个策略以得到尽可能高的回报。评论员是指价值函数 V π ( s ) V_\pi(s) Vπ(s),对当前策略的值函数进行估计,即评估演员的好坏。借助于价值函数,演员-评论员算法可以进行单步参数更新,不需要等到回合结束才进行更新。

1.策略梯度回顾

在更新策略参数 θ \theta θ的时候,可以通过
∇ R ˉ θ ≈ 1 N ∑ n = 1 N ∑ t = 1 T n ( ∑ t ′ = t T n γ t ′ − t r t ′ n − b ) ∇ log ⁡ p θ ( a t n ∣ s t n ) \nabla \bar{R}_\theta \approx \frac{1}{N} \sum_{n=1}^N \sum_{t=1}^{T_n}\left(\sum_{t^{\prime}=t}^{T_n} \gamma^{t^{\prime}-t} r_{t^{\prime}}^n-b\right) \nabla \log p_\theta\left(a_t^n \mid s_t^n\right) RˉθN1n=1Nt=1Tn(t=tTnγttrtnb)logpθ(atnstn)
来计算梯度,式子的左半部分是累积奖励减去基线,累积奖励 G G G是非常不稳定的,因为交互的过程本身具有随机性,所以在某一个状态 s 采取某一个动作 a 时计算得到的累积奖励,每次结果都是不同的,因此 G G G是一个随机变量。

如果我们把 G G G想成一个随机变量,实际上是在对 G G G做采样,用这些采样的结果去更新参数。但实际上在某一个状态 s 采取某一个动作 a,接下来会发生什么事,其本身是有随机性的。虽然说有一个固定的分布,但其方差可能会非常大。智能体在同一个状态采取同一个动作时,最后得到的结果可能会是很不一样的。当然,假设我们在每次更新参数之前,都可以采样足够多次,那当然就没有以上的问题了。但我们每次做策略梯度,每次更新参数之前都要做一些采样时,采样的次数是不可能太多的,我们只能够做非常少量的采样。如果我们正好采样到差的结果,比如采样到 G G G= 100、采样到 G G G= 10,显然结果会是很差的。


2.深度Q网络回顾

考虑到 G G G非常不稳定,所以能否直接估测随机变量 G G G的期望值呢?我们可以直接使用一个网络去估测在状态s采取动作a时 G G G的期望值。这里需要引入基于价值的方法(value-based)。基于价值的方法就是深度 Q 网络。深度 Q 网络有两种函数,有两种评论员。第一种评论员是 V π ( s ) V_\pi(s) Vπ(s)。即假设演员的策略是 π \pi π,使用 π \pi π与环境交互,当智能体看到状态 s 时,接下来累积奖励的期望值是多少。第二种评论员是 Q π ( s , a ) Q_\pi(s,a) Qπ(s,a) Q π ( s , a ) Q_\pi(s,a) Qπ(s,a)sa 当作输入,它表示在状态 s 采取动作 a,接下来用策略 π \pi π与环境交互,累积奖励的期望值是多少。 V π V_\pi Vπ接收输入 s,输出一个标量。 Q π Q_\pi Qπ接收输入 s,它会给每一个 a 都分配一个 Q 值。


3.优势演员-评论员算法

随机变量 G G G的期望值正好就是 Q Q Q值,即
E [ G t n ] = Q π θ ( s t n , a t n ) \mathbb{E}\left[G_t^n\right]=Q_{\pi_\theta}\left(s_t^n, a_t^n\right) E[Gtn]=Qπθ(stn,atn)
这也和Q函数的定义是一致的,Q 函数的定义就是在某一个状态 s,采取某一个动作 a,假设策略是 π \pi π的情况下所能得到的累积奖励的期望值,即 G G G的期望值。累积奖励的期望值就是 G G G的期望值。

表示基线也有不同的方法,一个常见的方法是用价值函数 V π θ ( s t n ) V_{\pi\theta}(s_t^n) Vπθ(stn)来表示基线,价值函数的定义是假设策略是 π \pi π,其在某个状态s一直与环境交互直到游戏结束,期望奖励有多大。 V π θ ( s t n ) V_{\pi\theta}(s_t^n) Vπθ(stn)没有涉及动作, Q π θ ( s t n , a t n ) Q_{\pi_\theta}\left(s_t^n, a_t^n\right) Qπθ(stn,atn)涉及动作, V π θ ( s t n ) V_{\pi\theta}(s_t^n) Vπθ(stn)就是 Q π θ ( s t n , a t n ) Q_{\pi_\theta}\left(s_t^n, a_t^n\right) Qπθ(stn,atn)的期望值, Q π θ ( s t n , a t n ) − V π θ ( s t n ) Q_{\pi_\theta}\left(s_t^n, a_t^n\right)-V_{\pi\theta}(s_t^n) Qπθ(stn,atn)Vπθ(stn)会有正有负,所以 ( ∑ t ′ = t T n γ t ′ − t r t ′ n − b ) \left(\sum_{t^{\prime}=t}^{T_n} \gamma^{t^{\prime}-t} r_{t^{\prime}}^n-b\right) (t=tTnγttrtnb)这一项就会有正有负,我们把策略梯度的这一项换成 A θ ( s t n , a t n ) A^\theta(s_t^n,a_t^n) Aθ(stn,atn),即 Q π θ ( s t n , a t n ) − V π θ ( s t n ) Q_{\pi_\theta}\left(s_t^n, a_t^n\right)-V_{\pi\theta}(s_t^n) Qπθ(stn,atn)Vπθ(stn),因此该算法称为优势演员-评论员算法。

但这样实现存在一个缺点,就是我们需要估计两个网络,Q网络和V网络,估计不准的风险直接翻倍,所以我们可以只估计网络V,并用V的值来表示Q的值
Q π ( s t n , a t n ) = E [ r t n + V π ( s t + 1 n ) ] Q_\pi\left(s_t^n, a_t^n\right)=\mathbb{E}\left[r_t^n+V_\pi\left(s_{t+1}^n\right)\right] Qπ(stn,atn)=E[rtn+Vπ(st+1n)]
当我们把期望值去掉,就可以得到
A θ ( s t n , a t n ) = r t n + V π ( s t + 1 n ) − V π ( s t n ) A^\theta(s_t^n,a_t^n)=r_t^n+V_\pi\left(s_{t+1}^n\right)-V_\pi(s_t^n) Aθ(stn,atn)=rtn+Vπ(st+1n)Vπ(stn)
把取期望值去掉的好处就是我们不需要估计Q了,只需要估计V。但与此同时我们会引入一个随机的参数r。r是有随机性的,它是一个随机变量,但是r相较于累积奖励G是一个较小的值,因为它是某一个步骤得到的奖励,而是所有未来会得到的奖励的总和,G的方差比较大。r虽然也有一些方差,但它的方差比G的要小。所以把原来方差比较大的G换成方差比较小的r也是合理的。

把期望值去掉的原因是原始的异步优势演员-评论员算法的论文尝试了各种方法,最后发现这个方法最好。

优势演员-评论员算法的流程如图所示,我们有一个 π \pi π,有个初始的演员与环境交互,先收集资料。在策略梯度方法里收集资料以后,就来更新策略。但是在演员-评论员算法里面,我们不是直接使用那些资料来更新策略。我们先用这些资料去估计价值函数,可以用时序差分方法或蒙特卡洛方法来估计价值函数。接下来,我们再基于价值函数,更新 π \pi π
∇ R ˉ θ ≈ 1 N ∑ n = 1 N ∑ t = 1 T n ( r t n + V π ( s t + 1 n ) − V π ( s t n ) ) ∇ log ⁡ p θ ( a t n ∣ s t n ) \nabla \bar{R}_\theta \approx \frac{1}{N} \sum_{n=1}^N \sum_{t=1}^{T_n}\left(r_t^n+V_\pi\left(s_{t+1}^n\right)-V_\pi\left(s_t^n\right)\right) \nabla \log p_\theta\left(a_t^n \mid s_t^n\right) RˉθN1n=1Nt=1Tn(rtn+Vπ(st+1n)Vπ(stn))logpθ(atnstn)
有了新的 π \pi π 以后, 再与环境交互, 收集新的资料, 去估计价值函数。再用新的价值函数更新策略, 更新演员。整个优势演员-评论员算法就是这么运作的。

image-20230823141655421


4.路径衍生策略梯度

路径衍生策略梯度(pathwise derivative policy gradient)可以看作深度Q网络解连续动作的一种特别的方法,也可以看作一种特别的演员-评论员算法。

一般的演员-评论员算法的评论员就是输入状态或输入状态-动作对,给演员一个值,所以对演员来说,它只知道它做的这个动作到底是好还是不好。但在路径衍生策略梯度里面,评论员会直接告诉演员采取什么样的动作才是好的。

image-20230823143933560

假设我们学习了一个Q函数,Q函数的输入是s与a,输出是 Q π ( s , a ) Q_\pi(s,a) Qπ(s,a),接下来我们要学习一个演员,这个演员的工作就是解决argmax问题,即输入一个状态s,希望可以输出一个动作a,a被代入Q函数以后,它可以让 Q π ( s , a ) Q_\pi(s,a) Qπ(s,a)尽可能大。
π ′ ( s ) = arg ⁡ max ⁡ a Q π ( s , a ) \pi^{\prime}(s)=\underset{a}{\arg \max } Q_\pi(s, a) π(s)=aargmaxQπ(s,a)
实际上在训练的时候,我们就是把Q与演员连接起来变成一个比较大的网络。Q是一个网络,接收输入s与a,输出一个值。演员在训练的时候,它要做的事就是接收输入s,输出a。把a代人Q中,希望输出的值越大越好。我们会固定住Q的参数,只调整演员的参数,用梯度上升的方法最大化Q的输出,这就是一个生成对抗网络,即有条件的生成对抗网络(conditional GAN)。Q就是判别器,但在强化学习里就是评论员,演员在生成对抗网络里面就是生成器。

image-20230823144821908

一开始会有一个策略 π \pi π,它与环境交互并估计Q值。估计完Q值以后,我们就把Q值固定,只去学习一个演员。假设这个Q值估得很准,它知道在某一个状态采取什么样的动作会得到很大的Q值。接下来就学习这个演员,演员在给定s的时候,采取了a,可以让最后Q函数算出来的值越大越好。我们用准则(criteria)去更新策略 π \pi π,用新的 π \pi π与环境交互,再估计Q值,得到新的 π \pi π去最大化Q值的输出。深度Q网络里面的技巧,在这里也几乎都用得上,比如经验回放、探索等技巧。

image-20230823145228704

5.参考资料

强化学习基础 北京邮电大学 鲁鹏 强化学习基础 (本科生课程) 北京邮电大学 鲁鹏_哔哩哔哩_bilibili

深度强化学习 台湾大学 李宏毅 DRL Lecture 1_ Policy Gradient (Review)_哔哩哔哩_bilibili

蘑菇书EasyRL datawhalechina/easy-rl: 强化学习中文教程(蘑菇书),在线阅读地址:https://datawhalechina.github.io/easy-rl/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值