CS294(6) 演员-评论家算法(总结版)

策略梯度法与值函数的结合

Background

在上一篇中,我们已经了解策略梯度法的本质是找出目标函数对策略的梯度的一个估计量:
在这里插入图片描述
其中今后收益 (reward-to-go)为:
在这里插入图片描述
然后将策略沿着这个梯度方向更新一步。注意到使用今后收益是由因果关系 (casuality) 所得到的。
真实的期望收益( Q Q Q)远远比根据策略做出行动的与系统互动的结果要复杂,无数的未来情况需要被平均在一起去得到真实的今后收益,本质上是一个积分:
在这里插入图片描述
即:
在这里插入图片描述
一旦我们知道期望今后收益 Q Q Q,那么我们可以用它来替代 Q ^ i , t \hat{Q}_{i,t} Q^i,t,即如果我们能用某种方式得到 Q Q Q函数的值,那么
在这里插入图片描述
将会成为一个更好的估计量。当然我们可以说 Q ^ i , t \hat{Q}_{i,t} Q^i,t是一个无偏估计,但这个估计其实只用了仅仅一个样本,会导致估计的方差非常大;而 Q Q Q可以看做是你有无限个样本,那么方差就会比较低了。

baseline

同样,我们可以引入基准线技术。我们选择的一个比较好的基准线是同样在第三讲中出现的值函数
在这里插入图片描述
也就是在给定策略下Q函数的期望。之所以采用值函数,是因为这和我们在上一篇中所提到的平均情况不谋而合,之前认为一个不错的基准线是:
在这里插入图片描述
而这里也正好是对应的期望。此时我们的估计量就变成了:
在这里插入图片描述
其中
在这里插入图片描述
根据定义,如果我们对优势函数关于行动 a t a_t at取期望,结果是0。这样的“杠杆”也正是我们想要的,使得更好的行动可能性更大,而规避更差的行动。同样的,如果我们能对优势函数估计得越好,那么策略梯度的方差就可以越小。

回顾我们之前的 Q ^ i , t \hat{Q}_{i,t} Q^i,t是一个无偏估计,但是它的方差相当大。而我们考虑要做的是牺牲一点点无偏性,引入一个神经网络(神经网络总不是完美的),但期望它能显著地降低方差。这个偏差-方差的权衡在统计中是非常常见的。

演员-评论家算法

回到我们的一般步骤中,我们来看它与策略梯度法在第一步生成样本和第三步策略改进上并没有显著区别,主要区别在于第二步:我们现在尝试去做的是去拟合一个值函数 Q π , V π , A π Q^\pi,V^\pi,A^\pi Qπ,Vπ,Aπ三者之一,以期能得到一个更好的梯度估计。我们真正从“估计收益”变为了“拟合模型”。

Q π , V π , A π Q^\pi,V^\pi,A^\pi Qπ,Vπ,Aπ应该拟合哪一个?

