距离上次更新已经 2199 天了,文章内容可能已经过时。

课程视频地址:http://open.163.com/special/opencourse/machinelearning.html

课程主页:http://cs229.stanford.edu/

更具体的资料链接:https://www.jianshu.com/p/0a6ef31ff77a

笔记参考自中文翻译版:https://github.com/Kivy-CN/Stanford-CS-229-CN

这一讲介绍了LQR以及Ricatti方程。

Part XIV LQR,DDP和LQG

LQR,DDP和LQG分别代表线性二次调节,微分动态规划和线性二次高斯分布。

1.有限范围的MDP

在之前关于强化学习的讲义中,我们在简化的情形中定义了马尔可夫决策过程(MDP)并涵盖了价值迭代/策略迭代。更具体地说,我们引入了最优Bellman方程,该方程定义了最优策略π的最优价值函数Vπ

(2)Vπ(s)=R(s)+maxaAγsSPsa(s)Vπ(s)

​ 回想一下,从最优价值函数,我们能够根据下式恢复最优策略π

π(s)=argmaxaAsSPsa(s)V(s)

​ 在这部分讲义中,我们将把自己置于更一般的情形中:

  • 1.我们想要给出对离散和连续情况都有意义的公式。因此我们按照

    EsPsa[Vπ(s)]

    而不是

    sSPsa(s)Vπ(s)

    来给出公式。上式表示对下一个状态的价值函数的期望。在有限状态的情形下,我们可以将期望重写为关于状态的求和。 在连续的情况下,我们可以将期望重写为一个积分。 符号sPsa表示状态s是从分布Psa取样得来的。

  • 2.我们假设奖励取决于状态和行动。 换句话说,R:S×AR。这意味着先前用于计算最优行动的机制被改变为

    π(s)=argmaxaAR(s,a)+γEsPsa[Vπ(s)]
  • 3.假设我们有一个有限范围的MDP而不是一个无限范围的MDP,它将被定义为如下一个元组

    (S,A,Psa,T,R)

    其中T>0时间范围(例如T=100)。在这种情形下,我们的对收益的定义将(略微)不同:

    R(s0,a0)+R(s1,a1)+...+R(sT,aT)

    而不是(无限范围的情形)

    R(s0,a0)+γR(s1,a1)+γ2R(s2,a2)+...=t=0R(st,at)γt

    折扣因子γ为什么消失了呢? 请记住,γ的引入(部分)是因为必须确保无限和是有限的并且是定义良好的。 如果奖励的上界为R¯,那么收益的上界为

    |t=0R(st,at)γt|R¯t=0γt

    这里我们得到了几何级数!而在有限范围MDP中,由于收益是有限和,因此不再需要折扣因子。

    在新的假设下,事情表现非常不同。 首先,最优政策π可能是非平稳的,这意味着它会随着时间而变化。换句话说,现在我们有

π(t):SA

​ 其中上标(t)表示第t步的策略。 有限范围MDP的动态根据策略π(t)按如下方式进行:我们从某个状态s0开始,根据我们在时间步骤0的策略采取某个动作a0:=π(0)(s0)。MDP转移到后继状态s1s1服从分布Ps0a0。 然后,我们可以根据我们在第1步的新政策选择另一个行动a1:=π(1)(s1),依此类推……

为什么最优政策恰好在有限时间范围内不稳定? 直观地说,由于我们要采取一些行动,我们可能希望根据我们在环境中的位置以及我们剩下多少时间采取不同的策略。 想象一个有2个目标的网格,奖励分别为+1+10。 一开始,我们可能希望采取行动以实现+10目标。 但是如果经过一些步骤后,动态以某种方式推动我们更接近+1目标并且我们没有足够的步骤来达到+10目标,那么更好的策略是瞄准+1目标。。

  • 4.这种观察允许我们使用依赖时间的动态

    st+1Pst,at(t)

    这意味着转移分布Pst,at(t)随时间改变。关于R(t)可以说同样的事情。 请注意,这样的设定是现实生活中更好的模型。 结合之前的注记,我们将使用以下通用公式来表达我们的有限范围MDP

    (S,A,Psa(t),T,R(t))

    注记:注意,上述公式相当于将时间加入状态。

    策略π在第t个时间戳的价值函数和之前的定义一样,作为策略π从状态s出发生成的轨迹的期望。

    Vt(s)=E[R(t)(st,at)+...+R(T)(sT,aT)|st=s,π]

现在的问题是,在有限范围的设定下,我们如何找到最优价值函数

Vt(s)=maxπVtπ(s)

​ 事实证明,Bellman的值迭代方程是为动态规划而制定的。 这可能并不令人意外,因为贝尔曼是动态规划的先驱之一,而贝尔曼方程与该领域密切相关。 为了理解我们如何通过采用基于迭代的方法来简化问题,我们进行以下观察:

  • 1.注意到,在策略结束时(即在第T个时间戳),最优值是显而易见的

    (1)sS:VT(s):=maxaAR(T)(s,a)
  • 2.对于其他的时间戳0t<T,如果我们知道下一个时间戳的最优价值函数Vt+1,那么我们有

    (2)t<T,sS:Vt(s):=maxaA[R(t)(s,a)+EsPsa(t)[Vt+1(s)]]

