今天我们来聊一聊Guided Policy Search的那些事。
这篇论文的创新点在哪呢?(ideas)
我们知道,以往的策略搜索方法(又叫Direct Policy Search)是很容易迁移到高维的系统中的,但是对于具有数百参数的复杂策略,这种方法就面临了一个很大的挑战,它需要巨大数量的样本来进行训练,并且经常陷入较差的局部最优(poor local optima)。
因此,作者Sergry Levine就提出了这种叫做Guided Policy Search的方法,顾名思义,这种方法有一些什么东西进行监督,或者说是引导,从而降低训练所需的样本数量。
本文展示了如何利用微分动态规划来产生合适的引导样本(guiding samples),并且一种能够将这些样本融入到策略搜索(policy search)中的正则化的重要性采样策略优化方法(regularized importance sampled policy search)。此外,本文还对多个控制问题的神经网络控制器进行参数学习,从而评估这一方法。
下面我们根据论文的结构来进行解读。
Introduction
强化学习对于动力系统的控制而言,是一种很有效的架构。策略搜索方法经常被用在那些高维的应用中,比如机器人,这是由于策略搜索方法能够很轻松的扩展到高维,并且有着足够吸引人的收敛保证。但是,这种保证确是建立在牺牲通用性(generality)的基础上的。当然,我们也可以用使用一个大型的神经网络来解决通用性的问题,可是学习一个这样复杂且非线性的系统可能需要大量的迭代,并且很容易陷入局部最优。
而GPS(Guided Policy Search)则能够引导策略搜索远离那些较差的局部最优点(poor local optima)。GPS使用DDP来产生引导样本,这些引导样本则带着策略搜索往奖励高的地方探索。当然,为了将产生的这些样本直接使用到策略搜索中,我们需要一个重要性采样的变体——似然比估计(likelihood ratio estimator)。
Preliminaries
强化学习的目的是为了找到一个控制策略来控制一个随机环境(stochastic environment)中的智能体。在每一个时间步,智能体观察到一个状态 xt ,依据策略 π(ut|xt) 选择一个动作,然后按照 p(xt+1|xt,ut) 进行状态转移。最优策略就是最大化时间步 1 到 T 的期望总奖励,也即回报。我们使用 ζ 来表示一个状态与动作组成的序列,也可以说是一段状态+动作的轨迹,并且利用 r(ζ) 和 π(ζ) 分别表示沿着 ζ 的总奖励和在 π 下的概率。下面的讨论主要关注连续域中有限范围的任务(finite-horizon tasks in continuous domains),扩展到其他形式仍然可以。
策略梯度搜索方法一般直接优化问题的期望回报 E[J(θ)] ,特别地,似然比(likelihood ratio)方法则使用从当前策略 πθ 中得到的样本 ζ1,...,ζm 估计梯度 E[∇J(θ)] ,然后沿梯度方向前进一步对策略进行改进(因为是最大化回报,所以是沿梯度方向,而不是负梯度方向)。
使用下面的式子来对梯度进行估计:
E[∇J(θ)]=E[r(ζ)∇logπθ(ζ)]≈1m∑i=1mr(ζi)∇logπθ(ζi)
其中,
∇logπθ(ζi) 也可以表示为
∑t∇logπθ(ut|xt) ,这是由于其中的状态转换模型
p(xt+1|xt,ut) 并不依赖于
θ (将其中的
πθ(ζi) 展开之后,其中
p(xt+1|xt,ut) 的项对于
θ 的求导为0)。
上面这种标准的似然比方法在每个时间步中都需要从当前的策略获得新的样本来对梯度增量进行求解,同时需要仔细地选择一个学习速率来保证收敛。不过,我们能够用重要性采样来减轻这些限制(how importance sampling can be used to lift these constraints),我们将在下一节来讨论这一问题。
Importance Sampled Policy Search
重要性采样是怎样的一种技术呢?
它使用基于另一个不同的分布 q(x) 采集到的样本来估计关于 p(x) 的期望 Ep[f(x)] 的值:
Ep[f(x)]=Eq[p(x)q(x)f(x)]≈1Z∑i=1mp(xi)q(xi)f(xi)
如果我们选择
Z=m ,则上面的重要性采样对于期望的估计是无偏的,如果尽管如此,本文自始至终还是使用
Z=∑ip(xi)q(xi) ,毕竟这样的话能有一个更低的方差。有人使用重要性采样方法来估计
E[J(θ)] ,这样就允许使用离策略(off-policy)的样本,并有了下面的结果:
E[J(θ)]≈1Z(θ)∑i=1mπθ(ζi)q(ζi)r(ζi)
如果我们继续对上面的式子进行探究就会发现,过去的奖励并不依赖于未来的动作,所以我们能够继续降低该估计的方差:
E[J(θ)]≈∑t=1T1Zt(θ)∑i=1mπθ(ζi,1:t)q(ζi,1:t)r(xit,uit)
其中
πθ(ζi,1:t) 为
ζi 的前
t 个时间步的概率,
Zt(θ) 对权重进行了正则化处理。
为了从多种分布中来采样,我们沿用了上面的工作,并且使用一个融合分布
q(ζ)=1n∑jqj(ζ) ,其中每一个
qj 都是前面的一个策略或者是由DDP方法得到的一个导向分布(guiding distribution)。此前的方法都是去最优化(3)、(4)两个式子,这些方法存在一些缺点:对于复杂的策略以及较长的运行时间(complex policies and long rollouts)而言,通常得到一个较差的结果。所以本文引进了一个正则项,得到下面的表达式:
ϕ(θ)=∑t=1T[1Zt(θ)∑i=1mπθ(ζi,i:t)q(ζi,1:t)r(xit,uit)+ωrlogZt(θ)]
该函数的梯度可由下述公式计算(详细推算见论文附录):
∇Φ(θ)=∑t=1T∑i=1m∇μ(xit)uit−μ(xit)σ2∑t′T1Zt′(θ)πθ(ζi,1:t′)q(ζi,1:t′)ξit′
后面的那个正则项作为基于权重的对数的一个软最大值,保证了在
πθ 下,至少有一些样本有较高的概率。(The regularizer acts as a soft maximum over the logarithms of the weights, ensuring that at least some samples have a high probability under
πθ .)
上面这个式子,还有一点值得注意的,就是我们可以通过自适应地调节
ωr ,从而改变允许策略与样本的偏离程度。这一性质应该如何利用呢?假如我们想要改进策略,可是一直无法使得新策略比原有策略更好,那么,我们就将优化限制在样本附近区域进行。
下一步进行深入理解。正则项解决了什么问题呢?上面所说的优化(3)、(4)两个式子会得到较差的结果又是为什么呢?我们下面来聊聊这两个问题。
这得先说说两个式子的意义了,拿(3)式举例,撇去
Z(θ) 不看,后面的求和项是对
m 个样本进行求和,这
m 个样本
ζ1,...,ζm 的回报分别是
r(ζ1),...,r(ζm) ,而它们对于期望总回报的权重分别为
πθ(ζ1)q(ζ1),...,πθ(ζm)q(ζm) ,值得注意的是,
∑mi=1q(ζi) 并不为1,除非这
m 条样本轨迹包含了所有的情况。
那这与优化(3)、(4)两个式子会得到较差的结果有什么关系呢?观察两个式子可以发现,两个估计都仅仅考虑了样本与样本之间的
πθ(ζi)q(ζi) 的相对大小(relative probability)(注意,是样本与样本之间的
πθ(ζi)q(ζi) 的相对大小,而不是指
πθ(ζi) 与
q(ζi) 的相对大小)。这句话是什么意思呢?我们对公式(3)作一个变形:
E[J(θ)]≈∑i=1mπθ(ζi)q(ζi)Z(θ)r(ζi)
这样便很好理解了,这个式子中的
πθ(ζi)q(ζi)Z(θ) 很好地体现了相对大小的意思。它并没有要求其中某一项
πθ(ζi)q(ζi) 较高,因而也就不能保证在策略
πθ 下有较高的概率了(注意到,对于每一次的优化,以
θ 为参数对
E[J(θ)] 进行优化时,
q(ζi) 是并未改变的,可以当做常量)。比如说最优解可以给这些样本都分配低的概率(对于
πθ(ζi)q(ζi) 而言的),而里面最好的样本仅仅只是比其它的样本的概率大一点点,因而这些样本都只有一个非零的权值,也即
πθ(ζi)q(ζi)≈0,i=1,...,m 。打个比方,记比值项
πθ(ζi)q(ζi) 为
ai ,假设
m=3,a1=0.03,a2=0.02,a3=0.02 ,其中
a1 为较好的样本对应的权重项,三个值都要除以
Zt(θ) 进行归一化,我们的最优解只需要保证它们之间的相对大小,这也就没有保证
a1,a2,a3 的值较大了。
正则项是如何解决这一问题的呢?首先我们观察公式(5),其中正则项为
∑Tt=1ωrlogZt(θ) ,也即
∑Tt=1ωrlog∑mi=1πθ(ζi,1:t)q(ζi,1:t) ,这也就使得比值项,或者说是权重项
πθ(ζi)q(ζi) 尽可能大,而其中
q(ζi) 当做常量,则保证了在策略
πθ 下有较高的概率,这也就是作者添加这一正则项的好处了。
Guided Samples
首先,我们对前面的东西进行回顾,在下面的式子中:
E[∇J(θ)]=E[r(ζ)∇logπθ(ζ)]≈1m∑i=1mr(ζi)∇logπθ(ζi)
ζ1,...,ζm 是依据当前策略
πθ 采样所得,因而是同策略的(on-policy),而重要性采样就是使得我们能够进行离策略(off-policy)更新,怎么做到离策略更新呢?我们观察下面的式子:
E[J(θ)]≈∑t=1T1Zt(θ)∑i=1mπθ(ζi,1:t)q(ζi,1:t)r(xit,uit)
其中
πθ 为当前策略,那么这里所谓的离策略中的采样策略呢?(注意,同策略是依据当前策略直接进行采样,而离策略则是借助重要性采样,按照另外一个分布进行采样。)采样策略应该如何选择才能符合将策略导向期望总奖励较大的区域呢?
前面一节中所讲的是如何使用重要性采样实现离策略更新,以往人们都是将重要性采样用于重用前面策略(previous policies)的样本来进行离策略的实现,但是,对于几百个参数的策略,这样做很容易陷入较差的局部极值。本节讲述如何使用DDP产生离策略的导向样本,进而将策略搜索引导到高奖励区域(high reward)。
下面我们来看如何构建导向分布(guiding distributions)。
一个有效的引导分布, 是能够覆盖高回报区域, 同时避免大
q(ζ) 密度对应小的重要性权重。
这篇文章呢,就这么说了,一个好的导向分布是
ρ(ζ)∝exp(r(ζ)) 的一个信息投射(I-projection, imformation projection)。
那么问题来了,I-projection是什么呢?
ρ 的一个I-projection
q 是使得KL散度(KL-divergence)
DKL(q||ρ)=Eq[−r(ζ)]−H(q) 取最小的
q ,其中
H 表示熵(entropy)。
为什么要选取这样的一个式子呢?其中,第一项能够让
q 在具有较高奖励的区域中取较大的值,而第二项对于熵尽可能大的要求,则是倾向于一个宽分布(broad distribution)。本文将会展示
ρ 的一个近似的高斯I-projection可以通过使用DDP的一个变体即iLQR计算出来。iLQR是在线性二次假设下,重复求解优化策略,从而优化轨迹的。
我们假设最优策略
πG 最大化了一个增广的奖励函数:
r~(xt,ut)=r(xt,ut)−DKL(πG(⋅|xt)||p(⋅|xt))
其中
p 是一个“消极动态模型”分布(passive dynamics)。如果
p 是一个均匀分布,那么策略
πG 的期望回报为:
EπG[r~(ζ)]=EπG[r(ζ)]+H(πG)
上面这个式子也就是在说,如果
πG 极大化了回报,那么它就是
ρ 的一个I-projection,这一点我们通过观察I-projection的定义和上面的式子不难理解。
Ziebart在2010年提出,在
p 为均匀分布(uniform passive dynamics)时,最优策略为:
πG(ut|xt)=exp(Qt(xt,ut)−Vt(xt))
其中
V 是一个经过改造的值函数(modified value function):
Vt(xt)=log∫exp(Qt(xt,ut))dut
然后作者又说了,在线性动态模型和二次形式奖励的情况下,
V 与上面得到的结果是一样的,并且其中(12)式是一个线性高斯函数(linear Gaussian高斯函数的线性组合,它的均值为
g(xt) ,协方差为
−Q−1uut 。这一随机策略相对于轨迹
ζ (trajectories)来说可以近似看做一个高斯分布。也就是说,我们能够从
ρ 的一个近似高斯I-projection里面进行采样:
πG(ut|xt)=G(ut;g(xt),−Q−1uut)
其中
ut 为自变量,并且需要注意的是,
πG(ζ) 只有在线性动态模型情况下才是高斯分布(It should be noted that
πG(ζ) is only Gaussian under linear dynamics.)。当动态模型为非线性时,
πG(ζ) 在标称轨迹(nominal trajectories)附近可以近似为一个高斯分布。庆幸的是,DDP中的反馈项便倾向于保持样本接近这个轨迹,使得这些样本能够作为该策略搜索的适合的导向样本。
上面的方法有个什么缺点呢?这个方法仅仅考虑了高奖励区域,但是并没有考虑当前策略
πθ 。我们能够通过从
ρθ(ζ)∝exp(r(ζ))πθ(ζ) 进行采样,从而将当前策略
πθ 考虑在内。不过呢,在实际中,很多领域并不需要这种改进的样本(adaptive samples)。在什么情况下需要呢?比如说在同样的状态下,策略选择的动作不同,这对产生样本而言是个问题。因此,在这种情况下,改进的样本能够避免策略在相同的状态下选择不同的动作,也就更加适用于对策略进行引导了。
那在实践中,我们如何将这些导向样本使用起来呢?————TODO————–
Guided Policy Search
我们直接来看GPS的算法部分:
Algorithm 1 Guided Policy Search
1: Generate DDP solutions πG1,...,πGn
2: Sample ζ1,...ζm from q(ζ)=1n∑iπGi(ζ)
3: Initialize θ∗←argmaxθ∑ilogπθ∗(ζi)
4: Build initial sample set S from πG1,...,πGn,πθ∗
5: for iteration k=1 to K do
6: Choose current sample set Sk⊂S
7: Optimize θk←argmaxθΦSk(θ)
8: Append samples from πθk to Sk and S
9: Optionally generate adaptive guiding samples
10: Estimate the values of πθk and πθ∗ using Sk
11: if πθk is better than πθ∗ then
12: Set θ∗←θk
13: Decrease ωr
14: else
15: Increase ωr
16: Optionally, resample from πθ∗
17: end if
18: end for
19: Return the best policy πθ∗
下面我们仔细解读一下这段算法。首先,依据上一节所说的,我们可以利用示教或是一个离线的规划算法(human demonstrations or with an offline planning algorithm),来产生一系列的DDP的策略解 πG1,...,πGn 。随后将这些策略组合为一个策略,也即有 q(ζ)=1n∑iπGi(ζ) ,并从中采样,得到一些样本 ζ1,...ζm 。接着我们可以利用这些样本对策略的参数 θ 进行极大似然估计,得到 θ∗←argmaxθ∑ilogπθ∗(ζi) 。将上面的导向样本和依据策略 πθ∗ 中得到的样本合在一起,建立一个初始样本集 S 。
接下来呢,我们就执行循环了,循环在优化 Φ(θ) 和从当前策略 πθk 获取新样本之间转换。我们选择一个样本子集 Sk⊂S ,然后利用该子集来优化(LBFGS方法)函数 Φ(θ) ,也即优化函数 ΦSk(θ) ,得到一个 θk ,然后从中采样添加到集合 Sk 和 S 中。利用样本集 Sk 来估计 πθk 和 πθ∗ 的值函数的大小,并进行比较,同时,依据比较结果来自适应地更改 ωr 的值。如果新策略 πθk 比当前最优策略 πθ∗ 要好,那么减小 ωr ,以减轻正则项的权重,从而使得 πθ(ζi) 被允许有较小的值,也即轨迹 ζi 在策略 πθ 下有较小的概率,或者说,不强调策略 πθ 去拟合轨迹 ζi 。而当新策略 πθk 比当前最优策略 πθ∗ 要差时,我们增加 ωr ,迫使策略 πθ 更倾向于拟合轨迹 ζi ,毕竟轨迹 ζi 是好的导向样本(good guiding examples)。这也就实现了探索(explore)与利用(exploit)之间的折中处理。
实现关键点:
我们通过构建一条或多条初始DDP轨迹(DDP solutions)来将引导样本包含在策略搜索中。这些解(solutions)可以通过人类示教或者是离线算法进行初始化。当我们从示教进行学习时,可以仅仅在原来的示教样本轨迹的基础上进行一步DDP迭代,从而构建一个在样本附近的高斯分布(When learning from demonstrations, we can perform just one step of DDP staring from the example demonstration,thus construction a Gaussian distribution around the example.)。如果使用的是改进的引导分布,那么它们在每一次策略搜索的迭代步中都需要从前一步的DDP解进行构建(If adaptive guiding distributions are used, they are constructed at each iteration of policy search starting fromthe previous DDP solution.)。
这个算法的策略搜索部分因为是对轨迹的概率分布的对数进行求导,而其中的动态模型部分与 θ 无关,因此策略搜索部分是model-free的,但是DDP却要系统的模型,因而整个算法还是model-based的。而model-free的DDP alternatives则在section 8进行讨论。GPS可以被看成是一个这样的系统,它将一组轨迹转化为一个控制器(GPS can be viewed as transforming a collection of trajectories into a controller.)。