文章目录
本文为笔者观看伯克利大学CS285 2019 MB部分课程结合自己理解所做笔记。如果错误请指出。欢迎讨论。
课程源地址
文章推导过程、公式皆来自于课堂ppt
1. MB概念引出
1.1 概念
强化学习的目标就是希望agent做出的动作序列得到最多的累计奖励,假设我们知道两个状态之间的转换概率 p ( s t + 1 ∣ s t , a t ) p(s_{t+1}|s_t,a_t) p(st+1∣st,at),那么我们的算法可以表示为:
上图中第一个式子是状态动作序列 τ \tau τ的概率。优化agent训练的依据就是最大化序列奖励的数学期望。
Model-Based reinforcement learning就是学习动力学转换概率,然后算出如何去选择动作。
1.2 MB三个阶段
- 知道了动力学模型,如何做出好的决策,最优控制和计划。Optimal Control and Planning
- 如何学习一个描述动力学环境的模型model
- 如何直接学习策略,不使用控制和计划。
2. Optimal Control and Planning
2.1 三种情况
概念辨别closed-loop和open-loop
close-loop是一个动作进行一次交互,得到新的状态。
open-loop是指观察第一个状态,然后返回一系列动作,这些都是agent自己想的。
1. Deterministic情况下open-loop
Deterministic 是指下一个动作
直接通过状态
和当前状态动作
产生。得到初始状态
s
1
s_1
s1,进而agent想象出接下来的一些列动作:
这里f包括了环境。你的模型f通过状态和动作就能直接产生下一个动作。
动作序列的产生是依据最大化累计奖励。
2. 随机开循环Stochastic open-loop case
环境模型是随机的,下一状态是基于概率产生的,即通过model我们得到的是 p ( s t + 1 ∣ s t , a t ) p(s_{t+1}|s_t,a_t) p(st+1∣st,at)下一个状态的概率,所以我们在计划动作序列的时候,由于知道的是概率,所以在计划动作序列的时候,是利用累计奖励的数学期望。
3. 随机闭循环
和开循环相比,引入了策略函数 π \pi π。那么下一个动作产生的概率为 π ( a t ∣ s t ) \pi(a_t|s_t) π(at∣st)。我们使用最大化累计奖励来优化 π \pi π的参数。
- 如果策略是用神经网络表示的,则可以得到全局最优。
- 如果适应时变线性函数(time-varying linear),则为局部最优函数。(较为简单)
2.2 优化问题
问题抽象
上述的三种情况问题进行抽象,我们动作序列的优化可以成:
a
1
.
.
.
a
T
=
arg
max
a
1
.
.
.
a
T
J
(
a
1
.
.
.
a
T
)
a_1...a_T = \arg \max_{a_1...a_T} J(a_1...a_T)
a1...aT=arga1...aTmaxJ(a1...aT)
J代表deterministic和stochastic open-loop的优化项,我们暂时不用考虑具体是哪个。
进而写成:
A
=
arg
max
A
J
(
A
)
A = \arg \max_A J(A)
A=argAmaxJ(A)
A代表动作序列 a 1 , a 2 . . . a T a_1,a_2...a_T a1,a2...aT
2.3 优化方法
2.3.1 CEM
CEM: Cross-Entropy method
如何能找到最佳的动作序列的?
最简单的想法:猜测->验证。即
-
从某个分布中(例如均一分布,就是随机选取)选择N个组动序列 A 1 . . . A N A_1...A_N A1...AN
-
基于 arg max J ( A ) \arg \max J(A) argmaxJ(A)选择最大的那组动作序列。
CEM的思想:
假设当动作序列 A 1 . . . . A_1.... A1....服从分布p
- 采样 A 1 . . . A N A_1...A_N A1...AN依照分布p(A)
- 评估这N组动作序列 J ( A 1 ) . . . J ( A N ) J(A_1)...J(A_N) J(A1)...J(AN)
- 从N组序列中选择M个效果最好的 A 1 ∗ . . . A M ∗ A_{1}^*...A_{M}^* A1∗...AM∗,这里M<N
- 用 A 1 ∗ . . . A M ∗ A_{1}^*...A_{M}^* A1∗...AM∗去重新拟合分布p(A)。使得下次我们按照这个分布的采样能够得到更高的 J 。跳转到步骤1继续循环。
通常来说使用高斯分布能够得到更好的效果。随着CEM的迭代,p能更好的拟合J的分布。
优点
- 如果并行就非常快
- 十分简单
缺点
- 高纬度限制,超过100维就很难了。
- 只能用在开循环的规划(open-loop planning)
2.3.2 MCTS
对于离散问题的规划,可以使用搜索树的思想。
如果从起始状态开始,每一个绘制出每一个动作和状态的树图,那么找到最理想的动作序列就很容易了。
但是叶节点的数量是指数增长的,如果想要遍历所有路径,对于大规模问题来说显然是不实际的。
所以我们需要对数进行剪枝处理。
MCTS的基本流程:(循环)
- 使用TreePolicy(s1)策略选择一个叶节点 s l s_l sl
- 使用DefaultPolicy( s l s_l sl)评估该叶节点
- 更新从 s 1 s_1 s1到 s l s_l sl所有的价值,并且在s1装填选择最好的动作。回到1第一步。
其中TreePolicy是选择叶节点的一种方法,以UCT TreePolicy( s t s_t st)为例:
-
如果 s t s_t st下的某些动作没有尝试,那么就选择一个新的动作 a t a_t at
-
如果所有的动作都尝试过了,那么就选择子节点 S c o r e ( s t + 1 ) Score(s_{t+1}) Score(st+1)最高的。
S c o r e ( s t ) = Q ( s t ) N ( s t ) + 2 C 2 ln N ( s t − 1 ) N ( s t ) Score(s_t) = \frac{Q(s_t)}{N(s_t)} + 2C \sqrt{\frac{2\ln N(s_{t-1})}{N(s_t)}} Score(st)=N(st)Q(st)+2CN(st)2lnN(st−1)Q为 s t s_t st节点的状态动作价值
N为 s t s_t st节点的访问次数
DefaultPolicy()如果很好,就能得到一个很好的价值估计。实际上经常使用随机策略,因为容易使用。
例:
- 第一次迭代:选择动作0,到达s2,通过DefaultPolicy的评估方法,得到该节点Q = 10, N = 1;
-
第二次迭代:然后依据TreePolicy,动作2没有选过,所以第二次循环选择动作2,评估得到Q = 12, N=1
-
第三次迭代,动作1,2都试过,所以我们选择Score大的,计算发现a1=1的叶节点Score较大。选择这个节点。然后发现这个节点还没有被探索,我们就选择一个动作到达s3。评估Q = 10 , 这个10代表这个s3以后的累计奖励是10, N = 1
然后执行算法第3步,回溯这条路线的数据。更新a1,s2的Q = 10+12 = 22, N = 2;
- 第四轮次代:s1开始,选择的Score值较大的a1= 0; 然后在该状态下执行一个动作a2=0。同第三次迭代。
-
第五轮迭代:
-
第六轮迭代:
材料阅读
- Browne, Powley, Whitehouse, Lucas, Cowling, Rohlfshagen, Tavener,
Perez, Samothrakis, Colton. (2012). A Survey of Monte Carlo Tree
Search Methods案例分析材料:
Deep Learning for Real-Time Atari Game Play Using Offline Monte-Carlo Tree Search Planning
- Imitation learning from MCTS
2.2.3 LQR
接下来的字母表示有些改动:
我们是否可以直接使用求导的方式来优化问题呢?
shoot method:
只对动作u进行优化,即算法只通过改变u来达到最优值。对状态x没有控制。状态x是u的函数。只要动作改变,就会产生一个新的不同序列。
collocation method:
优化目标有状态x和动作u两个自变量,这两个自变量之间有额外的限制。这样虽然引入更多变量,但是波动较小
LQR属于shooting method,它的定义如下:
L:对model的假设是一个线性方程
Q:损失函数是二次的
R:Regression
中间推导过程详见ppt
最终算法描述:
上述针对的是deterministic,如果是stochastic环境,使用高斯分布去拟合。
原本的 x t + 1 = f ( x t , u t ) x_{t+1} = f(x_t,u_t) xt+1=f(xt,ut),那么介入高斯分布,则 p ( x t + 1 ∣ x t , u t ) = N ( f ( x t , u t ) , ∑ t ) p(x_{t+1}|x_t,u_t) = N(f(x_t,u_t), \sum_t) p(xt+1∣xt,ut)=N(f(xt,ut),∑t)
LQR可以用在随机闭循环中。
2.2.4 DDP/Iterative LQR
这是LQR在非线性环境的使用。
LQR假设动力学环境是线性的,且cost是二次的。把非线性系统近似为一个线性的二次系统,得到如下:
这个是利用泰勒展开式在 ( x ^ t , u ^ t ) (\hat x_t , \hat u_t) (x^t,u^t)处展开,保留前两项。
·
注:泰勒展开式公式:**
Iterative LQR算法描述:
直观感受:在局部使用线性方程去拟合非线性的方程。
LQR原理:
事实上,iLQR是牛顿法求解
的一种近似方法。
牛顿法计算 min x g ( x ) \min_xg(x) minxg(x)迭代原理:
真正使用牛顿法求解,还需要对使用second order dynamics approximation(红框那项)
具体阅读材料:
- Mayne, Jacobson. (1970). Differential dynamic programming.
• Original differential dynamic programming algorithm. - Tassa, Erez, Todorov. (2012). Synthesis and Stabilization of Complex Behaviors through Online Trajectory Optimization.
Practical guide for implementing non-linear iterative LQR. - Levine, Abbeel. (2014). Learning Neural Network Policies with Guided Policy Search under Unknown Dynamics.
• Probabilistic formulation and trust region alternative to deterministic line search
案例材料
Nonlinear model-predictive control :
-
Synthesis and Stabilization of Complex Behaviors through Online Trajectory Optimization, Yuval Tassa etc.
-
Synthesis of Complex Behaviors with Online Trajectory Optimization, Yuval Tassa etc.