美文网首页
DDPG算法解析

DDPG算法解析

作者: 金色暗影 | 来源:发表于2021-04-22 22:13 被阅读0次
时间会让你忘记我吗

直接看名字就能看出DDPG(Deep Deterministic Policy Gradient )其实就是DPG(Deterministic Policy Gradient )的深度神经网络版本,它采用Actor-Critic架构,用来解决连续控制问题。

其实当初在我刚学了解决离散控制问题的方法的时候,就思考过如果换成连续控制问题该怎么办,然后再看DPG所使用的方法之后,发现跟我想的是一模一样....
所以,DDPG解决强化学习问题的思路跟那些解决离散问题的AC架构方法并没多大区别,就是做了点微小的改动以适应连续问题罢了。因此,有离散控制问题经验的你,并且比较懂深度学习的话,在理解DDPG的时候可以说是非常简单,甚至觉得不值一提...

来看一个连续控制问题

机械手臂

如图,假如我们想用强化学习训练一个策略来控制机械手臂,上面的轴可以在[0, 2\pi]之间转动, 下面的轴可以在[0, \pi] 之间转动,那么它的动作空间将会是一个多维的连续空间:
A \in [0, 2\pi] *[0, \pi]

在有无穷多个action的时候,我们要怎么来实现策略网络呢?

回想一下在离散AC框架下的策略网络,它是输入状态s, 输出a的概率分布\pi (a|s) :

离散控制的策略网络

因为连续控制问题有无数个action, 显然像离散问题那样通过输出层softmax后的n个有限action的概率的方式是行不通的。

因为我太了解深度学习这一套东西了,所以面对这个问题的时候,直接就想到了两个解决方案:

  • 确定策略(就是本文要讲的DDPG的方法): 既然没法输出动作的概率分布,那我用整个策略网络代表概率分布,将分类问题改为回归问题,直接输出确定动作不就可以了嘛...
  • 随机策略:不是要输出分布嘛,不能一个个给,我输出一个高斯分布的均值和方差不就行了嘛...

就这样两个我想当然就想到的方法,然后发现业界就是这么玩的....
既然本文是讲DDPG,自然,我们就沿着第一个想法来实现。
于是我们可以把上面的策略网络改造成这样:

确定策略网络
让神经网络直接输出每个机械臂需要转动多少的动作,几根机械臂就输出几维。
这样,我们就可以利用这个网络的输出动作来操作机械臂,得到相应的transition (s_t, a_t, r_t, s_{t+1}), 接下来就可以按照AC架构的老路来训练模型了~

再来看看模型的更新过程

DDPG

Critic更新 (更新价值网络参数w

价值网络拟合的目标一般跟DQN网络一样是最大动作价值函数Q^*, 期望显然没法求,于是通过蒙特卡洛方法,使用观测值q(s,a;w)来近似,再通过TD算法来改进w:
q_t = q(s_t,a_t;w) \\ q_{t+1} = q(s_{t+1}, a'_{t+1}; w) \\ q_{target} = r_t + \gamma q_{t+1}
于是 TD error为:
\delta_t = q_t - q_{target}
然后通过TD error 梯度下降来更新网络参数w :
w \leftarrow w - \alpha \frac{\partial \delta}{ \partial w}

Actor更新 (更新策略网络参数\theta

Critic 输出的价值代表了Actor预测动作的好坏,因此策略网络的目标是最大化价值Value ,自然就想到了用梯度上升法来最大化q(s,a;w) ,于是,我们可以对 q(s,a;w)\theta 的梯度,让我们将策略网络记作\pi(s;\theta)
pg = \frac{\partial q(s, \pi(s;\theta);w )}{\partial \theta} = \frac{\partial q(s,a;w)}{\partial a} * \frac{\partial a}{\partial \theta}
然后用梯度上升更新\theta :
\theta \leftarrow \theta + \alpha'* pg

优化高估或低估问题

观察上面的推导过程,我们容易发现,这玩意跟DQN类似,因为bootstraping的通病,一开始低估了就会不断低估,一开始高估了就会不断高估,将会使得估计误差一边倒,导致学习的效果不好。为了处理这个问题,有很多种解决方案,大概就是跟DQN 差不多,DDPG就是这么做的。

引入target network

其实就是加入一个延迟更新策略,分别用两个网络来分别估计t+1时刻和t 时刻的值,即:
q_t = q(s_t,a_t;w) \\ q_{t+1} = q(s_{t+1}, a'_{t+1}; w')

a_t = \pi(s; \theta) \\ a_{t+1} = \pi(s_t+1; \theta')
这样一来就隔断了用自己的估计来估计自己,避免了不断被强化的倾向。但是,实际更新target network参数的过程采用的是这样一种方式:
w' = \tau ~w + (1-\tau) w' , \tau \in (0,1) \\ \theta' = \tau ~\theta + (1-\tau) \theta' , \tau \in (0,1)
因为target net的参数还是依赖于原来的网络参数,这种传递无法完全避免。

经验回放

通常经验回放可以使算法更加稳定,因为仅仅使用新数据容易导致网络过拟合使得训练终止,这给了样本有了更多的学习机会,当然如果使用过多的经验也会降低学习速度,这需要一定程度上进行权衡。

当然,还有很多常见的方法都可以... 根据需要来。

总结

  • DDPG是一种off-policy的算法
  • DDPG只能用于连续动作空间的环境
  • DDPG可以被看作是连续动作空间环境下的DQN

相关论文

相关文章

  • DDPG算法解析

    直接看名字就能看出DDPG(Deep Deterministic Policy Gradient )其实就是DPG...

  • 深度强化学习Trick:动作标准化

    策略梯度Policy Gradient类的算法,如DDPG等,可以处理连续动作空间continuous actio...

  • TD3

    DDQN + DDPG ==> TD3 1. DDPG DDPG由David Silver在2014年提出的DPG...

  • 从零开始强化学习(七)——DDPG

    DDPG是google DeepMind团队提出的一种用于输出确定性动作的算法,它解决了Actor-Critic神...

  • 强化学习算法(二)DDPG

    姓名:张轩 学号:20011214440 【嵌牛导读】在强化学习算法(一)这篇文章中我给大家介绍了A3C这一算法,...

  • Q学习延伸至DDPG算法公式

    Q learning原始损失函数定义: Q的贝尔曼方程: 确定性策略的Q定义: 其中的action a就是由确定的...

  • DDPG实战

    1.前言 这次的内容主要是针对上一下讲解的DDPG理论部分进行实战,实战效果如下: 2.代码 2.1 主结构 我们...

  • 学习资料汇总

    GeoHash核心原理解析 GeoHash算法学习讲解、解析及原理分析

  • 算法 | 解析算法

    【算法思想】 找出问题的条件与结果之间的数学表达式,再通过表达式的计算来实现问题求解。 【算法实例】 输入已知三角...

  • 共识算法:Raft

    共识算法:RaftRaft 官网Raft 原理动画 (推荐看看Raft 算法解析图片来源

网友评论

      本文标题:DDPG算法解析

      本文链接:https://www.haomeiwen.com/subject/joxtrltx.html