1. 程式人生 > >【十七】離散與維數災難

【十七】離散與維數災難

在上一講中我們介紹了MDP模型,但上一講中的情況只適應於狀態集和動作集都有限的情況,今天我們將介紹如何解決狀態集無限(連續)而動作集有限的情況。

離散化 Discretization

一種簡單的方法是將連續的狀態離散成有限個狀態,當狀態位於某一區間內時,均將其視為同一狀態,然後進行求解。可以想到,這一方法的計算結果受到離散方式、原有狀態集的特點等條件影響,並且可以看出,隨著狀態集維數的增長,我們離散後的狀態數將按照指數上升,在狀態集為2、3維的條件下,其被離散為k^2或k^3個狀態,差別並不十分明顯,當維數為4時,狀態數為k^4,通過一些巧妙地方法也許我們也可求解,但當維數上升至6維甚至12維時,狀態數增長為k^12,者將變得十分難以解決,離散化的這一問題稱為

維數災難the Curse of Dimensionality

一種可以適度緩解維數災難的方法稱為非均一離散Non-uniform Discretization,即對於不同的維度,我們將其離散為不同的個數,對於我們更注重的維數,可以將其離散的更細緻些,而不那麼重視的可離散的更粗略些。

模型和模擬器 Models/Simulators

另一種解決連續狀態集的方法為將下一狀態的生成過程視為通過一個模型或模擬器。

假設我們有一個黑盒子(裡面執行一個程式),當我們輸入當前的狀態s(t)和動作a(t)時,盒子便輸出下一狀態s(t+1),此時我們不需要考慮轉移概率矩陣(可以認為它在黑盒子裡,也可以認為它已經不存在了)。現在,我們的目標是計算出黑盒中執行的程式。

我們可以假設黑盒中是一個線性模型,即s(t+1)=As(t)+Ba(t)【或認為黑盒是一個模擬器,此時方程變為s(t+1)=As(t)+Ba(t)+ε(t),其中ε服從均值為0、方差為Σ的正態分佈,加入ε的目的是模擬模擬器產生的噪聲】

我們可通過大量的實驗獲得由s(t)及a(t)生成s(t+1)的大量資料,通過擬合方程中的A、B,我們希望自己的擬合結果與真實值相差最小,即目標函式為

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

更一般的,我們構建φ(s)是s的函式,當然φ(s)可以為s,也可以為其他的值,則可將擬合方程變為θ^T*φ(s),這一過程包含了核的思想,此時模型已經不再限制於線性模型了。

匹配值迭代演算法 Fitted Value Iteration Algorithm

在上述思想下,我們可通過匹配值迭代演算法對引數θ求解。這一演算法的思想是從服從Psa分佈的狀態中選擇一些狀態,不斷用其對θ進行迭代更新。

演算法核心可表示為E(s`~Psa)[V*(s`)]=V*(f(s, a)),其執行過程如下:

Step 1:Choose some set of states randomly {s(1),s(2),...,s(m)} belong to s

Step 2:Initialize θ:=0

Step 3:repeat {

for i = 1, ..., m {

for each action a belong to A {

sample s(1)`, ... s(m)` ~ Psa

// estimate for R(s(i))+γE(s`~Psa[V(s(i))])

let q(a) = (1/k)*Σj=1,...,k[R(s(i))+γV(s(j)`)] 

}

// estimate for R(s(i))+max γE(s`~Psa[V(s(i))])

set y(i) = max q(a)

}

θ := argmax (1/2)*Σi=1, ..., m(θ^T*φ(s(i))-y(i))^2

}

很顯然,如果下一狀態的概率為1,則只需進行一次取樣即可,因為在該分佈下所有樣本都是一致的。

隨機模擬器狀態 Static Simulator

我們上一講討論的情況可認為是模型情況,因為不存在噪聲,下面我們討論帶噪聲的情況。

此時函式為s(t+1)=f(s(t), a(t))+ε

故E(s`~Psa)[V*(s`)]約等於V*(E[s`])=V*(f(s, a))

我們選擇的動作也為 a=argmaxV*(f(s, a)),與模型的狀態相同

// 這裡是分割線~

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

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