強化學習(reinforcement learning)是一種重要的機器學習方法。所謂強化學習就是智慧型體從環境到行為對映的學習,目標是最大化期望積累獎勵。強化學習廣泛應用於無人駕駛汽車,棋類遊戲和機械人等領域當中。強化學習不屬於監督學習,也不屬於非監督學習。
階段性任務:智慧型體與環境的互動在乙個特定的時間步t結束
連續性任務:智慧型體一直與環境互動沒有限制
強化學習目標:最大化期望積累獎勵 即gt = rt+1 + rt+2 +rt+3 +rt+4 +...
由於我們希望智慧型體更關注當前獲得的獎勵,所以將上式改進為折扣獎勵
即gt = rt+1 + γrt+2 +γ²rt+3 +γ³rt+4 +... 其中γ∈[0,1]
γ越小,智慧型體越關注當前獲得的獎勵,γ越大,智慧型體越關注未來所能獲得的獎勵
強化學習任務通常用mdp(馬爾科夫決策流程)來描述
主要包括:① 有限狀態集合s
② 有限動作集合a
③ 有限獎勵集合r
④ 環境的一步動態特性 p(s',r|s,a) = p(st+1 = s',rt+1 = r|st = s,at = a) for all s,s',and r
其中有限mdp:狀態空間s和動作空間a都必須使有限的
對於有限mdp,解決強化問題主要有動態規劃,蒙特卡羅方法和時間差分方法。
在動態規劃設定中,智慧型體完全了解環境特性的馬爾科夫決策流程(mdp),比強化學習簡單很多,強化學習中智慧型體需要與環境互動來獲得mdp。
那麼如何對策略π進行評估?——採用狀態值函式vπ(s),對於狀態s的狀態值函式是指從該狀態開始,每一步都遵循策略π所獲得的折扣獎勵gt。
計算狀態值函式要用到貝爾曼方程 vπ
(s)
=eπ
[rt+
1+γ
vπ(
st+1
)∣s
t=s
].採用迭代的方法對狀態值函式進行估計,演算法如下圖。
那麼評估策略π後如何進行改進?——採用動作值函式qπ(s,a),指的是從狀態s開始,先採取動作a,之後的動作全部遵循策略π所獲的折扣獎勵gt。
更新策略的思想是在每個狀態都選擇動作值函式最大的動作。策略改進的演算法如下圖所示。
將策略評估與策略改進結合起來,演算法如下圖,當策略不再更新時,即獲得了最優策略。
蒙特卡羅方法是一種基於統計的方法,我們不需要預先知道mdp,而是通過智慧型體與環境互動獲得。
學習的方法依然是:評估策略(通過狀態值函式)→策略更新(通過動作值函式),只不過vπ和qπ的計算方法與動態規劃不一樣,而是基於一種統計的方法。且蒙特卡羅方法適用於階段性任務。
首先介紹階段(episode)的概念:我們將時間拆散為離散時間步,在每個時間步,智慧型體都從環境中獲得乙個獎勵和狀態,並選擇乙個相應動作,這樣的話,互動變成一系列的狀態,動作和獎勵,當智慧型體在時間t遇到最終狀態時結束,即s0,a0,r1,s1,a1,r2,...,st。我們將這一過程稱為乙個階段。
對於狀態x,我們檢視在所有階段狀態x的狀況,求在該狀態之後的折扣回報,然後求平均值作為該狀態的狀態值函式的估計。
演算法如下圖所示。
動作值函式的估計是一樣的道理,演算法如下圖所示。
在使用動作值函式更新策略時,我們採用epsilon貪婪策略。這種方法基於乙個概率對探索和利用進行折中:每次更新策略時,在每乙個狀態,以epsilon的概率進行探索,即以均勻概率隨機選取乙個動作(除動作值函式最高的動作),以1-epsilon的概率進行利用,即選擇當前狀態下使動作值函式最大的動作。演算法如下圖所示。
時間差分方法可以理解為蒙特卡羅演算法的改進,可以解決連續性任務和階段性任務,而蒙特卡羅演算法只能解決階段性任務。
對於策略評估(估計狀態值函式),兩種方法的差別主要在於演算法中狀態值的更新步驟
v(st) ← v(st) + α(gt - v(st))
在連續性任務中,我們無法計算階段結束時的回報gt,我們利用貝爾曼方程vπ
(s)=
eπ[
rt+1
+γv
π(s
t+1
)∣st
=s]
它可以用潛在的後續狀態的值表示任何狀態的值。即用 rt+
1+γ
vπ(
st+1
) 代替gt。
演算法如下圖所示。
對於策略更新(利用動作值函式)是一樣的道理,演算法如下圖所示。
強化學習問題通常都會轉化為馬爾科夫決策流程(mdp),乙個mdp由一組狀態s,動作a,概率p,獎勵r和折扣因子γ組成。
我們通常估算狀態值函式v(s)以及特定狀態下採取的動作值q(s,a),後者可以幫我們判斷應該採取什麼動作,進而可以幫我們找到解決問題的最優策略π*,從而最大化接收的總獎勵。
注意,因為mdp本質上具有概率性,因此我們無法完全確定地**未來將獲得什麼獎勵及持續多久,因此我們計算的是總預期獎勵。
參考:udacity 深度學習課程
《機器學習》周志華
離散化學習總結
離散化在演算法競賽中是乙個很常用且非常好用的乙個技巧,所以學習一下這個還是很有必要的。一 離散化 離散化指的是把大數化為小數,並且保持這幾個數的相對大小不變。比如 原數是1 101 102,離散化之後就是1 2 3。二 離散化的實現 假設我們的陣列是a,並且在開乙個輔助陣列b。賦初值時b i a i...
強化學習框架總結
設定,重新經歷 強化學習 rl 框架包含學習與其環境互動的智慧型體。在每個時間步,智慧型體都收到環境的狀態 環境向智慧型體呈現一種情況 智慧型體必須選擇相應的響應動作。乙個時間步後,智慧型體獲得乙個獎勵 環境表示智慧型體是否對該狀態做出了正確的響應 和新的狀態。所有智慧型體的目標都是最大化預期累積獎...
強化學習知識總結
參考文章 研一接觸了強化學習,然後對其就產生了很大的興趣。雖然有在莫煩python上學習,也自己做過很簡單的專案,但是之前對rl的學習比較混亂並不系統。正好看到這篇文章,感覺對自己有很大的幫助,就根據作者列出的知識點進行擴充套件學習。model free就是不去學習和理解環境,環境給出什麼資訊就是什...