強化學習的基礎知識

  最近又有alpha zero 以100:0戰敗 alpha master((打敗當前人類最牛圍棋選手柯潔的人工智能)的消息,給強化學習注入了更強的一劑興奮劑。剛好順手學習了下有關強化學習的一些基礎,現整理給大家共饗。

What is RL

  什麼是強化學習(Reinforcement Learning)?
  通過對環境的探索,習得與環境交互的最優策略,從而獲得最大收益的過程,稱之爲“強化學習”。
  舉個例子,訓練小狗去撿東西回來。獎勵小狗的某個特定動作,如果作對了某個可能撿東西的傾向動作,給它點吃的;如果做錯了某個動作,打它腦殼一下。小狗學會撿東西的整個過程,可以稱之爲強化學習的過程。小狗通過與環境(人+自然環境)的交互,獲得獎勵避免懲罰,最後得到一種策略:只要人丟出東西,就抓緊時間撿回來,就能夠獲得好處。

基本概念

  RL基本模式:
  


  agent    :智能體,學習策略的主體,比如大腦。
  environment :需要觀察的外部環境。
  state    :環境的描述。st
  action    :智能體採取的行動。
  reward   :環境對某個行爲反饋的獎勵值。
  MDP:只根據環境當前狀態,不斷做出action的過程,可以用MDP(Markov Decision Process)來描述。
  (s0,r0)(ps0,a0)(s1,r1)(ps1,a1)(s2,r2)(st,rt)
  

策略的評估

  根據策略做決定的過程已知,那麼如何評估採取行爲後的收益呢?如何評估當前策略好壞呢?

收益與策略

  這裏主要便於理解,策略從收益的角度來評估是怎麼回事。
  1)帶有狀態轉移的時間序列的描述
  爲描述一個離散時間序列的狀態和行爲:
    現定義時刻t 的狀態st 和行爲at ,其中stS;atA(s)
    狀態s 到行爲a 的關係映射(可以認爲是依概率行動):a=π(s)
    依照某種策略採取行動,狀態之間的轉移概率:Pπ(s)ss=Pπ(s)(s|s)=Prob(st+1=s|st=s,at=π(s))
    執行某個行爲a 後,狀態之間的轉移概率:Pass=Pa(s|s)
  注意:行爲的發生本身是概率事件,另外發生行爲後的狀態轉移也是概率事件。
  則帶有狀態轉移關係的時間序列描述如下:
  

(st,π(st))a=π(s)Pass(st+1,π(st+1))a=π(s)Pass(st+2,π(st+2))

  可視化如上面的彩圖所示。
  2)瞬時收益與序列收益
  定義每個時刻的瞬時收益(收益是策略好壞的體現):r(st,at=π(st)) ,由此看到rst 的複合隨機變量。
  則在當前狀態st 開始時,這個序列{s}|st={st,st+1,st+2,} 的整體收益是多少呢?
  
R({s}|st)=r(st,π(st))+γr(st+1,π(st+1))+γ2r(st+2,π(st+2))+

  其中γ(0,1) 是假設未來收益是有折扣的。
  notice:R({s}|st) 是隨機變量st,st+1,st+2 的複合隨機變量。
  將所有可能地序列求個收益的平均值,是不是就搞清了未來收益。
  序列的生成,是由其背後的指導策略導致的不同走向。
  E[R({s}|st)] 對所有序列收益求取平均,也就評估了隱藏於序列背後的關係。
  而這些序列背後隱藏的關係,就是狀態轉移背後的指導行動的策略π(s)
  
BellmanEquationRVQ

  整理下相關的數學概念
  Bellman Equation:f(x)=r(x)+γf(x)
  假設未來收益對當前是打折扣的γ(0,1)
  假設時間起始爲t=0 ,則以st=0 爲初始狀態的序列收益的BE表示。
  假設t=0 是爲了方便後面推導方便,也可以初始狀態直接定義爲st
  
  1)序列收益的評估
  R({s}|st=0)=r(st=0,π(st=0))+γr(st=1,π(st=1))+γ2r(st=2,π(st=2))+
         =rt=0+γR({s}|st=1)
         =r(st=0,π(st=0),st=1)+γR({s}|st=1)
         簡寫: R(s0)=r(s0,π(s0),s1)+γR(s1)
         或者: R(s)=r(s,π(s),s)+γR(s) #這種簡寫不利於理解 #
  
  對序列的收益另外表示形式:R({s}|st=0)=+t=0γtr(st,at=π(st))
  
  2)策略的評估及策略下行爲的評估
  計算執行某行爲action後的序列期望收益,來評估策略π 下的這個行爲的優劣。

