AphaStar設計技巧與方法

這篇文章主要是總結一下它實現上應用的好的技術,也許有的可以用到最近做的項目上。paper上面的實驗一般都很toy,這篇文章對工程提升要更加顯著。

首先說一點的是,這篇文章成功的一個重要原因是專家數據的利用。因此專家數據是不可或缺的,但很多時候,我們並沒有專家數據並且數據很難做出來。但是這篇文章很多技巧還是可以借鑑的。

第一點:V trace 這個知識點我沒有看,主要是解決大規模訓練下 ,off policy中,執行策略和目標策略之間的問題(IMPALA論文)

第二點:TD(lambda)主要是解決value net擬合的variance的問題,如果用MC的方法,雖然是無偏的,但是往往實踐中,偏差比TD要大很多。

第三點:value net訓練的時候要包含對手信息,這麼做主要是因爲真正決策的時候是不需要value net參與的,因此可以用更多的信息輔助學習更好的value net

第四點:upgoing policy update,這個主要的想法,是借鑑了Self-imitation Learning,主要的核心思想是,想要讓value net去擬合好的策略軌跡,也就是讓你對好的決策過程印象深刻,而不好的過程,印象模糊,這樣可以更快地學到好的policy

首先說一下SIL,SIL會把單條軌跡的MC採樣的return值和 estimated value 進行比較,若該Return 是大於estimated value 的return,則直接用該MC return進行 value function和策略的更新,而不是經過TD的方法進行逐步的更新value,再用更新的Value去調整策略,以達到更強的信號去模仿該軌跡的效果.主要是好的話,我就直接學,value net和policy net一起學。

 

具體看一下論文中的描述,將MC出來的真實數據(不含任何網絡參與)dicount reward,下面的1,2,3公式的目的主要是想要利用數據中的高回報的軌跡,消除低迴報軌跡的影響(人爲sample軌跡類似)

最後的loss函數主要包括兩個部分,

當更新policy net的時候:第一部分是正常的  R*log prob 的形式,這裏面的R進行了一些處理,主要是如果軌跡中MC出來的reward如果比估計出來的 reward(V值)大,則max(R-V,0)就等於R-V ,也就大於0,有loss,否則R小於V,則最後此項policy net沒有梯度

value net 同理,小於V的時候沒有梯度回傳。

upgoing policy update主要和上面是一樣的思想,但是上面的是蒙特卡洛的思想,也就是逆着往回算算每一個state的狀態,是無偏的(MC的方法真實環境中variance還是很大的,因爲有很多環境訪問不到,但是這個reward思想是很正確的)

本方法就是講MC改爲了TD的思想

首先看一下loss的組成,多了一個pt函數,這個pt函數區別於上一個方法的max(x,0)函數,使用的是important sampling

pt * R * log prob的形式,首先我們先看一下R,如果在S(t+1)狀態下的Q值(這裏是環境返回的獎勵加上value net的S(t+1)的估計的和)要比我們估計出來的value(S(t+1))還要大,說明我們到達下一狀態並且採取動作要比平均value好,說明哦們到達下一個狀態是對的,也就肯定了我們當前的選擇,最後Gt = R(t)+R(t+1)+V(S(t+1))。首先是兩個特殊情況,如果每一步都要優於原來的value net估計的話,那麼當最後一個狀態的下一個狀態初始化爲Gt+1 = 0 ,那麼就是正常的MC,反之都差,那就是正常的TD方法。

前面的pt直觀上感覺sample的策略如果比生成這條軌跡的策略策略輸出指定動作的概率低,也就是比值小於1,我們就照常更新,但是如果比原來高,也就是我們認爲這是好的策略,用了MC的相似的方法,那麼我們就稍微抑制一下該更新,不要更新的太快。

一句話總結就是糟糕的軌跡我們就降低他按照原來的程度,好的軌跡我們就抑制一下謹小慎微的向前走。

(我一開始覺得相關性並不是很高,再仔細一想,一個普通的軌跡裏面有好有壞,我們用這條軌跡中好的去引導一下差的軌跡,因爲好的軌跡是跨越兩步的)

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章