強化學習(Reinforcement learning,簡稱RL)是和監督學習,非監督學習並列的第三種機器學習方法,以下圖示:html
首先讓咱們舉一個小時候的例子:機器學習
你如今在家,有兩個動做選擇:打遊戲
和讀書
。若是選擇打遊戲的話,你就跑到了網吧
,選擇讀書的話,就坐在了書桌
面前。你爸媽下班回家,若是發現你在網吧,就會給你一套社會主義的鐵拳,若是你在書桌面前的話,就會買根棒棒糖給你吃。函數
首先,你在家的時候並不知道選擇哪個動做,所以你可能會選擇study或者game。可是,當你接受了屢次社會主義的毒打和獎勵棒棒糖以後,你會發現選擇game
會獲得懲罰,選擇study
你會獲得獎勵。所以當你再次處於」home「狀態時,你就會偏向於選擇「study」。(這即是強化學習!!)學習
強化模型能夠建模以下:spa
以上面的爲例子,對以下進行說明:code
Agent:Agent也就是執行個體,咱們能夠操做執行個體作出不一樣的選擇(也就是動做Action)。htm
圖中的「你」blog
Environment:咱們研究的環境,它有一個一個的狀態(State)。遊戲
圖中你所處的位置狀態:網吧or書桌ip
Action:當Agent作出動做(action)的時候,環境會發生改變也就是State會發生改變。
選擇Study或者Game後你會處於書桌或者網吧的狀態
Reward:當State發生改變時,環境會給予必定的獎勵(獎勵可爲正負)。
拳頭or棒棒糖
總的來講,就是Agent在\(t\)時刻處於\(s_t\)狀態,它會作出某一個動做\(a_i\),致使\(t+1\)的狀態爲\(s_{t+1}\),同時在\(t+1\)時刻獲得的獎勵爲\(R_{t+1}\)。
接下來咱們再介紹強化學習中稍微複雜一點的概念。這些概念是之後的基礎,也比較簡單,很容易理解。
當Agent處於某一個state的時候,它作的Action是不肯定的,例如你能夠選擇study也能夠選擇game,也就是說你在某一個狀態是以必定的機率去選擇某一個action。也就是說,策略的選擇是一個條件機率\(\pi(a|s)\),這裏的\(\pi\)與數序中的\(\pi\)沒有任何關係,他只是表明一個函數而已(所以也能夠寫做\(f(a|s)\))。
此函數表明:在狀態\(s\)時採起動做\(a\)的機率分佈。
前面咱們說到過獎勵,當Agent在\(t\)時刻執行某個動做時,會獲得一個\(R_{t+1}\)。咱們能夠想一下蝴蝶效應,這個Action會影響\(R_{t+1}\),那麼他會不會影響\(R_{t+2},R_{t+3}……R_{t+n}\)呢?極可能會的,好比說在電遊中,你所作的某個選擇確定會對接下來的遊戲產生影響,這個影響能夠深遠,也能夠沒那麼深淵(對,我說的就是隱形守護者,mmp),所以狀態價值函數能夠表示爲:
\(v_{\pi}(s)\)與策略函數\(\pi\)有關,能夠理解爲當Agent以策略\(\pi\)運行時,狀態\(s\)的價值是多少。也就是在此狀態下,我可以獲得多少回報。
在後面咱們會詳細的對這個函數進行分析。
在上面的價值函數中,有一個變量\(\gamma\) ,即獎勵衰減因子,在[0,1]之間。若是爲0,則是貪婪法,即價值只由當前的獎勵決定,若是是1,則全部的後續狀態獎勵和當前獎勵一視同仁。通常來講取0到1之間的數。
因爲在某個狀態下,執行必定的action,可以達到新的一個狀態\(state_{t+1}\),可是\(state_{t+1}\)不必定是惟一的。環境的狀態轉化模型,能夠理解爲一個機率狀態機,它是一個機率模型,即在狀態\(t\)下采起動做\(a\),轉到下一個狀態\(s'\)的機率,表示爲\(P_{ss'}^a\)。
怎麼說的探索率呢?它主要是爲了防止陷入局部最優。好比說目前在\(s_1\)狀態下有兩個\(a_1,a_2\)。咱們經過計算出,發現執行\(a_1\)的動做比較好,可是爲了防止陷入局部最優,咱們會選擇以 \(\epsilon\) 的機率來執行\(a_2\),以\(1 - \epsilon\) 的機率來執行\(a_1\)。通常來講,\(\epsilon\) 隨着訓練次數的增長而逐漸減少。
前面咱們說過某個狀態執行action能夠轉換成另一個state,能夠用機率表示爲:\(P_{ss'}^a\)。那麼這個機率與什麼有關呢?認真的考慮下,毋庸置疑,與目前的狀態\(s_t和a\)有關,可是一樣,它可能也與上一個狀態\(s_{t-1}\),上上個狀態\(s_{t-2}\)……有關,可是若是真的這樣考慮,就複雜了。
所以咱們將問題進行必定的簡化,簡化的方法就是假設狀態轉化的馬爾科夫性,也就是假設轉化到下一個狀態\(s'\)的機率僅與當前狀態\(s\)有關,與以前的狀態無關(也就是說將來與當前有關,與過去無關)。用公式表示就是:
同時對於針對於策略 \(\pi\) 咱們也作MDP假設,也就是說,當前Agent所做的策略僅僅與當前狀態有關,與之前的狀態都沒有關係,所以:
一樣針對於價值函數\(v\),有:
之因此咱們來分析這個價值函數,是由於它是強化學習的核心,爲何Agent可以自動學習,自動選擇某一個Action,其中一個量化標準就是它:
令:
\(G_t\)表明Return,表明Agent從某一個狀態\(S_t\)開始直到終止狀態時全部獎勵的有衰減的之和。
則有:
So:
所以:
上述方程即是Bellman方程的基本形態。所以咱們能夠知道,當前狀態的價值與獎勵\(\R_{t+1}\)和下一個狀態的價值有關。
這裏再說一下動做價值函數,它表明着在當前state下,作某一個action的價值:
一樣,咱們利用Bellman方程,能夠將上式轉化成:
動做價值函數與狀態價值函數之間能夠相互進行轉化:
圖示說明以下:圖來自(強化學習(二)馬爾科夫決策過程(MDP))
綜上可得:
OK,強化學習的入門介紹就到這裏,經過這篇博客,咱們知道了:
策略 \(\pi\) :表示在某一個狀態下,action的機率分佈函數\(\pi(a|s) = P(A_t=a | S_t=s)\)
\(\gamma\) :獎勵衰減因子,表示後續獎勵的佔比
探索率\(\epsilon\):表示Agent以 \(\epsilon\) 的機率來隨機選擇action
狀態轉化模型:表示執行某個action後,狀態變化的機率函數\(P_{ss'}^a = \mathbb{P}(S_{t+1}=s'|S_t=s, A_t=a)\)
狀態價值函數:表示 \(t\) 時刻的狀態 \(s_{t}\) 能得到的將來回報(return)的指望\(v_\pi(s)=\mathbb{E}\left[R_{t+1}+\gamma \left(S_{t+1}\right) | S_{t}=s\right]\)
動做價值函數:表示 \(t\) 時刻的狀態 \(s\),選擇一個 action 後能得到的將來回報(return)的指望
\(q_{\pi}(s,a) = \mathbb{E}_{\pi}(R_{t+1} + \gamma q_{\pi}(S_{t+1},A_{t+1}) | S_t=s, A_t=a)\)