DDPG算法

DDPG

deep deterministic policy gradient 深度确定性策略梯度算法(Actor-critics 的提升)

解决连续控制性问题的一个算法,和PPO不一样,PPO输出的是一个策略,也就是一个概率分布,DDPF输出的直接是一个动作。

DDPG更接近DQN,是用一个actor去弥补DQN不能处理连续控制性问题的缺点。

DQN是更新的动作的q值:

从公式中可以看出,DQN不能用于连续控制问题原因,是因为maxQ(s,a)函数只能处理离散型

DQN用magic函数,也就是神经网络解决了Qlearning不能解决的连续状态空间问题。那同样,DDPG就使用magic解决DQN不能解决的连续控制性问题就好了。

也就是说,用一个magic函数,直接代替maxQ(s,a)的功能。也就是说,我们期待我们输入状态s,magic函数返回我们动作action的取值,这个取值能够让q值最大。这就是DDPG中Actor的功能。

DQN的神经网络,就像用一张布去覆盖Qlearning中的Qtable。这也是DDPG中Critic的功能。当我们把某个state输入到DDPG的Actor中的时候,相当于在这块布上做沿着state所在的位置剪开,这个时候大家会看到这个边缘是一条曲线。

如上图中的红色曲线,这条曲线很像概率分布,但要一定注意,这里并不是策略,也不是PPO和AC中的V值。是在某个状态下,选择某个动作值的时候,能获得的Q值。

Actor的任务就是在寻找这个曲线的最高点,然后返回能获得这个最高点,也是最大Q值的动作。所以,DDPG其实并不是PG,并没有做带权重的梯度更新。而是在梯度上升,在寻找最大值。这也就解释了,为什么DDPG是一个离线策略,但可以多次更新却不用importance sampling。这是因为这个算法就是DQN,和策略没有直接的关系。

Critic

        Critic网络的作用是预估Q,虽然他还叫Critic,但和AC中的Critic不一样,这里预估的是Q不是V;

        注意Critic的输入有两个:动作和状态,需要一起输入到Critic中;

        Critic网络的loss还是和AC一样,用的是TD-error。

Actior

        和AC不同,Actior输出的是一个动作;

        Actior的功能是,输出一个动作A,这个动作Actior输入到Crititc后,能够获得最大的Q值。

        所以Actor的更新方式和AC不同,不是用带权重梯度更新,而是用梯度上升。

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

只需记住一点:目标网络只是用在求target的过程中。

总结

        1、DDPG源于DQN,而不是源于AC;

        2、Actor 用的是梯度上升,而不是带权重的梯度更新;

        3、虽然Critic和AC一样,都是用td-error来更新;但AC的critic预估的是V,DDPG预估的是Q

Actor-Critic

        Actor-Critic,其实是用了两个网络:
        两个网络有一个共同点,输入状态S:一个输出策略,负责选择动作,我们把这个网络成为Actor;一个负责计算每个动作的分数,我们把这个网络成为Critic。
        大家可以形象地想象为,Actor是舞台上的舞者,Critic是台下的评委。
        Actor在台上跳舞,一开始舞姿并不好看,Critic根据Actor的舞姿打分。Actor通过Critic给出的分数,去学习:如果Critic给的分数高,那么Actor会调整这个动作的输出概率;相反,如果Critic给的分数低,那么就减少这个动作输出的概率。
        所以依我的观点来看,AC不是PG+ DQN,而应该说AC是TD版本的PG。

TD-error

        注意:这是AC的重点,很多人在这里会和DQN搞混,也就是容易产生误解的地方。在DQN预估的是Q值,在AC中的Critic,估算的是V值。

        这里可能有疑问,为什么不是Q值呢?说好是给动作评价呢。

        我们可以直接用network估算的Q值作为更新值,但效果会不太好。

        原因看下图:

假设我们用Critic网络,预估到s状态下三个动作A1,A2,A3的Q值分别为1,2,10。

但在开始的时候,我们采用平均策略,于是随机到A1。于是我们用策略梯度的带权重方法更新策略,这里的权重就是Q值。

于是策略会更倾向于选择A1,意味着更大概率选择A1。结果A1的概率就持续升高...
这就掉进了正数陷阱。我们明明希望A3能够获得更多的机会,最后却是A1获得最多的机会。

        这是为什么呢?
        这是因为Q值用于是一个正数,如果权重是一个正数,那么我们相当于提高对应动作的选择的概率。权重越大,我们调整的幅度将会越大。
        其实当我们有足够的迭代次数,这个是不用担心这个问题的。因为总会有机会抽中到权重更大的动作,因为权重比较大,抽中一次就能提高很高的概率。

        但在强化学习中,往往没有足够的时间让我们去和环境互动。这就会出现由于运气不好,使得一个很好的动作没有被采样到的情况发生。

        要解决这个问题,我们可以通过减去一个baseline,使得权重有正有负。而通常这个baseline,我们选取的是权重的平均值。减去平均值之后,值就变成有正有负了。而Q值的期望(均值)就是V。

参考文献:

1、你有一份强化学习线路图,请查收。(原题:看我如何一文从马可洛夫怼到DPPO) - 知乎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值