主要的學習資源是四個:
書籍《強化學習入門:從原理到實踐》(葉強等著,機械工業出版社)
github中的配套資源
書籍《強化學習精要:核心演算法與tensorflow實現》(馮超著,中國工信出版集團)
在開始介紹策略迭代之前,我們再回顧一下我們策略評估所完成的事情:
我們在已知乙個馬爾科夫決策過程\(⟨s, a, p, r, γ⟩\)和乙個策略π的情況下,通過貝爾曼方程反覆迭代,求解了基於該策略的價值函式\(v_π\)。
我們曾在第一篇文章提到:強化學習的核心思想是通過某種手段影響被實驗體的行為,就是說我們希望用手段獲得更好的行為。如果用值函式(狀態價值函式\(v_π(s)\)和狀態行為價值函式\(q_π(s, a)\)合稱為值函式)的角度考慮強化學習的目標的話,可以得到:強化學習就是找到最優策略,使每乙個狀態的價值函式最大化,這相當於求解:
\[π^*=argmax_πv_π(s), \forall s
\]而對於每乙個狀態對應的行動,我們希望找到使其價值最大化的行動
\[a^*=argmax_aq_(s, a)
\]從上面兩個式子中我們會發現乙個悖論:如果想要知道最優策略,就需要能夠準確估計值函式;然而要準確估計值函式,又需要知道最優策略,這樣就變成了乙個「雞生蛋、蛋生雞」的故事。面對這種問題是否可以反覆迭代逐漸接近最優結果呢?(這種方法在數值計算領域運用的很多,過段時間我也會寫相關的部落格介紹。)
於是我們就提出了如下計算思路:
以某種策略π開始,計算當前策略下的值函式\(v_π(s)\)
利用這個值函式,找到更好的策略\(π'\)
用這個策略繼續前行,更新值函式,得到\(v'_π(s)\),然後重複1過程……
上面的計算思路可以用下圖的流程表示:
\[策略迭代=策略評估+策略提公升
\]策略評估這一部分在數學上已經沒有問題了,接下來我們需要證明策略提公升的可行性。
策略提公升及收斂性證明
策略可以分為隨機策略和確定性策略, 前者指策略是隨機性的,即在乙個確定的狀態s下可能會概率性地採取不同的行為,\(π(a|s)\)。後者指策略是決定性的,即策略在乙個確定的狀態s下只可能採取一種行為\(a=π(s)\)。
下文給出基於貪婪策略的迭代將收斂於最優策略和最優狀態價值函式的證明。
考慮乙個依據確定性策略\(π\)(每個狀態後僅跟乙個動作)對任意狀態\(s\)產生的行為\(a=π(s)\),貪婪策略在同樣的狀態\(s\)下會得到新行為\(a′ = π′(s)\),其中:
\[π'(s)=\undersetq_π(s,a)
\]假如個體在與環境互動時,僅下一步採取該貪婪策略產生的行為,而在後續步驟仍採取基於原策略產生的行為,那麼下面的(不)等式成立
\[q_π(s,π'(s))= \undersetq_π(s,a)\ge q_π(s,π(s))=v_π(s)
\]其中上式中的s對狀態機s中的所有狀態都成立,於是可得下式:
\[\begin
v_π(s)&\le q_π(s,π'(s))=\sum_p_^a π'(s)[r_+γq_π(s',π'(s'))]\\
&\le \sum_p_^a π'(s)r_+γ\sum_p_^a π'(s)\sum_p_^\sum_ π'(s')[r_+γq_π(s'',π'(s''))]]\\
&\le ...\\
&\le e[r_+γr_+···|s_t=s]=v_(s)
\end
\]也就是說,如果使用貪婪策略,新策略下狀態價值函式總不劣於原策略下的狀態價值函式。
另一方面,我們又可以證明策略提公升的收斂性。
每次策略提公升時,其計算過程就是如下公式:
\[π(s)=argmax_a (r_s^a+γ\sum_ p_^**(s))
\]這個公式依據的就是貝爾曼最優方程(雖然我們前面都沒有提到過,但很多書都會涉及定義,這邊就不贅述了)。
下面是貝爾曼最優方程的收斂性證明:
\[\begin
d(f(u),f(v))&=||max_a (r+γpu)-max_ (r+γpv)||_\infty\\
&\le || (r+γpu)_a- (r+γpv)_||_\infty\\
&\le γ||u-v||_\infty=γd(u,v)
\end
\]第乙個不等號是說明減號後面減的是滿足第乙個max的行為a的f(v),a不一定滿足第二個max,所以用\(\le\)。第二個不等號是因為狀態轉移矩陣\(p\)的每一元素都小於1。
因為前提條件是確定性策略,最優價值函式收斂對應的策略也會收斂,即隨著迭代輪數增加,某一狀態對應著唯一的行為。
最終我們可以得出完整的策略迭代演算法,偽**如下:
如果將下面兩個策略迭代關鍵公式:
\[\begin
v_(s) = \sum_aπ(a|s)[r_^a + γ\sum_p_^**_k(s')]\\
π(s)=argmax_a (r_s^a+γ\sum_ p_^**(s))
\end
\]整合到一起,就可以得到如下公式:
\[v_(s) = \underset [r_^a + γ\sum_p_^**_k(s')]
\]這個公式實際上是貝爾曼最優方程的迭代表達,我們在上面已經證明了收斂性。
我們可以得出完整的價值迭代演算法,偽**如下:
如果將策略迭代和價值迭代組合使用,我們也可以得到泛化迭代法,這部分馮超老師的書裡面有比較詳細的說明,這邊就不贅述了。
強化學習入門知識與經典專案分析1 2
書籍 強化學習入門 從原理到實踐 葉強等著,機械工業出版社 github中的配套資源 書籍 強化學習精要 核心演算法與tensorflow實現 馮超著,中國工信出版集團 在說到這個部分的時候,我覺得我們腦海中應該始終浮現著乙個狀態 行為鏈 a s t 這個鏈條包含了兩種狀態轉換 一種是從狀態到行為的...
強化學習入門 的入門
強化學習是機器學習裡面非常重要的乙個派別。智慧型體 agent 會不斷執行一些操作,通過結果來學習,在不同的環境中分別應該採取怎樣的行動。以上幾點,在進入強化學習的複雜世界之前,可能還是有必要了解一下。這是個友好的引子 強化學習的中心思想,就是讓智慧型體在環境裡學習。每個行動會對應各自的獎勵,智慧型...
強化學習入門(一)
在強化學習中,環境狀態的轉移和環境反饋給agent的獎賞是不受agent個體控制的,agent只能通過選擇要執行的動作來影響環境,並通過觀察轉移後的狀態和環境反饋的獎賞值來感知環境,agent的強化學習過程即是通過不斷嘗試各種動作 狀態策略,並通過環境反饋的獎賞不斷調整策略,從而達到在某一環境狀態中...