多智能体强化学习算法MADDPG(一:由单智能体强化学习到多智能体强化学习)

在这里插入图片描述
我,菜拐拐,今天又来了!废话少说,上重点。准备好课堂笔记┗|`O′|┛ 嗷~~

多智能体强化学习背景知识

  • *为什么提出多智能体DDPG(MADDPG)*
  • *学习MADDPG算法的先验知识*
    • ==SPG与DPG简述==
    • ==Q-Learning简述==
    • ==由Q-Learning到DQN==
    • ==由DQN到DDPG==
    • ==由DDPG算法到MADDPG算法==
  • *MADDPG算法的巧妙之处*

为什么提出多智能体DDPG(MADDPG)

多智能体环境下传统算法的短板

  1. 传统的Q学习算法不适用:随着训练的进行,每个智能体的策略都在发生变化。从任何一个单独的智能体的角度来看,环境都变得不稳定(其他智能体的动作带来环境变化),这带来了学习稳定性方面的挑战。由此,不适用于传统的Q学习算法。
  2. 经典的DQN不大适用:如果不知道其他智能体的状态,那么不同情况下自身的状态转移也会不同,这阻止了以往经验重放的直接使用。还有一个原因,请等后文分解。
  3. 策略梯度(PG)算法不适用:PG算法会由于智能体数量变多使固有的方差大的问题加剧。

学习MADDPG算法的先验知识

SPG与DPG简述

  • SPG
    基于策略的SPG (Stochastic Policy Gradient):(其更加适合在连续的或者较大的动作下运行,这不同于基于值的Q学习或DQN方法)该算法是直接优化累积回报来获得使回报最大的策略。目标公式如下:

    • 参数化的策略被假定为: π θ ( a ∣ s ) {\pi _\theta }(a|s) πθ(as)
    • 累积回报为: J ( θ ) = E s ∼ ρ π , a ∼ π θ [ ∑ t = 0 ∞ γ t r t ] J(\theta ) = {E_{s \sim {\rho ^\pi },a \sim {\pi _\theta }}}\left[ {\sum\limits_{t = 0}^\infty { {\gamma ^t}{r_t}} } \right] J(θ)=Esρπ,aπθ[t=0γtrt]
    • 为使累积回报最大,可以使用梯度上升方法来寻找局部最大值。Then,对策略参数求导得到策略更新梯度: ∇ θ J ( θ ) = E s ∼ ρ π , a ∼ π θ [ ∇ θ log ⁡ π θ ( a ∣ s ) Q π ( s , a ) ] {\nabla _\theta }J(\theta ) = {E_{s \sim {\rho ^\pi },a \sim {\pi _\theta }}}\left[ { {\nabla _\theta }\log {\pi _\theta }(a|s){Q^\pi }(s,a)} \right] θJ(θ)=Esρπ,aπθ[θlogπθ(as)Qπ(s,a)],可见SPG需要同时考虑状态概率分布以及动作概率分布。如果要进行学习训练,就需要大量的样本来覆盖整个二维的状态动作空间。
    • PG的思想就是沿着目标函数变大的方向调整策略的参数。
    • More importantly,所提的策略是从state到action概率分布的映射。
  • DPG

    • DPG是SPG的概率分布方差趋近于0的极限状态。也就是说,DPG的策略是从state到action的一个映射S->A。
    • 累积回报为: J ( μ θ ) = E s ∼ ρ μ [ r ( s , μ θ ( s ) ) ] J({\mu _\theta }) = {E_{s \sim {\rho ^\mu }}}\left[ {r(s,{\mu _\theta }(s))} \right] J(μθ)=Esρμ[r(s,μθ(s))],所提到的 μ θ \mu _\theta μθ,用于对 Q π ( s , a ) {Q^\pi }(s,a) Qπ(s,a)取全局最优。
    • 利用链式法则对其求梯度,可得到 ∇ θ J ( μ θ ) = E s ∼ ρ π [ ∇ θ μ θ ( s ) ∇ a Q μ ( s , a ) ∣ a = μ θ ( s ) ] {\nabla _\theta }J({\mu _\theta }) = {E_{s\sim{\rho ^\pi }}}\left[ { {\nabla _\theta }{\mu _\theta }(s){\nabla _a}{Q^\mu }(s,a){|_{a = {\mu _\theta }(s)}}} \right] θJ(μθ)=Esρπ[θμθ(s)aQμ(s,a)a=μθ(s)]。由此可见,DPG仅需要考虑状态概率分布。
    • 综上所述,同SPG相比,DPG的优点是所需的样本较少,得出的策略更加明确。
    • 拐拐在这里只是进行了简要的描述。更详细的可以点击博文中的链接来了解。

Q-Learning简述

多智能体强化学习算法MADDPG(一:由单智能体强化学习到多智能体强化学习)_第1张图片

  • 如图所示,算法的伪代码被给定。
  • Q-Learning是强化学习算法中基于值的算法,Q 即为 Q(s,a),就是在某一时刻的 s 状态下,采取动作 a 能够获得收益的期望。环境会根据agent的动作反馈相应的回报 r。因此所以算法的主要思想就是将State与Action构建成一张Q-table来存储Q值,然后根据Q值来选取能够获得最大的收益的动作。
  • Q-table
Q-Table a1 a2
s1 q(s1,a1) q(s1,a2)
s2 q(s2,a1) q(s2,a2)
s3 q(s3,a1) q(s3,a2)
  • 由此可见,表格容纳的状态及动作的数量是有限的。由此,该算法仅限应用于有限离散状态,有限离散动作的场景。

由Q-Learning到DQN

多智能体强化学习算法MADDPG(一:由单智能体强化学习到多智能体强化学习)_第2张图片

  • 如图所示为DQN算法伪代码(截图来自深入浅出)。

  • 神奇之处表现在这里:由于Q-Table不能适用于高维状态。由此,在Q-Learning算法的基础上,DQN算法被提出。DQN把Q-Table的更新问题变成一个函数拟合问题,相近的状态得到相近的输出动作。又因为,深度神经网络可以自动提取复杂特征。So,面对高维且连续的状态使用深度神经网络最合适不过了。如图所示:多智能体强化学习算法MADDPG(一:由单智能体强化学习到多智能体强化学习)_第3张图片

  • 技巧:基于Q-Learning构造Loss函数;通过经验池解决相关性及非静态分布问题;使用TargetNet解决稳定性问题。但是,还是无法解决连续动作的问题。详细可见DQN算法详述。

由DQN到DDPG

多智能体强化学习算法MADDPG(一:由单智能体强化学习到多智能体强化学习)_第4张图片

  • 如图所示,DDPG的伪代码被展示。DDPG(deep deterministic policy gradient)是解决连续控制型问题的一个算法。该算法很好的解决了DQN算法未解决连续空间的问题,接下来将详细解释下基于DQN算法的DDPG算法。在此感谢大佬。

  • 首先,看下DQN不能解决连续动作的根源:伪代码[12]取最大值处(max函数只能处理离散型的)。

  • 上面说过,DQN算法用神经网络解决了Q-Learning不能解决的连续状态空间问题。同理,DDPG算法可以理解为用神经网络解决DQN不能解决的连续(动作)控制型问题就好了。就是说,用神经网络来代替max找action的功能。换句话说,期待神经网络的输入是状态,返回值为动作action,该取值可以让Q最大。由此,非常明显了,这就是DDPG中Actor的功能。

  • 接下来,借用大佬的图进行描述。多智能体强化学习算法MADDPG(一:由单智能体强化学习到多智能体强化学习)_第5张图片

  • 如图所示,DQN的深度网络,可以描述为用一张布去覆盖Q-Learning中的Q-table。Then,这也是DDPG中Critic的功能。多智能体强化学习算法MADDPG(一:由单智能体强化学习到多智能体强化学习)_第6张图片

  • 如图所示,把某个state输入到DDPG的Actor中的时候,相当于在这块布上做沿着state所在的位置剪开,这个时候大家会看到这个边缘是一条曲线。图中的红线是在某个状态下,选择某个动作值的时候,能获得的Q值。Actor的任务就是在寻找这个曲线的最高点,然后返回能获得这个最高点,也是最大Q值的动作。多智能体强化学习算法MADDPG(一:由单智能体强化学习到多智能体强化学习)_第7张图片

  • 下面给出Actor的功能:输出一个动作A,这个动作A输入到Crititc后,能够获得最大的Q值。注意:更新方式为梯度上升。

  • 下面给出critic的功能:预估Q。

  • 需要4个网络。Actor, Critic, Actor_target, Cirtic_target。

由DDPG算法到MADDPG算法

多智能体强化学习算法MADDPG(一:由单智能体强化学习到多智能体强化学习)_第8张图片

  • 整体如图所示。由DDPG到MADDPG,会容易一下,来瞅瞅。
  • 每个智能体的训练同单个DDPG的训练过程类似,不同的地方体现在训练的时候 Critic 的输入上。在单个智能体的DDPG算法中, Critic 的输入是一个 state-action 对信息。但是在 MADDPG 上,每个智能体的 Critic 输入除了自身 state-action 信息外,还有额外的信息,比如其他智能体的动作和状态。
  • 详细见下一个博文。

MADDPG算法的巧妙之处

  • 采用集中式培训和分散式执行的框架:在训练时,使用额外的信息来输入各个 Critic ,在应用时只利用局部信息就能给出最优动作。注意,这里给出了Q学习不适用的另一个原因:Q函数通常在训练和测试时不能包含不同的信息。
  • 不仅适用于合作,而且适用于竞争性或合作竞争混合。
  • 不需要知道环境的动力学模型以及特殊的通信需求。

在座的各位,未完待续啊。最近太放肆了,坚持更啊啊啊啊!这篇博文简单总结了RL算法的演进,来简单引出MADDPG算法!
拐拐愿大家天天顺利。Happy!!!
在这里插入图片描述

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