【强化学习的数学原理-赵世钰】课程笔记(十)Actor-Critic 方法

目录

[一.最简单的 actor-critic(QAC):The simplest actor-critic (QAC)](#一.最简单的 actor-critic(QAC):The simplest actor-critic (QAC))

[二.Advantage actor-critic (A2C)](#二.Advantage actor-critic (A2C))

[三.Off-policy actor-critic 方法](#三.Off-policy actor-critic 方法)

[四. Deterministic actor critic(DPG)](#四. Deterministic actor critic(DPG))


Actor-Critic 方法把基于 value 的方法,特别是 value function approximation 引入到 policy gradient 当中,我们就得到了 actor critic

Actor-Critic 方法仍然是策略梯度(policy gradient)方法,和我们上节课学的 policy gradient 的方法是一种方法。

    • 它们强调的是将策略梯度和基于价值的方法结合在一起的结构。

什么是 "Actor "和 "Critic"?

    • 这里的 "Actor "指的是策略更新,actor 对应的是策略,也就是它是来更新策略的一个东西或者是一个过程。之所以称为 "Actor",是因为策略是用来 take action 采取行动的,那么 take action 的这个东西就可以对应这个 actor。
    • Critic 的字面意思是评论家,批评家。这里的 "Critic "是在做策略评估(policy evaluation)或价值估计(value estimation),也就是我有一个策略,我需要评估一下这个策略是好还是不好,那怎么评估呢,其实就是根据 value estimation,也就是我去估计它的 action value 或者 state value。之所以称其为 "Critic",是因为它通过评估政策来对其进行批判。

课程大纲:

1.最简单的 actor-critic(QAC):The simplest actor-critic (QAC)

2.Advantage actor-critic (A2C):这个的思想是通过引入一个偏置量来减少估计的方差

3.Off-policy actor-critic:如何把 on-policy 的 AC 方法转化成一个 off-policy 的 AC 方法,这里会用到一个关键技术,就是重要性采样

前三节的 policy 都是 stochastic 的

4.Deterministic actor-critic (DPG):第四节会介绍 deterministic actor-critic 的方法


一.最简单的 actor-critic(QAC):The simplest actor-critic (QAC)

回顾上节课介绍的 policy gradient 方法,Actor-Critic 方法本身就是策略梯度(policy gradient)方法

  • 上面的最后一个表达式很重要,通过这个表达式我们就可以知道哪些是 actor 哪些是 critic,actor 和 critic 究竟是怎样结合起来的
  • 上面的最后一个表达式的算法就是 actor,因为这个算法在更新策略,θ 是策略的参数,θ 变化了策略自然也就变化了,所以 actor 是更新策略的一个算法
  • critic 就是来估计 qt 的一个算法,因为你要更新这个策略需要 qt,qt 是 qπ 的近似,所以 critic 的作用就是对当前的这样一个策略进行评估,计算出来它所对应的 action value
  • 通过这个式子,我们清晰的看到了 actor 和 critic,以及 policy based 和 value based 方法是怎么结合起来的

如何获得 qt(st, at)?

到目前为止,我们已经研究了两种估计 action value 的方法:

第一种上节课介绍了:

    • 蒙特卡洛方法:如果要计算 qt(st, at) ,就从后面得到一个 episode,然后计算那个 episode 对应的 return,我就让那个 return 认为是 qt(st, at) 的一个近似值。 如果这个 qt(st, at) 是这样计算的,是使用 MC 计算的,相应的算法称为 REINFORCE 或蒙特卡罗策略梯度(Monte Carlo policy gradient)。
    • 我们在上一讲中介绍过。

第二种这节课会介绍:

    • TD 学习: 如果使用TD学习来估计 qt,这类算法通常被称为行为批判算法(actor-critic)。
    • 我们将在本讲座中介绍。

介绍第一个 actor-critic 的算法:

这里的 critic 对应 Sarsa 算法,并且结合了 value function approximation,这个 Sarsa 算法对应了一个 function,它的参数是 w,w 被更新之后我们就得到了一个新的 q,把这个 q 带入 Actor 里面,就得到了一个新的策略对应的 θt+1,这个新的策略会用到下一步当中去生成新的数据

  • 出了MC,TD还有神经网络啊,为什么没有说呢?
  • TD就是用的神经网络拟合q的啊,不然怎么会有q(w)呢
  • 神经网络体现在theta上...
  • 现在在讲原理,神经网络是个函数估计器,你觉得是一码事么?
  • 对神经网络求梯度并不难,这里知道可以求就行了
  • w就可以表示是神经网络的参数吧

补充:

    • critic 对应于 "SARSA+值函数逼近"(SARSA+value function approximation)。
    • actor 对应于 policy update 算法,在上上页给出了。
    • 该算法是 on policy 的(为什么 policy gradient 包括刚才介绍的 actor-critic 方法是 on policy 的?): 因为策略是随机的,1> π(a|s, θ) >0,所以无需使用 ε-greedy 等技术。

policy gradient 包括刚才介绍的 actor-critic 方法都是 on policy 的

    • 这种特殊的 Actor-Critic 算法有时被称为 Q Actor-Critic 算法(QAC)。Q 对应那个 q value
    • 这种算法虽然简单,却揭示了 Actor-Critic 的核心思想。如后面所示,它还可以扩展生成许多其他算法。

二.Advantage actor-critic (A2C)

接下来,我们将 QAC 扩展为 advantage actor-critic (A2C)

    • 其核心思想是引入一个 baseline 以减少估计的方差。

性质:我们推导的策略梯度对于引入一个新的偏置不会发生变化

这里, baseline b(S) 是 S 的标量函数。

为什么 baseline 有效?

s为啥和theta无关呢,稳态的s分布应该和策略有关呀

  • 确实和策略有关,这里按书上第9章的记号应该写成d_pi(s)。但不影响结论,原因:在单步更新中策略是被冻结的
  • s是环境自己的东西和策略无关
  • state和策略没有关系,策略是进行state的选择并作出对应action,state space是客观存在的
  • a和s是没关系的,就算state是一堵墙在你前面,你照样有往上撞的action。但是pi和a,s有关
  • 他是S的函数;给定S,他有给定的值;这里不需要考虑S的概率分布问题

n(s)为啥可以不写成n(s|theta)呢

岂不是说有没有这个b(s),这个期望都是为0 ?

没有这个b(s)本来就是0啊

为什么 baseline 有用?

为什么要考虑这个 baseline,它究竟有什么用?

  • E[X] 与 b(S) 无关,无论取什么样的函数这个 E[X] 总保持不变
  • X 的方差 var(X) 与 b(S) 有关,取不同的 b 方差可能相差很大,baseline 对方差有影响

**目标:**是找一个最小的 baseline 使得方差最小,这样在采样的时候就有更小的误差

**优点:**当我们使用随机样本来近似 E[X] 时,估计方差也会很小。

在 REINFORCE 和 QAC 算法中、

    • 没有基线 baseline。
    • 或者,我们可以说 b = 0,但这并不能保证是一个好的基线 baseline。

最好的 baseline 是:

对于任意 s∈ S,能使 var(X) 最小化的最优 baseline 是

蓝色代表一个权重

    • 虽然这一基线是最优的,但却很复杂。
    • 在实际当中,我们我们可以去掉权重,选择次优基线,即直接求 q 的 expectation,这个公式就是在 s 对应的 state value:

下面看怎么把 baseline 引入到 actor-critic 的算法中

vπ 是 qπ 在某一个状态下的平均值,如果对应的某一个 action 比这个平均值大,那就说明这个 action 肯定是比较好的,它的 action value 比较大,有一定的优势

因为这里面有 expectation,那我们很自然的就要得到他的 stochastic version,也就是通过采样得到这样一个算法


算法可以被表示成:

上节课也说过,这种 stochastic gradient 的方法可以很好的平衡探索和利用

    • 步长与相对值 δt 成比例,而不是与绝对值 qt 成比例,这样更合理。
    • 它仍能通过分子分母很好地平衡探索和开发。

当 δt 比较大的时候,这个 step size 也会比较大,上面这个算法是在更新 π(at|st),如果 step size 比较大,会超那个方向走的比较多,因此 π(at|st) 在下一时刻就会变得比较大。意思就是这一时刻我已经知道这个 action 有比较大的 action value,那么下个时刻就要给他更多的概率去选择他,这个就是充分利用

如果分母对应的策略比较小,他的 step size 也会比较大,所得到的下一时刻的 π 的概率也会比较大,也就是在上一时刻我选择这个 action 的概率是比较小的,那么下一时刻选择这个 action 的概率就会增大一些。就是给他更多的机会去选择他,这样增加探索


上节课的分子是 qt,现在变成了 δt。δt 比 qt 更好,因为我们在乎的不是 action value 的绝对值,而是他的相对值


此外,优势函数近似于 TD 误差:

这一近似值是合理的,因为

优点:只需一个网络即可逼近 vπ(s),而不需要两个网络来逼近 qπ(s,a) 和 vπ(s)。


它是 on-policy 的。由于策略 π(θt) 是随机的 stochastic,因此无需使用 ε-greedy 等技术。


三.Off-policy actor-critic 方法

到目前为止 AC 的方法还有 policy gradient 的方法,它们都是 on-policy 的。如果之前有一些经验了,我们想用这些经验怎么办呢?我们可以用 off policy 的 actor-critic 的方法。接下来会介绍重要性采样 important sampling 来把 on-policy 的算法转化成一个 off policy 的算法

  • 我们可以将其转换为 off policy 的吗?
    • 可以,通过重要性采样
    • 重要性采样技术 important sampling 不仅适用于 AC,也适用于任何旨在估计期望值 expectation 的算法。包括前面的蒙特卡洛和 TD 都可以

转成 off policy 的算法的算法之后,我们就可以复用一些之前通过一些其他方法所得到的经验

On-Policy就是你用来探索生成数据的那个策略和你正在优化的策略是一样的,off-policy就是你探索的时候用一种策略但你实际上更新的是另外一个策略


如果我不知道 p0 的表达式,或者 p0 很复杂,我求不出来这个 E[X] 的时候,我能否通过采样的方式来求这个 E[X] 呢?


**方法1:**这个在我们介绍蒙特卡洛的时候介绍过

根据 X 的真实分布得到了一些 sample {xi},那么每个 sample 的期望和方差都和 X 的是相等的


方法2:

我的 sample 是在另一个分布 p1 下采样得到的


**问题:**我有一个概率分布 p1,在这个 p1 下产生了一些 sample,我想用这些 sample 来估计在 p0 下的 expectation

为什么要这样做?

我们可能希望根据行为策略(behavior policy) β 的样本来估计 E_A∼π[∗],其中 π 是目标策略(target policy)。β 对应 p1,是来产生数据的,我要去估计在这个 π 分布下它的 expectation,所以 π 对应 p0

如何做?

如果直接对这些 sample 求平均,他最后。。。

我们可以利用重要性采样技术来实现这一目标。


+1 的概率是 0.8,-1 的概率是 0.2,可以明显的看到,我取 +1 它得到的采样是非常多的而取 -1 得到的采样比较少,虚线代表 xbar,对采样求平均后会趋向 0.6,对应它的 expectation。红色的线代表我同样用这些数据,但是我用了 important sampling 这样的技术,我就可以让她趋向于 p0 所对应的 expectation 就是 0


重要性采样:

这个权重被称为 importance weight

  • 当 p0 等于 p1 的时候,权重等于1
  • 当 p0 大于 p1 的时候,权重大于1。直观解释是:我现在得到一个 xi,我发现 p0(xi) 比较大,这说明我在 p0 下采到 xi 的概率比较大;我发现 p1(xi) 比较小,这说明我在 p1 下很难采到 xi,我现在要计算 p0 下的 expectation,所以我需要很珍惜这个 xi 才对,因为他在 p1 下很难采到,而在我 p0 下很容易采到,所以我要给他比较大的重要性的权重,通过这样才能拉回来

这个P0和P1是已知的吗?

这里我咋没太懂呢,p0和p1的关系我也不知道啊

p1已知p0未知

都是已知的,但是p0不用于采样,需要用p1的采样更新p0

但是直接更新又不准确,因此需要做这个重要采样

概率是已知的


回答: 如果你能那么做,就不需要用 importance sampling,你用 importance sampling 是因为你不能那么做,也就是说我给一个 x,未能得到 p0(x),但是我不能去求他的 expectation。它适用于给定 x 时,计算 p0(x) 很容易,但计算期望却很困难的情况。

  • 例如,我们这里考虑的是离散情况,但是连续情况的时候,这个时候就不能用求和了,要求积分,求积分的时候对 p0 的表达式有要求,很复杂的话可能计算不出来。更重要的情况是 p0 是用神经网络表达的,也就是你给我一个 x 我能够输出一个 p0(x),但是 p0 的表达式根本就没有,没有表达式就无法求积分。在这种情况下,用 importance sampling

我这里有疑问,不用积分的方式,用采样的方式求期望不行吗?

  • 可能是因为,虽然能得到p0(x)的值,但是因为p0表达式未知,所以生成服从p0(x)的采样依然很麻烦
  • 所以p0并不是实际分布,只是一个用神经网络估出来的分布?那感觉好不到哪去啊

因为生成样本是有成本的,如果像你想的这样去生成了就变回前面on-policy的算法了

个人觉得最后这个生成数据有成本的解释有道理,因为off-policy的一个优势就是可以利用上手头有的数据-->p1产生的数据

为什么要用神经网络代表一个分布呢?

在强化学习里,有 Π(a|s,),输入 s 和 a,我就通过这个神经网络能告诉你对应的概率



把重要性采样的技术用到 policy gradient 当中,去实现 off-policy 的学习。下面有两个步骤,第一个步骤要得到 gradient 的表达式是什么,在得到这个 gradient 的表达式之后,可以把它用到梯度上升的方法当中进行优化

与之前的 "on policy "情况一样,我们需要推导 "off policy "情况下的 policy gradient。

  • 假设 β 是产生经验样本的 behavior policy。

  • 我们的目的是利用这些样本更新 target policy π,使指标最大化


直接给出梯度的表达式


有了这个梯度的表达式,我们就可以立刻应用到梯度上升的方法中去优化,这里我仍然可以加上一个 baseline 然后不改变梯度,常见的方法就是把 baseline 设为 state value


刚才是 true gradient,里面有 expectation,我不知道怎么求,就用 stochastic gradient 去代替,这个就是我们得到的 off policy 的 policy gradient 的算法

  • 当 δt 比较大的时候,这个 step size 也会比较大,下一时刻会增大π(at|st) ,使得选择 action 的概率大一些,这个就是充分利用。
  • 之前的分母上是 π,如果分母对应的策略 π(at|st) 比较小,他的 step size 也会比较大,所得到的下一时刻的 π(at|st) 的概率也会比较大,也就是在上一时刻我选择这个 action 的概率是比较小的,那么下一时刻选择这个 action 的概率就会增大一些。就是给他更多的机会去选择他,这样增加探索。但是在这里他不是 π,是 β,是一个固定的值,所以这时候里面就没有什么探索,就是充分利用,因为分母不可变

伪代码与 A2C 一样,区别就是这里有一个 behavior policy β,我产生经验采样的时候要根据 β 产生,后面的式子一模一样,除了在两处多了两个 importance weight


小结:介绍 QAC 的时候,主要突出的是 actor-critic 的思想是什么,介绍 A2C 的时候主要为了引入 baseline 来减少估计的方差,介绍 off policy actor critic 主要为了引入重要性采样这个方法

前三节的共同点是它的策略 π(a|s,) 一定是 >0 的,不会等于 0,也就是说它的除了一定是 stochastic 的策略,下面介绍一个很重要的的 deterministic actor critic


四. Deterministic actor critic(DPG)

到目前为止,策略梯度法中使用的策略都是随机策略,因为对于每个 (s, a), π(a|s, θ) > 0。

我们能在策略梯度法中使用确定性策略吗?

    • 优点:可以处理连续行动。

之前讲的我们的策略是 π,输入是 s,输出是 π(a1|s, θ),...,π(a5|s, θ),通过输出层,它可以约束每一个输出都是严格 >0 的并且它们的和等于 1,这种表达方式就是我们之前一直用的,它的缺点是它对 action 的个数有要求,只能是有限个,因为它的输出,不可能输出无限个

如果我在一个状态 s 有无限个 action,这时候就可以用 deterministic 的情况

不能把之前得到的策略取最大值吗?

  • 把策略取最大值,策略不就又变成了表格的形式,如果状态是连续的做不到了

表示策略的方法

    • 到目前为止,之前我们的策略都表示为 π(a|s, θ) ∈ [0, 1],它是在状态 s 我 take action a 的概率是多少,是从 0-1 的一个数值,这个可以表示 stochastic 的策略也可以表示 deterministic 的策略,它可以是随机的,也可以是确定的。如果是 deterministic 就等于 1
    • 现在,确定性策略 deterministic policy 具体表示为

这个就变成了一个回归问题,输入状态输出动作

输出是a的分布?

  • 不是分布,就是明确指令
  • stochastic才是a的分布吧,deterministic是a的值了
    • µ 是从状态空间 S 到动作空间 A 的映射,当在状态空间的点确定的时候,动作空间的点也就确定下来了。
    • 在实际中,µ 可以用神经网络来表示,输入为 s,输出为 a,参数为 θ。
    • 我们可以将 µ(s, θ) 简写为 µ(s),隐藏掉参数 θ。

下面的介绍分两步,第一步就是介绍梯度怎么计算,第二步就是把梯度用到梯度上升的方法中去优化,与前面介绍的思想一样,所以梯度优化的方法在强化学习中广泛使用


    • 前面介绍的 policy gradient 定理仅适用于随机策略 stochastic policy。
    • 如果策略必须是确定性的 deterministic,我们就必须推导出新的 policy gradient 定理。
    • 其思想和过程是相似的。

  • d0 的选取与 µ 无关,这种情况下的梯度更容易计算。

  • d0 的选择有两种特殊但重要的情况。

    • 第一种特殊情况是我只关心某一个状态,比如说我有一个任务,我每次开始这个任务,我都会从这个状态出发,那其它状态都无所谓,我只需要最大化从这个状态出发的 return 就可以。 d0(s0) = 1 和 d0(s != s0) = 0,其中 s0 是一个特定的起始状态。这时候的目标函数是 v_µ(s0),我只是最大化从 s0 出发的 return
    • 第二种特殊情况是 d0 是一个 stationary distribution of a behavior policy,也就是我另外一个 behavior policy 比如说 β,在她下面的 stationary distribution,这个和 off policy 有关系。d0 是不同于 µ 的 behavior policy 的静态分布。

待会大家就会发现,这个 deterministic policy gradient 是 off policy 的天然的,我不需要用 importance sampling 把它转成 off policy 的,他自己就是 off policy


这个梯度和 stochastic 的梯度很不同,因为这里没有涉及到 A

与随机情况(stochastic case)有一个重要区别:

    • 梯度不涉及行动 A 的分布(为什么?),这个 action A 最后会被替换成 µ(s),所以没有 action A,那自然也就没有 A 所谓的梯度
    • 因此,确定性策略梯度法是 off policy 的。因为之后我会对 true gradient 求 stochastic gradient,也就是采样,我在进行采样的时候如果给定了一个 s,然后我要求得到一个 a,再得到 r_t+1 等等,这时候我不需要关心 a 到底是哪个策略得到的,因为 expectation 没有要求我必须按照哪一个策略得到,可以是任意的,所以这时候我就可以用一个 behavior policy,其他的任何一个策略都可以

根据 policy gradient,最大化 J(θ) 的梯度上升算法为

上面式子的 expectation 不能求出来,所以我用 stochastic gradient 来代替。相应的随机梯度上升算法是



备注

    • 这是一种 off-policy 的方式,其中的 behavior policy β 可能与 µ 不同,µ 是 target policy。
    • β 也可以与 µ 一致,那就是每次我得到一个 µ 之后,因为 µ 是确定性的,是不能探索的,所以我可以给他加上一些噪音,让动作左右摇摆一点,就可以有一定的探索性,然后去到下一个时刻去执行采样的任务,在那样的情况下就变成了 on-policy 的情况。β 也可以用 µ+noise 代替。
  • 本质上来说它是一个 off policy 的算法,所以他既可以用 on-policy 也可以用 off policy 的实现方式。
  • µ+noise 的方式与我们之前的 -greedy 的方法类似,但是这里我们不能用,因为这里边他的 action 是连续的,我不能在其它有限的 action 上加一些比较小的概率
  • 如何选择表示 q(s,a,w)的函数?
    • 线性函数:q(s, a, w) = φT(s, a)w,其中 φ(s, a) 是特征向量,w 是参数。详情请参见 DPG 论文。它的问题在于,一个是我要选取这个 feature vector,再一个就是它是线性的,他对于逼近真实的 action value 的能力有限
    • 神经网络:深度确定性策略梯度法(DDPG)。
相关推荐
NAGNIP9 小时前
一文搞懂深度学习中的通用逼近定理!
人工智能·算法·面试
冬奇Lab10 小时前
一天一个开源项目(第36篇):EverMemOS - 跨 LLM 与平台的长时记忆 OS,让 Agent 会记忆更会推理
人工智能·开源·资讯
冬奇Lab10 小时前
OpenClaw 源码深度解析(一):Gateway——为什么需要一个"中枢"
人工智能·开源·源码阅读
AngelPP13 小时前
OpenClaw 架构深度解析:如何把 AI 助手搬到你的个人设备上
人工智能
宅小年14 小时前
Claude Code 换成了Kimi K2.5后,我再也回不去了
人工智能·ai编程·claude
九狼14 小时前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
ZFSS14 小时前
Kimi Chat Completion API 申请及使用
前端·人工智能
天翼云开发者社区15 小时前
春节复工福利就位!天翼云息壤2500万Tokens免费送,全品类大模型一键畅玩!
人工智能·算力服务·息壤
知识浅谈15 小时前
教你如何用 Gemini 将课本图片一键转为精美 PPT
人工智能
Ray Liang16 小时前
被低估的量化版模型,小身材也能干大事
人工智能·ai·ai助手·mindx