0 前言
根據上一章的內容,已知完全合作關系下的多智能體利益一致有相同的目標,而非合作關系下實際上智能體的獎勵和回報都是不一樣的,它們都在努力讓自己的利益最大化而并不考慮整體利益。
1 非合作關系設定下的策略學習
要注意的點:
- 狀態S=[O1,O2,??,Om]S=[O^1,O^2,\cdots,O^m]S=[O1,O2,?,Om],所有智能體的觀測之和是狀態。
- 動作A=[A1,A2,??,Am]A=[A^1,A^2,\cdots,A^m]A=[A1,A2,?,Am]。
- 獎勵并不相同,相對的實際上價值網絡的參數對于每個智能體來說也不一樣。
目標函數:
完全合作關系:該部分我們回憶一下上一節中的完全合作關系下的智能體:J(θ1,??,θm)=Es[Vπ(s)]J(\theta^1,\cdots,\theta^m)=E_s[V_{\pi}(s)]J(θ1,?,θm)=Es?[Vπ?(s)],我們只需要找到讓目標函數J(θ1,??,θm)J(\theta^1,\cdots,\theta^m)J(θ1,?,θm)最大的θ\thetaθ就可以得到最后用來決策的策略網絡。
非合作關系:由于每個智能體的狀態價值都不同,所以每個智能體的目標函數也不同
狀態價值:V1(s),V2(s),??,Vm(s)V^1(s),V^2(s),\cdots,V^m(s)V1(s),V2(s),?,Vm(s).
目標函數:J1(θ1,??,θm)=Es[Vπ1],J2(θ1,??,θm)=Es[Vπ2],??,Jm(θ1,??,θm)=Es[Vπm]J^1(\theta^1,\cdots,\theta^m)=E_s[V_{\pi}^1],\quad J^2(\theta^1,\cdots,\theta^m)=E_s[V_{\pi}^2],\cdots,\quad J^m(\theta^1,\cdots,\theta^m)=E_s[V_{\pi}^m]J1(θ1,?,θm)=Es?[Vπ1?],J2(θ1,?,θm)=Es?[Vπ2?],?,Jm(θ1,?,θm)=Es?[Vπm?]每一個智能體都希望自己的目標函數最大,最終確定一個θ\thetaθ值。這個問題涉及到一個收斂準則,叫納什均衡。
下面會對納什均衡做一個簡單的介紹。
納什均衡(Nash Equilibrium):是博弈論中的一個核心概念。
舉個例子來說這個問題:
囚徒A\B | 沉默(合作) | 背叛(不合作) |
---|---|---|
沉默(合作) | (-1,-1) | (-10,0) |
背叛(不合作) | (0,-10) | (-5,-5) |
上表描述了一個囚徒困境的問題,警官分別審問囚徒A和囚徒B,那么根據囚徒所采取的不同動作,會得到不同的結果:
- 如果囚徒A和囚徒B都沉默,那么各判1年
- 如果囚徒A沉默、囚徒B背叛,那么囚徒A判10年,囚徒B釋放
- ?\cdots?
那么在完全合作關系下,實際上如果囚徒A和囚徒B都沉默,那么總體判的最少。
在非合作關系下,每個智能體只考慮自己,那么實際上不管囚徒A選什么,背叛都是囚徒B最好的選擇。所以最后即 如果囚徒A和囚徒B都背叛,那么各判5年。從總體上來看當然不是最好的選擇,但是它是個人理性的選擇結果。
2 非合作關系設定下的多智能體A2C
目標函數:J1(θ1,??,θm)=Es[Vπ1],J2(θ1,??,θm)=Es[Vπ2],??,Jm(θ1,??,θm)=Es[Vπm]J^1(\theta^1,\cdots,\theta^m)=E_s[V_{\pi}^1],\quad J^2(\theta^1,\cdots,\theta^m)=E_s[V_{\pi}^2],\cdots,\quad J^m(\theta^1,\cdots,\theta^m)=E_s[V_{\pi}^m]J1(θ1,?,θm)=Es?[Vπ1?],J2(θ1,?,θm)=Es?[Vπ2?],?,Jm(θ1,?,θm)=Es?[Vπm?]
智能體1:最大化 J1(θ1,??,θm)=Es[Vπ1]J^1(\theta^1,\cdots,\theta^m)=E_s[V_{\pi}^1]J1(θ1,?,θm)=Es?[Vπ1?]
智能體2:最大化 J2(θ1,??,θm)=Es[Vπ2]J^2(\theta^1,\cdots,\theta^m)=E_s[V_{\pi}^2]J2(θ1,?,θm)=Es?[Vπ2?]
?\cdots?
智能體m:最大化 Jm(θ1,??,θm)=Es[Vπm]J^m(\theta^1,\cdots,\theta^m)=E_s[V_{\pi}^m]Jm(θ1,?,θm)=Es?[Vπm?]
2.1 價值網絡
價值網絡輸入是環境,輸出是一個值,該網絡用來是近似狀態價值函數的,記該價值網絡為v(s,wi)v(s,w^i)v(s,wi)。
注意:和完全合作的相比為一的不同就是,對于價值網絡來說,完全合作關系下www參數都是一樣的,非完全合作關系下每個智能體都不相同記為wiw^iwi
TD目標:y^t=rt+γ?v(st+1,wi)\hat{y}_t=r_t+\gamma\cdot v(s_{t+1},w^i)y^?t?=rt?+γ?v(st+1?,wi)
TD誤差:δt=v(st,wi)?y^t\delta_t=v(s_t,w^i)-\hat{y}_tδt?=v(st?,wi)?y^?t?
LOSS損失:L(w)=12δt2L(w)=\frac{1}{2}\delta_t^2L(w)=21?δt2?
更新wiw^iwi:wi←wi?α?δt??wiv(st,wi)w^i\leftarrow w^i-\alpha\cdot \delta_t\cdot\nabla_{w^i }v(s_t,w^i)wi←wi?α?δt???wi?v(st?,wi)
如果要防止自舉偏差,可以將TD目標中的wiw^iwi換一下變成wi?w^{i-}wi?。
2.2 策略網絡
同樣的我們借助目標函數J1(θ),J2(θ),??,Jm(θ)J^1(\theta),J^2(\theta),\cdots,J^m(\theta)J1(θ),J2(θ),?,Jm(θ)
單個智能體的策略梯度可以表示為:
?θiJi(θ1,θ2,??,θm)=ES,A(?θiln(π(Ai∣S,θi))[Qπi(S,A)?b])\nabla_{\theta^i}J^i(\theta^1,\theta^2,\cdots,\theta^m)=E_{S,A}(\nabla_{\theta^i}ln(\pi(A^i|S,\theta^i))[Q^i_{\pi}(S,A)-b])?θi?Ji(θ1,θ2,?,θm)=ES,A?(?θi?ln(π(Ai∣S,θi))[Qπi?(S,A)?b])
2.3 訓練及決策
第i號智能體:
當前價值網絡:wnowiw^i_{now}wnowi?,價值網絡:v(s;wi)v(s;w^i)v(s;wi)。
目標價值網絡:wnowi?w^{i-}_{now}wnowi??,目標網絡:v(s;wi?)v(s;w^{i-})v(s;wi?)。
策略網絡的參數:θnowi\theta^i_{now}θnowi?。
- 當前狀態st=[ot1,??,otm]s_t=[o^1_t,\cdots,o^m_t]st?=[ot1?,?,otm?],讓每一個智能體獨立做隨機抽樣: ati~π(?∣st;θnowi)a^i_t\sim\pi(\cdot|s_t;\theta^i_{now})ati?~π(?∣st?;θnowi?), ?i=1,??,m,\forall i=1,\cdots,m,?i=1,?,m,并執行選中的動作。
- 從環境中觀測到獎勵rt1,rt2,??,rtmr^1_t,r^2_t,\cdots,r^m_trt1?,rt2?,?,rtm?與下一時刻狀態st+1=[ot+11,??,ot+1m]s_{t+1}=[o^1_{t+1},\cdots,o^m_{t+1}]st+1?=[ot+11?,?,ot+1m?]
- 讓價值網絡做預測:v^ti=v(st;wnowi)\hat{v}^i_t=v(s_t;w^i_{now})v^ti?=v(st?;wnowi?)
- 讓目標網絡做預測:v^t+1i?=v(st+1;wnowi?)\hat{v}^{i-}_{t+1}=v(s_{t+1};w^{i-}_{now})v^t+1i??=v(st+1?;wnowi??)
- 計算TD目標和TD誤差:y^ti?=rti+γ?v^t+1i?\hat{y}^{i-}_t=r^i_t+\gamma\cdot\hat{v}^{i-}_{t+1}y^?ti??=rti?+γ?v^t+1i?? δti=v^ti?y^ti?\delta^i_t=\hat{v}^i_t-\hat{y}^{i-}_{t}δti?=v^ti??y^?ti??
- 更新價值網絡參數:wnewi←wnowi?α?δti??wiv(st;wnowi)w^i_{new}\leftarrow w^i_{now}-\alpha\cdot\delta^i_t\cdot\nabla_{w^i}v(s_t;w^i_{now})wnewi?←wnowi??α?δti???wi?v(st?;wnowi?)
- 更新目標網絡參數:wnewi?←τ?wnewi+(1?τ)?wnowi?w^{i-}_{new}\leftarrow \tau\cdot w^i_{new}+(1-\tau)\cdot w^{i-}_{now}wnewi??←τ?wnewi?+(1?τ)?wnowi??
- 更新策略網絡參數:θnewi←θnowi?β?δti??θilnπ(ati∣st;θnowi)\theta^i_{new}\leftarrow \theta^i_{now}-\beta\cdot\delta^i_t\cdot\nabla_{\theta^i}ln\pi(a^i_t|s_t;\theta^i_{now})θnewi?←θnowi??β?δti???θi?lnπ(ati?∣st?;θnowi?), ?i=1,??,m\forall i=1,\cdots,m?i=1,?,m