五 策略梯度

2021-10-25 06:43:23 字數 2971 閱讀 8795

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看作乙個網路,使用引數 θ 表示 π 的引數。networkinput就是現在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 策略梯度演算法 前置基礎知識 策略梯度演算法 直接根據當前的狀態來選擇動作。策略梯度的演算法是回合更新,在回合中的中每一步記錄狀態 動作 獎勵,在乙個回合完成以後,目標損失函式 回合中每步狀態的動作,與已執行的動作做交叉熵,如果乙個動作得到的獎勵多,那麼這個動作出現的...