1. 程式人生 > >深度學習筆記——理論與推導之Reinforcement Learning(十三)

深度學習筆記——理論與推導之Reinforcement Learning(十三)

Reinforcement Learning(強化學習)

Reinforcement Learning

  1. 機器學習的分支:
    有監督學習是機器學習任務的一種,它從有標記的訓練資料中推匯出預測函式。有標記的訓練資料是指每個訓練例項都包括輸入和期望的輸出。即:給定資料,預測標籤
    無監督學習是機器學習任務的一種,它從無標記的訓練資料中推斷結論。最典型的無監督學習就是聚類分析,它可以在探索性資料分析階段用於發現隱藏的模式或者對資料進行分組。即給定資料,尋找隱藏的結構。
    強化學習是機器學習的另一個領域。它關注的是軟體代理如何在一個環境中採取行動以便最大化某種累積的回報。即給定資料,學習如何選擇一系列動作,以最大化長期收益。

    這裡寫圖片描述
  2. Reinforcement Learning有什麼不同呢?
    a) 它沒有監督,只有一個收益訊號。
    b) 反饋會延時,而不是實時的。
    c) 時序是非常重要的(比如順序等)
    d) 代理人的行為影響後續資料獲得的資訊
  3. Deep Reinforcement Learning:AI = DL+RL
    這裡寫圖片描述
  4. Scenario of Reinforcement Learning(RL的場景):
    Agent與環境的互動,在與環境互動中,Agent會observation一些資訊,也叫做State。接下來Machine會根據它看到的東西採取一些Action做一些事情,這些事情會對環境造成一些改變,環境就會給Agent的Reward(Postive Reward/Negtivate Reward),Agent就是儘量使自己得到的Reward最大化:
    比如說一個機器人,端一杯水,這時候它把水打翻了(Action),得到一個“Don’t do that”(Negtivate Reward)。
    這裡寫圖片描述


    接下來這個Agent會採取行動使得獲得的reward最大化,所以現在它就查了地板(Action),得到了一個”Thank you”(Postive Reward)。
    這裡寫圖片描述

  5. 我們說過Machine Learning其實就是在找一個Function,而Reinforcement Learning也是在找一個function,我們把這個function稱為Action = π(Observation),它的輸入是一個Observation,輸出是一個Action,也就是Agent要採取的動作(也叫做Actor/Policy)。我們如何pick the best funtion呢?即根據現在環境給我們的reward去找出一個function,可以讓machine得到的reward最大。
    這裡寫圖片描述


    那麼AlphaGo是怎麼下圍棋的呢?
    首先在下圍棋時,AlphaGo會先觀察這個棋盤,然後他將棋子下在(3,3)的位置:
    這裡寫圖片描述
    接下來,它的對手會放入另外一個白子,也就是Agent的Observation變了。這也就促使它做了另外一個Action,這個過程會反覆不斷的繼續下去,通常情況下它得到的Reward是0,棋盤獲勝時,reward=1,棋盤輸時reward=-1:
    這裡寫圖片描述
    這裡寫圖片描述

  6. Supervised vs Reinforcement Learning:
    • Supervised看到棋盤是情況A時,人類會下5*5,所以知道要走5-5,看到棋盤是情況B時,知道人類會下3 * 3,所以他以後也會下3-3。是Learing from teacher
    • Reinforcement Learning:讓Machine和某個人下棋,最後贏了他就知道這麼下是好的。如果輸了,他就知道這麼下不好,但他也不知道那一步不好。RL是Learning fromexperience
      這裡寫圖片描述
      如果AlphaGo只用Reinforcement Learning去learn可能永遠學不起來,只有經過Supervised Learning先和棋譜學習一段時間再用RL。
      那麼chat-bot也是一樣的:
      這裡寫圖片描述
      那麼如何讓chat-bot聊天呢?
      我們可以定義兩個agent讓它們互聊:
      這裡寫圖片描述
      互聊後就會得到好多條記錄,接下來你就可以定義一個rule去評估這些dialogue的好壞:
      這裡寫圖片描述
      總結:
      Supervised:每一個都chat-bot有正確答案。
      Reinforcement:如果得到負反饋說明之前沒有講好,如果得到正反饋說明之前講好了。
  7. RL有很多其他的應用:
    這裡寫圖片描述
  8. Example:Playing Video Game
    這裡寫圖片描述
    • Space invader:
      結果就只有兩種:一是所有外星人都會被殺掉,二是你的spaceship會被毀壞。
      這裡寫圖片描述
      這裡寫圖片描述
      遊戲開始的時候:
      首先觀察s1,Agency做出一個Action a1表示向右移動,因為它並沒有殺掉外星人,所以它的reward = 0,接下來它會觀察到新的畫面(Observation s2),在此基礎上,Agency做出一個Action a2表示開火,因為它殺掉了一個外星人,所以會獲得一個reward = 5。
      這裡寫圖片描述
      互動很多回合後,當spaceship被destroy後遊戲就結束了:
      這裡寫圖片描述
      Agency要做的就是採取某些行動使得reward得到最大值。
  9. Reinforcement Learning的兩個重要的特性(這兩個特性也使得RL產生很大的挑戰):
    • Reward delay:有時候採取一個Action,可能在短時間內看不到任何的reward,而在長時間內可以得到reward。比如說:在space invader中,只有”fire”才會獲得reward,而在之前的”right”or”left”中並不能獲得到reward。或者在某些遊戲中,我們可能會犧牲當前的利益去換取長期的利益。
    • Agent的actions會影響往後所觀察到的oberservation,RL的training data是來源於Agent和環境的互動。
      這裡寫圖片描述

