COMA(二):Counterfactual Multi-Agent Policy Gradients 论文讲解
Counterfactual Multi-Agent Policy Gradients
論文鏈接:https://arxiv.org/pdf/1705.08926.pdf
1. 問(wèn)題提出(解決了什么問(wèn)題?)
在現(xiàn)實(shí)世界中,有非常多的問(wèn)題需要多個(gè)單位之間的“合作”才能完成任務(wù),這就需要學(xué)習(xí)一種非中心式策略的控制系統(tǒng),即每個(gè)agent有著屬于自己的決策大腦,而非靠擁有全局信息的決策系統(tǒng)下達(dá)指令(畢竟有時(shí)候全局的信息量過(guò)于龐大,并且agent到中心網(wǎng)絡(luò)的通信不一定每時(shí)每刻都穩(wěn)定,因此中心式的決策系統(tǒng)很難實(shí)現(xiàn))。因此,該論文提出了一種方法用于學(xué)習(xí)非中心式的、部分可觀測(cè)的多智能體協(xié)同的控制策略。
COMA利用全局評(píng)價(jià)網(wǎng)絡(luò)(critic)來(lái)評(píng)價(jià)Q值,利用非全局行為網(wǎng)絡(luò)(actor)來(lái)決定agent的行為。由于在訓(xùn)練時(shí)使用的是全局網(wǎng)絡(luò)進(jìn)行評(píng)價(jià),并且采用參數(shù)共享的方式,使得agent能夠在做行為選擇的時(shí)候參考其他agent的狀態(tài)再做決定,這就加入了“協(xié)同”的功能。
2. 介紹
該論文分為以下三個(gè)部分:
- 提出傳統(tǒng)的RL算法在協(xié)同任務(wù)中不足
若使用傳統(tǒng)的RL算法來(lái)解決多智能體的問(wèn)題,則會(huì)存在以下三個(gè)不足之處:
- COMA中的主要思想
COMA是一種基于actor-critic的變種方法,其中actor是依照critic評(píng)估出來(lái)的梯度值進(jìn)行更新學(xué)習(xí)的。整個(gè)算法共有三個(gè)比較核心的思想:
- 驗(yàn)證場(chǎng)景及其結(jié)果分析
3. 背景
3.1 數(shù)學(xué)建模
論文中將多智能體協(xié)同任務(wù)想象成一個(gè)隨機(jī)決策的游戲,這個(gè)游戲 GGG 包含以下幾個(gè)因素:
G=<S,U,P,r,Z,O,n,γ>G = <S, U, P, r, Z, O, n, \gamma> G=<S,U,P,r,Z,O,n,γ>
其中,
-
S→S \quad \rightarrow \quadS→ 環(huán)境狀態(tài)集: ?s∈S\forall s \in S?s∈S.
-
U→U \quad \rightarrow \quadU→ 所有動(dòng)作樣本空間:在每一時(shí)刻,每個(gè)agent采取一個(gè)行為 uta∈Uu_t^a \in Uuta?∈U,并組成聯(lián)合動(dòng)作空間 u∈U\textbf{u} \in Uu∈U.
-
P→P \quad \rightarrow \quadP→ 狀態(tài)轉(zhuǎn)移函數(shù):根據(jù)當(dāng)前狀態(tài)sss和聯(lián)合動(dòng)作空間u\textbf{u}u,計(jì)算一時(shí)刻狀態(tài)s′s's′,P(s′∣s,u)P(s'|s, \textbf{u})P(s′∣s,u).
-
r→r \quad \rightarrow \quadr→ 全局回報(bào)值:r(s,u)r(s, \textbf{u})r(s,u).
-
Z→Z \quad \rightarrow \quadZ→ 局部觀測(cè)集:單個(gè)agent在每一時(shí)刻有一個(gè)局部觀測(cè) z∈Zz \in Zz∈Z.
-
O→O \quad \rightarrow \quadO→ 局部觀測(cè)函數(shù):Agent aaa 的局部觀測(cè) zzz 是根據(jù)全局環(huán)境信息 sss 通過(guò) OOO 函數(shù)計(jì)算得來(lái),z=O(s,a)z = O(s, a)z=O(s,a).
-
n→n \quad \rightarrow \quadn→ agent的個(gè)數(shù),共有 nnn 個(gè).
-
γ→\gamma \quad \rightarrow \quadγ→ 折扣因子,用于指定計(jì)算未來(lái)回報(bào)時(shí)的衰減強(qiáng)弱.
此外,每個(gè)agent有一個(gè) action-observation 的歷史記錄 τa\tau^aτa,actor在做決策的時(shí)候是基于歷史信息做的決策 πa(ua∣τa)\pi^a(u^a|\tau^a)πa(ua∣τa). 其實(shí)這里基于歷史記錄做決策可以理解為:之前在做update決策網(wǎng)絡(luò)參數(shù)的時(shí)候,是基于之前的歷史信息做的更新,所以用更新后的actor去做決策就可以看作是記住了歷史經(jīng)驗(yàn)后做的決策了。
3.2 基本概念回顧
這里在回顧一下DQN中的一些基本概念,后續(xù)內(nèi)容會(huì)用的到:
累計(jì)回報(bào): Rt=∑l=0∞γlrt+lR_t = \sum_{l=0}^\infty{\gamma^lr_{t+l}}Rt?=∑l=0∞?γlrt+l?,其中 γ\gammaγ 是折扣因子;
評(píng)價(jià)函數(shù)分為兩個(gè):對(duì)當(dāng)前狀態(tài)的評(píng)價(jià)函數(shù) Vπ(st)V^\pi(s_t)Vπ(st?),對(duì)當(dāng)前狀態(tài)下當(dāng)前聯(lián)合動(dòng)作空間的評(píng)價(jià)函數(shù) Qπ(st,ut)Q^\pi(s_t, u_t)Qπ(st?,ut?);
Vπ(st)=E[Rt∣st]Qπ(st,ut)=E[Rt∣st,ut]V^\pi(s_t) = E[R_t|s_t] \qquad Q^\pi(s_t, \textbf{u}_t) = E[R_t|s_t, \textbf{u}_t] Vπ(st?)=E[Rt?∣st?]Qπ(st?,ut?)=E[Rt?∣st?,ut?]
優(yōu)勢(shì)函數(shù): Aπ(st,ut)=Qπ(st,ut)?Vπ(st)A^\pi(s_t, \textbf{u}_t) = Q^\pi(s_t, \textbf{u}_t) - V^\pi(s_t)Aπ(st?,ut?)=Qπ(st?,ut?)?Vπ(st?).
Policy Gradient :Value-Based中主要使用的更新方法——梯度上升法,梯度 ggg 可以表示為:
g=∑t=0TRt▽?duì)圈衛(wèi)ogπ(ut∣st)g = \sum_{t=0}^TR_t\bigtriangledown_{\theta^\pi}log\pi(u_t|s_t) g=t=0∑T?Rt?▽θπ?logπ(ut?∣st?)
關(guān)于Actor-Critic模型:
AC模型中,actor是根據(jù)critic所求得的梯度來(lái)進(jìn)行學(xué)習(xí)的。因?yàn)?span id="ozvdkddzhkzd" class="katex--inline">RtR_tRt?是一個(gè)期望值,無(wú)法求得精確的值,因此需要用其他的表達(dá)式來(lái)近似替代RtR_tRt?。替代RtR_tRt?一共有兩種方式:
如何訓(xùn)練中心評(píng)價(jià)網(wǎng)絡(luò)critic:
在這篇論文中,作者訓(xùn)練了一個(gè)中心評(píng)價(jià)網(wǎng)絡(luò)fc(?,θc)f^c(·, \theta^c)fc(?,θc),網(wǎng)絡(luò)參數(shù)為 θc\theta^cθc,使用一種稍微改變了下的TD法進(jìn)行學(xué)習(xí)——TD(λ)TD(\lambda)TD(λ) 將nnn 步的reward值進(jìn)行綜合來(lái)得到一個(gè)平均值 Gt(n)=∑l=1nγl?1rt+l+γnfc(?t+n,θc)G_t^{(n)} = \sum_{l=1}^n\gamma^{l-1}r_{t+l} + \gamma^nf^c(·_{t+n}, \theta^c)Gt(n)?=∑l=1n?γl?1rt+l?+γnfc(?t+n?,θc)。使用梯度下降的方法來(lái)更新網(wǎng)絡(luò)參數(shù)θc\theta^cθc,LtL_tLt?表示ttt時(shí)刻的損失函數(shù):
Lt(θc)=(y(λ)?fc(?t,θc))2L_t(\theta^c) = (y^{(\lambda)} - f^c(_{·t}, \theta^c)) ^ 2 Lt?(θc)=(y(λ)?fc(?t?,θc))2
其中:
y(λ)=(1?λ)∑n=1∞λn?1Gt(n)Gt(n)=∑l=1nγl?1rt+l+γnfc(?t+n,θc)y^{(\lambda)} = (1-\lambda)\sum_{n=1}^\infty \lambda^{n-1}G_t^{(n)} \\ G_t^{(n)} = \sum_{l=1}^n\gamma^{l-1}r_{t+l} + \gamma^nf^c(·_{t+n}, \theta^c) y(λ)=(1?λ)n=1∑∞?λn?1Gt(n)?Gt(n)?=l=1∑n?γl?1rt+l?+γnfc(?t+n?,θc)
因此,整個(gè)公式也可以表示為:
Lt(θc)=((1?λ)∑n=1∞λn?1(∑l=1nγl?1rt+l+γnfc(?t+n,θc))?fc(?t,θc))2L_t(\theta^c) = ((1-\lambda)\sum_{n=1}^\infty \lambda^{n-1}(\sum_{l=1}^n\gamma^{l-1}r_{t+l} + \gamma^n {\color{red}f^c(·_{t+n}, \theta^c)}) - f^c(·_{t}, \theta^c)) ^ 2 Lt?(θc)=((1?λ)n=1∑∞?λn?1(l=1∑n?γl?1rt+l?+γnfc(?t+n?,θc))?fc(?t?,θc))2
Note:公式中一共有兩個(gè) fc(?,θc)f^c(·, \theta^c)fc(?,θc) 網(wǎng)絡(luò),但是前一個(gè)fc()f^c()fc()是estimate出來(lái)的目標(biāo)值 y(λ)y^{(\lambda)}y(λ),為了加快模型的收斂速度,第一個(gè)的 fc()f^c()fc() 中的θc\theta^cθc 應(yīng)該被fix住(式子中的紅色部分),若干個(gè)steps后再被update,這和target network的思路是一樣的。
4. 算法分析
4.1 Independent Actor-Critic
IAC方法指每一個(gè)agent學(xué)習(xí)一個(gè)獨(dú)立的actor-critic,在這篇論文中采用參數(shù)共享的方法,使得所有agent共用一個(gè)actor和一個(gè)critic。在學(xué)習(xí)的時(shí)候,critic只能根據(jù)agent自身的local observation進(jìn)行估計(jì)值,并且也只能估計(jì)該agent的單個(gè)動(dòng)作uau^aua的效用,而不是聯(lián)合動(dòng)作空間u\textbf{u}u的效用。
論文中對(duì)傳統(tǒng)的IAC算法有兩處改變:
IAC的缺陷在于,訓(xùn)練時(shí)只能依據(jù)單個(gè)agent的局部觀測(cè)和單個(gè)action的效用評(píng)定,這樣很難學(xué)出一套好的協(xié)同策略。
4.2 Counterfatual Multi-Agent Policy Gradient
COMA的主要思想有三個(gè):中心式評(píng)價(jià)網(wǎng)絡(luò),使用反事實(shí)準(zhǔn)為每一個(gè)行為分配不同的reward值,高效計(jì)算每一個(gè)不同的reward值,下面對(duì)每一個(gè)思想進(jìn)行介紹講解。
- Center critic
在IAC算法中,訓(xùn)練評(píng)價(jià)網(wǎng)絡(luò)時(shí)只用到了單個(gè)agent的history τa\tau^aτa。既然這個(gè)評(píng)價(jià)網(wǎng)絡(luò)只會(huì)在訓(xùn)練的時(shí)候使用,那么我們完全可以把全局狀態(tài) sss 輸入用于訓(xùn)練,若全局觀測(cè)不可獲得,則將當(dāng)前所有agent的"action-observation"的歷史記錄 τ\tauτ代替全局狀態(tài) sss,如下圖所示:
圖中,每一個(gè)Actor都會(huì)給出此刻的決策行為 utu_tut?,并且環(huán)境也會(huì)給出此時(shí)環(huán)境的全局信息 sts_tst? 以及此刻的回報(bào)值 rtr_trt?。
一種很簡(jiǎn)單的方式是直接使用TD-Error來(lái)進(jìn)化這個(gè)網(wǎng)絡(luò):
g=▽?duì)圈衛(wèi)ogπ(u∣τta)(r+γV(st+1)?V(st))g = \bigtriangledown_{\theta_\pi}log\pi(u|\tau_t^a)(r+\gamma V(s_{t+1}) - V(s_t)) g=▽θπ??logπ(u∣τta?)(r+γV(st+1?)?V(st?))
但是,這樣的方法不能解決 Individual Reward Assignment 的問(wèn)題,因?yàn)門D算出來(lái)的Reward是一個(gè)全局Reward ,無(wú)法推算出每一個(gè)action的單獨(dú)Reward值。為此,論文提出了"反事實(shí)準(zhǔn)則"。
- Counterfatual baseline
反事實(shí)準(zhǔn)則(Conuterfatual Baseline)允許為不同的action獨(dú)立分配一個(gè)不同的獨(dú)立reward。這個(gè)獨(dú)立reward DaD^aDa 需要根據(jù)當(dāng)前情況下的全局reward和將該agent行為替換為一個(gè)'默認(rèn)行為'后的全局reward兩個(gè)值進(jìn)行計(jì)算,
Da=r(s,u)?r(s,(u?a,ca))D^a = r(s, \textbf{u}) - r(s, (\textbf{u}^{-a}, c_a)) Da=r(s,u)?r(s,(u?a,ca?))
其中,u?a\textbf{u}^{-a}u?a 代表聯(lián)合動(dòng)作空間除去當(dāng)前Agent aaa 這一時(shí)刻采取的行為。(u?a,ca)(\textbf{u}^{-a}, c_a)(u?a,ca?) 代表當(dāng)前Agent aaa 采取"默認(rèn)行為" cac_aca? 后所有Agent的聯(lián)合動(dòng)作空間。在學(xué)習(xí)過(guò)程中,agent會(huì)想辦法最大化回報(bào)值 DaD^aDa,這其實(shí)就是在想辦法最大化全局的reward r(s,u)r(s, \textbf{u})r(s,u),因?yàn)槭阶拥暮箜?xiàng)跟agent當(dāng)前采取什么行為是沒(méi)有關(guān)系的。關(guān)于DaD^aDa這個(gè)式子可以這樣理解:回報(bào)值DaD^aDa其實(shí)計(jì)算的是Agent aaa采取行為 uuu 會(huì)比采取默認(rèn)行為 cac_aca? 要更好(DaD^aDa > 0)還是更壞(DaD^aDa < 0)。
這個(gè)想法是正確的,但是要想計(jì)算出每一個(gè)動(dòng)作的DaD^aDa值,就需要將每個(gè)動(dòng)作都替換成默認(rèn)行為cac_aca?去與環(huán)境互動(dòng)一次得到最終結(jié)果,這樣采樣次數(shù)會(huì)非常多;此外,默認(rèn)行為的選取也是無(wú)法預(yù)測(cè)的,到底選擇哪一個(gè)行為當(dāng)作默認(rèn)行為才是最合適的也是比較難決定的。因此,文中提出使用"函數(shù)擬合"的方式來(lái)計(jì)算DaD^aDa。
前面提到,中心評(píng)價(jià)網(wǎng)絡(luò)可以評(píng)價(jià)一個(gè)聯(lián)合動(dòng)作空間 u\textbf{u}u 在一個(gè)狀態(tài) sss 下的 QQQ 值。由于默認(rèn)行為很難定義,于是我們把采取 “默認(rèn)行為” 得到的效用值近似為采取一個(gè)Agent “所有可能行為” 的效用值總和。因此,DaD^aDa 就可以用以下等式進(jìn)行計(jì)算:
Aa(s,u)=Q(s,u)?∑ua′πa(u′a∣τa)Q(s,(u?a,u′a))A^a(s, \textbf{u}) = Q(s, \textbf{u}) - \sum_{u_a'}\pi^a(u'^a|\tau^a)Q(s, (\textbf{u}^{-a}, u'^a)) Aa(s,u)=Q(s,u)?ua′?∑?πa(u′a∣τa)Q(s,(u?a,u′a))
其中,Aa(s,u)A^a(s, \textbf{u})Aa(s,u) 就是 DaD^aDa 的等效近似。
- Efficient evaluation of baseline
盡管baseline的方式解決了獨(dú)立回報(bào)的問(wèn)題,但是如果要建立一個(gè)網(wǎng)絡(luò),接收s,us, \textbf{u}s,u兩個(gè)輸入,輸出為所有agent的所有action的話,那么輸出神經(jīng)元的個(gè)數(shù)就等于 ∣U∣n|U|^n∣U∣n(n個(gè)agent有|U|個(gè)動(dòng)作)。當(dāng)agent數(shù)目很多或動(dòng)作空間很大的時(shí)候就會(huì)造成輸出層無(wú)法實(shí)現(xiàn)。為此,COMA構(gòu)造了一種網(wǎng)絡(luò),該網(wǎng)絡(luò)接收 ut?a,st,ota,a,ut?1?a\textbf{u}^{-a}_t, s_t, o_t^a, a, \textbf{u}^{-a}_{t-1}ut?a?,st?,ota?,a,ut?1?a? 等參數(shù),輸出為Agent aaa 每一個(gè)action的Q-value值,輸出維度由 ∣U∣n|U|^n∣U∣n 降到了 ∣U∣|U|∣U∣ ,如下圖所示。
5. 實(shí)驗(yàn)
5.1 實(shí)驗(yàn)場(chǎng)景
該論文使用星際爭(zhēng)霸游戲作為實(shí)驗(yàn)場(chǎng)景,讓算法控制的小隊(duì)和游戲AI控制的小隊(duì)進(jìn)行對(duì)戰(zhàn),并計(jì)算勝率。算法小隊(duì)中,每一個(gè)作戰(zhàn)單位都由一個(gè)去中心式的controller進(jìn)行控制。為了提升游戲難度,比賽加入了 “部分可觀測(cè)” 條件的限制,視野范圍等于攻擊范圍。這意味著當(dāng)敵人沒(méi)有進(jìn)入攻擊范圍內(nèi)時(shí),作戰(zhàn)單位是不知道敵人位置信息的,因此agent不僅要學(xué)會(huì)如何去探索敵方目標(biāo),還需要與隊(duì)友共享敵方目標(biāo)的位置信息。為了證明加入 “部分可觀測(cè)” 限制后問(wèn)題變得有多復(fù)雜,作者做了實(shí)驗(yàn)對(duì)比:當(dāng)不加入觀測(cè)限制時(shí),普通的啟發(fā)式算法能夠到達(dá)98%的勝率;加入限制后,勝率降到了66%。
5.2 動(dòng)作空間及回報(bào)值
每個(gè)agent都有著相同的動(dòng)作空間:{ move[direction],attack[enemy_id],stop,noop }。
一次Episode下的全局Reward為:對(duì)敵人造成的傷害 DeD_eDe? 減去我方受到的傷害 DuD_uDu? 除以2,此外,若擊毀一個(gè)敵方單位獲得10點(diǎn)的回報(bào),即:
R(t)=De?Du2+10nR(t) = D_e - \frac{D_u}{2} + 10n R(t)=De??2Du??+10n
其中,nnn為摧毀敵方單位數(shù)。若有一方將敵方團(tuán)滅,則獲得的回報(bào)值為全隊(duì)剩余血量+200。
5.3 狀態(tài)特征
算法一共有兩個(gè)網(wǎng)絡(luò):actor 和 critic。其中actor接收agent的局部觀測(cè)信息;critic接收全局狀態(tài)信息。
- 局部觀測(cè)信息
由于作戰(zhàn)單位的視野范圍等于攻擊范圍,因此觀測(cè)到的視野是以該單位為中心的一個(gè)圓。局部觀測(cè)信息是指在視野圓圈內(nèi),每一個(gè)單位(包括敵方和友方)的以下幾個(gè)信息:distance,relative x,relative y,unit type,shield。其中 unit type 是指作戰(zhàn)單位是何種兵種,shield是為了模擬平A的冷卻(因?yàn)閠切割的很小,每一時(shí)刻Agent都有可能選擇平A這個(gè)動(dòng)作,所以在平A還沒(méi)有冷卻好的時(shí)候,敵方單位會(huì)套上一個(gè)無(wú)敵的盾來(lái)抵消這一次平A受到的傷害)。
疑問(wèn):觀測(cè)范圍中的單位數(shù)量應(yīng)該是隨時(shí)間變化而變化的,但網(wǎng)絡(luò)的輸入層神經(jīng)元應(yīng)該是固定的,怎么解決變長(zhǎng)的問(wèn)題?(未解決)
- 全局觀測(cè)信息
全局觀測(cè)信息包含了所有單位的relative x,relative y,unit type,shield,healthy point,cooldown信息,其中 relative 的坐標(biāo)信息是相對(duì)據(jù)地圖中心的相對(duì)坐標(biāo),不再是針對(duì)于某一個(gè)特定目標(biāo)的坐標(biāo)。
5.4 實(shí)驗(yàn)結(jié)果
實(shí)驗(yàn)結(jié)果如下圖所示,其中3m,5m分別指代一個(gè)作戰(zhàn)小隊(duì)中包含3個(gè),5個(gè)marine(一種兵種);2d_3z指代一個(gè)作戰(zhàn)小隊(duì)中包含2條龍和3個(gè)狂熱者。
總結(jié)
以上是生活随笔為你收集整理的COMA(二):Counterfactual Multi-Agent Policy Gradients 论文讲解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: COMA(一): Learning to
- 下一篇: RNN入门笔记