作者:? 石塔西
愛好機器學(xué)習(xí)算法,以及軍事和歷史
知乎ID:https://www.zhihu.com/people/si-ta-xi
前言
之前通過線上課程學(xué)習(xí)David Silver的《強化學(xué)習(xí)》岩臣,留下深刻印象的是其中一堆堆的公式蝗罗。公式雖然嚴謹灾票,但是對于我來說,遇到實際問題時崖面,我需要在腦海中浮現(xiàn)出一幅圖或一條曲線术幔,幫我快速定位問題另萤。正所謂“一圖勝千言”嘛。
最近終于找到了這樣一幅圖诅挑。國外有大神用漫畫的形式講解了強化學(xué)習(xí)中經(jīng)典的Advantage-Actor-Critic(A2C)算法四敞。盡管標題中只提及了A2C,實際上是將整個RL的算法思想凝結(jié)在區(qū)區(qū)幾幅漫畫中拔妥。
我很佩服漫畫的作者忿危,能夠從復(fù)雜的公式中提煉出算法的精髓,然后用通俗易懂毒嫡、深入淺出的方式展示出來癌蚁。能夠?qū)⒑駮x薄幻梯,才能顯現(xiàn)出一個人的功力兜畸。
有這樣NB的神作,不敢獨吞碘梢,調(diào)節(jié)一下順序咬摇,補充一些背景知識,加上我自己的批注煞躬,分享出來肛鹏,以饗讀者。 原漫畫的地址見:Intuitive RL: Intro to Advantage-Actor-Critic (A2C)
基本概念
強化學(xué)習(xí)中最基礎(chǔ)的四個概念:Agent, State, Action, Reward
Agent:不用多說恩沛,就是你的程序在扰,在這里就是這只狐貍。
Action: agent需要做的動作雷客。在漫畫中芒珠,就是狐貍在岔路口時,需要決定走其中的哪一條路搅裙。
State: 就是agent在決策時所能夠掌握的所有信息皱卓。對于這只狐貍來說,既包括了決策當時的所見所聞部逮,也包括了它一路走來的記憶娜汁。
Reward:選擇不同的路,可能遇到鳥蛋(正向收益)兄朋,也有可能遇到豺狼(負向收益)掐禁。
為什么Actor? 為什么Critic?
正如我之前所說的添履,Actor-Critic是一個混合算法野芒,結(jié)合了Policy Gradient(Actor)與Value Function Approximation (Critic)兩大類算法的優(yōu)點。原漫畫沒有交待眉睹,一個agent為什么需要actor與critic兩種決策機制享完。所以灼芭,在讓狐貍繼續(xù)探險之前,有必要先簡單介紹一下Policy Gradient (策略梯度般又,簡稱PG)算法彼绷,后面的內(nèi)容才好理解。
Policy Gradient看起來很高大上茴迁,但是如果類比有監(jiān)督學(xué)習(xí)中的多分類算法寄悯,就很好理解了。兩類算法的類比(簡化版本)如下表所示堕义,可見兩者很相似
還是以狐貍在三岔路口的選擇為例
比如考慮每步?jīng)Q策的直接收益的時間衰減猜旬,就是REINFORCE算法。
如果用V(S)倦卖,即“狀態(tài)值”state-value洒擦,來表示PG前的系數(shù),并用一個模型來專門學(xué)習(xí)它怕膛,則這個擬合真實(不是最優(yōu))V(s)的模型就叫做Critic熟嫩,而整個算法就是Actor-Critic算法。
因為篇幅所限褐捻,簡單介紹一下V(s)與Q(s,a)掸茅。它們是Value Function Approximation算法中兩個重要概念,著名的Deep Q-Network中的Q就來源于Q(s,a)柠逞。V(s)表示從狀態(tài)s走下去能夠得到的平均收益昧狮。它類似于咱們常說的“勢”,如果一個人處于“優(yōu)勢”板壮,無論他接下去怎么走(無論接下去執(zhí)行怎樣的action)逗鸣,哪怕走一兩個昏招,也有可能獲勝个束。具體精確的理解慕购,還請感興趣的同學(xué)移步David Silver的課吧。
重新回顧一下算法的脈絡(luò)茬底,所謂Actor-Critic算法
Actor負責學(xué)習(xí)在給定state下給各候選action打分沪悲。在action空間離散的情況下,就類似于多分類學(xué)習(xí)阱表。
因為與多分類監(jiān)督學(xué)習(xí)不同殿如,每步?jīng)Q策時贡珊,不存在唯一正確的action,所以PG前面應(yīng)該乘以一個系數(shù)涉馁,即likelihood ratio门岔。如果用V(S),即state-value烤送,來表示PG前的乘子寒随,并用一個模型來專門學(xué)習(xí)它,則這個擬合V(s)的模型就叫做Critic帮坚,類似一個回歸模型?妻往。
如果用Critic預(yù)測值與真實值之間的誤差,作為likelihood ratio试和,則PG前的乘子就有一個專門的名稱讯泣,Advantage。這時的算法阅悍,就叫做Advantage-Actor-Critic好渠,即A2C。
如果在學(xué)習(xí)過程中节视,引入異步拳锚、分布式學(xué)習(xí),此時的算法叫做Asynchronous-Advantage-Actor-Critic肴茄,即著名的A3C晌畅。
狐貍的探險
上一節(jié)已經(jīng)說明了狐貍(Agent)為什么需要actor-critic兩個決策系統(tǒng)。則狐貍的決策系統(tǒng)可以由下圖表示
state是狐貍做決策時所擁有的一切信息寡痰,包括它的所見所聞,還有它的記憶棋凳。
critic負責學(xué)習(xí)到準確的V(s)拦坠,負責評估當前狀態(tài)的“態(tài)勢”,類似一個回歸任務(wù)剩岳。
actor負責學(xué)習(xí)某狀態(tài)下各候選action的概率贞滨,類似一個多分類任務(wù)。
在第一個路口
狐貍的critic覺得當前態(tài)勢不錯拍棕,預(yù)計從此走下去晓铆,今天能得20分,即V(s)=20
狐貍的actor給三條路A/B/C都打了分
狐貍按照A=0.8, B=C=0.1的概率擲了色子绰播,從而決定走道路A(沒有簡單地選擇概率最大的道路骄噪,是為了有更多機會explore)
沿A路走,采到一枚蘑菇蠢箩,得1分
把自己對state value的估計值链蕊,采取的動作事甜,得到的收益都記錄下來
在接下來的兩個路口,也重復(fù)以上過程:
狐貍的反思:更新Critic
畢竟這只狐貍還太年輕滔韵,critic對當前狀態(tài)的估計可能存在誤差逻谦,actor對岔道的打分也未必準確,因此當有了三次經(jīng)歷后陪蜻,狐貍停下來做一次反思邦马,更新一下自己的critic和actor。狐貍決定先更新自己的critic宴卖。
之前說過了勇婴,critic更像是一個“回歸”任務(wù),目標是使critic預(yù)測出的state value與真實state value越接近越好嘱腥。以上三次經(jīng)歷的state value的預(yù)測值耕渴,狐貍已經(jīng)記在自己的小本上了,那么問題來了齿兔,那三個state的真實state value是多少橱脸?
在如何獲取真實state value的問題上,又分成了兩個流派:Monte Carlo(MC)法與Temporal-Difference(TD)法分苇。
MC法添诉,簡單來說,就是將一次實驗進行到底医寿,實驗結(jié)束時的V(s)自然為0栏赴,然后根據(jù)Bellman方程回推實驗中每個中間步驟的V(s),如下圖所示(圖中簡化了Bellman方程靖秩,忽略了時間衰減)须眷。MC法的缺點,一是更新慢沟突,必須等一次實驗結(jié)束花颗,才能對critic/actor進行更新;二是因為V(s)是狀態(tài)s之后能夠獲得的平均收益惠拭,實驗越長扩劝,在每個步驟之后采取不同action導(dǎo)致的分叉越多,但是MC法僅僅依靠上一次實驗所覆蓋的單一路徑就進行更新职辅,顯然導(dǎo)致high variance棒呛。
need-to-insert-img
另一種方法,TD法域携,就是依靠現(xiàn)有的不準確的critic進行bootstrapping簇秒,逐步迭代,獲得精確的critic
如上圖中狐貍的記事本所示涵亏,對于以上三步宰睡,狐貍既有了自己對當時state value的預(yù)測值蒲凶,也有了那三個state value的“真實值”,上面的紅字就是二者的差拆内,可以用類似“回歸”的方法最小化求解旋圆。
狐貍的反思:更新Actor
以上結(jié)論顯然是不合適的,下次不選橋麸恍,難道要選狼與陷阱灵巧?!哪里出錯了抹沪?
換個思路刻肄,
當初在岔路口時,狐貍對當時state value的預(yù)測是-100融欧,
選擇了破橋之后敏弃,根據(jù)critic bootstrapping推導(dǎo)回去,發(fā)現(xiàn)之前在岔路口時的狀態(tài)還不至于那么差噪馏,“真實state value”=-20麦到。
回頭來看,選擇“破橋”還改善了當時的處境欠肾,有80分的提升瓶颠。
因此,之后在相同狀態(tài)下(看見前路有狼刺桃、陷阱和破橋)選擇“破橋”的概率粹淋,不僅不應(yīng)該降低,反而還要提高瑟慈,以鼓勵這種明智的選擇桃移,顯然更合情合理。
這里封豪,某個狀態(tài)s下的state value的“真實值”與預(yù)測值之間的差異谴轮,就叫做Advantage,拿advantage作為Policy Gradient之前的乘子吹埠,整個算法就叫做Advantage-Actor-Critic (A2C)。
Advantage
注意state value的“真實值”與預(yù)測值之間的差異在Actor與Critic上發(fā)揮的不同作用
在Actor中疮装,這個差值就叫做Advantage缘琅,用來指導(dǎo)Actor應(yīng)該鼓勵還是抑制已經(jīng)采取的動作。動作帶來的Advantage越大廓推,驚喜越大刷袍,下次在相同狀態(tài)下選擇這個動作的概率就應(yīng)該越大,即得到鼓勵樊展。反之亦然呻纹。
在Critic中堆生,這個差值就叫做Error,是要優(yōu)化降低的目標雷酪,以使Agent對狀態(tài)值的估計越來越準確淑仆。間接使Actor選擇動作時也越來越準確。
其他
A2C的主要思路就這樣介紹完畢了哥力。在原漫畫中蔗怠,還簡單介紹了A3C、Entropy Loss的思想吩跋,就屬于旁枝末節(jié)寞射,請各位看官們移步原漫畫。其實A3C的思路也很簡單(實現(xiàn)就是另一回事了)锌钮,無非是讓好幾只狐貍并發(fā)地做實驗桥温,期間它們共享經(jīng)驗教訓(xùn),以加速學(xué)習(xí)梁丘。
小結(jié)
本篇算是一個半原創(chuàng)吧侵浸,在翻譯的同時,也增加了我對Actor-Critic的理解兰吟。
對于初學(xué)RL的同學(xué)通惫,希望本文能夠幫你們破除RL的神秘感,理清各算法發(fā)展的脈絡(luò)混蔼,以后在David Silver課上看到那些公式時履腋,能夠有“似曾相識”的感覺。
對于掌握了RL基本算法的同學(xué)惭嚣,也希望你們能夠像我一樣遵湖,當遇到實際問題時,先想到漫畫中的小狐貍晚吞,定位問題延旧,再去有的放矢地去翻書找公式。
很佩服原漫畫的作者槽地,能將復(fù)雜的公式迁沫、原理用如此通俗易懂、深入淺出的方式講明白捌蚊。再次向原作者致敬集畅,Excellent Job !!!
作者其它好文推薦:
用NumPy手工打造Wide&Deep
作者:天善智能
鏈接:http://www.reibang.com/p/ec7994cf3d29
來源:簡書
簡書著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請聯(lián)系作者獲得授權(quán)并注明出處缅糟。