1. 程式人生 > >CS229 Machine Learning學習筆記:Note 12(強化學習與自適應控制)

CS229 Machine Learning學習筆記:Note 12(強化學習與自適應控制)

inf 輸入 概念 play 化學 適應 UNC 之前 stat

強化學習的概念

在監督學習中,我們會給學習算法一個訓練集,學習算法嘗試使輸出盡可能接近訓練集給定的真實值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(強化學習與自適應控制)