您的位置:首页 > 其它

【十八】线性二次型调节控制

2016-11-05 17:38 211 查看

状态-动作回报 State-action Rewards

在之前的讨论中,我们认为回报只是状态的函数,即R:S->R(实数),现在我们将其扩展为状态和动作的函数,即R:S*A->R(实数)。

此时Bellman等式为 V*(s)=max [ R(s, a)+γΣsiPsa(s`)V*(s`)

有限边界马尔科夫决策过程 Finite Horizon MDP

我们之前介绍的MDP由五元组(S,A,{Psa},γ,R)描述,其中γ是一个小于1的非负数,表达了未来对当今决策的影响,当未来的时间比较远时,γ的指数次已经接近于0,对决策基本没有影响,近似的起到了一个边界的作用,下面我们将介绍有限边界MDP模型,这一模型对边界提出了更明显的要求。

一个有限边界MDP模型同样包括一个五元组,但其为(S,A,{Psa},T,R),即用边界时间Horizon Time参数取代了γ,这一参数暗含整个决策过程不平稳non-stationary,即最优决策可能是时间的函数,一个简单的例子为:我需要3s可以拿到5分,需要10s拿到10分,但我只有5s的时间,此时我的最优决策为去拿那5分,但如果我有20s的时间,我肯定选择去拿10分。

将时间考虑进来后,我们可将最优价值函数改写为

Vt*(s)=E[Rt(st, at)+...+RT(sT, aT) | π*, st属于S]

此时Bellman等式可写为

Vt*(s)=max [ Rt(st, at)+ΣPtsaVt+1*(s`) ]

并有 VT*(s)=max RT(s, a)

同样,决策函数也是不平稳的,则决策函数可表示为

π*=argmax [ Rt(st, at)+ΣPtsaVt+1*(s`) ]

线性二次调节控制 Linear Quadratic Regulation LQR

在这一问题中,我们假设状态是一个n维向量,动作是一个d维向量,概率转移矩阵为Psa: St+1=AtSt+Btat+wt,其中wt服从均值为0,方差为Σw的正态分布,At是一个n*n的矩阵,Bt是一个n*d的矩阵,此时我们定义回报方程为

Rt(st, at)=-(st^T*Ut*st+at^T*Vt*at)

其中Ut是一个n*n的矩阵,Vt是一个d*d的矩阵,均为半正定矩阵

注意到这里定义的回报方程有一个负号,但这并不影响最终的优化方程,因为我们要求的是最大值,只要可以保证最优解的值最大就好了。

在后面的讲解中,我们认为At和Bt不随时间变化,因此经过m次试验后,我们可得到m组状态、动作的变化情况,此时我们希望在自己估计的概率转移矩阵条件下产生的误差最小,即

argmax (1/2)*Σi=1,...,mΣt=0,...,T-1 ||s(i)(t+1)-(As(i)(t)+Ba(i)(t))||^2

非线性模型线性化 Linear a Non-linear Model

下面我们讨论将一个非线性的模型线性化的方法,回忆我们在函数曲线上一点通过切线拟合该点附近的值的方法,我们考虑拟合一维状态函数的方法为

St+1=f(St)≈f'(St_)(St-St_)+f(St_),其中St_是预先确定的常量

以此为基础,我们可推导出二维情况下的方程为

St+1=f(St, at)≈▽sf(St_, at_)^T*(St-St_)+▽af(St_, at_)^T*(at-at_)+f(St_, at_)

下面我们将推导如何解决LQR问题

我们假设Vt+1*(st+1)=St+1^T * Φt+1 * St+1 + ψt+1;Vt*(st)=St^T * Φt * St + ψt

我们注意到VT*(sT)=-(sT^T*UT*sT+aT^T*VT*aT),由于U和V均为半正定矩阵,因此与之相关的两项均大于等于0,所以若使该式最大,应选择aT使aT^T*VT*aT为0,此时有VT*(sT)=-sT^T*UT*sT

因此,ΦT=-UT, ψT=0

通过Vt和Vt+1之前的函数,我们可以得到更新方程为

Vt*(st) = max { -(st^T*Ut*st+at^T*Vt*at) + Est+1~N(AtSt+Btat+wt)[St+1^T * Φt+1 * St+1 + ψt+1] }

上式可认为为at的二次函数,因此这一问题称为二次函数的问题。此时决策函数为

πt*(st) = argmax Rt(st, at)+Est+1~Pstat[Vt+1*(st+1)] = (Bt^T * Φt+1 * Bt - Vt)^(-1) * Bt^T * Φt+1 * At * st = Lt*st

其中Lt = (Bt^T * Φt+1 * Bt - Vt)^(-1) * Bt^T * Φt+1 * At

因此我们可得

Φt = At^T * (Φt+1 - Φt+1*Bt*(Bt^T*Φt+1*Bt)^(-1) * Bt * Φt+1) * At - Ut,这一等式称为Discrete Time Riccati Equation

ψt = -tr Σw*Φt+1 + ψt+1

问题的解法总结如下:

一:初始化ΦT=-Ut,ψT=0

二:通过Φt+1、ψt+1递归计算Φt、ψt,并以此计算Lt,从而得到政策函数。

// 这里是分割线~

// 顺便给自己的公众号打个广告,希望大家多多关注哈~

// 关注我的公众号可以看到更多有意思的内容哦~

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  机器学习教程
相关文章推荐