1. 程式人生 > >【十八】線性二次型調節控制

【十八】線性二次型調節控制

狀態-動作回報 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,從而得到政策函式。

// 這裡是分割線~

// 順便給自己的公眾號打個廣告,希望大家多多關注哈~

// 關注我的公眾號可以看到更多有意思的內容哦~