Model-Based RL-基于模型的强化学习-理论详解1:最优控制和规划问题(Optimal Control and Planning)/ CEM/MCTS/LQR

本文为笔者观看伯克利大学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+1st,at),那么我们的算法可以表示为:

image-20200708081237844

上图中第一个式子是状态动作序列 τ \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自己想的。

image-20200708093911025

1. Deterministic情况下open-loop

Deterministic 是指下一个动作直接通过状态当前状态动作产生。得到初始状态 s 1 s_1 s1,进而agent想象出接下来的一些列动作:

image-20200708091927931

这里f包括了环境。你的模型f通过状态和动作就能直接产生下一个动作。

动作序列的产生是依据最大化累计奖励。

2. 随机开循环Stochastic open-loop case

image-20200708092127066

环境模型是随机的,下一状态是基于概率产生的,即通过model我们得到的是 p ( s t + 1 ∣ s t , a t ) p(s_{t+1}|s_t,a_t) p(st+1st,at)下一个状态的概率,所以我们在计划动作序列的时候,由于知道的是概率,所以在计划动作序列的时候,是利用累计奖励的数学期望。

3. 随机闭循环

image-20200708094122302

和开循环相比,引入了策略函数 π \pi π。那么下一个动作产生的概率为 π ( a t ∣ s t ) \pi(a_t|s_t) π(atst)。我们使用最大化累计奖励来优化 π \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

如何能找到最佳的动作序列的?

最简单的想法:猜测->验证。即

  1. 从某个分布中(例如均一分布,就是随机选取)选择N个组动序列 A 1 . . . A N A_1...A_N A1...AN

  2. 基于 arg ⁡ max ⁡ J ( A ) \arg \max J(A) argmaxJ(A)选择最大的那组动作序列。

CEM的思想:

假设当动作序列 A 1 . . . . A_1.... A1....服从分布p

  1. 采样 A 1 . . . A N A_1...A_N A1...AN依照分布p(A)
  2. 评估这N组动作序列 J ( A 1 ) . . . J ( A N ) J(A_1)...J(A_N) J(A1)...J(AN)
  3. 从N组序列中选择M个效果最好的 A 1 ∗ . . . A M ∗ A_{1}^*...A_{M}^* A1...AM,这里M<N
  4. 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

对于离散问题的规划,可以使用搜索树的思想。

如果从起始状态开始,每一个绘制出每一个动作和状态的树图,那么找到最理想的动作序列就很容易了。

但是叶节点的数量是指数增长的,如果想要遍历所有路径,对于大规模问题来说显然是不实际的。

image-20200708112305406

所以我们需要对数进行剪枝处理。

MCTS的基本流程:(循环)

  1. 使用TreePolicy(s1)策略选择一个叶节点 s l s_l sl
  2. 使用DefaultPolicy( s l s_l sl)评估该叶节点
  3. 更新从 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(st1)

    Q为 s t s_t st节点的状态动作价值

    N为 s t s_t st节点的访问次数

DefaultPolicy()如果很好,就能得到一个很好的价值估计。实际上经常使用随机策略,因为容易使用。

例:

  • 第一次迭代:选择动作0,到达s2,通过DefaultPolicy的评估方法,得到该节点Q = 10, N = 1;

image-20200708113712780

  • 第二次迭代:然后依据TreePolicy,动作2没有选过,所以第二次循环选择动作2,评估得到Q = 12, N=1

    image-20200708113859723

  • 第三次迭代,动作1,2都试过,所以我们选择Score大的,计算发现a1=1的叶节点Score较大。选择这个节点。然后发现这个节点还没有被探索,我们就选择一个动作到达s3。评估Q = 10 , 这个10代表这个s3以后的累计奖励是10, N = 1

image-20200708114301885

​ 然后执行算法第3步,回溯这条路线的数据。更新a1,s2的Q = 10+12 = 22, N = 2;

image-20200708114758435

  • 第四轮次代:s1开始,选择的Score值较大的a1= 0; 然后在该状态下执行一个动作a2=0。同第三次迭代。

image-20200708115130502

  • 第五轮迭代:

    image-20200708115206755

  • 第六轮迭代:

    image-20200708115257549

材料阅读
  1. Browne, Powley, Whitehouse, Lucas, Cowling, Rohlfshagen, Tavener,
    Perez, Samothrakis, Colton. (2012). A Survey of Monte Carlo Tree
    Search Methods

