之前lecture的RL算法,称作Model-free,其优化目标称为standard RL objective如下:
θ ∗ = arg max θ E τ ∼ p θ ( τ ) [ ∑ t r ( s t , a t ) ] p θ ( τ ) = p ( s 1 ) ∏ t = 1 T π θ ( a t ∣ s t ) p ( s t + 1 ∣ s t , a t ) \begin{aligned} \theta^*=\argmax_\theta E_{\tau\sim p_\theta(\tau)}\Big[\sum_tr(s_t,a_t)\Big]\\ p_\theta(\tau)=p(s_1)\prod_{t=1}^T\pi_\theta(a_t|s_t)p(s_{t+1}|s_t,a_t) \end{aligned} θ∗=θargmaxEτ∼pθ(τ)[t∑r(st,at)]pθ(τ)=p(s1)t=1∏Tπθ(at∣st)p(st+1∣st,at)
对策略policy参数求微分时,忽略了 p ( s t + 1 ∣ s t , a t ) p(s_{t+1}|s_t,a_t) p(st+1∣st,at),是standard-RL中的特点,基于采样的轨迹样本 τ \tau τ来进行值估计 Q ( s , a ) Q(s,a) Q(s,a),或者策略梯度PG更新,得到策略 π θ ( a t ∣ s t ) \pi_\theta(a_t|s_t) πθ(at∣st),这个过程并没有对环境建模,靠的是环境反馈的监督信号 r ( s , a ) r(s,a) r(s,a)。直观理解,一个agent的学习过程完全靠的是trial and error,眼前的路一抹黑,做对了继续做,做错就改,只接受对环境反馈的奖励信息去臆测,而没有对环境感知甚至认知的学习,这样的学习有点”学而不思“,但又因为不受imperfect环境模型的约束,而更flexible,能学到非常好的policy,只是没法将这些策略之间可能性的联系捕捉,缺点就是需要更多的样本。
而Model-Based,就是对环境建立一个model, p ( s ′ ∣ s , a ) p(s'|s,a) p(s′∣s,a),利用对环境的感知进行规划(planning)、预测(prediction)、控制(control)。可以利用model进行最优控制(optimal control),或者在model中辅助policy的学习。下面章节安排为:
划分维度有两个,一个是环境的反馈方式分为open-loop与closed loop,另一个是环境的dynamics类型分为deterministic与stochastic
Agent知道环境的初始状态 s 1 s_1 s1,输出一个动作序列 a 1 , . . . , a T a_1,...,a_T a1,...,aT进行control,中间不接受环境的new state反馈,寻找一个最优动作序列,使得 ∑ r ( s t , a t ) \sum r(s_t,a_t) ∑r(st,at)最大,假设dynamics是deterministic的,问题描述为:
a 1 , a 2 , . . . , a T = arg max a 1 , a 2 , . . . , a T ∑ t = 1 T r ( s t , a t ) s . t s t + 1 = f ( s t , a t ) a_1,a_2,...,a_T=\argmax_{a_1,a_2,...,a_T}\sum_{t=1}^Tr(s_t,a_t)\\ s.t\quad s_{t+1}=f(s_t,a_t) a1,a2,...,aT=a1,a2,...,aTargmaxt=1∑Tr(st,at)s.tst+1=f(st,at)
如果dynamics是stochastic的,那问题描述为:
a 1 , . . . , a T = arg max a 1 , . . . , a T E s ′ ∼ p ( s ′ ∣ s , a ) [ ∑ t = 1 T r ( s t , a t ) ∣ a 1 , . . . , a T ] p ( s 1 , s 2 , . . . , s T ∣ a 1 , . . . , a T ) = p ( s 1 ) ∏ t = 1 T p ( s t + 1 ∣ s t , a t ) a_1,...,a_T=\argmax_{a_1,...,a_T}E_{s'\sim p(s'|s,a)}\Big[\sum_{t=1}^Tr(s_t,a_t)\Big|a_1,...,a_T\Big]\\ p(s_1,s_2,...,s_T|a_1,...,a_T)=p(s_1)\prod_{t=1}^Tp(s_{t+1}|s_t,a_t) a1,...,aT=a1,...,aTargmaxEs′∼p(s′∣s,a)[t=1∑Tr(st,at)∣∣∣a1,...,aT]p(s1,s2,...,sT∣a1,...,aT)=p(s1)t=1∏Tp(st+1∣st,at)
因为当动作序列 a 1 , a 2 , . . . , a T a_1,a_2,...,a_T a1,a2,...,aT选定后,deterministic的dynamics时,当在状态 s t s_t st时,下一状态 s t + 1 s_{t+1} st+1是确定的,因此就不需要Expected Reward;而stochastic的dynamics的话,当在状态 s t s_t st时,即使动作序列 a t a_t at也给定,但下一状态还是不确定的,因此当前的 r ( s t , a t ) r(s_t,a_t) r(st,at)需要Expected Reward;
闭环,一般有两种,第一种是Model-free的,Agent自身有一个policy π ( a ∣ s ) \pi(a|s) π(a∣s);第二种是Model-Based的规划控制,Agent接受到环境的初始状态 s 1 s_1 s1后,agent通过planning,根据自身模拟的stochastic dynamics model采样预测下一状态 s 2 s_2 s2,最大化reward后给出一个可能的动作序列 a 1 , a 2 , . . . , a T a_1,a_2,...,a_T a1,a2,...,aT,执行 a 1 a_1 a1后,观察来自环境真实的 s 2 s_2 s2,可以选择做调整即replan,也可以选择按照原来的plan执行,这时agent不仅可以根据真实环境的state来调整自己的dynamics model,也可以引入MPC(Model Predictive Control)来选择replan与否。
stochastic closed-loop 的问题描述为:
π ∗ = arg max π E τ ∼ p ( τ ) [ ∑ t r ( s t , a t ) ] = arg max π E a ∼ π ( a ∣ s ) , s ′ ∼ p ( s ′ ∣ s , a ) [ ∑ t r ( s t , a t ) ] p ( s 1 , . . . , s T , a 1 , . . . , a T ) = p ( s 1 ) ∏ t = 1 T π ( a t ∣ s t ) p ( s t + 1 ∣ s t , a t ) \begin{aligned} \pi^*&=\argmax_\pi E_{\tau\sim p(\tau)}\Big[\sum_t r(s_t,a_t)\Big]\\ &=\argmax_\pi E_{a\sim\pi(a|s),s'\sim p(s'|s,a)}\Big[\sum_t r(s_t,a_t)\Big]\\ p(s_1,...,&s_T,a_1,...,a_T)=p(s_1)\prod_{t=1}^T \pi(a_t|s_t)p(s_{t+1}|s_t,a_t) \end{aligned} π∗p(s1,...,=πargmaxEτ∼p(τ)[t∑r(st,at)]=πargmaxEa∼π(a∣s),s′∼p(s′∣s,a)[t∑r(st,at)]sT,a1,...,aT)=p(s1)t=1∏Tπ(at∣st)p(st+1∣st,at)
闭环deterministic的dynamics model比较简单,因为下一状态是确定的,而环境又不断给到真实反馈,所以拟合起来十分简单,此处省略。
首先介绍一种只适合open-loop planning的随机优化方法,一般用于连续的动作。给定初始状态 s 1 s_1 s1
小总结一下:上述shooting methods都比较简单,并行起来计算速度也快,其中CMA-ES有点类似于CEM with momentum,是逐步升级的算法。但都有一个共同的缺点,就是当一个动作的维度dimension增大时,搜索空间也极具增大,需要限制在35个随机变量以下。
当动作是离散的时候,已经有了一个dynamics model, p ( s ′ ∣ s , a ) p(s'|s,a) p(s′∣s,a)或者 s t + 1 = f ( s t , a t ) s_{t+1}=f(s_t,a_t) st+1=f(st,at),于是就可以通过tree search,利用model进行planning。MCTS的planning主要分成四个模块:
因为知道了dynamics model后,就知道了state node之间的转移,构建一个新的tree进行plan就好了,结合如下伪代码加强理解MCTS的思想:
function MCTS_sample(state)
state.visits++
if all children of state expanded:
next_state = UCB_sample(state)
winner = MCTS_sample(next_state)
else:
if some children of state expanded:
next_state = expand(random unexpanded child)
else:
next_state = state
winner = random_playout(next_state)
update_value(state,winner)
UCB(Upper Confidence Bound) :
a t = arg max a [ Q t ( a ) + c l n N t N t ( a ) ] a_t=\argmax_a \Big[Q_t(a)+c\sqrt{\frac{lnN_t}{N_t(a)}}\Big] at=aargmax[Qt(a)+cNt(a)lnNt]
Q t ( a ) Q_t(a) Qt(a)为value estimate, c c c为可调整的超参数, N N N为当前action node的父结点的访问次数, N t ( a ) N_t(a) Nt(a)为在父节点的状态下,选择动作 a a a次数。
UCB的评分原则是:
更详细的讲解可以参考这篇paper MCTS Tutorial,非常详细~
A Survey of Monte Carlo Tree Search Methods
之前的解决方法,stochastic optimization是随机优化连续动作的轨迹,MCTS是通过估计状态值,学习得一个plan tree,然后再search的,是一个离散动作轨迹的优化,这都称作shooting method,只顾着优化action,寻得最优动作序列,问题表述如下:
min u 1 , … , u T c ( x 1 , u 1 ) + c ( f ( x 1 , u 1 ) , u 2 ) + ⋯ + c ( f ( f ( … ) … ) , u T ) \begin{array}{l} {\min _{\mathbf{u}_{1}, \ldots, \mathbf{u}_{T}} c\left(\mathbf{x}_{1}, \mathbf{u}_{1}\right)+c\left(f\left(\mathbf{x}_{1}, \mathbf{u}_{1}\right), \mathbf{u}_{2}\right)+\cdots+c\left(f(f(\ldots) \ldots), \mathbf{u}_{T}\right)} \end{array} minu1,…,uTc(x1,u1)+c(f(x1,u1),u2)+⋯+c(f(f(…)…),uT)
而使用梯度信息的方法,称作collocation method,是一个带约束的优化问题,不止优化action,还连同state一起优化,问题表述如下:
min u 1 , … , u T , x 1 , … , x T ∑ t = 1 T c ( x t , u t ) s.t. x t = f ( x t − 1 , u t − 1 ) \min _{\mathbf{u}_{1}, \ldots, \mathbf{u}_{T}, \mathbf{x}_{1}, \ldots, \mathbf{x}_{T}} \sum_{t=1}^{T} c\left(\mathbf{x}_{t}, \mathbf{u}_{t}\right) \text { s.t. } \mathbf{x}_{t}=f\left(\mathbf{x}_{t-1}, \mathbf{u}_{t-1}\right) u1,…,uT,x1,…,xTmint=1∑Tc(xt,ut) s.t. xt=f(xt−1,ut−1)
具体的解决方法参见上一篇文章LQR Framework的基础知识。
MRBL0.5算法找一个不错的policy,收集transition data到一个Dataset中,然后就可以进行dynamics model的拟合,拟合好后直接用plan。这种拟合dynamics model的算法与一开始介绍的lec1-lec4中的imitation learning很像,等同于behavioral cloning。因此会有一个distribution mismatch的问题。所以很自然地借鉴DAgger的解决办法,于有了以下MBRL1.0的算法:
MBRL1.0相当于把plan过程中与环境交互的transition作为新样本,回炉再造dynamics,那现在是不是可以了?
当dynamics model拟合得一般的时候,agent连续利用 s t + 1 = f ( s t , a t ) s_{t+1}=f(s_t,a_t) st+1=f(st,at)预测下一状态,选出动作序列 a 1 , a 2 , . . . a T a_1,a_2,...a_T a1,a2,...aT时,会出现compound error的现象,只要model有一点点瑕疵,不断利用其预测下一状态会往糟糕的方向越走越远,因此希望能恰当的时候进行replan,并选择适当的视野horizon,即plan几个动作,比如plan太长动作序列会有coupound error,plan视野太短,又过于短视,容易陷进local minima。下面就是引入了Model Predictive Control进行replan的MBRL1.5算法,已经是一个能work的算法了。
这样应该就比较理想了,但在ICRA2018上一篇Nagabandi的论文,做实验后发现,咦,为什么model-based的表现这么差呢?尽管样本利用率比起model-free确实高不少。很自然想法,可以在model-based train好的policy做model-free的初始化,再用model-free算法继续train,类似于Fine tune。
很可能的原因是,dynamics model过拟合了,遇到一些没见过的状态,不知所措,比如 s 1 → s 3 → s 5 s_1\rightarrow s_3 \rightarrow s_5 s1→s3→s5其中 s 1 , s 5 s_1,s_5 s1,s5都很熟悉,完全可以预测到下一状态,但 s 3 s_3 s3没见过呀,只能瞎走了;也有可能是受到了不确定性的困扰,导致不知所措,原地踏步,呜呜呜。
何为受到不确定性Uncertainty的困扰呢?
那应该怎么解决Model Uncertainty的问题呢?有没有适用于RL中Dynamics Model的Penalty term呢?这个应该有,但还没寻找相关文献看实验效果,先留着。PPT中提到另一种solution,就是去估计模型中的Uncertainty,即Uncertainty-aware Dynamics Model.
如何衡量Model Uncertainty?通常,我们通过最大似然法进行估计,利用数据Data去估计模型参数 θ \theta θ,通过贝叶斯公式,选择一组使似然函数最大的参数。
arg max θ p ( θ ∣ D ) = arg max θ p ( D ∣ θ ) \argmax_\theta p(\theta|D)=\argmax_\theta p(D|\theta) θargmaxp(θ∣D)=θargmaxp(D∣θ)
衡量Uncertainty的关键就在于,选择参数的分布,而不是一组使似然函数最大的参数,即 p ( θ ∣ D ) p(\theta|D) p(θ∣D),如下面贝叶斯网络BNN所示:
Bayesian Neural Network
估计目标是 p ( θ ∣ D ) p(\theta|D) p(θ∣D),是分布,预测的时候:
p ( s t + 1 ∣ s t , a t ) = ∫ p ( s t + 1 ∣ s t , a t , θ ) p ( θ ∣ D ) d θ p(s_{t+1}|s_t,a_t)=\int p(s_{t+1}|s_t,a_t,\theta)p(\theta|D)d\theta p(st+1∣st,at)=∫p(st+1∣st,at,θ)p(θ∣D)dθ
对估计好的参数分布中的每个可能组合 θ \theta θ,对确定的dynamics model进行求和,这在计算上是intractable的,因此一般需要通过近似:
∫ p ( s t + 1 ∣ s t , a t , θ ) p ( θ ∣ D ) d θ ≈ 1 N ∑ i p ( s t + 1 ∣ s t , a t , θ i ) \int p(s_{t+1}|s_t,a_t,\theta)p(\theta|D)d\theta\approx \frac{1}{N}\sum_i p(s_{t+1}|s_t,a_t,\theta_i) ∫p(st+1∣st,at,θ)p(θ∣D)dθ≈N1i∑p(st+1∣st,at,θi)
这种做法缺点就是,需要多个网络近似,无论是复杂度还是空间开销都提升了几倍,因此一般 N ≤ 10 N \leq10 N≤10,称作Bootstrap Ensemble,如下。
Bootstrap Ensemble
train多个不同的网络,一种方式是利用独立的数据子集分别train单独的网络,train的方式很多样。另一种也可是将多个网络做Knowledge Distillation到一个网络中,各种teacher,克服时空间复杂度增长的问题,这应该很好做,不知是否有paper尝试过用到deep RL里来看效果。
其实还可以有高斯过程GP与变分推断Variational Inference来衡量Uncertainy,其它方式可参见两篇Paper。
Weight Uncertainty in Neural Networks 2015 ICML
Concrete Dropout 2017 NIPS
还有一些关于Deep Dynamics Model的Paper:
当接收的信息是image的时候,由于维度过高,不能像之前那样直接把simple observation当作state了。需要为observation建立一个映射mapping,将obervation转换到state空间。在MDP中state可以理解为是对环境的完全抽象,即假设了state包含所需要知道的完整信息,这个称作state abstraction。state estimation需要将高维度的observation转成低维度的state,相当于对observation做了一个projection 到state latent space。
回顾比较完整的MDP过程,定义:
以上model是确定值deterministic 或者 服从分布的随机值stochastic均可
我们看看这个latent space的过程具体是怎样的。
之前拟合dynamics model时,第 i i i个轨迹的一个transition样本为 ( s t i , a t i , s t + 1 i ) (s^i_t,a_t^i,s_{t+1}^i) (sti,ati,st+1i),输入是 s t i s_t^i sti,label是 s t + 1 i s_{t+1}^i st+1i,对数log似然目标是:
max ϕ 1 N ∑ i = 1 N ∑ t = 1 T l o g p ϕ ( s t + 1 i ∣ s t i , a t i ) \max_{\phi}\frac{1}{N}\sum_{i=1}^N\sum_{t=1}^Tlogp_\phi(s_{t+1}^i|s_t^i,a_t^i) ϕmaxN1i=1∑Nt=1∑Tlogpϕ(st+1i∣sti,ati)
但现在state是不知道的,需要从observation学习映射,但dymaics的input与label是 ( s t , s t + 1 ) (s_t,s_{t+1}) (st,st+1)。因此先从observation与action的所有历史信息中学习transition的联合分布 ( s t , s t + 1 ) (s_t,s_{t+1}) (st,st+1):
( s t , s t + 1 ) ∼ p ( s t , s t + 1 ∣ o 1 : T , a 1 : T ) (s_t,s_{t+1})\sim p(s_t,s_{t+1}|o_{1:T},a_{1:T}) (st,st+1)∼p(st,st+1∣o1:T,a1:T)
目标变为:
max ϕ 1 N ∑ i = 1 N ∑ t = 1 T E ( s t , s t + 1 ) ∼ p ( s t , s t + 1 ∣ o 1 : T , a 1 : T ) l o g p ϕ ( s t + 1 i ∣ s t i , a t i ) \max_{\phi}\frac{1}{N}\sum_{i=1}^N\sum_{t=1}^TE_{(s_t,s_{t+1})\sim p(s_t,s_{t+1}|o_{1:T},a_{1:T})}logp_\phi(s_{t+1}^i|s_t^i,a_t^i) ϕmaxN1i=1∑Nt=1∑TE(st,st+1)∼p(st,st+1∣o1:T,a1:T)logpϕ(st+1i∣sti,ati)
还有个小问题, p ( s t , s t + 1 ∣ o 1 : T , a 1 : T ) p(s_t,s_{t+1}|o_{1:T},a_{1:T}) p(st,st+1∣o1:T,a1:T)学得只是如何将observation映射成state dynamics,而环境dynamics依靠的是真实state之间的转移,如何保证observation学的state一定就好的呢?
因此还需要observation model,即 p ( o t ∣ s t ) p(o_t|s_t) p(ot∣st),MLE这个似然,使习得的state reconstruct出来的observation确实也和image observation很相似。因此现在目标变为:
max ϕ 1 N ∑ i = 1 N ∑ t = 1 T E ( s t , s t + 1 ) ∼ p ( s t , s t + 1 ∣ o 1 : T , a 1 : T ) [ l o g p ϕ ( s t + 1 i ∣ s t i , a t i ) + l o g p ϕ ( o t i ∣ s t i ) ] \max_{\phi}\frac{1}{N}\sum_{i=1}^N\sum_{t=1}^TE_{(s_t,s_{t+1})\sim p(s_t,s_{t+1}|o_{1:T},a_{1:T})}\Big[logp_\phi(s_{t+1}^i|s_t^i,a_t^i)+logp_\phi(o_t^i|s_t^i)\Big] ϕmaxN1i=1∑Nt=1∑TE(st,st+1)∼p(st,st+1∣o1:T,a1:T)[logpϕ(st+1i∣sti,ati)+logpϕ(oti∣sti)]
现在需要处理Encoder,这里假设最简单的情形,复杂的后续再说。
于是优化目标变为:
max ϕ , ψ 1 N ∑ i = 1 N ∑ t = 1 T [ l o g p ϕ ( g ψ ( o t i ) ∣ g ψ ( o t i ) , a t i ) + l o g p ϕ ( o t i ∣ g ψ ( o t i ) ) ] \max_{\phi,\psi}\frac{1}{N}\sum_{i=1}^N\sum_{t=1}^T\Big[logp_\phi\Big(g_\psi(o_t^i)|g_\psi(o_t^i),a_t^i\Big)+logp_\phi(o_t^i|g_\psi(o_t^i))\Big] ϕ,ψmaxN1i=1∑Nt=1∑T[logpϕ(gψ(oti)∣gψ(oti),ati)+logpϕ(oti∣gψ(oti))]
如果算上reward model,最终优化目标为:
max ϕ , ψ 1 N ∑ i = 1 N ∑ t = 1 T [ l o g p ϕ ( g ψ ( o t i ) ∣ g ψ ( o t i ) , a t i ) + l o g p ϕ ( o t i ∣ g ψ ( o t i ) ) + l o g p ϕ ( r t i ∣ g ψ ( o t i ) , a t i ) ] \max_{\phi,\psi}\frac{1}{N}\sum_{i=1}^N\sum_{t=1}^T\Big[logp_\phi\Big(g_\psi(o_t^i)|g_\psi(o_t^i),a_t^i\Big)+logp_\phi(o_t^i|g_\psi(o_t^i))+logp_\phi(r_t^i|g_\psi(o_t^i),a_t^i)\Big] ϕ,ψmaxN1i=1∑Nt=1∑T[logpϕ(gψ(oti)∣gψ(oti),ati)+logpϕ(oti∣gψ(oti))+logpϕ(rti∣gψ(oti),ati)]
最终算法流程为:
可改进之处很多,都在encoder的假设情况中,这算法假设了一个deterministic and one observation的encoder,最丰富可扩展成dependent,stochastic,multiple observations的encoder。
其实引入了latent state的方案与VAE,Variational AutoEncoder差不多,VAE各种变种与优化技巧,均可借鉴)
放两篇参考论文:
E2C:Embed To Control 2015 NIPS(locally linear来近似处理non-linear dynamics,deep generative model 来生成latent space中的state vector)
SOLAR: Deep Structured Representations for Model-Based Reinforcement Learning ICML 2019(通过inferring simple dynamics and cost models来得到image的robust representation)
上面说完怎么train一个dynamics model,train好后就可以用Optimal Control中的trajectory optimization的方法进行planning了,根据dynamics model去得最优轨迹。这章主要说的是,尽管有dynamics model,但有一些痛点促使我们希望用这个第二章辛苦train好的model去辅助policy的学习。比如对于dynamics非常复杂的环境,即使历经千辛万苦train好这个接近完美的dynamics model,却因为环境comlicated and stochastic dynamics的原因,planning的算法并不能得出最优轨迹,陷入了sub-optimal。通过dynamics model来learn这个model的方式,主要有
(基本RL中每个module,都分deterministic与stochastic)
每个batch更新dynamics model的时候,从reward开始经过dynamics model将gradient backprop回policy中。于是目标梯度为:
∇ θ J ( θ ) = d r 1 d s 1 + d r 2 d s 2 d s 2 d a 1 d a 1 d s 1 + d r 3 d s 3 d s 3 d a 2 d a 2 d s 2 d s 2 d a 1 d a 1 d s 1 + ⋯ \nabla_\theta J(\theta)=\frac{dr_1}{ds_1}+\frac{dr_2}{ds_2}\frac{ds_{2}}{da_{1}}\frac{da_1}{ds_1}+\frac{dr_3}{ds_3}\frac{ds_{3}}{da_{2}}\frac{da_2}{ds_2}\frac{ds_{2}}{da_{1}}\frac{da_1}{ds_1}+\cdots\\ ∇θJ(θ)=ds1dr1+ds2dr2da1ds2ds1da1+ds3dr3da2ds3ds2da2da1ds2ds1da1+⋯
所以简化表述成:
∇ θ J ( θ ) = ∑ t = 1 T d r t d s t ∏ t ′ = 2 t d s t ′ d a t ′ − 1 d a t ′ − 1 d s t ′ − 1 \nabla_\theta J(\theta)=\sum_{t=1}^T\frac{dr_t}{ds_t}\prod_{t'=2}^t\frac{ds_{t'}}{da_{t'-1}}\frac{da_{t'-1}}{ds_{t'-1}} ∇θJ(θ)=t=1∑Tdstdrtt′=2∏tdat′−1dst′dst′−1dat′−1
其中 d s t ′ d a t ′ − 1 \frac{ds_{t'}}{da_{t'-1}} dat′−1dst′为dynamics model的gradient, d a t ′ − 1 d s t ′ − 1 \frac{da_{t'-1}}{ds_{t'-1}} dst′−1dat′−1为policy gradient。可以看到这结构的策略梯度更新类似于long horizon的RNN或LSTM,经过多个Jacobi矩阵相乘,很容易出现vanishing gradient或exploding gradient的现象,具体而言就是连续相乘的多个Jacobi矩阵的特征值大于1或小于1,过多的时候,梯度要么就太大爆炸explode了,要么就是太小消失vanish了。
解决办法就是要维持这些Jacobi矩阵相乘时的特征值在1附近徘徊。只是有点麻烦而已,但也不是不行,有人也在做这个工作,具体可以参见下面两篇paper。
特点:Online Q-learning algorithm that performs model-free RL with a model
重点说明:
基于上述Dyna算法,下面是Dyna-style算法扩展的抽象形态:
说明:第4步中把Dyana中的 ( s , a ) (s,a) (s,a)拆开了,从而引入了选择action的多样性,第7步将online Q扩展了,使其可用多种model-free RL算法。
服从该Dyna-Style的paper有:
基本想法Divide and Conquer:将一个global policy如expressive的DNN分解成多个local policy,对local policy进行学习,再combine成一个global policy。
不用受long RNN梯度消失爆炸困扰的Backprop gradient,也不用受训练中imperfect dynamics model影响很大的General-Dyna算法,尝试通过LQR framework来实现Divide and Conquer。
以上便可训练得到一个local controller 的 p ( u t ∣ x t ) p(u_t|x_t) p(ut∣xt)即local policy的 π ( a t ∣ s t ) \pi(a_t|s_t) π(at∣st)。
那会不会有问题呢?肯定有的,在于将Non-linear stochastic dynamics强行用linear dynamics approximate的那一部分 f ( x t , u t ) ≈ d f d x t x t + d f d u t u t f(x_t,u_t) \approx \frac{df}{dx_t}x_t+\frac{df}{du_t}u_t f(xt,ut)≈dxtdfxt+dutdfut=。=
解释一下这个图:有箭头的线为一条trajectory,绿色波形的线为真实Non-linear dynamics的 f ( x t , u t ) f(x_t,u_t) f(xt,ut),蓝色的线为local linear approximate的controller控制器 d f d x t x t + d f d u t u t \frac{df}{dx_t}x_t+\frac{df}{du_t}u_t dxtdfxt+dutdfut。
黑色轨迹 τ ^ \hat\tau τ^在approximately local linear dynamics基础上训练出来的控制器controller蓝色线,如果遇到与黑色轨迹 τ ^ \hat\tau τ^相差较远的轨迹 τ \tau τ,则controller就会失效,导致性能local policy不准。
那怎么办呢?
像TRPO一样,只要让新轨迹 τ \tau τ与旧轨迹 τ ˉ \bar\tau τˉ之间在一定范围内接近即可。公式描述如下:
p ( τ ) = p ( x 1 ) ∏ t = 1 T p ( u t ∣ x t ) p ( x t + 1 ∣ x t , u t ) p ( u t ∣ x t ) = N ( K t ( x t − x ^ t ) + k t + u ^ t , Σ t ) p(\tau)=p(x_1)\prod_{t=1}^Tp(u_t|x_t)p(x_{t+1}|x_t,u_t)\\ p(u_t|x_t)=N(K_t(x_t-\hat x_t)+k_t+\hat u_t,\Sigma_t) p(τ)=p(x1)t=1∏Tp(ut∣xt)p(xt+1∣xt,ut)p(ut∣xt)=N(Kt(xt−x^t)+kt+u^t,Σt)
优化问题变为:
min p ( τ ) ∑ t = 1 T E p ( x t , u t ) [ c ( x t , u t ) ] s . t D K L ( p ( τ ) ∣ ∣ p ˉ ( τ ) ) ≤ ϵ \min_{p(\tau)}\sum_{t=1}^TE_{p(x_t,u_t)}\Big[c(x_t,u_t)\Big]\\s.t \quad D_{KL}(p(\tau)||\bar p(\tau))\leq\epsilon p(τ)mint=1∑TEp(xt,ut)[c(xt,ut)]s.tDKL(p(τ)∣∣pˉ(τ))≤ϵ
Learning Neural Network Policies with Guided Policy Search under Unknown Dynamics 2014 NIPS
细节在这篇文章里, p ( τ ) 、 p ˉ ( τ ) p(\tau)、\bar p(\tau) p(τ)、pˉ(τ)为新控制器的轨迹分布与旧控制器的轨迹分布,下面公式表述一下:
p ( τ ) = p ( x 1 ) ∏ t = 1 T p ( u t ∣ x t ) p ( x t + 1 ∣ x t , u t ) p ˉ ( τ ) = p ( x 1 ) ∏ t = 1 T p ˉ ( u t ∣ x t ) p ( x t + 1 ∣ x t , u t ) p(\tau)=p(x_1)\prod_{t=1}^Tp(u_t|x_t)p(x_{t+1}|x_t,u_t)\\ \bar p(\tau)=p(x_1)\prod_{t=1}^T\bar p(u_t|x_t)p(x_{t+1}|x_t,u_t) p(τ)=p(x1)t=1∏Tp(ut∣xt)p(xt+1∣xt,ut)pˉ(τ)=p(x1)t=1∏Tpˉ(ut∣xt)p(xt+1∣xt,ut)
D K L ( p ( τ ) ∣ ∣ p ˉ ( τ ) ) = E p ( τ ) [ l o g p ( τ ) p ˉ ( τ ) ] = E p ( τ ) [ l o g p ( τ ) − l o g p ˉ ( τ ) ] = E ( x t , u t ) ∼ p ( τ ) [ ∑ t = 1 T ( l o g p ( u t ∣ x t ) − l o g p ˉ ( u t ∣ x t ) ) ] = ∑ t = 1 T [ E p ( x t , u t ) l o g p ( u t ∣ x t ) + E p ( x t , u t ) [ − l o g p ˉ ( u t ∣ x t ) ] ] = ∑ t = 1 T [ E p ( x t ) E p ( u t ∣ x t ) l o g p ( u t ∣ x t ) + E p ( x t , u t ) [ − l o g p ˉ ( u t ∣ x t ) ] ] = ∑ t = 1 T [ − E p ( x t ) [ H ( p ( u t ∣ x t ) ) ] + E p ( x t , u t ) [ − l o g p ˉ ( u t ∣ x t ) ] ] = ∑ t = 1 T E p ( x t ) [ H [ p , p ˉ ] − H [ p ] ] = ∑ t = 1 T E p ( x t , u t ) [ − l o g p ˉ ( u t ∣ x t ) − H [ p ( u t ∣ x t ) ] ] \begin{aligned} D_{KL}(p(\tau)||\bar p(\tau))&=E_{p(\tau)}\Big[log\frac{p(\tau)}{\bar p(\tau)}\Big]\\ &=E_{p(\tau)}\Big[logp(\tau)-log\bar p(\tau)\Big]\\ &=E_{(x_t,u_t)\sim p(\tau)}\Big[\sum_{t=1}^T\Big(logp(u_t|x_t)-log\bar p(u_t|x_t)\Big)\Big]\\ &=\sum_{t=1}^T\Big[E_{p(x_t,u_t)}logp(u_t|x_t)+E_{p(x_t,u_t)}\big[-log\bar p(u_t|x_t)\big]\Big]\\ &=\sum_{t=1}^T\Big[E_{p(x_t)}E_{p(u_t|x_t)}logp(u_t|x_t)+E_{p(x_t,u_t)}\big[-log\bar p(u_t|x_t)\big]\Big]\\ &=\sum_{t=1}^T\Big[-E_{p(x_t)}\big[H\big(p(u_t|x_t)\big)\big]+E_{p(x_t,u_t)}\big[-log\bar p(u_t|x_t)\big]\Big]\\ &=\sum_{t=1}^TE_{p(x_t)}\Big[H[p,\bar p]-H[p]\Big]\\ &=\sum_{t=1}^TE_{p(x_t,u_t)}\big[-log\bar p(u_t|x_t)-H[p(u_t|x_t)]\big] \end{aligned} DKL(p(τ)∣∣pˉ(τ))=Ep(τ)[logpˉ(τ)p(τ)]=Ep(τ)[logp(τ)−logpˉ(τ)]=E(xt,ut)∼p(τ)[t=1∑T(logp(ut∣xt)−logpˉ(ut∣xt))]=t=1∑T[Ep(xt,ut)logp(ut∣xt)+Ep(xt,ut)[−logpˉ(ut∣xt)]]=t=1∑T[Ep(xt)Ep(ut∣xt)logp(ut∣xt)+Ep(xt,ut)[−logpˉ(ut∣xt)]]=t=1∑T[−Ep(xt)[H(p(ut∣xt))]+Ep(xt,ut)[−logpˉ(ut∣xt)]]=t=1∑TEp(xt)[H[p,pˉ]−H[p]]=t=1∑TEp(xt,ut)[−logpˉ(ut∣xt)−H[p(ut∣xt)]]
min p ∑ t = 1 T E p ( x t , u t ) [ c ( x t , u t ) − λ l o g p ˉ ( u t ∣ x t ) − λ H ( p ( u t ∣ x t ) ) ] − λ ϵ \min_p\sum_{t=1}^TE_{p(x_t,u_t)}\Big[c(x_t,u_t)-\lambda log\bar p(u_t|x_t)-\lambda H(p(u_t|x_t))\Big]-\lambda\epsilon pmint=1∑TEp(xt,ut)[c(xt,ut)−λlogpˉ(ut∣xt)−λH(p(ut∣xt))]−λϵ
最后一步是因为可以固定新旧控制器的初始状态 p ( x t ) p(x_t) p(xt),然后用拉格朗日乘子法,转为无约束的优化问题,利用Dual Gradietn Descent进行优化。
将上述多个local policy通过supervised learning combine 到一个Network表示的global policy中。
细节可参考:End-to-End Training of Deep Visuomotor Policies 2016 jmlr
Medium:Jonathan-Hui Model-Based RL
CS285 lec10-lec12 PPT
中原一点红的知乎