第十四章、完全合作关系设定下的多智能体强化学习(MAC-A2C)

0 前言

根据上一章的内容,已知完全合作关系下的多智能体利益一致有相同的目标,获得的奖励相同即 R t 1 = R t 2 = R t 3 R^1_t=R^2_t=R^3_t Rt1=Rt2=Rt3

1 完全合作关系设定下的策略学习

第十四章、完全合作关系设定下的多智能体强化学习(MAC-A2C)_第1张图片
要注意的点:

  • 状态 S = [ O 1 , O 2 , ⋯   , O m ] S=[O^1,O^2,\cdots,O^m] S=[O1,O2,,Om],所有智能体的观测之和是状态。
  • 动作 A = [ A 1 , A 2 , ⋯   , A m ] A=[A^1,A^2,\cdots,A^m] A=[A1,A2,,Am]
  • 奖励对于所有智能体来说是一样的。

2 完全合作关系设定下的多智能体A2C

回忆一下单智能体的A2C,我们有一个策略网络,有一个价值网络。
价值网络通过TD误差更新,策略网络通过策略梯度更新,实际上对于多智能体是一样的,我们同样需要一个策略网络、一个价值网络。

2.1 价值网络

第十四章、完全合作关系设定下的多智能体强化学习(MAC-A2C)_第2张图片
价值网络输入是环境,输出是一个值,该网络用来是近似状态价值函数的,记该价值网络为 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) wwαδtwv(st,w)

2.2 策略网络

第十四章、完全合作关系设定下的多智能体强化学习(MAC-A2C)_第3张图片
对于策略网络的优化我们借助了一个目标函数 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π(AS)Qπ(S,A))ES(Aθiπ(AS)Qπ(S,A))=ES(Aπ(AS)π(AS)1θiπ(AS)Qπ(S,A))=ES,A(π(AS)1θiπ(AS)Qπ(S,A))=ES,A(θiln(π(AS))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) π(AS)=π(A1S,θ1)×π(A2S,θ2)×π(AmS,θ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(π(AS))=θi[ln(π(A1S,θ1))+ln(π(A2S,θ2))++ln(π(AmS,θm))]=θiln(π(AiS,θ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(π(AiS,θ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

2.3 训练及决策

实际训练过程中为了解决自举带来的高估问题,目标价值网络和价值网络采用不同的参数,具体原因不再赘述,之前的章节中已经做了详细的介绍。
当前价值网络: 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

  • 当前状态 s t = [ o t 1 , ⋯   , o t m ] s_t=[o^1_t,\cdots,o^m_t] st=[ot1,,otm],让每一个智能体独立做随机抽样:
    a t i ∼ π ( ⋅ ∣ s t ; θ n o w i ) 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,并执行选中的动作。
  • 从环境中观测到奖励 r t r_t rt与下一时刻状态 s t + 1 = [ o t + 1 1 , ⋯   , o t + 1 m ] s_{t+1}=[o^1_{t+1},\cdots,o^m_{t+1}] st+1=[ot+11,,ot+1m]
  • 让价值网络做预测: v ^ t = v ( s t ; w n o w ) \hat{v}_t=v(s_t;w_{now}) v^t=v(st;wnow)
  • 让目标网络做预测: v ^ t + 1 − = v ( s t + 1 ; w n o w − ) \hat{v}^-_{t+1}=v(s_{t+1};w^-_{now}) v^t+1=v(st+1;wnow)
  • 计算TD目标和TD误差: y ^ t − = r t + γ ⋅ v ^ t + 1 − \hat{y}^-_t=r_t+\gamma\cdot\hat{v}^-_{t+1} y^t=rt+γv^t+1 δ t = v ^ t − y ^ t − \delta_t=\hat{v}_t-\hat{y}^-_{t} δt=v^ty^t
  • 更新价值网络参数: w n e w ← w n o w − α ⋅ δ t ⋅ ∇ w v ( s t ; w n o w ) w_{new}\leftarrow w_{now}-\alpha\cdot\delta_t\cdot\nabla_{w}v(s_t;w_{now}) wnewwnowαδtwv(st;wnow)
  • 更新目标网络参数: w n e w − ← τ ⋅ w n e w + ( 1 − τ ) ⋅ w n o w − w^-_{new}\leftarrow \tau\cdot w_{new}+(1-\tau)\cdot w^-_{now} wnewτwnew+(1τ)wnow
  • 更新策略网络参数: θ n e w i ← θ n o w i − β ⋅ δ t ⋅ ∇ θ i l n π ( a t i ∣ s t ; θ n o w i ) \theta^i_{new}\leftarrow \theta^i_{now}-\beta\cdot\delta_t\cdot\nabla_{\theta^i}ln\pi(a^i_t|s_t;\theta^i_{now}) θnewiθnowiβδtθil(atist;θnowi), ∀ i = 1 , ⋯   , m \forall i=1,\cdots,m i=1,,m

你可能感兴趣的:(强化学习算法,强化学习,人工智能,python,算法)