一个非常自然的想法是去拟合 A π A^\pi Aπ,因为这是我们在梯度表达式中直接要用到的东西。我们可以生成一些数据,然后使用监督学习方法。这里有一个小技巧:我们发现Q函数 Q π ( s t , a t ) = ∑ t ′ = t T E π θ [ r ( s t ′ , a t ′ ) ∣ s t , a t ] Q^\pi(s_t,a_t)=\sum_{t'=t}^TE_{\pi_\theta}[r(s_{t'},a_{t'})|s_t,a_t] Qπ(st,at)=t=tTEπθ[r(st,at)st,at]取决于状态和行动两个维度,因此输入是对应两个空间的笛卡尔积。但是维度越大,同样的样本数估计的方差越大。给定当前的状态和行动,当前的收益就确定了,可以把当前的收益提出来:
在这里插入图片描述
而后边那块求和项其实就是值函数的期望:
在这里插入图片描述
如果我们愿意做一点近似,用轨迹样本来估计这个期望——此时不是使用整条轨迹,而仅仅是看一步以后的状态,那么我们的Q函数可以近似为:
在这里插入图片描述
与此同时,优势函数也可以被近似为:
在这里插入图片描述
这么一来,其实我们只要去拟合值函数V就好,其他的都可以被近似表示,这样拟合神经网络的维度的输入空间就只需要是状态空间了。因为实用性和便利性,绝大多数的演员-评论家算法都是训练一个参数为 ϕ \phi ϕ神经网络,使得输入状态为 s s s,输出给定策略下值函数的估计量 V ^ π ( s ) \hat{V}^\pi(s) V^π(s)

policy evaluation

在这里插入图片描述
给定一个策略去拟合这样一个神经网络的过程我们称为策略评估 (Policy Evaluation)。这个步骤不尝试去改进策略,它只是想从任意给定的状态出发,评估这个策略有多好。

由于值函数表达式为:
在这里插入图片描述
目标函数为:
在这里插入图片描述
只是值函数的一个期望而已,所以拟合值函数V同时也为我们带来了目标函数。那么具体怎么做策略评估呢?与策略梯度法相似,我们依然使用蒙特卡洛方法,进行一次轨迹采样以后来近似:
在这里插入图片描述
当然如果我们可以重启模拟器的话,最好能做多次轨迹采样后得到
在这里插入图片描述
在这里插入图片描述
但通常不这么做,因为无需多次回到同一状态也能得到低方差。

Monte Carlo evaluation with function approximation

在这里插入图片描述
神经网络会有一些偏倚。因为可能我们从比较接近的两个状态出发做出的两条轨迹,结果上可能会有很大的偏倚;而对于神经网络来说,相似的输入基本上也就对应了相似的输出。毕竟神经网络只是一个函数的逼近器而已,对于确定性模型,它的输出是确定的 (well-defined),意味着对于同一个输入对应同一个输出。神经网络拟合很多样本,将其综合起来得到一个低方差的估计:从相似的出发点,一条轨迹极好,另一条极不好,神经网络会认为这是不合理的,并将其平均处理。如果样本越多,函数将近似得越好,结果就越好。但是譬如在两个相似状态之间存在一个断崖,那么答案就会出现问题,但是不管怎么说估计的方差总是小的。

训练神经网络的方式非常传统,就是收集一些训练数据(此处需要收集整条轨迹的奖励,所以此方法称为蒙特卡洛函数近似,后面经过一步近似可以改进)
在这里插入图片描述
然后最小化诸如最小二乘的损失函数
在这里插入图片描述
(策略梯度的方差指的是整个策略的梯度,而不是一部分状态的方差)

为进一步降低方差,我们注意到在理想化的情况下,我们的目标是:
在这里插入图片描述
第一个约等号和前面Q函数时候的技巧一致,用一步轨迹做近似;第二个约等号是将值函数V用神经网络做近似。由上式可以看出,右边最后一部分直接使用先前的拟合值函数。则训练数据可变换为:
在这里插入图片描述
此处牺牲一点偏差换取方差的改进。

An actor-critic algorithm

这里给出一个比较简单的演员-评论家算法,称为批量演员-评论家算法 (batch actor-critic algorithm),与策略梯度法的结构非常相近:

  1. 运行机器人,根据策略 π θ ( a ∣ s ) \pi_{\theta}(a|s) πθ(as)得到一些样本{ s i , a i s_i,a_i si,ai},包括状态、行为和收益;
  2. 使用样本收益之和拟合 V ^ ϕ π ( s ) \hat{V}_{\phi}^\pi(s) V^ϕπ(s),这一步样本可以做蒙特卡洛,也可以做自助法。拟合可以用最小二乘的目标函数;
  3. 评估优势函数 A ^ π ( s i , a i ) = r ( s i , a i ) + V ^ ϕ π ( s i ′ ) − V ^ ϕ π ( s i ) \hat{A}^\pi(s_i,a_i)=r(s_i,a_i)+\hat{V}_{\phi}^\pi(s_i')-\hat{V}_{\phi}^\pi(s_i) A^π(si,ai)=r(si,ai)+V^ϕπ(si)V^ϕπ(si)
  4. 计算策略函数梯度 ▽ θ J ( θ ) ≈ ∑ t = 1 T [ ▽ θ log ⁡ π θ ( a t ∣ s t ) ] A ^ π ( s t , a t ) ] \bigtriangledown_\theta J(\theta)\approx\sum_{t=1}^T[\triangledown_\theta\log\pi_\theta(a_t|s_t)]\hat{A}^\pi(s_t,a_t)] θJ(θ)t=1T[θlogπθ(atst)]A^π(st,at)]
  5. 更新一个梯度步 θ ← θ + α ▽ θ J ( θ ) \theta\leftarrow\theta+\alpha\triangledown_\theta J(\theta) θθ+αθJ(θ)