Qπ(s,a)=Eπ[R({s}|s0=s,a0=a)]

  序列在當前狀態下的未來期望收益,用來評估策略的好壞。
Vπ(s)=Eπ[R({s}|s0=s)]

  3)Q和V的關係:
  根據定義可知,Qs 下的期望是VQV 多確定了一個初始狀態下的動作。
    Vπ(s)=aPassQπ(s,a) ## 所有s下可能依照π(s) 的動作 ##
        =sPπssQπ(s,a) ## 所有可能依照π(s) 的動作達到的新狀態 ##
  notice:採取某個動作本身是依概率的Ps(a=π(s)) ,採取了動作後新狀態的轉移也是依概率的Pass(s|s)
  
  4)由收益R(s) 的BE推導Vπ(s)
  如何由收益R(s) 的BE導出V(s) 的BE?現給出具體過程。
    R(s)=r(s0,a0)+γr(s1,a1)+γ2r(s2,a2)+
    R(s)=+t=0γtr(st,at)=R(s0,s1,s2)=R({s}|s0)
    R(s) 表示以st=0 爲初始狀態的,序列變量{s} 的複合隨機變量,這裏注意理解下。
    
    Vπ(s)=Eπ[R(s)]=Eπ[+t=0γtr(st,at)|st=0=s]
    Vπ(s)=Eπ[γ0r(s0,a0)++t=1γtr(st,at)|s0=s]
    =E[r(s0,a0=π(s0))]+E[+t=1γtr(st,at=π(st))|s0=s] # 拆出s0 時刻來 #
    
    利用多元隨機變量的期望等式如下:
     E[X(u,v)]=u,vp(u,v)X(u,v)
     =vp(v)p(u|v)X(u,v)=vp(v)E[X(u|v)]
    嘗試去掉s0 在序列後續時刻表示形式上的影響,
    受啓發於決策過程受限於當前狀態,而與前面的狀態無關,
    其實當前狀態隱含着已將前面的狀態考慮在內了。
    將st=1 的狀態拆解出來,令M=E[r(s0,a0=π(s0))]
    =M+sSPπ(s0)(s|s0)[+t=1γtr(st,at=π(st))|s0=s,s1=s]
    
    對隊列{st,st+1,st+2,} 而言,st=1 已經確定的情況下,前面的狀態s0 是對時刻t=1 無影響的。
    =M+γsSPπ(s0)(s|s0)[+t=1γt1r(st,at=π(st))|s1=s]
    後面這個式子,只是將起始狀態變爲s1 而已,可以認爲是新的初始狀態下的序列。
    =E[r(s0,a0=π(s0))]+γsSPπ(s0)s0sVπ(s)
    化爲通用式子 st=0 變爲s
    得到:
Vπ(s)=E[r(s,a=π(s))]+γsSPπ(s)ssVπ(s)

    也可以寫作:
Vπ(s)=Eπ[r(s,a=π(s))+γVπ(s)]

  5)由收益R(s) 的BE推導Qπ(s,a)
  以s 爲初始時刻狀態,且執行了某個動作a 後的序列收益期望
    Q(s,a)=Eπ(s)[R(s|s0=s,a0=a)]
    =Eπ[+t=0γtr(st,at)|s0=s,a0=a]
    =Eπ[γ0r(s0,a0)++t=1γtr(st,at)|s0=s,a0=a]]
    =Eπ[γ0r(s0,a0)]+Eπ[+t=1γtr(st,at)|s0=s,a0=a]
    =γ0r(s0,a0)+sPa0ss[+t=1γtr(st,at)|s0=s,a0=a,s1=s]
    第二時刻的狀態確定時,前面的狀態和動作都已經無影響了
    =E[r(s0,a0)]+sPa0ss[+t=1γtr(st,at)|s1=s]
    =E[r(s0,a0)]+γsPa0ssVπ(s)
    化爲通用式子
    Q(s,a)=E[r(s,a)]+γsPassVπ(s)
    也可以寫作:Q(s,a)=E[r(s,a)+γVπ(s)]|st=s,at=a