Outline

Model-free Approach

Model-free Approach:不需要對環境做理解,Machine對環境的理解是隱藏的,它並沒有個模型去描述環境。Model-free Approach就是看到現在的Observation直接做出Action。

Model-free Approach又可以分成兩大類:一類是Policy-based,一類是Value-based。在Policy-based中我們可以Learn一個Actor;在Value-based中我們可以learn一個Critic,這個Critic可以反推出一個Actor。
這裡寫圖片描述

Policy-based Approach(Learning an Actor)

  1. 從DL入手的3 steps:
    • Find a function:RL很火的一部分原因就是我們把原來要找的function用NN來表示,那麼用NN來表示function有什麼好處呢?它這真正的好處就是generalization,即Machine不需要看過所有的input才知道應該如何output。
      這裡寫圖片描述
      NN as Actor:
      輸入一些pixels,通過NN,輸出一個vector,每一個dimension代表採取這個行動的可能性。
      這裡寫圖片描述
    • goodness of function:
      這裡寫圖片描述
      如何評估這function的好壞呢?
      • Review:Supervised Learning
        這裡寫圖片描述
      • Goodness of Actor:用這actor去玩這個遊戲,計算total reward。注意:因為環境是random的,所以相同的actor玩同一個遊戲也未必會得到同一個reward,並且actor也是有隨機性的,我們看到Actor得到的output是一個distribution,所以就算是在同樣的情景,Actor的迴應也是具備隨機性的。因為actor玩同一個遊戲每一次的結果都可能不一樣,所以我們計算reward是要求計算很多次遊戲的reward,然後再計算reward的期望值。所以這個期望值就可以衡量actor π有多好。
        這裡寫圖片描述
        那麼這個期望值應該怎麼計算呢?
        首先,τ的產生是基於actor的,s1表示的是agency觀察到的state,是環境給的;a1是agency採取的action;r1是環境給actor的reward。那麼如何看待一個actor(或者說一個actor的引數θ)產生τ的機率呢?首先就計算P(τ|θ) = P(s1)P(a1|s1,θ)P(r1,s2|s1,a1)P(a2|s2,θ)P(r2,s3|s2,a2)……
        因為s1是環境隨機產生的,s1和θ得到動作a1,a1和s1得到反饋r1和下一個環境s2,以此類推。
        這裡寫圖片描述
        接下來,我們就可以估算reward,那麼reward的期望值怎麼計算呢?窮舉是不可能的,所以我們使用actor πθ玩N次遊戲,獲得{τ1,τ2,τ3……τN}。
        這裡寫圖片描述
    • pick the best function
      這裡寫圖片描述
      Gradient Ascent:
      • Problem statement:
        這裡寫圖片描述
      • 如何計算Policy Gradient:
        我們之前可以把summation over τ換成sample是因為summation中有P(τ|θ)這一項,你看到summation over τ和P(τ|θ)就可以換成sample,而現在變成了▽P(τ|θ),已經沒有P(τ|θ)了,所以就不能替換。我們現在說的策略是Policy Gradient,我們說沒有P(τ|θ)所以我們可以創造一個P(τ|θ)。
        這裡寫圖片描述
        如何計算▽log[P(τ|θ)]?
        這裡寫圖片描述
        接下來我們就可以化出下面公式:
        我們讓machine和環境互動N次,得到N個軌道(trajectory,即我們說的τ),每個trajectory都有Tn個state,在每個state st^n 上machine採取了at^n,我們計算機率求log再取gradient,再把前面乘上R(τ^n)。它的物理含義就是:在τ^n的trajectory中state st^n上machine採取at^n這個action,如果R(τ^n)是正的,那麼machine就會增加在這個state採取這個action的機率。
        注意:R(τ^n)必須是整個trajectory的reward的和。如果把R(τ^n)換成rτ^n那麼machine就只會考慮當下的reward,比如說fire才會有reward,但是right or left就沒有reward,就會導致machine一直在fire,而不right or left。
        這裡寫圖片描述
        • Policy Gradient實際應用:
          首先random parameter θ,再用這個θ去玩n次遊戲後就會得到n個trajectory,接下來你可以拿這些資料去update你的引數θ,再用新的θ去玩新的遊戲:
          這裡寫圖片描述
          如果我們把由State推出action這個看成是一個分類問題(分為3類),那麼我們知道我們應該最小化的是一個交叉熵,那麼由於我們需要得到的正確答案是yi = left,並且我們找到logyi = logP(“left”|s),因此我們可以把這個gradient ascend 方程變成下圖這種(因為其他的也都是真實值都是0):
          這裡寫圖片描述
          現在我們這麼看,假設Reward都等於1,輸入一個state,經過NN後輸出action,這樣看起來好像有點類似分類問題了:
          這裡寫圖片描述
          但由於gradient中還有一項reward,所以它和普通的NN並不同。就相當於給每一筆training data都乘上R(τ^n)。那這麼做是什麼意思呢?如下圖,假設R(τ^1) = 2,那麼相當於給(s1^1,a1^1)乘以2倍。這樣做其實就很簡單,就相當於我們只需要修改weight的地方(即賦上Reward)。
          這裡寫圖片描述
          RL和NN在train的時候不一樣的地方就是:NN只需要整理好training data就可以直接做NN了,而RL在收集好第一筆data後都要解一次分類問題去train一次NN,然後再收集好一筆data在train一次NN,以此類推。
        • Baseline:如果所有的reward都是正的那麼會有一定問題:
          • 在理想情況下是沒什麼問題的,假設state狀態下,有三個action:a,b,c,它們的reward都是positive,那麼由於c的reward比較大,b的reward比較小,所以c可能提高的比較多,那麼由於最後會通過一個softmax,所以就相當於c和a被增加了,b被減小了。
          • 然而我們其實並不是處於理想狀態下,因為我們做的是sample操作,假設state狀態下有三個action:a,b,c,除了a,b和c都被sample到了,那麼由於a沒被sample到,也就相當於其的reward = 0,而其他reward>0,因此not sample的action就變成了最差的。
            這裡寫圖片描述
            所以一般情況下我們可以在Reward後面減去一個baseline(這個baseline可以由自己定義),這樣可以控制reward,讓它們不要都大於0。