案例分析材料:

  1. Deep Learning for Real-Time Atari Game Play Using Offline Monte-Carlo Tree Search Planning

    ​ - Imitation learning from MCTS

2.2.3 LQR

接下来的字母表示有些改动:

image-20200709080034231

image-20200709080053693

我们是否可以直接使用求导的方式来优化问题呢?

shoot method:

只对动作u进行优化,即算法只通过改变u来达到最优值。对状态x没有控制。状态x是u的函数。只要动作改变,就会产生一个新的不同序列。

image-20200709080259399

collocation method:

优化目标有状态x和动作u两个自变量,这两个自变量之间有额外的限制。这样虽然引入更多变量,但是波动较小

image-20200709080526950

LQR属于shooting method,它的定义如下:

image-20200709080755678

L:对model的假设是一个线性方程

Q:损失函数是二次的

R:Regression

中间推导过程详见ppt

最终算法描述:

image-20200709084320099

上述针对的是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+1xt,ut)=N(f(xt,ut),t)

image-20200709085724385

LQR可以用在随机闭循环中。

2.2.4 DDP/Iterative LQR

这是LQR在非线性环境的使用。

image-20200709090733425

LQR假设动力学环境是线性的,且cost是二次的。把非线性系统近似为一个线性的二次系统,得到如下:

这个是利用泰勒展开式在 ( x ^ t , u ^ t ) (\hat x_t , \hat u_t) (x^t,u^t)处展开,保留前两项。

image-20200709090744412·

注:泰勒展开式公式:**

image-20200709091256147

image-20200709091615523

Iterative LQR算法描述:

image-20200709091642646

直观感受:在局部使用线性方程去拟合非线性的方程。

LQR原理:

事实上,iLQR是牛顿法求解

image-20200709092255977

的一种近似方法。

牛顿法计算 min ⁡ x g ( x ) \min_xg(x) minxg(x)迭代原理:

image-20200709092929773

真正使用牛顿法求解,还需要对使用second order dynamics approximation(红框那项)

image-20200709092433991

具体阅读材料:

  1. Mayne, Jacobson. (1970). Differential dynamic programming.
    • Original differential dynamic programming algorithm.
  2. Tassa, Erez, Todorov. (2012). Synthesis and Stabilization of Complex Behaviors through Online Trajectory Optimization.
    Practical guide for implementing non-linear iterative LQR.
  3. 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 :

  1. Synthesis and Stabilization of Complex Behaviors through Online Trajectory Optimization, Yuval Tassa etc.

  2. Synthesis of Complex Behaviors with Online Trajectory Optimization, Yuval Tassa etc.

  • 7
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于这个问题,我可以提供一些基本的信息: 线性规划是一种数学建模方法,通过定义目标函数和限制条件,求解线性不等式系统的最大值或最小值。 在Matlab中,可以使用线性规划工具箱函数linprog来求解线性规划问题。一般的步骤为定义目标函数、使用约束条件定义问题、调用linprog求解问题并输出结果。 对于LINGO软件,它也可以用来解决线性规划问题。LINGO是一种商业软件,提供了图形用户界面和数学建模语言Lindo。在LINGO中,可以直接输入目标函数和约束条件,并利用LINGO的求解器求解问题,同时也可以输出结果。 下面是一个简单的线性规划问题例子,使用Matlab和LINGO分别求解: 题目: 最大化x1 + 2x2,限制条件:x1 + x2 <= 5,2x1 + x2 <= 8,x1, x2 >= 0。 Matlab的代码和结果如下: ``` f = [-1, -2]; A = [1, 1; 2, 1]; b = [5; 8]; lb = [0; 0]; [x, fval] = linprog(f, A, b, [], [], lb); disp('The optimal solution and objective function value using Matlab are:'); disp(x); disp(fval); ``` 结果: ``` The optimal solution and objective function value using Matlab are: 3.0000 2.0000 -7.0000 ``` LINGO的代码和结果如下: ``` max = x1 + 2*x2; subject to x1 + x2 <= 5 2*x1 + x2 <= 8 x1 >= 0 x2 >= 0 end ``` 结果: ``` Optimal Solution: 3.000 2.000 Objective Value: -7.000 ``` 希望这些信息对你有所帮助,如果需要进一步了解线性规划问题的解决方法和技巧,可以查找相关资料或者咨询专业人士。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值