​ 有了这些观察结果,我们可以提出一个聪明的算法来求解最优值函数:

  • 1.利用公式(1)计算VT

  • 2.对t=T1,,0:

    ​ 根据公式(2),利用Vt+1计算Vt

旁注:我们可以将标准值迭代解释为这种一般情况不记录时间的特例。 事实证明,在标准设置中,如果我们进行T步值迭代,我们得到最优值迭代(几何收敛)的γT倍近似。 有关以下结果的证明,请参阅问题集4:

定理:令B表示Bellman更新,||f(x)||:=supx|f(x)|。如果Vt表示第t步的价值函数,那么:

||Vt+1V||=||B(Vt)V||γ||VtV||γt||V1V||

​ 换句话说,Bellman算子Bγ-contracting算子。

2.线性二次调节(LQR)

在本节中,我们将介绍第1节中描述的有限范围情形的特殊情况,其精确解(易于)处理。 该模型广泛用于机器人技术,许多问题的常用技术是将公式简化为这个框架。(具体处理方法为泰勒展开)

​ 首先,让我们描述模型的假设。 我们将自己置身于连续的情形中,其中

S=Rn,A=Rd

​ 然后我们假设线性变换(带噪声)

st+1=Atst+Btat+wt

​ 其中AtRn×n,BtRn×d为矩阵,wtN(0,Σt)是高斯噪声(0均值)。正如我们将在下文中展示的那样,只要它具有0均值,噪声就不会影响最优策略!

​ 我们还假设二次奖励

R(t)(st,at)=stTUtstatTWtat

​ 其中UtRn×n,WtRd×d为正定矩阵(这意味着奖励总是的)。

注记:注意奖励为二次型等同于说我们希望我们的状态接近原点(此时奖励更高)。 例如,如果Ut=In(单位矩阵)并且Wt=Id,那么Rt=||st||2||at||2,意味着我们想要采取平滑动作(使at范数较小)回到原点(使st范数较小)。 这可以模拟一辆试图保持在车道中间而不会产生冲动动作的车……

​ 现在我们已经定义了LQR模型的假设,让我们来看看LQR算法的两个步骤

步骤1

  • 假设我们不知道矩阵A,B,Σ。 为了估计它们,我们可以遵循RL讲义中值近似部分的想法。 首先,从任意策略中收集状态转移。 然后,使用线性回归找到argminA,Bi=1mt=0T1||st+1(i)(Ast(i)+Bat(i))||2。最后,使用高斯判别分析中的技术来学习Σ

