【强化学习纲要】7 基于环境模型的RL方法
周博磊《强化学习纲要》
学习笔记
课程资料参见: https://github.com/zhoubolei/introRL.
教材:Sutton and Barton
《 Reinforcement Learning: An Introduction》
7.1 基于环境模型强化学习概要
- 前几节都是基于Model-free的强化学习算法,Model-free的意思是并没有环境模型。
- 通过直接和环境进行交互,比如说采集到experience来训练策略函数(通过policy gradient训练)。
- 价值函数的估计可以通过MC,TD来优化
- 马尔可夫决策过程中介绍了两个算法,policy iteration以及value iteration,这两个算法是基于环境模型的,即知道Oracle环境模型,动态的迭代,可以很快的计划。但是在现实生活中并没有一个环境模型可以直接去实施carry,所以就利用model-free的强化学习算法,没有任何环境模型去估计优化策略函数和价值函数。
- 这里又回到了环境模型强化学习算法,这里和最早的MDP不同的是,我们去估计一个环境模型来更好的优化我们的价值函数估计和策略函数估计。
- 要点是通过和环境交互得到的experience来学习环境模型。
- 得到了学习好的环境模型后,利用它来优化价值函数和策略函数。
Building a Model of the Environment
- 之前model-free强化学习是说我们有一个agent跟环境直接进行1对1的交互,环境返还奖励以及下一个状态,agent得到下一个状态过后会采取一个行为再返还给环境。
- 基于环境模型的强化学习算法是说agent不仅可以和环境进行交互,也可以和模型进行交互。
中间这个地球就是对真实环境的一个建模,我们这里model指的是环境模型,就对环境进行建模。这样一个环境模型就具有了动态转移以及奖励函数。
Modeling the Environment for Planning、
如果有环境模型,就可以利用环境模型进行planning,就可以更好的估计需要采取的策略以及价值函数。
- Planning这个过程利用环境模型进行计划。一种方式是从环境中采取各种experience,experience也就是得到了状态转移的观测;那么可以利用这个观测数据学习转移的模型(transition dynamic model)或者reward function;得到模型过后,利用planning的算法得到更好的策略。
- 基于环境模型的强化学习算法分为两类:
- 基于环境模型的价值函数优化:
得到环境模型后,可以通过对环境模型进行采样可以得到很多simulated trajectories;把这些轨迹可以当作真实的轨迹进行价值函数优化(backup过程),从而得到价值函数;得到价值函数后,通过greedy的办法得到policy。 - 基于环境模型的策略函数优化:
通过model来改进policy。
- 基于环境模型的价值函数优化:
7.2 基于环境模型的价值函数优化
- 结构
多了一个model,experience有了更多的用途。之前是experience来估计价值函数和策略函数,现在experience多了训练model的作用,因为experience自身带了状态间是怎么转移的,所以可以学一个模型,然后来model它的状态转移。 - experience的两个用处:
- 估计价值函数和策略函数
- 估计环境模型
Model-based RL的好处
- 具有很高的sample efficiency。sample efficiency是强化学习中很重要的一点,因为之前的强化学习算法都是在simulation里面run,这样可以得到大量的数据,所以sample efficiency并不是大问题。
- 但如果把sample efficiency真正用到现实生活中的时候,sample efficiency就很重要。
- 环境模型是可以直接通过supervised learning(监督)的方法得到的,多了这个model后可以让策略函数优化和价值函数优化变得更容易。
越往左sample efficiency越低,越往右越高,最右边是Evolutionary(进化算法)/gradient-free的办法,在Evolutionary(进化算法)/gradient-free方法里面并不能得到gradient,所以只能通过大量的sample去尝试,然后优化。 - 其次是On-policy Policy Gradient,只要是on-policy的方法,效率都是非常的低,因为它只有优化的这个方法,用优化的policy来采取data,所以这个过程非常的慢。
- 中间这个是actor-critic,把critic函数结合进来,结合进policy gradient里面,actor-critic还不错。
- Off-policy方法,如off-policy q-learning或者off-policy SAC,效率都是非常高的,因为它在这个过程中保留了两个策略,通过采集数据的策略以及优化的策略。
- 最左边是基于环境模型的强化学习算法,具有很高的sample efficiency,因为把采集到的experience,直接估计了转移函数,如果状态不太复杂,环境函数非常准确,就可以得到策略以及价值函数优化。
- 存在的问题
- 在优化的过程中不仅是对环境函数价值函数进行近似的优化,对于环境自身也有可能会用一个函数来拟合,这样就会有两个误差
- 在环境模型里面自身的误差并不能保证convergence,使得优化过程变得更不稳定。
What is a Model
- Model
M
M
M是环境模型,Model
M
=
(
P
,
R
)
M=(P,R)
M=(P,R)有两部分组成:
- state transitions(状态转移矩阵)
得到它当前状态以及当前要采取的动作,下一个状态是怎么转移过去的。得到状态转移模型后,可以对这个概率模型进行采样,就可以模拟状态的进行。 - reward(奖励)
基于当前状态采取的行为我们可以估计得到了多少奖励。
- state transitions(状态转移矩阵)
- 通常是假设状态转移和奖励之间是独立的关系。
- 有些时候环境模型自身是非常容易得到的,或者说已经已知了,比如下围棋
- 物理模型如开车也容易得到:Vehicle dynamics model和kinematics bicycle model(动力学模型)
Learning the Model
- 目的是想训练一个环境模型,能采集到的数据是能得到很多experience {
S
1
,
A
1
,
R
2
,
.
.
.
,
S
T
S_1,A_1,R_2,...,S_T
S1,A1,R2,...,ST},experience可能是behavior policy和真实的环境进行交互得到很多experience,experience得到后就立刻可以学习状态转移。
- 通过监督的办法来学习
知道当前状态,以及当前状态采取的动作转移到下一个奖励以及状态,这样的tuple是可以直接从experience里面提取出来的。
- 已知当前状态,行为可以得到后面的奖励,s,a→r,奖励函数就可以直接看成一个regression problem(回归问题)。
- 对于状态自身的转移s,a→s’可以看作一个density estimation problem(密度估计问题),也可以通过监督方法来优化。
- 可以选取一些常见的loss funtion,比如mean-squared error以及KL divergence都是比较常见的去学习环境模型的函数。
Examples of Models
基于环境本身可以采取不同的模型。
1 Table Lookup Model(查表模型)
2 Linear Expectation Model(线性期望模型)
3 Linear Gaussian Model(线性高斯模型)
4 Gaussian Process Model(高斯过程模型)
5 Deep Belief Network Model(深度信念网络模型) …
Table Lookup Model
- 比如要估计MDP,它的状态转移矩阵 P ^ \hat{P} P^和奖励函数 R ^ \hat{R} R^,直接可以通过数数(counting)的办法,来估计它的状态转移。
- 我们采集了很多轨迹后,我们知道给定了某一个状态,采取某一个行为进入下一个状态,把这样的pair拿出来通过数数的方法估计到状态转移。
- 同理对于奖励函数也可以采取数数的方法,当前状态采取某一种行为,得到了多少奖励,直接通过weighted average的方法,这样也可以很快估计出奖励函数。
Example of AB
- 有两个状态A,B,没有任何discounting。
- 假设从Marcov process里面采样,观测到了8条轨迹
- ( S t a t e , R e w a r d , N e x t S t a t e , N e x t R e w a r d ) (State, Reward, Next State, Next Reward) (State,Reward,NextState,NextReward)
-
(
A
,
0
,
B
,
0
)
,
(
B
,
1
)
,
(
B
,
1
)
,
(
B
,
1
)
,
(
B
,
1
)
,
(
B
,
1
)
,
(
B
,
1
)
,
(
B
,
1
)
,
(
B
,
0
)
(A, 0, B, 0), (B, 1), (B, 1), (B, 1), (B, 1), (B, 1), (B, 1), (B, 1), (B, 0)
(A,0,B,0),(B,1),(B,1),(B,1),(B,1),(B,1),(B,1),(B,1),(B,0)
得到这8条状态后就能估计状态转移,以及奖励函数
Sample-Based Planning
- 得到环境后,如何进行Planning的计划;
- 通过估计好的模型直接进行采样;
- 就可以得到很多虚拟的轨迹;
- 得到轨迹后就可以用之前学习的model-free RL方法估计出每一个状态的价值,这样就可以进行行为了。
- Monte-Carlo control
- Sarsa
- Q-learning
Sample-Based Planning for AB Example
- 得到这8条轨迹后,通过观测到的8条轨迹
- ( A , 0 , B , 0 ) , ( B , 1 ) , ( B , 1 ) , ( B , 1 ) , ( B , 1 ) , ( B , 1 ) , ( B , 1 ) , ( B , 1 ) , ( B , 0 ) (A, 0, B, 0), (B, 1), (B, 1), (B, 1), (B, 1), (B, 1), (B, 1), (B, 1), (B, 0) (A,0,B,0),(B,1),(B,1),(B,1),(B,1),(B,1),(B,1),(B,1),(B,0)
- 可以重建出它的环境模型
- 得到环境模型后,可以对模型进行采样
- ( B , 1 ) , ( B , 0 ) , ( B , 1 ) , ( A , 0 , B , 1 ) , ( B , 1 ) , ( A , 0 , B , 1 ) , ( B , 1 ) , ( B , 0 ) (B, 1), (B, 0), (B, 1), (A, 0, B, 1), (B, 1), (A, 0, B, 1), (B, 1), (B, 0) (B,1),(B,0),(B,1),(A,0,B,1),(B,1),(A,0,B,1),(B,1),(B,0)
- 采到很多估计轨迹,就可以用如MC的方法取平均。
- V ( A ) = 1 , V ( B ) = 0.75 V(A)=1,V(B)=0.75 V(A)=1,V(B)=0.75
- 基于环境模型的强化学习算法得到的结果,只能和估计出的准确度有很大的关联,所以当模型并不准确的时候,planning过程也会得到一个并不是那么准确的策略。
- 解决方案
- 如果知道置信度(估计出的环境模型,会输出一个置信度),当置信度低的时候,就直接用model-free的方法,不用模型做planning。
- 对环境模型建模的时候,很多时候用一个probabilistic model(概率模型)去建模,比如Bayesian 以及 Gaussian Process。这样的环境模型,它在输出结果的时候自身已经带有一定不确定性,通过这个不确定性,我们用来决定是用model-based还是model-free的强化学习算法。
Real and Simulated Experience
- 所以我们这里有两种experience
- Real Experience:和之前model-free的方法相似,agent直接和环境进行交互,得到实际的轨迹。
- Simulated Experience:有了环境模型过后,可以通过采样环境模型得到
通过估计模型里面采样得到的轨迹。
Integrating Learning and Planning(融合学习与规划)
- 前面我们介绍了Model-free RL
- 不带有环境模型
- 直接和环境交互得到价值函数或者策略函数
- Model-based RL(using Sample-based Planning)
- 学习到一个模型
- 可以通过虚拟出来的experience计划价值函数和策略函数
- Dyna算法
- 通过real experience里面估计一个模型
- 然后通过真实和虚拟的experience,同时learn和plan重新估计的价值函数。
Dyna for Integrating Learning, Planning, and Reacting
- By Richard Sutton. ACM SIGART Bulletin 1991
- 课本第八章
- 不是很出名但是是很好理解基于环境模型强化学习的例子。
- Dyna的结构
- 我们看到在这个方法里面,有两种experience,real experience和simulated experience;
- real experience有两个作用,一个是直接拿来更新策略函数/价值函数,另一个是拿来估计模型;
- 有了模型后,可以采用search control方法产生simulated experience,simulated experience和real experience来组合就可以进一步更新策略/价值函数。尤其是在real experience不多的时候,可以用大量simulated experience来填补不足。
Dyna算法
-
(
a
)
(
b
)
(
c
)
(
d
)
(a)(b)(c)(d)
(a)(b)(c)(d)和传统的model-free方法类似,估计出Q 函数;
( e ) (e) (e)估计了环境模型
( f ) (f) (f)重复采样
从之前的状态开始,通过随机的策略对环境模型进行采样,这样就会得到大量虚拟的experience,得到轨迹通过Q learning的方法来更新Q。 - 所以Tabular Dyna-Q是把direct RL和model learning和planning结合起来了。
Result of Dyna
- 在一个简单的环境里起到了好的效果
- 开始的时候如果没有一个planning的过程,value iteration和policy iteration在0步的时候就只可能得到1步的结果;如果可以学习环境模型,通过环境模型可以产生大量的轨迹,就可以对每一个状态都有大致的估计。
横轴是它的episode,纵轴是它的step,从起始点S到达Goal点。我们发现,如果没有任何planning,需要的episode是非常多的,如果有了planning这个过程就可以很快降低它的步数,很快就可以得到greedy strategy。
从starting location到达goal location。这也体现出了模型的价值,可以通过少量的真实轨迹,估算出模型,对模型进行采样可以得到各种不同状态的轨迹。
7.3 基于环境模型的策略函数优化
- 之前的model-based value-based RL:
通过轨迹获得实际的real experience/trajectory学习模型;学习到模型后对模型进行采样得到很多simulated trajectory;对simulated data进行backup处理,就可以重新估计value;从value/Q function里面可以得到一个策略policy。
那么可不可以通过优化模型来改进策略函数呢?
Model-based Policy Optimization in RL
- Policy gradient自身是model-free的方法,只关心policy
π
∣
θ
(
a
t
∣
s
t
)
{\pi|}_{\theta}(a_t|s_t)
π∣θ(at∣st)和expected return。
- 前文中有推导,当取log关于函数的gradient过后,transition dynamic(转移动态方法)自身就被cancel out了,他并不是和环境模型有任何关系的
取了log后, p ( s t + 1 ∣ s t , a t ) p(s_{t+1}|s_t,a_t) p(st+1∣st,at)并不需要。 - 在这种情况下,如果知道环境函数是不是能改进策略优化呢?
Model-based Policy Optimization in RL
- 基于环境的策略函数优化受控制的影响非常深,因为控制过程也是为了优化controller。
- 在优化controller的时候,我们也是有一个环境模型,环境模型叫system dynamics(系统动力学),
s
t
=
f
(
s
t
−
1
,
a
t
−
1
s_t=f(s_{t-1},a_{t-1}
st=f(st−1,at−1有了之前的状态,采取控制的signal,得到下一个状态,所以可以把优化system dynamics引入到优化过程中。
c ( s t , a t ) c(s_t,a_t) c(st,at)是cost function,每一步控制希望cost function尽可能的小。条件condition是subject to(满足)system dynamics s t = f ( s t − 1 , a t − 1 s_t=f(s_{t-1},a_{t-1} st=f(st−1,at−1。在这个条件下优化action。所以==最优控制(Optimal Control)==和强化学习有很深的联系。
Optimal Control for Trajectory Optimization轨迹优化
- 要让车辆避开障碍物到达目标点,这就是个Optimal Control的优化过程。
- 如果system dynamics是已知的,就可以当成Optimal Control的问题。
- Cost function在强化学习里面可以当成reward function的负数(negative reward)
- 在解Optimal Control在控制理论里面有很多现成的算法,比如Linear-Quadratic Regulator(LQR,线性二次型调节器)以及iterative LQR(iLQR),定义好dynamic system后去解轨迹的优化,在每一步需要用什么action。
Model Learning for Trajectory Optimization: Algorithm 1
- 如果dynamic model本身是不已知的,就需要把trajectory optimization和model learning结合起来。
- 算法1
- 开始的时候random policy π 0 ( a t ∣ s t ) {\pi}_0(a_t|s_t) π0(at∣st)和环境进行交互得到很多轨迹 D = D= D={ ( s , a , s ′ ) i {(s,a,s')}_i (s,a,s′)i}.
- 利用学到的轨迹
D
D
D就可以学习出dynamics model
s
′
=
f
(
s
,
a
)
s'=f(s,a)
s′=f(s,a)(之前是没有的,现在有了估计出来的),再通过监督的方法minimize mean square loss:
- 当我们有了
f
(
s
)
f(s)
f(s)后就可以用trajectory organization调用
f
(
s
,
a
)
f(s,a)
f(s,a)就可以用optimal control的方法去优化:
从而得到每一步的action。
- 第二步是用了强监督的办法去估计模型
- 第三步直接调用 LQR, iLQR的方法计算出轨迹,同时进行轨迹优化和model learning.
Model Learning for Trajectory Optimization: Algorithm 2
- 算法1存在drifting的问题。
- 也就是说在轨迹进行优化的时候,如果在最早的时候出现一点误差,那么产生的轨迹可能就会离得非常远了,而且模型有可能会掉到一个之前没有采样到的区域。
- 所以我们对算法1加入==iteratively(迭代)==的过程变成算法2
- 算法2
- 开始的时候与算法1相同
- Loop(iteration的过程)
- 当得到轨迹后去估计dynamic model
- 当得到dynamic model后对轨迹进行优化
- 得到轨迹优化过后就可以产生action,产生action后就会得到一条新的轨迹。新的轨迹可能会落入之前 D D D并没有采样到的区域,就可以把这些数据也包含到我们的训练数据里面。
- 回到最前面的一步再重新学习dynamic model。这样一个iteration的过程就可以让dynamic model不停的更新,得到更准确的环境模型。
Model Learning for Trajectory Optimization: Algorithm 3
- 之前的算法在估计all planned action是在我们估计模型之前就可以执行的,这可能使得我们的轨迹一开始就离我们需要到达的轨迹非常远。
- 所以我们想进一步改进,把每一个点都进行planning,但是我们不是把整个轨迹都执行,而是只执行一步,把后面所有的轨迹都估计出来。这样的iterative过程就变成了非常有名的算法Model Predictive Control(MPC,模型预测控制),MPC是在自动驾驶以及控制里面非常常用的想法。
- MPC大致想法是对整个轨迹进行优化,但只执行最前面的那一步,当执行完那一步后我们再重新进行replan。
- 引入MPC的算法3
- 第一步相同
- Loop every N steps
- 估计dynamic model
- Loop each step
- 执行 f ( s , a ) f(s,a) f(s,a),用system dynamic来选择action
- 执行实际plan的第一步,得到状态 s ′ s' s′
- 将状态转移 ( s , a , s ′ ) (s,a,s') (s,a,s′)放到模型中去 D D D
Model Learning for Trajectory Optimization: Algorithm 4
- 最终的算法,把policy learning和model learning和optimal learning结合起来
- 算法4:learning model and policy together
- 第一步不变
- Loop
- 学习环境模型后
- 对环境模型 f ( s , a ) f(s,a) f(s,a)进行backpropogation(反向传播算法)。我们知道cost function是每一步都有cost,通过优化我们实际想得到的policy π θ ( a t ∣ s t ) {\pi}_{\theta}(a_t|s_t) πθ(at∣st)
- 通过我们实际想优化的policy π θ ( a t ∣ s t ) {\pi}_{\theta}(a_t|s_t) πθ(at∣st)进一步产生新的data放到data set D D D.
参数化模型
dynamics用什么模型去拟合?
- Global model:
s
t
+
1
=
f
(
s
t
,
a
t
)
s_{t+1}=f(s_t,a_t)
st+1=f(st,at)可以用大型的神经网络拟合
- 拟合这样的神经网络需要大量的data。
- 神经网络有很多参数,如果实际得到的状态转移并不能够得到很好的model,但是它本身可能更具有表现力。
- Local model: 可以利用随时间变化(time-varying)的linear-Guassion dynamics,不同的状态有不同的模型
- 好处:data efficient非常高,且可以表达模型的不确定性,因为本身是一个高斯模型,可以很好的表达不确定性。
- 如果data set非常大,每一个点都需要去估计local model,就会有很多local model.
- Local model是linear-Gaussion dynamics,可以简单定义为:
状态转移概率本身是高斯分布, f ( x t , u + t ) f(x_t,u+t) f(xt,u+t)可以定义为linear dynamic system。- 对linear dynamic system直接算gradient就可以得到local gradient:
local gradient可以直接估计出参数 A t A_t At和 B t B_t Bt,得到参数后就可以进行采样得到下一个状态。
- 对linear dynamic system直接算gradient就可以得到local gradient:
- 对Local Model进行拟合
- The probabilistic approximator model的好处是它会把它不确定的区域显示出来,最右边这个图我们可以看到有些区域是有观测的,区域不确定性是为0的;
- 对于灰色区域并没有得到观测点,不确定性是非常高的。
- 后面一部分得到的观测点是比较密集的,所以不确定性是比较低的。
- 这样也是time-varying linear-Gaussian的好处,可以对不确定性进行建模。
7.4 在机器人领域的应用
案例1:Model-based Robotic Object Manipulation(机械臂操纵)
-
PILCO算法,用于廉价的机械臂操纵中。
-
Learning to Control a Low-Cost Manipulator using Data-Efficient
Reinforcement Learning. RSS 2011
setup是一个简单的low cost机械臂,本身是误差非常大的,control是用了一个camera,第三方的摄像头放在比较远的位置,让机械臂从initial state到target state。 -
control signal是一个大致的向量
大致决定了机械臂里面五个motors(发动机)的状态。 -
state
是从camera里面决定的,是一个物体的3D位置 -
Policy 需要做一个映射:
从camera得到的3D object,到达一个四维的model control的信号。 -
所以定义了return是直接定义了cost function
当前状态和目标状态的距离作为return,是一个比较密集的return。 -
PILCO算法:把Gaussian process GP作为它的环境模型,dynamic pross
- 通过学习probabilistic GP 作为dynamic model;
- 得到dynamic model后,通过system dynamic进行优化,这样可以做一个policy improvement;
- 这样可以在样本很少的时候也可以得到一个很好的策略。
-
PILCO: A model-based and data-efficient approach to policy search.
Deisenroth and Rasmussen. ICML 2011 -
Demo link: http://mlg.eng.cam.ac.uk/pilco/
案例2:Model-based Robotic Object Manipulation(机械臂操纵)
- 把环境模型用于机械臂物体操作里面,
- Learning Contact-Rich Manipulation Skills with Guided Policy Search.
Sergey Levine and Pieter Abbeel. The best Robotics Manipulation
Paper award at ICRA 2015 - 利用Local models + Iterative LQR
- guided policy,通过global model产生的轨迹,训练global model
- policy model: π θ {\pi}_{\theta} πθ
- 用神经网络使用local model产生的轨迹来拟合global model,大致做了类似imitation learning的过程
得到linear Gaussian controller后,希望极小化global model的输出和local model的输出的distant(KL-divergence),这样也把之前的guided policy search结合起来了。
- Demo link: https://www.youtube.com/embed/mSzEyKaJTSU
- 把linear controller的知识让神经网络来学,神经网络可以把很多没有见过的状态都拟合。