最近一直在调研增强学习在机器人应用的文章, 看了一些文献, 其中看到15年IROS上的一篇论文[2], 大致浏览了一下, 在PR2上进行了实现, 较之前看到的不少论文在仿真上实现感觉要靠谱一些, 论文提供了视频DEMO, 下载下来看了一下, 直接感觉吊炸天了有没有. 随后就查了查他到底是属于哪个学校的哪个实验室. 最后聚焦到Sergey Levine身上. 进了Sergey Levine的个人主页, 看了他的一些成果, 瞬间吓尿了.
跟着Sergey看了他好几篇论文, 个人感觉, 每一篇论文都好长. 而且公式很多, 涉及的知识点更多, 这都不是重点. 重点是, 在Sergey的论文里面, 论文[2]中反复提到之前的工作 [3 - 5], [3]中提及[4 - 5]的工作, 一直这么往前延续, 当前的工作是建立在以前工作基础之上, 让人蛋疼无比.最后, 干脆心一横, 找出Sergey在13年发出的这篇论文, Guided Policy Search[1]进行阅读.
按照时间顺序, 依次看到几年的几篇论文, 花了很长的时间和精力. 作出了一些总结. 之后, 我会按照时间先后, 依次将我整理的一些资料发布出来, 我发现这方面中文资料几乎没有(或许是我没有找到-_-). 也方便后来者有一些中文的资料可以参考一下.
文档中并不是逐字按照原文翻译, 加入了我的一些理解, 以及省略了部分内容. 如果是想深入研究该算法的朋友, 最好还是以原文为准, 以我的资料为辅. 其中难免会有一些错误的地方, 有大神看到有理解错误的地方, 还请指出, 方便我对错误思想进行纠正, 也防止别人受了误导.
直接策略搜索(Direct Policy Search)能够有效的应对高维系统, 但是对于具有数以百计的参数的策略一直是具有挑战性的, 需要数量非常大的样本来进行学习, 并且容易陷入局部最优.本论文提出引导策略搜索算法(Guided Policy Search), 将轨迹优化(trajectory optimization)应用到直接策略学习中, 避免了陷入局部最优. 该论文提出, 可以使用差分动态规划(Differential Dynamic Programming)生成合适引导样本(Guiding samples), 并使用了一个新颖的正则化项, 提出正则化重要样本策略优化(regularized importance sampled policy optimization), 用来合并这些引导样本到策略搜索中. 论文最后, 进行了一系列仿真实验, 验证算法效果.
增强学习可以表述如下:
增强学习目的是找到一个最优的策略 π , 在一个随机的环境中控制agent. 将连续的时间划分为离散的时间步 t (time step t ), 在每一个时间步, 可以观察(observe)得到agent 的一个状态(state) xt , 依据该状态选择一个行为(action) π(ut∣xt) , 下一个时间步的状态, 不单依据当前时间步的状态和所选择的行为, 还依赖于状态转移概率 p(xt+1|xt,ut) , 最优策略 π 是能够获得从时间步1到时间步T最大累积回报的策略 maxπ∑Tt=1r(xt,ut) .
从时间步1到时间步 T 的可以得到 (xt,ut) 序列, 将其表述成一条轨迹 ζ , 使用 r(ζ) 表示沿着轨迹 ζ 的总回报值, 使用 π(ζ) 标记在策略 π 下轨迹 ζ 的概率.
策略梯度算法(Policy gradient method), 是通过直接优化用参数 θ 描述的策略 πθ , 使其对应的回报期望值最大, 从而得到最优策略所对应的参数 θ∗ .在实际操作过程中, 每一次迭代沿着 E[∇J(ζ)] 方向走一个步长, 直至收敛. 每一次梯度的估算使用下述公式.
其中, ∇logπθ(ζi) 能够分解到 ∑t∇logπθ(ut∣xt) , 因为状态转移概率 p(xt+1∣xt,ut) 不依赖与优化变量 θ .
上诉过程, 每一次迭代需要使用到评估器对目标期望函数进行梯度评估. 一般方法是, 使用当前策略产生一系列的样本, 然后使用这些样本来估计函数的当前的梯度, 这样会产生巨大的工作量, 让学习过程变得非常耗时, 并且每一次迭代产生的样本使用之后将会被丢弃, 下一次迭代并无法使用. 这类的算法不允许使用off-policy样本, 同时对于每一梯度步的步长选择也需要谨慎才能确保达到收敛.
重要采样(Importance Sampled)是一项技术, 使用另一个概率 q(x) 来估算关于概率 p(x) 的期望 Ep[f(x)] .数学表达如下:
其中, 如果使用的概率分布 q(x) 是无偏的, 则 Z=m .
通过Importance Sampled技术的使用, 允许我们使用off-policy样本在下述评估器中.
由于过去的回报值并不依赖于以后的回报值, 上述评估器的变量可以进一步分解如下:
其中, πθ(ζi,1:t) 标记 ζi 的前 t 步的概率, Zt(θ) 是正则化权重.
为了能够利用到更多可用的引导分布, 该论文follow之前的工作, q(ζ)=1n∑jqj(ζ) , 其中 qj(ζ) 是前一次迭代的策略或使用DDP构建的候选策略.
之前的工作中, 很多人都是直接优化Eq. (1), (2). 事实证明, 其效果往往不好.由此, 该论文引入了一个新颖的正则化项.改进目标函数如下:
之前一些工作中, 也采取用了Importance Sample的方式来重复利用off-policy样本, 但当策略参数维度很大时, 如此的局部优化很难找到一个比较满意的解. 为了解决这个问题, 论文论证如何利用DDP来补充off-policy样本集, 引导策略向高回报区域搜索, 以获得一个更好的解.
一个有效的引导分布, 是能够覆盖高回报区域, 同时避免大 q(ζ) 密度对应小的重要权重. 可以断言, 一个好的引导分布是高回报区域密度( ρ(ζ)∝expr(ζ) )的I-projection. ρ 的I-projection定义为: q∗=argminq∈PDKL(q∥ρ) , DKL(q∥ρ) 表示KL距离(KL-Divergence), 可用来衡量 q 与 ρ 两个分布的差异, 当差距越大时, KL距离越大, 当 q=ρ 时, KL距离为0. 定义为: DKL(q∥ρ)=∑qlogqρ=Eq[−r(ζ)]−H(q) . H 代表熵, 其中第一项强制 q 位于回报更高的区域, 第二项鼓励 q 具有更大的不确定性, 更broad distribution.
给定一条轨迹 (x¯1,u¯1),...,(x¯T,u¯T) , 并且, x^t=xt−x¯t,u^t=ut−u¯t , 动态函数和回报函数分别近似如下(典型的线性动态, 二阶代价形式的动态系统):
依据DDP算法中推到, 可以求得Q函数:
值函数:
线性策略:
从线性策略的表述中可以看到, 该控制器由两部分构成, 第一部分是均值部分, 第二部分是回馈部分, Kt 是回馈增益.
重复计算策略可以得到一条新轨迹.这个算法将会收敛到局部最优.
现, 将回报函数进行改进:
其中, p 是一个”passive dynamics”分布, 如果 p 是一个均匀分布, 则:
最优策略[6]:
其中, 值函数: Vt(xt)=log∫exp(Qt(xt,ut))dut .
在线性动态, 二次回报的环境下, Eq. (3) 是一个线性高斯, 均值是 g(xt) , 方差是 −Q−1uut . 则我们可以从形式为 πg(ut|xt)=g(ut;g(xt),−Q−1uut) 的随机策略中采样. 值得注意的是, 该策略的假设前提是线性动态, 且已知.
在前面的讨论中, 引导分布的构建只是获取高回报区域, 而没有思考当前策略. 我们可以简单的改进回报函数为 r¯(xt,ut)=r(xt,ut)+logπθ(ut∣xt) . 获取的结果分布是近似 ρθ(ζ)∝exp(r¯(ζ)) 的I-projection.
该论文构建多个DDP结果, 用以补充Importance Sample策略搜索算法的中的样本. 同时, 这些结果也可以通过人为演示或离线的样本规划获得. DDP策略 πg 是一个时变的控制器, 但仅对单一轨迹有效, 而最终的策略, 是需要具有更强健的鲁棒性. GPS算法可以看做是将一系列的轨迹集合(DDP生成或人为演示或离线规划生成)转换为控制器, 这个控制器应该能够被任意参数化, 如使用神经网络进行表达, 并反应出传感器或计算约束.
Guided Policy Search |
---|
01: 生成DDP结果: πg1,...,πgn |
02: 从 q(ζ)=1n∑iπgi(ζ) 中采样: ζi,...,ζm |
03: 初始化最优策略: θ∗←argmaxθlogπθ∗(ζi) |
04: 构建初始化样本集合 S={ πg1,...,πgn,πθ∗} |
05: for k=1:K |
06: 选择当前样本集: Sk⊂S |
07: θk←argmaxθΦSk(θ) |
08: 从 πθk 中获取样本增加到 Sk 和 S 中 |
09: 生成自适应引导样本(可选) |
10: 在 Sk 上评估 πθk 和 πθ∗ |
11: if πθk<πθ∗ |
12: θ∗←θk |
13: ωr↓ |
14: else |
15: ωr↑ |
16: 从 πθ∗ 中重采样(可选) |
17: end if |
18: end for |
19: return πθ∗ |
整体算法伪代码整理如上表所示.
第1行, 通过DDP算法构建初始结果, 也可以通过人为演示初始化结果;
第2行, 初始化引导样本;
第3行, 使用这些引导样本初始化初始最优策略参数 θ∗ .;
第4行, 样本集 S 由引导样本和初始最优样本初始化;
第6行, 如果样本集 S 过大, 则选择其子集 Sk , 实际操作中, 论文简单选择当前最优策略 πθ∗ 下高权重的样本与构建的引导样本.
第7行, 在样本集上使用LBFGS算法优化目标函数 Φ(θ) , 定义于Eq. (3), 获得优化参数 θk , 论文重复优化两次, 一次从当前最优参数出发, 另一次是从当前最大对数似然估计的参数开始.
第8行, 增加 πθk 到样本集;
第9行, 如果采用自适应引导分布, 则在此步完成自适应工作;
第10行, 使用Eq. (2) 来评估当前优化策略 πθk 和当前最优策略 πθ∗ 的优劣;
第12, 13行, 若当前优化策略更好, 则更新最优策略 θ∗←θk , 减小 ωr ;
第15, 16行, 若当前优化策略更差, 则增大 ωr . 可选的从 πθ∗ 中重采样, 解决因样本不好而导致优化失败的问题..
高的正则化权重, 使得下一次优化时更接近于该样本, 以使评估更加精确, 在实际操作中, 一直保持 ωr∈[10−6,10−1] , 调整因子为10.
GPS算法提供了公开的实现版本, 代码实现模块化很好, 算法部分由Python实现, 分别提供了三种不同平台的仿真接口, 可运行于ROS中仿真器Gazebo, 策略的实现也给出了几种不同的方式. 当然, 该代码的实现已经不依赖于该论文, 其中涉及到更多的改进和提升. 大家可以查看作者的其他几篇论文. 推荐看的下一篇论文是Learning Neural Network Policies with Guided Policy Search under Unknown Dynamics.
这俩部分我就没有细看了, 也就没有形成文档. 因为作者是在仿真平台上做的, 并且这篇论文已经是几年前的成果了. 后面还有好几篇等着我, 所以这个阶段的讨论和实验就不那么重要了.
GPS算法[1], 由Levine 在13年提出, 使用DDP产生处于高回报区域的引导样本, 辅助策略搜索. 类似然比率评估器的重要采样技术用于合并这些引导样本到策略搜索中. GPS算法使用model-free的一些方法, 并结合model-based的DDP生成引导样本对学习过程进行引导. 可以将其视为将引导轨迹集合转换为一个控制器的过程.
待学习的策略, 是以参数来表达的某种一般性,灵活的模型, 比如神经网络. 直接策略搜索, 目标函数形式化为Eq. (1), 通过on-policy的方式采样来估计梯度, 使用梯度下降的方法, 对参数进行优化, 得到最优参数的策略. GPS改进目标函数为 Eq. (3), 通过Importance Sample技术, 再加入一个新颖的正则化项构成该目标函数. 允许算法使用off-policy样本, 大大缩减了策略搜索时间, 并且更加充分的利用之前策略采样得到的样本. 但由于这样学习到的策略很容易陷入局部最优, 不能学习到满意的策略. 论文中, 又结合轨迹优化中最优控制技术, 通过DDP算法构建覆盖高回报区域的引导样本. 构建引导样本的过程中, 如果考虑之前策略对引导样本的影响, 提出自适应的引导样本生成(在某些条件下具有不错的效果). 将生成的引导样本加入训练样本集中, 用于引导目标函数向高回报区域搜索最佳的策略.
该论文中, 系统状态 xt 由机器人Configuration和环境构成, 如关节角度, 运动速度, 距目标物体的距离等. 显然, 系统状态是全状态, 需要依赖一些更为低级别的模块, 如距目标物体的距离, 需要已有的视觉模块进行评估. 系统输入或机器人行为 ut 定义为关节力矩. 机器人自身的运动, 需要依赖低级别的PD控制等. 另一方面, 该算法中所使用的DDP方法产生引导样本, 假设前提是线性动态, 并且已知. 不能运用到实际系统中, 因为实际系统常常都是非线性动态模型, 并且一般都是未知的. 最终学习到的控制器, 仅能应对部分简单机器人任务, 对于非静态学习问题, 复杂组合任务等, 都极具挑战性. 所以算法均是在仿真平台上的简单模型上进行验证.
下述部分, 是我在阅读这篇论文时, 查阅的一些其他资料, 几乎都来自与Wiki.
LQ (Linear Quadratic) 控制问题是经典的最优控制问题. 其动态函数是一阶线性函数, 代价函数是二阶函数.数学描述如下:
代价函数:
Finite-horizon, continuous-time LQR
对于连续时间系统, 定义 t∈[t0,t1] , 则:
线性动态函数:
二阶代价函数:
由回馈控制法则可知, 欲使代价函数最小, 则:
其中, K=R−1(BTP(t)+NT) , P 由 ATP(t)+P(t)A−(P(t)B+N)R−1(BTP(t)+NT)+Q=−P˙(t) , P(t1)=F(t1) 计算得到.
Finite-horizon, discrete-time LQR
对于离散时间系统,
线性动态函数:
二阶代价函数:
由回馈控制法则可知, 欲使代价函数最小, 则:
其中, Kk=(R+BTPkB)−1(BTPkA+NT) , Pk 可反向迭代计算, Pk−1=ATPkA−(ATPkB+N)(R+BTPkB)−1(BTPkA+NT)+Q 计算得到, 终止条件 PN=Q .
在控制理论中, 线性-二次高斯控制问题(Linear-quadratic-gaussian[8])是最优控制中LQ问题的一个基本问题.LQG关注含有高斯白噪声的不确定性系统, 状态信息不完整, 并且满足二阶代价函数.
LQG 控制器是对Kalman Filter和Linear quadratic regular(LQR)的简单合并. LQG控制可以应用到线性时变系统和线性时不变系统.LQG问题有如下数学描述:
Continuous time
动态函数:
其中, x(t) 是系统状态控制量, u(t) 是系统输入控制量. y(t) 是系统可测量的输出信号量. v(t) 是系统噪声, 服从高斯白噪声. w(t) 是系统测量噪声, 同样服从高斯白噪声.
代价函数:
使用LQG控制器解决LQG问题, 给定等式如下:
其中, 在每一个时刻 t , 滤波器使用过去的评估值和当前输入对系统状态 x(t) 产生一个新的状态评估 x^(t) .
K(t) 是对应于Kalman Filter的Kalman增益(Kalman gain).计算公式如下:
其中, W(t) , V(t) 分别是 w(t) , v(t) 的密度矩阵.
L(t) 是回馈增益矩阵, 计算公式如下:
观察上诉两个Riccati微分方程(Riccati differential equation), 第一个微分方程是前向的(running forward in time), 第二个微分方程式后向的(running backward in time). 这种相似性被称为对偶性(duality).
第一个Riccati微分方程解决线性-二次评估问题(linear-quadratic estimation problem), 第二个Riccati微分方程解决线性-二次规整问题(linear-quadratic regular problem). 两个对偶, 合并共同解决LQG问题.因此LQG可以独立的分解为LQE和LQR问题.
Discrete time
离散时间LQG问题与连续时间LQG问题类似, 数学描述如下:
动态函数:
代价函数:
离散时间LQG控制器:
其中, kalman增益项 Ki 的计算公式如下:
其中, 反馈增益矩阵计算公式如下:
差分动态规划(Differential Dynamic Programming[9]), 是轨迹优化(trajectory optimization)类中最优控制(optimal control)算法.
Finite-horizon discrete-time problems
动态函数:
描述时刻 i 的状态 xi 在给定控制量 ui 向时刻 t+1 演化的过程.
代价函数:
轨迹最优, 就是给定初始状态 x0 , 找到一个控制序列 U∗ 使得 J0 最小, 而非针对于所有可能的初始条件. U∗ 即为该最优控制问题的解.数学表达如下, U∗=argminUJ0(x,U) .
Dynamic programming
设 Ui={ ui,ui+1,...,uN−1} 是部分控制量序列以及cost-to-go Ji :
则, 在时刻 i 的最优cost-to-go或值函数定义如下:
令 V(x,N)=ℓf(xN) , 则可动态规划如下:
显然上诉规划式是一个Bellman等式.
Differential dynamic programming
首先, 我们定义 Q 函数:
扩展到二阶如下:
上述公式中下标代表偏导.各个偏导可以使用下述公式计算:
对上式的二阶展开求最小可得: δu∗=argminδuQ(δu,δx)=−Q−1uu(Qu+Quxδx) ,则可得开环项(open-loop term) k=−Q−1uuQu , 回馈增益项(feedback gain term) K=−Q−1uuQux . 带回二次展开式, 可得:
使用上述公式, 递归的从 i=N−1 到 i=1 计算 V(i) 的局部二次模型, 以及控制修正量 { k(i),Ki} , 执行一次反向pass(the backward pass), 初始值 V(x,N)=ℓf(xN) . 反向pass完成后, 再从头运行一次正向pass(the forward pass)即可计算得到一条新轨迹.
如此, 前向pass, 反向pass直至收敛.
[1] Sergey Levine, Vladlen Koltun, Guided Policy Search, ICML 2013
[2] Weiqiao Han, Sergey Levine, Pieter Abbeel, Learning Compound Multi-Step Controllers under Unknown Dynamics, IROS 2015
[3] Sergey Levine, Chelsea Finn, Trevor Darrell, Pieter Abbeel, End-to-End Training of Deep Visuomotor Policies, JMLR 17, 2016
[4] Sergey Levine, Pieter Abbeel. Learning Neural Network Policies with Guided Policy Search under Unknown Dynamics, NIPS, 2014
[5] Sergey Levine, Nolan Wagener, Pieter Abbeel, Learning Contact-Rich Manipulation Skills with Guided Policy Search, ICRA 2015
[6] Ziebart, Modeling purposeful adaptive behavior with the principle of maximum causal entropy, Ph.D thesis, Carnegie Mellon University, 2010
[7] Wikipedia contributors. “Linear-quadratic regulator.” Wikipedia, The Free Encyclopedia. Wikipedia, The Free Encyclopedia, 15 May. 2016. Web. 23 May. 2016
[8] Wikipedia contributors. “Linear-quadratic-Gaussian control.” Wikipedia, The Free Encyclopedia. Wikipedia, The Free Encyclopedia, 18 May. 2016. Web. 23 May. 2016
[9] Wikipedia contributors. “Differential dynamic programming.” Wikipedia, The Free Encyclopedia. Wikipedia, The Free Encyclopedia, 28 Jan. 2016. Web. 23 May. 2016