1.3 蒙特卡洛(mc)和時序差分(td)的聯絡與區別
1.4 reinforce的計算過程
首先介紹幾個名詞:
actor
:產生並執行策略或動作(policy或者action)的東西。比如打遊戲,actor就是手柄,操縱角色移動。
environment
:同樣是打遊戲,environment 就是主機,能夠根據手柄輸出的訊號改變什麼,比如角色進攻、怪物***等。
reward function
:就是打遊戲會獲得多少分數,比如殺死怪獸就得到二十分。
在 reinforcement learning 裡面,environment 跟 reward function 不是你可以控制的,environment 跟 reward function 是在開始學習之前,就已經事先給定的。你唯一能做的事情是調整 actor 裡面的 policy,使得 actor 可以得到最大的 reward。actor 裡面會有乙個 policy, 這個 policy 決定了 actor 的行為。policy 就是給乙個外界的輸入,然後它會輸出 actor 現在應該要執行的行為。
policy 一般寫成 π ,到了後面的actor-critic的話,policy是由乙個網路輸出的,可以將policy看作乙個網路,使用引數 θ 表示 π 的引數。network的input就是現在machine看到的東西,output的就是機器要採取什麼樣的行為。
假設還是打遊戲,並且你現在可以做的行為有 3 個,output layer 就是有 3 個 neurons。每個 neuron 對應到乙個可以採取的行為。input 乙個東西後,network 就會給每乙個可以採取的行為乙個分數。接下來,你把這個分數當作是概率。 actor 就是看這個概率的分布,根據這個機率的分布,決定它要採取的行為。比如說 70% 會走 left,20% 走 right,10%**等等。概率分布不同,actor 採取的行為就會不一樣。
接下來用乙個打遊戲的例子來說明 actor 是怎麼樣跟環境互動的。 首先 actor 會看到乙個遊戲畫面,我們用 來表示這個遊戲畫面,它代表遊戲初始的畫面。接下來 actor 看到這個遊戲的初始畫面以後,根據它內部的 network,根據它內部的 policy 來決定乙個 action。假設它現在決定的 action 是向右,它決定完 action 以後,它就會得到乙個reward ,代表它採取這個 action 以後得到的分數。
我們把一開始的初始畫面記作s1
,把第一次執行的動作記作a1
,把第一次執行動作完以後得到的 reward 記作r1
,不同的書會有不同的定義,有人會覺得說這邊應該要叫做r2
,這個無所謂。actor 決定乙個的行為以後, 就會看到乙個新的遊戲畫面s2
,把這個s2
輸入給 actor ,這個 actor決定要**,然後它可能殺了乙隻怪,就得到五分。這個 process 就反覆地持續下去,直到今天走到某乙個 timeslot執行某乙個 action,得到 reward 之後, 這個environment 決定這個遊戲結束了。
一場遊戲叫做乙個episode(回合) 或者 trial(試驗) 。把這個遊戲裡面,所有得到的 reward 都總合起來,就是total reward,我們稱其為return(回報) ,用r 來表示它。actor 要想辦法去 maximize 它可以得到的 reward。
在一場遊戲裡面,我們把 environment 輸出的s
跟 actor 輸出的行為a
全部串起來,叫做乙個trajectory(軌跡) ,如下式所示
在乙個process中,乙個具體的trajectory 的s1
,a1
,s2
,a2
出現的概率取決於兩部分:
一部分是environment的行為, environment 的 function 它內部的引數或內部的規則長什麼樣子。 p(st+1|st, at)這一項代表的是 environment, environment這一項通常你是無法控制它的,因為那個是人家寫好的,你不能控制它。
另一部分是agent的行為,你能控制的是pθ(at|st)。給定乙個st,, actor 要採取什麼樣的at會取決於你 actor 的引數θ。所以這部分是 actor 可以自己控制的。隨著 actor 的行為不同,每個同樣的 trajectory, 它就會有不同的出現的概率。
兩者的更新頻率不同,蒙特卡洛強化學習方法是每乙個episode更新一次,即需要經歷完整的狀態序列後再更新,而對於時序差分強化學習方法是每乙個step就更新一次。相對來說,時序差分強化學習方法比蒙特卡洛強化學習方法更新的頻率更快。
時序差分強化學習能夠在知道乙個小step後就進行學習,相比於蒙特卡洛強化學習,其更加快速、靈活。
具體舉例來說:假如我們要優化開車去公司的通勤時間。對於此問題,每一次通勤,我們將會到達不同的路口。對於時序差分(td)強化學習,其會對於每乙個經過的路口都會計算時間,例如在路口 a 就開始更新預計到達路口 b、路口 c , 以及到達公司的時間;而對於蒙特卡洛(mc)強化學習,其不會每經過乙個路口就更新時間,而是到達最終的目的地後,再修改每乙個路口和公司對應的時間。
首先我們需要根據乙個確定好的policy model來輸出每乙個可能的action的概率,對於所有的action的概率,我們使用sample方法(或者是隨機的方法)去選擇乙個action與環境進行互動,同時環境就會給我們反饋一整個episode資料。對於此episode資料輸入到learn函式中,並根據episode資料進行loss function的構造,通過adam等優化器的優化,再來更新我們的policy model。
策略梯度理解
策略梯度 policy gradient 是所有基於策略搜尋的強化學習演算法的基礎,就像mdp是所有強化學習問題的基礎一樣。後續提出的演算法 如actor critic trpo ppo dpg 都是針對策略梯度演算法的缺陷提出改進,所以理解策略梯度的各種細節十分必要。為什麼要用基於策略的學習?1 ...
Ray 策略梯度方法
這段 展示了如何使用策略梯度方法進行強化學習。檢視這些示例的 鏈結。有關ray的強化學習庫的概述,請參見rllib。執行這個例子,你將需要安裝tensorflow與gpu支援 至少版本1.0.0 和其他一些依賴。pip install gym atari pip install tensorflow...
Policy Gradient (策略梯度演算法)
policy gradient 策略梯度演算法 前置基礎知識 策略梯度演算法 直接根據當前的狀態來選擇動作。策略梯度的演算法是回合更新,在回合中的中每一步記錄狀態 動作 獎勵,在乙個回合完成以後,目標損失函式 回合中每步狀態的動作,與已執行的動作做交叉熵,如果乙個動作得到的獎勵多,那麼這個動作出現的...