1. 程式人生 > >強化學習(Reinforcement Learning)知識整理

強化學習(Reinforcement Learning)知識整理

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               

因為準備投入學習 CS294,具體見 知乎專欄,複習了下之前學習 Udacity 和 CS181 中有關強化學習部分的筆記和資料,再看了遍 David Silver 課程的 PPT,整理成了這篇文章。

另外,準備建一個深度增強學習方面的微信交流群,有興趣的朋友可以加我微信:awolegechu 請註明 姓名-學校/單位

馬爾可夫決策過程(Markov Decision Processes,MDPs)

MDPs 簡單說就是一個智慧體(Agent)採取行動(Action)從而改變自己的狀態(State)獲得獎勵(Reward)與環境(Environment)發生互動的迴圈過程。

MDP 的策略完全取決於當前狀態(Only present matters),這也是它馬爾可夫性質的體現。

其可以簡單表示為: M = <S, A, P_sa, R>

基本概念

  1. s \in S: 有限狀態 state 集合,s 表示某個特定狀態
  2. a \in A: 有限動作 action 集合,a 表示某個特定動作
  3. Transition Model T(S, a, S’) \sim P_r(s’|s, a): Transition Model, 根據當前狀態 s 和動作 a 預測下一個狀態 s’,這裡的 P_r 表示從 s 採取行動 a 轉移到 s’ 的概率
  4. Reward R(s, a) = E[R_{t+1}|s, a]:表示 agent 採取某個動作後的即時獎勵,它還有 R(s, a, s’), R(s) 等表現形式,採用不同的形式,其意義略有不同
  5. Policy \pi(s) \to a: 根據當前 state 來產生 action,可表現為 a=\pi(s)
     或 \pi(a|s) = P[a|s],後者表示某種狀態下執行某個動作的概率

回報(Return):

U(s_0\,s_1\,s_2\,\cdots) 與 折扣率(discount)\gamma\in[0,1]: U 代表執行一組 action 後所有狀態累計的 reward 之和,但由於直接的 reward 相加在無限時間序列中會導致無偏向,而且會產生狀態的無限迴圈。因此在這個 Utility 函式裡引入 \gamma 折扣率這一概念,令往後的狀態所反饋回來的 reward 乘上這個 discount 係數,這樣意味著當下的 reward 比未來反饋的 reward 更重要,這也比較符合直覺。定義

\begin{align}U(s_0\,s_1\,s_2\,\cdots) &= \sum_{t=0}^{\infty}{\gamma^tR(s_t)} \quad 0\le\gamma<1 \\    &\le \sum_{t=0}^{\infty }{\gamma^tR_{max}} = \frac{R_{max}}{1-\gamma}    \end{align}

由於我們引入了 discount,可以看到我們把一個無限長度的問題轉換成了一個擁有最大值上限的問題。

強化學習的目的是最大化長期未來獎勵,即尋找最大的 U。(注:回報也作 G 表示)

基於回報(return),我們再引入兩個函式

  • 狀態價值函式:v(s)=E[U_t|S_t=s],意義為基於 t 時刻的狀態 s 能獲得的未來回報(return)的期望,加入動作選擇策略後可表示為v_{\pi}(s)=E_{\pi}[U_t|S_t=s](U_t=R_{t+1}+\gamma R_{t+2}+\cdots+\gamma^{T-t-1}R_T)
  • 動作價值函式:q_{\pi}=E_{\pi}[U_t|S_t=s,\,A_t=a],意義為基於 t 時刻的狀態 s,選擇一個 action 後能獲得的未來回報(return)的期望

價值函式用來衡量某一狀態或動作-狀態的優劣,即對智慧體來說是否值得選擇某一狀態或在某一狀態下執行某一動作。

MDP 求解

我們需要找到最優的策略使未來回報最大化,求解過程大致可分為兩步,具體內容會在後面展開

  1. 預測:給定策略,評估相應的狀態價值函式和狀態-動作價值函式
  2. 行動:根據價值函式得到當前狀態對應的最優動作

Bellman 期望方程

Bellman 方程的分析

為了更加了解方程中期望的具體形式,可以見下圖,第一層的空心圓代表當前狀態(state),向下連線的實心圓代表當前狀態可以執行兩個動作,第三層代表執行完某個動作後可能到達的狀態 s’。