贴现因子(discount factors)

对于无限期(无终止状态)的问题会使得目标函数值越来越大。
上面我们使用了目标值:
在这里插入图片描述
作为估计去训练 V ^ ϕ π \hat{V}_{\phi}^\pi V^ϕπ。但当 T T T无穷的时候,得到的价值函数估计会趋于无穷大。

为了解决这个问题,接下来我们要引入贴现因子 (discount factor) 的概念,这个概念在金融、经济等领域相当常见:一般认为一笔钱在眼前的价值会比未来的价值要高,也可以与金钱的通货膨胀联系起来。因此,在建立模型时,我们也希望收益发生时间更接近眼前。我们的方法是,加入一个小小的贴现因子 γ ∈ ( 0 , 1 ) \gamma\in(0,1) γ(0,1),修改上式为:
在这里插入图片描述

实际上,引入了 γ \gamma γ并不影响整个MDP框架,只是稍许改变了转移概率函数,如下图所示。
在这里插入图片描述
以离散问题为例,如原来的转移概率为 p ( s ′ ∣ s , a ) p(s'|s,a) p(ss,a),我们在状态集合中新增一个死亡状态 (death state)(可以理解为终止状态)。我们构建的新的转移概率为 p ~ ( s ′ ∣ s , a ) = γ p ( s ′ ∣ s , a ) \widetilde{p}(s'|s,a)=\gamma p(s'|s,a) p (ss,a)=γp(ss,a),且 p ~ ( d e a t h ∣ s , a ) = 1 − γ \widetilde{p}(death|s,a)=1-\gamma p (deaths,a)=1γ。这也就是说在任意情况下,都有 ( 1 − γ ) (1-\gamma) (1γ)的概率游戏结束,此后不收集任何收益。

抛开演员-评论家算法,现在我们讨论如何将贴现因子引入到策略梯度法中,稍稍有些复杂。对于蒙特卡洛策略梯度,我们有以下两种选项。这两者其实都可以有演员-评论家算法版本,但首先先写成策略梯度法形式。

  • 第一种选择是我们直接利用因果关系后的式子,对后半部分进行贴现得到
    在这里插入图片描述
    如果我们式子中加入了评论家的话就变成了
    在这里插入图片描述
  • 第二种选择是我们回到一开始的策略梯度式子进行贴现:
    在这里插入图片描述

可以发现第二个式子多出了一项对梯度进行 γ t − 1 \gamma^{t-1} γt1贴现的系数。因此第二种选择的做法使得越往后的步骤影响力越小。我们一般还是采用第一种选择。原因是,考虑折扣因子是为了解决周期性(无穷时间)问题。这里更重要的缩小方差,可以认为是计算了平均奖励。譬如我们想运行一个小机器人无限长时间,我们一般不关注它在第一个时间点是不是速度很快,而是在每一个时间点是否很快。我们采用第一种选择,是想去近似一个无限时间长的平均收益,且使用贴现因子。这样就可以对无限期问题有一个总和的界。关于这个理论是比较复杂的,可以参考Thomas (2014) 发表在ICML上的文章。

现在我们把贴现因子加入到演员-评论家算法。在之前的批量演员-评论家算法中,只需要把第三步从
在这里插入图片描述
变为
在这里插入图片描述
就可以了。注意贴现因子使得对于无限长问题也有一个上界

我们在这里同样给出一个在线的演员-评论家算法 (online actor-critic algorithm):批量AC算法与策略梯度法相似,是根据策略生成一大堆轨迹,然后做一个很大的计算更新,再重新生成策略。在线算法可以在每一步收集样本之后,就立即更新评论家 V ^ ϕ π \hat{V}_\phi^\pi V^ϕπ和策略。
在这里插入图片描述

  1. 在线运行机器人,根据策略执行行动 a ∼ π θ ( a ∣ s ) a\sim\pi_\theta(a|s) aπθ(as),得到一个状态转移样本 ( s , a , s ′ , r ) (s,a,s',r) (s,a,s,r),即从一个状态出发执行某行动到哪个新的状态,单步收益多少;
  2. 使用目标(评论家的结果) r + γ V ^ ϕ π ( s ′ ) r+\gamma\hat{V}_\phi^\pi(s') r+γV^ϕπ(s)更新 V ^ ϕ π ( s ) \hat{V}_\phi^\pi(s) V^ϕπ(s)
  3. 评估优势函数 A ^ π ( s , a ) = r ( s , a ) + γ V ^ ϕ π ( s ′ ) − V ^ ϕ π ( s ) \hat{A}^\pi(s,a)=r(s,a)+\gamma\hat{V}_{\phi}^\pi(s')-\hat{V}_{\phi}^\pi(s) A^π(s,a)=r(s,a)+γV^ϕπ(s)V^ϕπ(s)
  4. 放入策略梯度函数 ▽ θ J ( θ ) ≈ ▽ θ log ⁡ π θ ( a ∣ s ) ] A ^ π ( s , a ) \bigtriangledown_\theta J(\theta)\approx\triangledown_\theta\log\pi_\theta(a|s)]\hat{A}^\pi(s,a) θJ(θ)θlogπθ(as)]A^π(s,a)
  5. 走一个梯度步 θ ← θ + α ▽ θ J ( θ ) \theta\leftarrow\theta+\alpha\triangledown_\theta J(\theta) θθ+αθJ(θ)

实现细节

网络结构设计

  1. 训练两个独立的网络:
    在这里插入图片描述
    优点是简单、稳定。但是一个很大的不足是,在演员和评论家之间并没有建立起共享的特征,譬如如果特征是非常高维的图像,那么如果在图像的低级别特征(也就是经过多层卷积)进行共享还是有意义的。

在这里插入图片描述
因此一个替代的解决方案是使用同一个输入,构建一个同时输出演员策略和评论家函数的输出。这在网络特别大的时候更有效,但是缺点在于不易训练,因为会有两个不同的梯度(策略梯度和回归梯度)往不同的方向推动共享的参数,数据类型也不太一样,因此让这个网络稳定下来需要很多技巧,如初始化数值和学习率的选择。Levine教授的建议是,如果模拟器(如Atari模拟器和MuJoCo)很快的话,不妨使用双网络结构,这样比较容易

Online actor-critic in practice

在上一节的末尾我们提到了在线演员-评论家算法,其中第四步只用一个样本去估计梯度,第二步也只用一个样本去更新评论家函数。这样做多少是有点困难的,因为方差会相当高。问题主要出在它依然是一个同策略 (on-policy) 算法,这意味着在第五步更新 θ \theta θ后,所有的样本需要推倒重来。如果我们能做出一个批量的样本,那么效果可能会明显变好。一个方法是我们尽量少去更新策略,将这个算法弄成拟在线 (quasi-online) 的形式,做多步之后再去更新策略。如果我们可以假设样本可以由多个智能体(多辆汽车,多个机器人等)来收集的话,一个更好的方法是并行训练,如下图。
在这里插入图片描述

  • 第一种是采用左边图形的同步法 (synchronized),多个智能体各走一步得到训练数据,用样本数据去计算梯度,先完成的需要等待(因此是一个同步点);然后用多个智能体的梯度加总起来更新演员策略参数网络,大家再去根据新网络执行下一步。每次可以是不同的状态,不同的行动,然后到不同的下一个状态,但这都是不相干的:每次采样完毕后可以继续运行,可以重启,也可以其他操作。
  • 一种更先进的方法是异步法 (asynchronous),基本上就是移除这些同步点,每个智能体完成操作以后就去用自己的梯度去更新中央服务器参数,中央服务器积累了一定的步数,就把更新信息发送回所有的智能体。有点像闭着眼走路,但是实际上运行得不错。移除同步点后通常实现简单,更快,但希望模拟本身要非常快。

Critics as state dependent baselines

对于演员-评论家算法,我们的策略梯度估计为:
在这里插入图片描述
这个方法的主要优点是我们采用了评论家函数,因此希望有一个更小的方差。然而这个估计并不是无偏的,因为评论家函数总不能被完美拟合。在训练的前期评论家函数通常非常不准确,因此不管方差有多小因为评论家函数的无意义导致怎么都不会得到一个很好的值。

另一个极端是策略梯度法完全的蒙特卡洛抽样
在这里插入图片描述
其中 b b b是任意常数。这个做法的主要是之前我们已经证明了的无偏性,也提到了主要缺点是单样本估计的极高方差使得本身并不怎么有意义。

我们能否使用 V ^ ϕ π \hat{V}_\phi^\pi V^ϕπ的同时使得estimator无偏?我们可以将评论家函数(根据当前状态的)作为基准线 b b b,从而得到
在这里插入图片描述
与之前的常数不同,这个基准线是依赖于状态的。但是这样做依然是无偏的(类似之前的推导展开),而且事实上改为任何只与状态 s s s相关的函数都是无偏的。因此无偏性得到了保留,但是如果基准线接近真实收益,那么方差就会大大降低。依赖于状态的基准线能更敏感地解决问题,比一个常数的降方差功效更好。

Control variates: action dependent baselines

已知
在这里插入图片描述
我们新引入了一个依赖状态的基准线,那么我们现在想在此基础上进一步引入行动。考虑优势函数
在这里插入图片描述
它的一种估计是
在这里插入图片描述
显然它是无偏的,但是因为这是单样本估计所以有高方差的问题。然而如果我们使用
在这里插入图片描述
来作为根据,如果评论家函数是正确的那么它的期望将达到0是非常好的,但是这个估计根本就不正确。那么有没有补偿方法呢?我们看这样一个结构:
在这里插入图片描述
虽然前面一项本身不正确,但是我们在后面加入了一个修正项使得其无偏:如果我们能用一个办法来评估第二项(根据Q的结构不同,可能有一些结构可以以解析形式表达,如策略是高斯的,Q函数是二次的,那么这个结构就是可以在没有样本的情况下得到评估的,但是是否有这样的结构还是很需要运气),这个无偏估计就可以用。这样的用Q函数作为评论家的相关内容 (Q-Prop, Gu et al., 2016) 会在后续课程中更多提到。因此,我们得到的启发是,基于状态的基准线是无偏的,基于行动的基准线是有偏的,但是偏差有可能可以通过一个校正项补救回来

Eligibility traces & n-step returns

在之前我们适用的演员-评论家算法的估计都是一步的,即
在这里插入图片描述
下标C的意思指的是评论家Critic。这个估计的优点主要在于方差较低,但是缺点也很明显,如果值函数是错的的话,那么就会引起很大的偏差(当然肯定总是错的)。另一个极端就是纯粹的蒙特卡洛而不使用评论家
在这里插入图片描述
我们也知道了它是一个无偏估计,但这样的单样本估计的方差非常高。现在我们考虑一个方法,中和两者的优缺点,得到一个折中方案。一种方法是对两者进行混合,如果发现方差或者偏差过高,那么就提高或者降低组合系数。另一个是,我们发现由于贴现因子的作用,这样指数下降的函数,随着时间往后推移,收益的贡献比例将非常低。
在这里插入图片描述
在这里插入图片描述
在上图,从一个状态出发,不同的轨迹的效果随着时间后移而渐行渐远,因此是一个从小方差到大方差的过程,贡献逐渐下降而方差逐渐上升。我们要做的是在轨迹上在方差变得太大前切一条线,因为后面的步骤可能性太多,效用实在太低。而我们用评论家函数V去替代后面的部分,作为一个平均情况:
在这里插入图片描述
这样的表达式允许我们通过调整 n n n来控制偏差方差的权衡,通常选择一个大于1的值如4、5会运行得较好。这也称为 n n n步收益。

Generalized advantage estimation

本质上是 n n n步收益的推广。这种方法不再选择一个单一的步数,而是对所有的步数进行一个加权平均
在这里插入图片描述
其中 ω n \omega_n ωn是权重。现在的一个重要问题是如何选择权重。我们希望降低方差,因此一种比较合理的方法是让权重也指数下降,即 ω n ∝ λ n − 1 \omega_n\propto\lambda^{n-1} ωnλn1,其中 λ ∈ ( 0 , 1 ) \lambda\in(0,1) λ(0,1)权重加和为1。代入之后经过整理,我们可以得到
在这里插入图片描述
其中 δ t ′ \delta_{t'} δt是一个类似评论家的东西。 λ \lambda λ非常像一个贴现因子,如果它比较小,那么我们将在很早期就切断,偏差较大方差较小;反之则较后切断,偏差较小方差较大。因此从另一种意义上解读,贴现因子意味着方差降低。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值