DQN(Deep Q-learning)入門教程(一)之強化學習介紹
什麼是強化學習?
強化學習(Reinforcement learning,簡稱RL)是和監督學習,非監督學習並列的第三種機器學習方法,如下圖示:
首先讓我們舉一個小時候的例子:
你現在在家,有兩個動作選擇:打遊戲
和讀書
。如果選擇打遊戲的話,你就跑到了網吧
,選擇讀書的話,就坐在了書桌
面前。你爸媽下班回家,如果發現你在網吧,就會給你一套社會主義的鐵拳,如果你在書桌面前的話,就會買根棒棒糖給你吃。
首先,你在家的時候並不知道選擇哪一個動作,因此你可能會選擇study或者game。但是,當你接受了多次社會主義的毒打和獎勵棒棒糖之後,你會發現選擇game
會得到懲罰,選擇study
你會得到獎勵。因此當你再次處於」home「狀態時,你就會偏向於選擇「study」。(這便是強化學習!!)
強化模型可以建模如下:
以上面的為例子,對如下進行說明:
-
Agent:Agent也就是執行個體,我們可以操作執行個體做出不同的選擇(也就是動作Action)。
圖中的「你」
-
Environment:我們研究的環境,它有一個一個的狀態(State)。
圖中你所處的位置狀態:網吧or書桌
-
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}\)。
接下來我們再介紹強化學習中稍微複雜一點的概念。這些概念是以後的基礎,也比較簡單,很容易理解。
策略(Policy)\(\pi\)
當Agent處於某一個state的時候,它做的Action是不確定的,例如你可以選擇study也可以選擇game,也就是說你在某一個狀態是以一定的概率去選擇某一個action。也就是說,策略的選擇是一個條件概率\(\pi(a|s)\),這裡的\(\pi\)與數序中的\(\pi\)沒有任何關係,他只是代表一個函數而已(因此也可以寫作\(f(a|s)\))。
\]
此函數代表:在狀態\(s\)時採取動作\(a\)的概率分布。
價值(value)
前面我們說到過獎勵,當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$ 獎勵衰減因子
在上面的價值函數中,有一個變數\(\gamma\) ,即獎勵衰減因子,在[0,1]之間。如果為0,則是貪婪法,即價值只由當前的獎勵決定,如果是1,則所有的後續狀態獎勵和當前獎勵一視同仁。一般來說取0到1之間的數。
環境的狀態轉化模型
由於在某個狀態下,執行一定的action,能夠達到新的一個狀態\(state_{t+1}\),但是\(state_{t+1}\)不一定是唯一的。環境的狀態轉化模型,可以理解為一個概率狀態機,它是一個概率模型,即在狀態\(t\)下採取動作\(a\),轉到下一個狀態\(s’\)的概率,表示為\(P_{ss’}^a\)。
探索率\(\epsilon\)
怎麼說的探索率呢?它主要是為了防止陷入局部最優。比如說目前在\(s_1\)狀態下有兩個\(a_1,a_2\)。我們通過計算出,發現執行\(a_1\)的動作比較好,但是為了防止陷入局部最優,我們會選擇以 \(\epsilon\) 的概率來執行\(a_2\),以\(1 – \epsilon\) 的概率來執行\(a_1\)。一般來說,\(\epsilon\) 隨著訓練次數的增加而逐漸減小。
馬爾科夫決策過程(MDP)
前面我們說過某個狀態執行action可以轉換成另外一個state,可以用概率表示為:\(P_{ss’}^a\)。那麼這個概率與什麼有關呢?認真的考慮下,毋庸置疑,與目前的狀態\(s_t和a\)有關,但是同樣,它可能也與上一個狀態\(s_{t-1}\),上上個狀態\(s_{t-2}\)……有關,但是如果真的這樣考慮,就複雜了。
因此我們將問題進行一定的簡化,簡化的方法就是假設狀態轉化的馬爾科夫性,也就是假設轉化到下一個狀態\(s’\)的概率僅與當前狀態\(s\)有關,與之前的狀態無關(也就是說未來與當前有關,與過去無關)。用公式表示就是:
\]
同時對於針對於策略 \(\pi\) 我們也做MDP假設,也就是說,當前Agent所作的策略僅僅與當前狀態有關,與以前的狀態都沒有關係,因此:
\]
同樣針對於價值函數\(v\),有:
\]
價值函數與Bellman方程
之所以我們來分析這個價值函數,是因為它是強化學習的核心,為什麼Agent能夠自動學習,自動選擇某一個Action,其中一個量化標準就是它:
\]
令:
\]
\(G_t\)代表Return,代表Agent從某一個狀態\(S_t\)開始直到終止狀態時所有獎勵的有衰減的之和。
則有:
\]
So:
v_{\pi}(s) &=\mathbb{E}_{\pi}\left(R_{t+1}+\gamma R_{t+2}+\gamma^{2} R_{t+3}+\ldots | S_{t}=s\right) \\
&=\mathbb{E}_{\pi}\left(R_{t+1}+\gamma\left(R_{t+2}+\gamma R_{t+3}+\ldots\right) | S_{t}=s\right) \\
&=\mathbb{E}_{\pi}\left(R_{t+1}+\gamma G_{t+1} | S_{t}=s\right) \\
&=\mathbb{E}_{\pi}\left(R_{t+1}+\gamma v_{\pi}\left(S_{t+1}\right) | S_{t}=s\right)
\end{aligned}\end{equation}
\]
因此:
\]
上述方程便是Bellman方程的基本形態。因此我們可以知道,當前狀態的價值與獎勵\(\R_{t+1}\)和下一個狀態的價值有關。
動作價值函數
這裡再說一下動作價值函數,它代表著在當前state下,做某一個action的價值:
\]
同樣,我們利用Bellman方程,可以將上式轉化成:
\]
動作價值函數與狀態價值函數之間可以相互進行轉化:
q_{\pi}(s,a) = R_s^a + \gamma \sum\limits_{s’ \in S}P_{ss’}^av_{\pi}(s’)
\]
圖示說明如下:圖來自(強化學習(二)馬爾科夫決策過程(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)\)