1. 程式人生 > >DQN(Deep Q-learning)入門教程(一)之強化學習介紹

DQN(Deep Q-learning)入門教程(一)之強化學習介紹

## 什麼是強化學習? 強化學習(Reinforcement learning,簡稱RL)是和監督學習,非監督學習並列的第三種機器學習方法,如下圖示: ![](https://img2020.cnblogs.com/blog/1439869/202005/1439869-20200524021301122-1612758315.png) 首先讓我們舉一個小時候的例子: 你現在在家,有兩個動作選擇:`打遊戲`和`讀書`。如果選擇打遊戲的話,你就跑到了`網咖`,選擇讀書的話,就坐在了`書桌`面前。你爸媽下班回家,如果發現你在網咖,就會給你一套社會主義的鐵拳,如果你在書桌面前的話,就會買根棒棒糖給你吃。 首先,你在家的時候並不知道選擇哪一個動作,因此你可能會選擇**study或者game**。但是,當你接受了多次社會主義的毒打和獎勵棒棒糖之後,你會發現選擇`game`會得到懲罰,選擇`study`你會得到獎勵。因此當你再次處於”home“狀態時,你就會偏向於選擇“study”。(這便是強化學習!!) ![](https://img2020.cnblogs.com/blog/1439869/202005/1439869-20200524021301489-1766108764.png) 強化模型可以建模如下: ![](imgs/rlmodel.svg) 以上面的為例子,對如下進行說明: - 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)$)。 $$ \pi(a|s) = P(A_t=a | S_t=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) = \mathbb{E}_{\pi}(R_{t+1} + \gamma R_{t+2} + \gamma^2R_{t+3}+...|S_t=s) $$ $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$有關,與之前的狀態無關(也就是說未來與當前有關,與過去無關)。用公式表示就是: $$ P_{ss'}^a = \mathbb{P}(S_{t+1}=s'|S_t=s, A_t=a) $$ 同時對於針對於策略 $\pi$ 我們也做MDP假設,也就是說,當前Agent所作的策略僅僅與當前狀態有關,與以前的狀態都沒有關係,因此: $$ \pi(a|s) = P(A_t=a | S_t=s) $$ 同樣針對於價值函式$v$,有: $$ v_{\pi}(s) = \mathbb{E}_{\pi}(R_{t+1} + \gamma R_{t+2} + \gamma^2R_{t+3}+...|S_t=s) $$ ## 價值函式與Bellman方程 之所以我們來分析這個價值函式,是因為它是強化學習的核心,為什麼Agent能夠自動學習,自動選擇某一個Action,其中一個量化標準就是它: $$ v_{\pi}(s) = \mathbb{E}_{\pi}(R_{t+1} + \gamma R_{t+2} + \gamma^2R_{t+3}+...|S_t=s) $$ 令: $$ \begin{equation}G_{t}=R_{t+1}+\gamma R_{t+2}+\ldots=\sum_{k=0}^{\infty} \gamma^{k} R_{t+k+1}\end{equation} $$ $G_t$代表Return,代表Agent從某一個狀態$S_t$開始直到終止狀態時所有獎勵的有衰減的之和。 則有: $$ v_{\pi}(s) = \mathbb{E}_{\pi}(G_t|S_t=s) $$ So: $$ \begin{equation}\begin{aligned} 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} $$ 因此: $$ v_\pi(s)=\mathbb{E}\left[R_{t+1}+\gamma v\left(S_{t+1}\right) | S_{t}=s\right] $$ 上述方程便是**Bellman方程**的基本形態。因此我們可以知道,當前狀態的價值與獎勵$\R_{t+1}$和下一個狀態的價值有關。 ### 動作價值函式 這裡再說一下動作價值函式,它代表著在當前state下,做某一個action的價值: $$ q_{\pi}(s,a) = \mathbb{E}_{\pi}(G_t|S_t=s, A_t=a) = \mathbb{E}_{\pi}(R_{t+1} + \gamma R_{t+2} + \gamma^2R_{t+3}+...|S_t=s,A_t=a) $$ 同樣,我們利用Bellman方程,可以將上式轉化成: $$ 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) $$ 動作價值函式與狀態價值函式之間可以相互進行轉化: $$ v_{\pi}(s) = \sum\limits_{a \in A} \pi(a|s)q_{\pi}(s,a) \\ q_{\pi}(s,a) = R_s^a + \gamma \sum\limits_{s' \in S}P_{ss'}^av_{\pi}(s') $$ 圖示說明如下:圖來自([強化學習(二)馬爾科夫決策過程(MDP)](https://www.cnblogs.com/pinard/p/9426283.html)) ![](https://img2020.cnblogs.com/blog/1439869/202005/1439869-20200524021301863-2085769986.png) ## 總結 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)$ ### 參考 - [強化學習(一)模型基礎](https://www.cnblogs.com/pinard/p/9385570.html) - [Reinforcement learning](https://en.wikipedia.org/wiki/Reinforcement_learning) - [強化學習3:價值函式和Bellman方程](https://zhuanlan.zhihu.com/p/40052669) - [強化學習(二)馬爾科夫決策過程(MDP)](https://www.cnblogs.com/pinard/p/94262