根據上圖得出狀態價值函式公式:v_{\pi}(s)=E[U_t|S_t=s]=\sum_{a\in A}\pi(a|s)\,\left( R_s^a+\gamma \sum_{s'\in S}P^a_{ss'}v_{\pi}(s')\right)

其中,P_{ss’}^a = P(S_{t+1}=s'|S_t=s, A_t=a)

上式中策略\pi是指給定狀態 s 的情況下,動作 a 的概率分佈,即\pi(a|s)=P(a|s)

我們將概率和轉換為期望,上式等價於:

v_{\pi}(s) = E_{\pi}[R_s^a + \gamma v_{\pi}(S_{t+1}|S_t=s]

同理,我們可以得到動作價值函式的公式如下:

q_{\pi}(s,a)=E_{\pi}[R_{t+1}+\gamma q_{\pi}(S_{t+1},A_{t+1})|S_t=s,A_t=a]
如上圖,Bellman 方程也可以表達成矩陣形式: v=R+\gamma Pv ,可直接求出 v=(I-\gamma P)^{-1}R ;其複雜度為 O(n^3) ,一般可通過動態規劃、蒙特卡洛估計與 Temporal-Difference learning 求解。

狀態價值函式和動作價值函式的關係

v_{\pi}(s) = \sum_{a \in A} \pi(a|s)q_{\pi}(s,a) = E[q_{\pi}(s,a)|S_t=s]
q_{\pi}(s,a) = R_s^a + \gamma \sum_{s'\in S}P_{ss'}^a \sum_{a' \in A}\pi(a'|s')q_{\pi}(s',a') = R_s^a+\gamma \sum_{s' \in S} P_{ss'}^a v_{\pi}(s')

最優方程

最優價值函式(optimal state-value function)

v_*(s)=\max_{\pi}{v_{\pi}(s)} \\q_*(s,a) = \max_{\pi}q_{\pi}(s,a)

其意義為所有策略下價值函式的最大值

Bellman最優方程

v_*(s)= \max_aq_*(s,a)= \max_a\left( R_s^a + \gamma\sum_{s'\in S}P_{ss'}^a v_*(s') \right) \\q_*(s,a)= R_s^a+\gamma \sum_{s'\in S}P_{ss'}^av_*(s') = R_s^a + \gamma \sum_{s’ \in S}P_{ss'}^a\max_{a’}q_*(s',a')
  • v 描述了處於一個狀態的長期最優化價值,即在這個狀態下考慮到所有可能發生的後續動作,並且都挑選最優的動作來執行的情況下,這個狀態的價值
  • q 描述了處於一個狀態並執行某個動作後所帶來的長期最優價值,即在這個狀態下執行某一特定動作後,考慮再之後所有可能處於的狀態並且在這些狀態下總是選取最優動作來執行所帶來的長期價值

最優策略(Optimal Policy)

關於收斂性:(對策略定義一個偏序)

\pi \ge \pi' \,\mbox{if}\; v_{\pi}(s)\ge v_{\pi'}(s),\forall s

定理:

對於任意 MDP:

  • 總是存在一個最優策略\pi_*,它比其它任何策略都要好,或者至少一樣好
  • 所有最優決策都達到最優值函式, v_{\pi_*}(s)=v_*(s)
  • 所有最優決策都達到最優行動值函式,q_{\pi_*}(s,a)=q_*(s,a)

最優策略可從最優狀態價值函式或者最優動作價值函式得出:

\pi_*(a|s) = \begin{cases}1, & \mbox{if } a = \arg\max_{a \in A} q_*(s,a)\\0, & otherwise\end{cases}

求解 Bellman 最優方程

通過解 Bellman 最優性方程找一個最優策略需要以下條件:

    • 動態模型已知
    • 擁有足夠的計算空間和時間
    • 系統滿足 Markov 特性

所以我們一般採用近似的辦法,很多強化學習方法一般也是研究如何近似求解 Bellman 方程,一般有下面幾種(後文會做具體講解):

    • Value Iteration
    • Policy Iteration
    • Q-learning
    • Sarsa

MDPs 還有下面幾種擴充套件形式:

    • Infinite and continuous MDPs
    • Partially observable MDPs
    • Undiscounted, average reward MDPs

動態規劃求解 MDPs 的 Planning

動態規劃是一種通過把複雜問題劃分為子問題,並對自問題進行求解,最後把子問題的解結合起來解決原問題的方法。「動態」是指問題由一系列的狀態組成,而且狀態能一步步地改變,「規劃」即優化每一個子問題。因為MDP 的 Markov 特性,即某一時刻的子問題僅僅取決於上一時刻的子問題的 action,並且 Bellman 方程可以遞迴地切分子問題,所以我們可以採用動態規劃來求解 Bellman 方程。

MDP 的問題主要分兩類

  • Prediction 問題
    • 輸入:MDP <S,A,P,R,\gamma> 和策略(policy)\pi
    • 輸出:狀態價值函式 v_{\pi}
  • Control 問題
    • 輸入:MDP <S,A,P,R,\gamma>
    • 輸出:最優狀態價值函式v_*和最優策略\pi

解決也是分兩種,見下文

Policy Iteration

步驟:

  • Iterative Policy Evaluation:
    • 基於當前的 Policy 計算出每個狀態的 Value function
    • 同步更新:每次迭代更新所有的狀態的 vV_{k+1}(s)=\sum_{a\in A}\pi(a|s)\left( R_s^a+\gamma\sum_{s'\in S}P_{ss'}^av_k(s')\right)
    • 矩陣形式:\mathbf{v^{k+1}=R^{\pi}+\gamma P^{\pi}v^k}
    • 左邊是第 k 次迭代每個 state 上狀態價值函式的值,右邊是通過貪心(greedy)演算法找到策略
    • 計算例項:
      • k=2, -1.7 = -1.0 + 2 x (1/3) x (-1)
      • k=3, -2.9 = -1.0 + -1.7 x (1/3) + 2 x (1/3) x (-2.0)
  • Policy Improvement
    • 基於當前的狀態價值函式(value function),用貪心演算法找到最優策略\pi'(s)=\arg\max_{a\in A} q_{\pi}(s,a)
    • v_{\pi}會一直迭代到收斂,具體證明如圖:
    • 擴充套件
      • 事實上在大多數情況下 Policy evaluation 不必要非常逼近最優值,這時我們通常引入 \epsilon-convergence 函式來控制迭代停止
      • 很多情況下價值函式還未完全收斂,Policy 就已經最優,所以在每次迭代之後都可以更新策略(Policy),當策略無變化時停止迭代

Value Iteration

  • 最優化原理:當且僅當狀態 s 達到任意能到達的狀態 s‘ 時,價值函式 v 能在當前策略(policy)下達到最優,即v_{\pi}(s') = v_*(s'),與此同時,狀態 s 也能基於當前策略達到最優,即v_{\pi}(s) = v_*(s)
  • 狀態轉移公式為:v_{k+1}(s) = \max_{a\in A}(R^a_s+\gamma\sum_{s' \in S}P^a_{ss'}v_k(s'))
  • 矩陣形式為:\mathbf{v_{k+1}} =\max_{a \in A} \mathbf{R^a_s} +\gamma\mathbf{P^av_k})
  • 下面是一個例項,求每個格子到終點的最短距離,走一步的 reward 是 -1:

同步動態規劃演算法小結

  1. 迭代策略評估(Iterative Policy Evaluation)解決的是 Prediction 問題,使用了貝爾曼期望方程(Bellman Expectation Equation)
  2. 策略迭代(Policy Iteration)解決的是 Control 問題,實質是在迭代策略評估之後加一個選擇 Policy 的過程,使用的是貝爾曼期望方程和貪心演算法
  3. 價值迭代(Value Iteration) 解決的是 Control 問題,它並沒有直接計算策略(Policy),而是在得到最優的基於策略的價值函式之後推匯出最優的 Policy,使用的是貝爾曼最優化方程(Bellman Optimality Equation)

還有關於 Model-Free, Value Function Approximation, Policy Gradient 等等一堆內容明天再弄。。。。


參考資料:

  1. 優達學城(Udacity)納米學位增強學習部分
  2. Reinforcement Learning By David Silver 
  3. UC Berkeley CS188 Intro to AI -- Course Materials
           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述 你好! 這是你第一次使用 **Markdown編輯器** 所展示的歡迎頁。如果你想學習如何使用Markdown編輯器, 可以仔細閱讀這篇文章,瞭解一下Markdown的基本語法知識。

新的改變

我們對Markdown編輯器進行了一些功能拓展與語法支援,除了標準的Markdown編輯器功能,我們增加了如下幾點新功能,幫助你用它寫部落格:

  1. 全新的介面設計 ,將會帶來全新的寫作體驗;
  2. 在創作中心設定你喜愛的程式碼高亮樣式,Markdown 將程式碼片顯示選擇的高亮樣式 進行展示;
  3. 增加了 圖片拖拽 功能,你可以將本地的圖片直接拖拽到編輯區域直接展示;
  4. 全新的 KaTeX數學公式 語法;
  5. 增加了支援甘特圖的mermaid語法1 功能;
  6. 增加了 多螢幕編輯 Markdown文章功能;
  7. 增加了 焦點寫作模式、預覽模式、簡潔寫作模式、左右區域同步滾輪設定 等功能,功能按鈕位於編輯區域與預覽區域中間;
  8. 增加了 檢查列表 功能。

功能快捷鍵

撤銷:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜體:Ctrl/Command + I
標題:Ctrl/Command + Shift + H
無序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
檢查列表:Ctrl/Command + Shift + C
插入程式碼:Ctrl/Command + Shift + K
插入連結:Ctrl/Command + Shift + L
插入圖片:Ctrl/Command + Shift + G

合理的建立標題,有助於目錄的生成

直接輸入1次#,並按下space後,將生成1級標題。
輸入2次#,並按下space後,將生成2級標題。
以此類推,我們支援6級標題。有助於使用TOC語法後生成一個完美的目錄。

如何改變文字的樣式

強調文字 強調文字

加粗文字 加粗文字

標記文字

刪除文字

引用文字

H2O is是液體。

210 運算結果是 1024.

插入連結與圖片

連結: link.

圖片: Alt

帶尺寸的圖片: Alt

當然,我們為了讓使用者更加便捷,我們增加了圖片拖拽功能。

如何插入一段漂亮的程式碼片

部落格設定頁面,選擇一款你喜歡的程式碼片高亮樣式,下面展示同樣高亮的 程式碼片.

// An highlighted block var foo = 'bar'; 

生成一個適合你的列表

  • 專案
    • 專案
      • 專案
  1. 專案1
  2. 專案2
  3. 專案3
  • 計劃任務
  • 完成任務

建立一個表格

一個簡單的表格是這麼建立的:

專案 Value
電腦 $1600
手機 $12
導管 $1

設定內容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列 第二列 第三列
第一列文字居中 第二列文字居右 第三列文字居左

SmartyPants

SmartyPants將ASCII標點字元轉換為“智慧”印刷標點HTML實體。例如:

TYPE ASCII HTML
Single backticks 'Isn't this fun?' ‘Isn’t this fun?’
Quotes "Isn't this fun?" “Isn’t this fun?”
Dashes -- is en-dash, --- is em-dash – is en-dash, — is em-dash

建立一個自定義列表

Markdown
Text-to- HTML conversion tool
Authors
John
Luke

如何建立一個註腳

一個具有註腳的文字。2

註釋也是必不可少的

Markdown將文字轉換為 HTML

KaTeX數學公式

您可以使用渲染LaTeX數學表示式 KaTeX:

Gamma公式展示 Γ ( n ) = ( n 1 ) ! n N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N 是通過尤拉積分

Γ ( z ) = 0 t z 1 e t d t &ThinSpace; . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,.

你可以找到更多關於的資訊 LaTeX 數學表示式here.

新的甘特圖功能,豐富你的文章

gantt
        dateFormat  YYYY-MM-DD
        title Adding GANTT diagram functionality to mermaid
        section 現有任務
        已完成               :done,    des1, 2014-01-06,2014-01-08
        進行中               :active,  des2, 2014-01-09, 3d
        計劃一               :         des3, after des2, 5d
        計劃二               :         des4, after des3, 5d
  • 關於 甘特圖 語法,參考 這兒,

UML 圖表

可以使用UML圖表進行渲染。 Mermaid. 例如下面產生的一個序列圖::

這將產生一個流程圖。:

  • 關於 Mermaid 語法,參考 這兒,

FLowchart流程圖

我們依舊會支援flowchart的流程圖:

  • 關於 Flowchart流程圖 語法,參考 這兒.

匯出與匯入

匯出

如果你想嘗試使用此編輯器, 你可以在此篇文章任意編輯。當你完成了一篇文章的寫作, 在上方工具欄找到 文章匯出 ,生成一個.md檔案或者.html檔案進行本地儲存。

匯入

如果你想載入一篇你寫過的.md檔案或者.html檔案,在上方工具欄可以選擇匯入功能進行對應副檔名的檔案匯入,
繼續你的創作。


  1. mermaid語法說明 ↩︎

  2. 註腳的解釋 ↩︎