根据上一章的内容,已知完全合作关系下的多智能体利益一致有相同的目标,获得的奖励相同即 R t 1 = R t 2 = R t 3 R^1_t=R^2_t=R^3_t Rt1=Rt2=Rt3。
回忆一下单智能体的A2C,我们有一个策略网络,有一个价值网络。
价值网络通过TD误差更新,策略网络通过策略梯度更新,实际上对于多智能体是一样的,我们同样需要一个策略网络、一个价值网络。
价值网络输入是环境,输出是一个值,该网络用来是近似状态价值函数的,记该价值网络为 v ( s , w ) v(s,w) v(s,w)。
TD目标: y ^ t = r t + γ ⋅ v ( s t + 1 , w ) \hat{y}_t=r_t+\gamma\cdot v(s_{t+1},w) y^t=rt+γ⋅v(st+1,w)
TD误差: δ t = v ( s t , w ) − y ^ t \delta_t=v(s_t,w)-\hat{y}_t δt=v(st,w)−y^t
LOSS损失: L ( w ) = 1 2 δ t 2 L(w)=\frac{1}{2}\delta_t^2 L(w)=21δt2
更新 w w w: w ← w − α ⋅ δ t ⋅ ∇ w v ( s t , w ) w\leftarrow w-\alpha\cdot \delta_t\cdot\nabla_w v(s_t,w) w←w−α⋅δt⋅∇wv(st,w)
对于策略网络的优化我们借助了一个目标函数 J ( θ ) = E s , a ( Q π ( s , a ) ) J(\theta)=E_{s,a}(Q_{\pi}(s,a)) J(θ)=Es,a(Qπ(s,a)),对于多智能体而言目标函数是 J ( θ 1 , θ 2 , ⋯ , θ m ) = E s , a ( Q π ( s , a ) ) J(\theta^1,\theta^2,\cdots,\theta^m)=E_{s,a}(Q_{\pi}(s,a)) J(θ1,θ2,⋯,θm)=Es,a(Qπ(s,a))。
所以策略梯度计算可以表示为, ∇ θ i J ( θ 1 , θ 2 , ⋯ , θ m ) = ∇ θ i E S ( ∑ A π ( A ∣ S ) Q π ( S , A ) ) ≈ E S ( ∑ A ∇ θ i π ( A ∣ S ) Q π ( S , A ) ) = E S ( ∑ A π ( A ∣ S ) ⋅ 1 π ( A ∣ S ) ∇ θ i π ( A ∣ S ) Q π ( S , A ) ) = E S , A ( 1 π ( A ∣ S ) ∇ θ i π ( A ∣ S ) Q π ( S , A ) ) = E S , A ( ∇ θ i l n ( π ( A ∣ S ) ) Q π ( S , A ) ) \nabla_{\theta^i}J(\theta^1,\theta^2,\cdots,\theta^m)=\nabla_{\theta^i}E_{S}(\sum_{A}\pi(A|S)Q_{\pi}(S,A))\approx E_{S}(\sum_{A}\nabla_{\theta^i}\pi(A|S)Q_{\pi}(S,A))=E_{S}(\sum_{A}\pi(A|S)\cdot\frac{1}{\pi(A|S)}\nabla_{\theta^i}\pi(A|S)Q_{\pi}(S,A))=E_{S,A}(\frac{1}{\pi(A|S)}\nabla_{\theta^i}\pi(A|S)Q_{\pi}(S,A))=E_{S,A}(\nabla_{\theta^i}ln(\pi(A|S))Q_{\pi}(S,A)) ∇θiJ(θ1,θ2,⋯,θm)=∇θiES(∑Aπ(A∣S)Qπ(S,A))≈ES(∑A∇θiπ(A∣S)Qπ(S,A))=ES(∑Aπ(A∣S)⋅π(A∣S)1∇θiπ(A∣S)Qπ(S,A))=ES,A(π(A∣S)1∇θiπ(A∣S)Qπ(S,A))=ES,A(∇θiln(π(A∣S))Qπ(S,A))
因为 π ( A ∣ S ) = π ( A 1 ∣ S , θ 1 ) × π ( A 2 ∣ S , θ 2 ) ⋯ × π ( A m ∣ S , θ m ) \pi(A|S)=\pi(A^1|S,\theta^1)\times\pi(A^2|S,\theta^2)\cdots\times\pi(A^m|S,\theta^m) π(A∣S)=π(A1∣S,θ1)×π(A2∣S,θ2)⋯×π(Am∣S,θm)
所以 ∇ θ i l n ( π ( A ∣ S ) ) = ∇ θ i [ l n ( π ( A 1 ∣ S , θ 1 ) ) + l n ( π ( A 2 ∣ S , θ 2 ) ) + ⋯ + l n ( π ( A m ∣ S , θ m ) ) ] = ∇ θ i l n ( π ( A i ∣ S , θ i ) ) \nabla_{\theta^i}ln(\pi(A|S))=\nabla_{\theta^i}[ln(\pi(A^1|S,\theta^1))+ln(\pi(A^2|S,\theta^2))+\cdots+ln(\pi(A^m|S,\theta^m))]=\nabla_{\theta^i}ln(\pi(A^i|S,\theta^i)) ∇θiln(π(A∣S))=∇θi[ln(π(A1∣S,θ1))+ln(π(A2∣S,θ2))+⋯+ln(π(Am∣S,θm))]=∇θiln(π(Ai∣S,θi))
因此,对于完全合作的多智能体A2C,单个智能体的策略梯度可以表示为:
∇ θ i J ( θ 1 , θ 2 , ⋯ , θ m ) = E S , A ( ∇ θ i l n ( π ( A i ∣ S , θ i ) ) [ Q π ( S , A ) − b ] ) \nabla_{\theta^i}J(\theta^1,\theta^2,\cdots,\theta^m)=E_{S,A}(\nabla_{\theta^i}ln(\pi(A^i|S,\theta^i))[Q_{\pi}(S,A)-b]) ∇θiJ(θ1,θ2,⋯,θm)=ES,A(∇θiln(π(Ai∣S,θi))[Qπ(S,A)−b])
其中 Q π ( S , A ) Q_{\pi}(S,A) Qπ(S,A)改为 Q π ( S , A ) − b Q_{\pi}(S,A)-b Qπ(S,A)−b是一种带基线的情况,如果忘记可以参考之前的A2C章节,传送门:https://blog.csdn.net/m0_47719040/article/details/148770085?spm=1001.2014.3001.5502
实际训练过程中为了解决自举带来的高估问题,目标价值网络和价值网络采用不同的参数,具体原因不再赘述,之前的章节中已经做了详细的介绍。
当前价值网络: w n o w w_{now} wnow。
目标价值网络: w n o w − w^-_{now} wnow−。
当前m个策略网络的参数分别是 θ n o w 1 , θ n o w 2 , ⋯ , θ n o w m \theta^1_{now},\theta^2_{now},\cdots,\theta^m_{now} θnow1,θnow2,⋯,θnowm。