步骤2

  • 假设我们的模型的参数是已知的(给出或通过步骤1估计),我们可以使用动态规划推导出最优策略。换句话说,给定{st+1=Atst+Btat+wtAt,Bt,Ut,Wt,ΣtR(t)(st,at)=stTUtstatTWtat

​ 我们希望计算Vt。如果我们回到第1部分,我们可以应用动态规划,从而产生

  • 1.初始步骤

    对于最后一个时间戳T

    VT(sT)=maxaTAR(T)(sT,aT)=maxaTA(sTTUTsTaTTWTaT)=sTTUTsTaT=0
  • 2.递归步骤

    t<T,假设已知Vt+1

    事实1:可以证明,如果Vt+1是关于st的二次函数,那么Vt也是二次函数。 换句话说,存在某个矩阵Φ和某个标量Ψ使得

    Vt+1(st+1)=st+1TΦt+1st+1+Ψt+1Vt(st)=stTΦtst+Ψt

    对于时间戳t=T,我们有Φt=UT,Ψt=0

    事实2:我们可以证明最优政策只是状态的线性函数。

    知道Vt+1相当于知道Φt+1Ψt+1,所以我们只需要解释我们如何从​Φt+1和​Ψt+1及问题的其他参数计算​Φt和​Ψt

    Vt(st)=stTΦtst+Ψt=maxat[R(t)(st,at)+Est+1Pst,at(t)[Vt+1(st+1)]]=maxat[stTUtstatTWtat+Est+1N(Atst+Btat,Σt)[Vt+1(st+1)]]

    其中第二行是最优价值函数的定义,第三行是通过插入模型的动态和二次假设得到的。接下来先求解上述期望,注意到

    Vt+1(st+1)=st+1TΦt+1st+1+Ψt+1

    以及如果xN(μ,Σ)x为向量,那么

    Σ=E[(xμ)(xμ)T]=E[xxT]μμTE[xxT]=Σ+μμT

    所以

    Est+1N(Atst+Btat,Σt)[Vt+1(st+1)]=Est+1N(Atst+Btat,Σt)[st+1TΦt+1st+1+Ψt+1]=Ψt+1+tr(Est+1N(Atst+Btat,Σt)[st+1TΦt+1st+1])=Ψt+1+Est+1N(Atst+Btat,Σt)[tr(st+1TΦt+1st+1)]=Ψt+1+Est+1N(Atst+Btat,Σt)[tr(st+1st+1TΦt+1)]=Ψt+1+tr(Est+1N(Atst+Btat,Σt)[st+1st+1TΦt+1])=Ψt+1+tr(Est+1N(Atst+Btat,Σt)[st+1st+1T]Φt+1)=Ψt+1+tr((Σt+(Atst+Btat)(Atst+Btat)T)Φt+1)=Ψt+1+tr(ΣtΦt+1)+tr((Atst+Btat)(Atst+Btat)TΦt+1)=Ψt+1+tr(ΣtΦt+1)+tr((Atst+Btat)TΦt+1(Atst+Btat))=Ψt+1+tr(ΣtΦt+1)+(Atst+Btat)TΦt+1(Atst+Btat)=Ψt+1+tr(ΣtΦt+1)+stTAtTΦt+1Atst+atTBtTΦt+1Btat+2atTBtTΦt+1Atst

    上面的推导过程利用到如下几个事实:

    (1)tr (AB)=tr (BA)(2)tr (E[A])=E[tr (A)](3)Φt+1

    因此上式可以化为

    Vt(st)=maxat[stTUtstatTWtat+Ψt+1+tr(ΣtΦt+1)+stTAtTΦt+1Atst+atTBtTΦt+1Btat+2atTBtTΦt+1Atst]=stTUtst+Ψt+1+tr(ΣtΦt+1)+stTAtTΦt+1Atst+maxat[atTWtat+atTBtTΦt+1Btat+2atTBtTΦt+1Atst]

    S(at):=atTWtat+atTBtTΦt+1Btat+2atTBtTΦt+1Atst

    S关于at求梯度可得

    atS(at)=2Wtat+2BtTΦt+1Btat+2BtTΦt+1Atst

    令上式为0可得

    (WtBtTΦt+1Bt)at=BtTΦt+1Atstat=[(WtBtTΦt+1Bt)1BtTΦt+1At]st=Ltst

    其中

    Lt:=(WtBtTΦt+1Bt)1BtTΦt+1At

    这是一个令人印象深刻的结果:我们的最优政策和st线性关系

    at带入S可得

    S(at)=(Ltst)TWt(Ltst)+(Ltst)TBtTΦt+1Bt(Ltst)+2(Ltst)TBtTΦt+1Atst=stTLtTWtLtst+stTLtTBtTΦt+1BtLtst+2stTLtTBtTΦt+1Atst=stT(LtTWtLt+LtTBtTΦt+1BtLt+2LtTBtTΦt+1At)st=stT(LtT(WtLtBtTΦt+1BtLt)+2LtTBtTΦt+1At)st

    Lt:=(WtBtTΦt+1Bt)1BtTΦt+1At可得

    (WtBtTΦt+1Bt)Lt=BtTΦt+1AtWtLtBtTΦt+1BtLt=BtTΦt+1At

    带入上式可得

    S(at)=stT(LtT(WtLtBtTΦt+1BtLt)+2LtTBtTΦt+1At)st=stT(LtTBtTΦt+1At+2LtTBtTΦt+1At)st=stT(LtTBtTΦt+1At)st=stT(((WtBtTΦt+1Bt)1BtTΦt+1At)TBtTΦt+1At)st=stT(AtTΦt+1Bt(WtBtTΦt+1Bt)1BtTΦt+1At)st

    结合Vt(st)的计算式,我们得到

    Vt(st)=stT(AtTΦt+1Bt(WtBtTΦt+1Bt)1BtTΦt+1At+AtTΦt+1AtUt)st+Ψt+1+tr(ΣtΦt+1)

    对比Vt(st)=stTΦtst+Ψt,不难得到如下计算式

    Φt=AtT(Φt+1+Φt+1Bt(WtBtTΦt+1Bt)1BtTΦt+1)AtUtΨt=tr(ΣtΦt+1)+Ψt+1

    上式被称为离散Ricatti方程

    备注:这里推导的结果和老师的讲义上不同,但暂时没找出问题。

    事实3:注意到Φt既不依赖Ψt也不依赖噪音Σt!又因为LtAt,BtΦt+1的函数,这意味着最优策略也不依赖于噪声! (但由于Ψt依赖于Σt,这意味着Vt依赖于Σt。)

现在,总结一下,LQR算法的工作原理如下

  • 1.(如果有必要)估计参数At,Bt,Σt
  • 2.初始化ΦT:=UT,ΨT:=0
  • 3.遍历t=T10来使用离散Ricatti方程,利用Φt+1,Ψt+1来更新Φt,Ψt。 如果存在使状态变趋于0的策略,则保证收敛!

使用事实3,我们可以使我们的算法运行地更快! 由于最优策略不依赖于Ψt,并且Φt的更新仅依赖于Φt+1,因此仅更新Φt 是足够的!