MADDPG算法学习笔记(一)

 MADDPG(Multi-agent Deep Deterministic Policy Gradient)由以下三部分演变而来:确定性策略梯度算法DPG(Deterministic Policy Gradient),深度确定性策略梯度算法DDPG(Deep Deterministic Policy Gradient)和多智能体深度确定性策略梯度算法MADDPG(Multi-agent Deeep Deterministic Policy Gradient),也就是说,整个算法的基础是DPG,并采用深度神经网络来解决控制空间不连续的问题,最后加入多个智能体,成为MADDPG。

因此,MADDPG主要解决的是连续状态空间及连续控制空间的问题。

首先,用一张图来表示DDPG的整体结构,其中,S表示智能体状态,A表示智能体的动作,Q值为从任务开始到结束智能体状态的总奖励值。而Actor-Critic网络则用来寻找最大的Q值。可以理解为Actor是演员,Critic是评论家。

Actor在进行表演,Critic根据Actor的表演打分。Actor通过Critic给出的分数去学习和优化:如果Critic给的分数高,那么Actor会增加这个动作的输出概率;相反,如果Critic给的分数低,那么就减少这个动作输出的概率。那么Actor和Critic网络具体是怎么实现的呢?在这里要首先提到DQN。

DQN是更新的动作的q值:

 在这里,由于maxQ(s',a')函数只能处理离散型的Q值,因此DQN不能用于连续控制问题原因。而DQN用神经网络解决了Qlearning不能解决的连续状态空间问题,因此同样的DDPG就是用神经网络解决DQN不能解决的连续控制型问题。我们把这里的神经网络用一个magic函数进行表示。也就是说,用一个magic函数,直接替代maxQ(s',a')的功能。

也就是说,我们期待我们输入状态s,magic函数返回我们动作action的取值,这个取值能够让Q值最大。这就是DDPG中的Actor的功能。

DQN的深度网络,就像用一张布去覆盖离散的Q值分布。这也是DDPG中Critic的功能。在这里,可以认为这个连续的Q值就是上面离散Q值的一个插值和拟合,请看下图:

如上图中的红色曲线,这条曲线指的是在某个状态下,选择某个动作值的时候,能获得的Q值。当我们把某个state输入到DDPG的Actor中的时候,相当于在这块布上做沿着state所在的位置剪开,这个时候大家会看到这个边缘是一条曲线。Actor的任务就是在寻找这个曲线的最高点,然后返回能获得这个最高点,也是最大Q值的动作,是一种梯度上升的更新过程。 

好了,现在我们回到最初的DDPG。在实际进行优化更新的时候,更新的时候如果更新目标在不断变动,会造成更新困难。所以DDPG采用了固定网络(fix network)技术,就是先冻结住用来求target的网络。在更新之后,再把参数赋值到target网络。所以在实做的时候,我们需要4个网络。actor, critic, Actor_target, cirtic_target。

接下来,我们对图中的TD-error进行分析。

为了避免正数陷阱,我们希望Actor的更新权重有正有负。因此,我们把Q值减去他们的均值V。有:Q(s,a)-V(s),所以我们可以得到更新的权重:Q(s,a)-V(s)

马尔科夫告诉我们,很多时候,V和Q是可以互相换算的。Q(s,a)用gamma * V(s') + r 来代替,于是整理后就可以得到:

gamma * V(s') + r - V(s) —— 我们把这个差,叫做TD-error

这个和之前DQN的更新公式非常像,只不过DQN的更新用了Q,而TD-error用的是V。Critic的任务就是让TD-error尽量小。然后TD-error给Actor做更新。TD-error就是Actor更新策略时候,带权重更新中的权重值。

算法流程

  1. 定义两个network:Actor 和 Critic
  2. j进行N次更新。
    1. 从状态s开始,执行动作a,得到奖励r,进入状态s'
    2. 记录Q的数据。
    3. 把Q输入到Critic,根据公式: TD-error = gamma * V(s') + r - V(s) 求 TD-error,并缩小TD-error
    4. 把TD-error输入到Actor,计算策略分布 。

注:文中内容,图片部分来源于知乎@张斯俊 

  • 25
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,让我来回答你关于聚类算法的问题。 聚类算法是一种无监督学习方法,它将数据集中的对象分成若干组或者类,使得同一组内的对象之间相似度较高,而不同组之间的相似度较低。聚类算法广泛应用于数据挖掘、模式识别、图像处理、自然语言处理等领域中。 常见的聚类算法有K-Means、层次聚类、DBSCAN等。其中,K-Means算法是最常用的聚类算法之一。 K-Means算法的基本思想是:首先随机选取K个中心点(质心),然后将每个样本点归属于距离其最近的中心点所在的簇,接着重新计算每个簇的中心点,重复上述过程直到簇不再发生变化或达到预设的迭代次数。 层次聚类算法是一种基于距离的聚类算法,它将样本点视为一棵树,从下往上逐步合并相似的簇,最终形成一棵树形结构。层次聚类算法可分为自底向上的凝聚聚类和自顶向下的分裂聚类两种。自底向上的凝聚聚类从每个样本点开始,逐步合并相似的簇,最终形成一棵树形结构;自顶向下的分裂聚类从所有样本点开始,逐步将簇分裂成较小的簇,最终形成一棵树形结构。 DBSCAN算法是一种基于密度的聚类算法,它将样本点分为核心点、边界点和噪音点三类,核心点周围的样本点被划分为同一个簇,边界点则被划分到离其最近的核心点所在的簇中,而噪音点则被剔除。DBSCAN算法具有不需要预先指定聚类数、对噪音点不敏感等优点,但对于不同密度的簇,其聚类效果可能不尽如人意。 以上是聚类算法的基础知识,希望能够对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值