CS229 Machine Learning學習筆記:Note 12(強化學習與自適應控制)
強化學習的概念
在監督學習中,我們會給學習算法一個訓練集,學習算法嘗試使輸出盡可能接近訓練集給定的真實值y;訓練集中,對於每個樣本的輸入x,都有確定無疑的正確輸出y
在強化學習中,我們只會給學習算法一個獎勵函數(reward function),用這個函數來提示學習主體(learning agent)什麽時候做得好,什麽時候做得差。例如,對於一個機器人,當它向前行走時,我們給它獎勵(獎勵函數值為正),當它摔倒或向後退時,我們給它懲罰(獎勵函數值為負)
馬爾可夫決策過程(Markov decision processes,MDP)
馬爾可夫決策過程是一個元組\((S,A,\{P_{sa}\},\gamma,R)\)
- \(S\)是所有狀態構成的集合。(例如,一個直升機的所有可能出現的位置)
- \(A\)是所有動作構成的集合。(例如,對直升機可以進行的所有操作)
- \(\{P_{sa}\}\)是所有的狀態轉移概率(state transition probability)構成的集合,對於每個\(s\in S,a\in A\),都有一個\(P_{sa}\),\(P_{sa}\)表示當前狀態為s,選擇操作a以後,轉移到的下一個狀態的概率分布。
- \(\gamma\in [0,1)\)被稱為折扣因子(discount factor),時刻t得到的獎勵,要乘上\(\gamma^{t}\),這表明同樣的獎勵,越早得到,其衰減越少。
- \(R\)是關於狀態s和動作a的函數,稱為獎勵函數(reward function),有時R只與狀態s有關。
馬爾可夫決策過程是這樣進行的:
- 時刻0:我們從狀態\(s_0\)開始,選擇一個動作\(a_0\in A\);然後,根據\(s_1\sim P_{s_0a_0}\),我們可以隨機得到下一步轉移到的狀態\(s_1\)
- 時刻1:我們選擇一個新的動作\(a_1\in A\),根據\(s_2\sim P_{s_1a_1}\),我們可以隨機得到下一步轉移到的狀態\(s_2\)
- ......
整個過程如上圖所示。整個過程中,我們得到的總獎勵為
\[R(s_0,a_0)+\gamma R(s_1,a_1)+\gamma^2 R(s_2,a_2)+\cdots\]
當獎勵函數R只與\(s\)有關時,上式可以化簡為:
\[R(s_0)+\gamma R(s_1)+\gamma^2 R(s_2)+\cdots\]
下面我們討論的是獎勵函數R只與\(s\)有關的情況。
在強化學習中,我們的目標是最大化總獎勵的期望:
\[E[R(s_0)+\gamma R(s_1)+\gamma^2 R(s_2)+\cdots]\]
由於\(\gamma\)的衰減作用,我們希望正的獎勵值出現得越早越好,負的獎勵值出現得越晚越好
策略(policy)函數是一個函數\(\pi:S \mapsto A\),\(\pi(s)\)表示當前狀態s時下一步采取的動作,無論何時我們處於狀態s,都會采取相同的動作\(a=\pi(s)\)
我們還定義對應於策略\(\pi\)的價值函數為
\[V^\pi (s)=E[R(s_0)+\gamma R(s_1)+\gamma^2 R(s_2)+\cdots|s_0=s,\pi]\]
\(V^\pi(s)\)表示的是,策略函數為\(\pi\),初始狀態為s時,得到的總獎勵的期望。
當策略函數\(\pi\)固定時,\(V^\pi\)滿足Bellman方程:
\[V^\pi(s)=R(s)+\gamma \sum_{s‘\in S}P_{s\pi(s)}(s‘)V^\pi(s‘)\]
這表明,\(V^\pi(s)\)由兩部分組成:
- 1、當前時刻可以立刻得到的獎勵\(R(s)\);
- 2、下一時刻及其未來可以得到的獎勵之和的期望,這個和式可以寫作\(E_{s‘\sim P_{s\pi(s)}}[V^\pi(s‘)]\)(因為\(s‘\)服從分布\(P_{s\pi(s)}\))
有了bellman方程後,我們可以更方便地求出\(V^\pi(s)\)了。在給定\(S,A,\pi,P_{s\pi(s)},R(s)\),狀態集是有限集(\(|S|<+\infty\))時,對於每個\(V^\pi(s)\),我們列一個方程,得到\(|S|\)個未知數、\(|S|\)個方程構成的方程組,解出這個方程組即可求出每個\(V^\pi(s)\)
據此,我們進一步還可以定義最優價值函數:
\[V^*(s)=\max_\pi V^\pi(s)\]
這個函數表示初始狀態為s,通過選取最優策略,得到的總獎勵的期望的最大值,這個函數的Bellman方程為
\[V^*(s)=R(s)+\max_{a\in A} \gamma \sum_{s‘\in S}P_{sa}(s‘)V^*(s‘)\]
等號右側第一項表示當前時刻可以立刻得到的獎勵,第二項表示,當前時刻得到獎勵後,選取最優的動作a,下一時刻及其以後得到的獎勵的期望的最大值。
根據\(V^*\)的bellman方程,我們可以定義\(\pi^*:S\mapsto A\)
\[\pi^*(s)=\arg\max_{a\in A}\sum_{s‘\in S}P_{sa}(s‘)V^*(s‘)\]
\(\pi^*(s)\)表示狀態s時下一步采取的最優動作。
顯然,\(\pi^*\)是最優的決策函數,\(V^*\)選擇的決策函數就是\(\pi^*\),則有:
\[V^*(s)=V^{\pi^*}(s)\geq V^\pi(s)\]
這裏我們要註意,\(\pi^*\)對於所有狀態s而言,都是最優的決策函數。
值叠代與策略叠代
對於已知\(S,A,P_{sa},R(S),\gamma\),且狀態數目、決策數目有限的馬爾可夫決策過程,我們有兩種算法求出\(\pi^*\)
值叠代(value iteration)
- 初始化:所有\(V(s):=0\)
- Repeat until convergence{
- ____對於每個狀態\(s\),套用\(V^*\)的bellman方程更新:\(V(s)=R(s)+\max_{a\in A} \gamma \sum_{s‘\in S}P_{sa}(s‘)V(s‘)\)
- }
這個算法有兩種更新方式
- 1、同步更新(synchronous update):將所有的\(V^*(s)=R(s)+\max_{a\in A} \gamma \sum_{s‘\in S}P_{sa}(s‘)V^*(s‘)\)計算好後,同時將所有\(V(s)\)的值用新值覆蓋掉
- 2、異步更新(asynchronous update):對於每個s,計算出\(V^*(s)=R(s)+\max_{a\in A} \gamma \sum_{s‘\in S}P_{sa}(s‘)V^*(s‘)\)後立刻覆蓋掉原來的\(V(s)\)
值叠代若幹次後,\(V\)的值將收斂於\(V^*\)的值。這樣我們就找到了\(V^*\),我們再用公式\(\pi^*(s)=\arg\max_{a\in A}\sum_{s‘\in S}P_{sa}(s‘)V^*(s‘)\)求出所有\(\pi^*(s)\)
策略叠代(policy iteration)
- 隨機初始化策略函數\(\pi\)
- Repeat until convergence{
- ____(a)令\(V:=V^\pi\)
- ____(b)對於每個狀態s,套用\(\pi^*(s)\)的公式,令\(\pi(s):=\arg\max_{a\in A}\sum_{s‘\in S}P_{sa}(s‘)V(s‘)\)
- }
策略叠代若幹次後,\(V\)收斂於\(V^*\),\(\pi\)收斂於\(\pi^*\),這樣就可以同時得到\(V^*,\pi^*\),但是很顯然,每次叠代的步驟(a)需要解一個|S|個未知數、|S|個方程的線性方程組,計算量太大。因此一般值叠代更常用。
\(P_{sa},R(S)\)未知的馬爾可夫決策過程
在大多數情況下,\(S,A,\gamma\)是已知的,但\(P_{sa},R(S)\)是未知的,這兩個量需要我們從數據中近似估計。
如果我們已知策略函數\(\pi\),那麽我們可以根據策略函數\(\pi\),做T次試驗,每次試驗,隨機初始狀態\(s_0^{(i)}\),然後根據策略函數\(\pi\)執行若幹步,直至達到終止條件(如倒立擺問題中桿子倒下)
通過這T次試驗,我們可以得到\(P_{sa},R(s)\)的近似估計:
\(P_{sa}(s‘)=\)從狀態s采用動作a到達狀態s‘的次數/在狀態s采用動作a的總次數
若\(P_{sa}(s‘)=0/0\),即,在狀態s采用動作a的試驗次數為0,這時我們就令\(P_{sa}(s‘)=1/|S|\),就是假設在狀態s,采用動作a到其他任何狀態的概率分布,是均勻分布。
類似地,我們也可以對\(R(s)\)近似估計,\(R(s)=\)試驗中,在狀態s得到的獎勵的平均值。
- 隨機初始化策略函數\(\pi\)
- Repeat{
- ____(a)根據策略函數\(\pi\)執行若幹次試驗
- ____(b)使用之前所有的觀測數據(不只是本次循環,還有之前所有循環的),估計\(P_{sa},R\)
- ____(c)值叠代,用上一次循環得到的\(V^*\)的估計值,作為本次值叠代的初始的\(V\)的值,最終得到新的\(V^*\)的估計值
- ____(d)用新的\(V^*\)的估計值更新\(\pi\)
- }
這裏(c)步用上一次循環得到的\(V^*\)的估計值,可以大大加快每次值叠代的速度。
CS229 Machine Learning學習筆記:Note 12(強化學習與自適應控制)