Value-based Approach(Learning an Critic)

  1. Critic:並不真的決定action,只是用來評估actor有多好或者多不好。可以從critic function去推出一個actor,比如說Q-learning。
    這裡寫圖片描述
  2. State value function V^π(s):input的是一個state,output是一個reward的總和(從state開始到最後的),value function,depend on actor,即不同的actor在同一個state接下來會得到的reward也會不一樣,因為不同的actor做的事情不一樣,到遊戲結束的,total reward也會不一樣。下面的V^π要標記為π,代表的是我們evaluate的actor是π。最後的output會是一個scalar,如果今天actor比較強,那麼output就比較大,如下:
    這裡寫圖片描述
    舉個小栗子:
    這裡寫圖片描述
  3. 如何estimate V^π(s)呢?
    • Monte-Carlo based approach:
      • 觀察我們要evaluate的那個actor玩遊戲
      • 我們發現這個actor在看到state sa後,它在整場遊戲結束後得到的reward是Ga,如下:
        這裡寫圖片描述
    • Temporal-difference approach:
      • 假設我們只觀察到互動的其中一部分:….st,at,rt,st+1…接下來我們會這麼learn:我們希望他們的差值和rt越接近越好。
        這裡寫圖片描述
    • MC vs TD:
    • MC:我們Sample到的Ga,我們觀察到actor在某個state後得到的reward的總和,它是V^π的unbiased的estimation,也就是說如果今天machine可以重複走到某個state sa很多很多次,我們每次都去衡量他的Ga,但每次衡量出的結果都不一定一樣,因為machine的環境都有他的隨機性,但是我們把每次我們衡量出的結果都做平均,它是unbiased estimate V^π,但是它的variance是比較大的,因為Ga是好多個timestep的reward的總和,每個timestep都有隨機性,所以總和就有很大的隨機性。
    • TD:TD的特性和MC相反,因為TD的target的r,r是某個step得到的reward,所以r相較於Ga得到的variance比較小。
      這裡寫圖片描述
      舉個栗子:
      有下面有8個序列,我們發現通過MC和TD計算sb,V^π(sb) = 3/4;那麼針對sa呢?對於MC,因為sa只sample到一次,並且reward的總和是0,所以V^π(sa) = 0,對於TD,因為V^π(sb) + r = V^π(sa)而V^π(sb) = 3/4,所以V^π(sa) = 3/4。解釋上來說,當V^π(sa) = 3/4,可以解釋成sample的資料太少,而V^π(sa) = 0可以解釋為如果前面遇到sa,後面的sb的reward就會等於0。兩者的解釋都是合理的。
      這裡寫圖片描述
    • Another Critic:State-action value function Q^π(s,a):輸入的是state和action,輸出的是reward。我們常見的是右手邊的這種,輸入s,輸出的是離散的幾個action得到reward。
      這裡寫圖片描述

Q-Learning

π和環境多次互動後,通過TD or MC得到Q^π(s,a),得到Q function後可以得到一個新的更好的π’。
這裡寫圖片描述
這個π’不一定要存在,它其實就是state下會採用最好的那個action的actor,當然它無法處理連續的action,它只能處理action可數的情況。
這裡寫圖片描述

Model-based Approach

Model-based Approach:可以對環境建模,這就需要Machine對環境有一定理解。可以推論接下來會發生的事情,直接對未來做預測。這種方法並不是都適用的,因為你需要machine直接去預測接下來會發生的事情,machine必須對環境有比較深刻的理解。因此Model-based可能說在下圍棋的時候是有些用處的,而在做video game的時候就沒什麼用處了。

Deep Reinforcement Learning(Actor-Critic)

Actor-Critic

actor π與環境互動多次後,通過TD or MC,可以得到Q function和V function,通過Q和V,得到一個π,這個就可以處理連續的action。
這裡寫圖片描述