Actr-Critc

本文深入探讨了Actor-Critic算法,一种结合了Q-learning和PolicyGradient的强化学习方法。通过对比两种基础算法,详细讲解了Actor-Critic如何优化策略,减少方差,以及其在网络中的具体实现。

一、介绍

Actor-Critic 算法有两部分组成:actor 和 critic。其中 action 就是Policy Gradient 算法,critic 是Q-learning。所以实际上 actor-critic算法是Q-learning算法和policy gradient算法的结合。

  1. Actor Critic 算法能在有限维的输入和有限维的输出中起到比较好的效果。
  2. Actor 角色起到的作用是:在当前状态下决定哪一个动作被执行会达到最好的效果;而Critic则是对某一个状态下采取的某个动作做出评价。这个评价会影响 actor 今后的选择。
  3. Actor-Critic 算法所需要的训练时间要比Policy Gradient 算法短。

二、回顾 Q-learning

对于Q-learning,有如下特点:

  • 基于 value-based
  • 处理离散的动作空间
  • 它是一个 model-free 的算法,使用 Q函数去找到最理想的策略
    image.png

如上图的网络都是为了近似 Q(s,a)函数,有了 Q(s,a),我们就可以根据Q(s,a)的值来作为判断依据,作出恰当的行为。

image.png

Q-learning算法最主要的一点是:决策的依据是Q(s,a)的值。即算法的本质是在计算 当前状态s, 采取某个动作 a 后会获得的未来的奖励的期望,这个值就是 Q(s,a)。换句话说,我们可以把这个算法的核心看成一个评论家(Critic),而这个评论家会对我们在当前状态s下,采取的动作a这个决策作出一个评价,评价的结果就是Q(s,a)的值。

但是,Q-learning 算法却不怎么适合解决连续动作空间的问题。因为如果动作空间是连续的,那么用Q-learning算法就需要对动作空间离散化,而离散化的结果会导致动作空间的维度非常高,这就使得Q-learning 算法在实际应用起来很难求得最优值,且计算速度比较慢。

而Policy Gradient 正好弥补了这个缺点。

三、回顾 Policy Gradient

Policy Gradient 算法的核心思想是: 根据当前状态,直接算出下一个动作是什么或下一个动作的概率分布是什么。即它的输入是当前状态 s, 而输出是具体的某一个动作或者是动作的分布。

image.png

我们可以想像,Policy Gradient 就像一个演员(Actor),它根据某一个状态s,然后作出某一个动作或者给出动作的分布,而不像Q-learning 算法那样输出动作的Q函数值。

四、Actor Critic

Actor-Critic 是Q-learning 和 Policy Gradient 的结合。
为了导出 Actor-Critic 算法,必须先了解Policy Gradient 算法是如何一步步优化策略的。

image.png

如上图所示, 最简单的Policy Gradient 算法要优化的函数如下:
L = ∑ l o g π θ ( s t , a t ) v t L = \sum log \pi_\theta(s_t, a_t) v_t L=logπθ(st,at)vt

其中 v t v_t vt 要根据 Monte-Carlo 算法估计,故又可以写成:
L = ∑ l o g π θ ( s t , a t ) G t L = \sum log \pi_\theta(s_t, a_t) G_t L=logπθ(st,at)Gt

但是这个 G t G_t Gt 方差会比较大,因为 G t G_t Gt是由多个随机变量得到的,因此,我们需要寻找减少方差的办法。
一个方法就是引入一个 baseline 的函数 b, 这个 b 会使得 ( G t − b ) (G_t - b) (Gtb)的期望不变,但是方差会变小,常用的 baseline函数就是 V ( s t ) V(s_t) V(st)。再来,为了进一步降低 G t G_t Gt的随机性,我们用 E ( G t ) E(G_t) E(Gt) 替代 G t G_t Gt,这样,源式就变成:
L = ∑ l o g π θ ( s t , a t ) ( E ( G t ) − V ( s t ) ) L = \sum log \pi_\theta(s_t, a_t) (E(G_t) - V(s_t)) L=logπθ(st,at)(E(Gt)V(st))
因为 E ( G t ∣ s t , a t ) = Q ( s t , a t ) E(G_t| s_t, a_t) = Q(s_t, a_t) E(Gtst,at)=Q(st,at),故进一步演化成:
L = ∑ l o g π θ ( s t , a t ) ( Q ( s t , a t ) − V ( s t ) ) L = \sum log \pi_\theta(s_t, a_t) (Q(s_t, a_t) - V(s_t)) L=logπθ(st,at)(Q(st,at)V(st))

照上面的式子看来,我们需要两个网络去估计 Q ( s t , a t ) Q(s_t, a_t) Q(st,at) V ( s t ) V(s_t) V(st),但是考虑到贝尔曼方程:
Q ( s t , a t ) = E [ r + γ V ( s t + 1 ) ] Q(s_t, a_t) = E[r + \gamma V(s_{t+1})] Q(st,at)=E[r+γV(st+1)]
弃掉期望, 得:
Q ( s t , a t ) = r + γ V ( s t + 1 ) Q(s_t, a_t) = r + \gamma V(s_{t+1}) Q(st,at)=r+γV(st+1)

即最终的式子为:
L = ∑ l o g π θ ( s t , a t ) ( r + γ V ( s t + 1 ) − V ( s t ) ) L = \sum log \pi_\theta(s_t, a_t) (r+ \gamma V(s_{t+1}) - V(s_t)) L=logπθ(st,at)(r+γV(st+1)V(st))

这样只需要一个网络就可以估算出 V V V 值了,而估算 V V V 的网络正是我们在 Q-learning 中做的,所以我们就把这个网络叫做 Critic。这样就在 Policy Gradient 算法的基础上引进了 Q-learning 算法了

image.png

引用

https://www.jianshu.com/p/25c09ae3d206
https://www.bilibili.com/video/av24724071/?p=6
https://www.jianshu.com/p/277abf64e369

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WinddyAkoky

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值