如何求解 Vπ(s)Qπ(s,a)

  怎麼求解Vπ(s) 是個大問題,精確求解困難時,近似估計也是可以的。
  1) 直接求解線性代數解:
    必須得知道具體的策略π(s) 纔可直接求解
    將VM 作爲向量,將Pπss 作爲轉移矩陣。
    Vπ=M+γPπVπ(1γPπ)Vπ=M
    得到解:Vπ=(1γPπ)1M

  2) 迭代的方法:
    Vπ,k+1(s)=E[r(s,a=π(s))]+γsSPπ(s)ssVπ,k(s) ## V(s) 的第二種期望的寫法 ##
    Vπ(s)r(s,a)+γVπ(s)
    上面兩個式子只不過是同樣思想的不同描述,一個側重在定義,一個側重在具體動作。
    簡單說明下迭代方法:
    這裏寫圖片描述

如何優化π 呢?

  上述的兩種方法只是能夠計算或者近似估計Vπ(s) ,並沒有給出對策略π 的優化。
  1)policy improvement
  下面介紹一個優化思路:
  假設當前已經得到了Vπ(s) 了,那麼若是依策略π(s) 採取下一步動作,使得未來收益Qπ(s,π(s)) 更大,是不是這個策略π(s) 是值得優化的方向。

Qπ(s,π(s))Vπ(s)    Vπ(s)Vπ(s)    π(s) better than π(s)

  簡單證明如下:
    Vπ(s)Qπ(s,π(s))
        =E[r(s,π(s))+γVπ(s)]|s,π(s) ## 注意,僅是當前採取π(s) 動作,並不影響Qπ(s,a) 定義 ##
        E[r(s,π(s))+γQπ(s,π(s))] ## 再次應用π(s) 採取收益變大的動作 ##
        =E[r(s,π(s))+γE[r(s,π(s))+γVπ(s′′)]]
        =E[r(s,π(s))+γr(s,π(s))+γ2Vπ(s′′)]
        E[r(s,π(s))+γr(s,π(s))+γ2r(s′′,π(s′′))+]
        =Vπ(s)
  2)greedy policy
  某個policy下,每一次用Qπ(s,a) 做決定,都找下一步的最大收益的action,則稱該策略爲greedy policy。
  若是每一步行動,都採取最大化未來收益的策略,是不是更好?
Vπ(s)=maxaA(s){Q(s,a)}    π(s)=argmaxaA(s){Q(s,a)}

  3)可操作的迭代優化方法
  一般的方法都是混合了policy-evaluate和policy-improvement(邊評估邊優化),
  並且不會一次遍歷所有可能的,基本不會提前知道轉移概率(以採樣方式來替代)。
  時差回退法(Temporal Difference Backup Method)是RL常見的迭代優化方法。
V(s)V(s)+α[r(s,a)+γV(s)V(s)]
Q(s,a)Q(s,a)+α[r(s,a)+γV(s)Q(s,a)]

  策略提升的方法有很多,替換上即可,比如greedy。
  Principle of Optimality: An optimal policy has the property that whatever the initial state and initial decision are, the remaining decisions must constitute an optimal policy with regard to the state resulting from the first decision. (See Bellman, 1957, Chap. III.3.)

參考文獻

  1.《Q-Learning for Markov Decision Process》
  2. https://www.wikiwand.com/en/Bellman_equation
  3.《Technical Note: Q-Learning》
  4.《Temporal Difference Learning and TD-gamma》
  5.《 Monte-Carlo Tree Search: A New Framework for Game AI 》
  6. 《An Analysis of Reinforcement Learning with Function Approximation》
  7. 《Human-Level Control Through Deep Reinforcement Learning》
  8.《Playing Atari with Deep Reinforcement Learning》

發佈了81 篇原創文章 · 獲贊 134 · 訪問量 32萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章