强化学习入坑之路06

强化学习入坑之路06

昨天看WCG2020魔兽总决赛了,fly夺冠了,感动ing。。。
好了,下面进入正题吧。这次是强化学习的最后一次打卡了。这次学习的内容是DDPG,下面进入正题。

DDPG

离散动作vs连续动作

在这里插入图片描述
离散动作与连续动作是相对的概念,一个是可数的,一个是不可数的。
在 CartPole 环境中,可以有向左推小车、向右推小车两个动作。在 Frozen Lake 环境中,小乌龟可以有上下左右四个动作。在 Atari 的 Pong 游戏中,游戏有 6 个按键的动作可以输出。
但在实际情况中,经常会遇到连续动作空间的情况,也就是输出的动作是不可数的。比如说推小车力的大小、 选择下一时刻方向盘的转动角度或者四轴飞行器的四个螺旋桨给的电压的大小等等。
在这里插入图片描述
对于连续的控制动作我们应该怎么处理呢,这个时候我们就又用到了神经网络。在离散动作的情况下,有几个动作就输出几个动作的概率,但在连续动作的场景下我们输出的就是一个浮点数了,这个策略用 μ θ ( s t ) μ_θ(s_t) μθ(st)

通常来说我们把离散动作下的策略叫随机性策略,而把连续动作下的策略叫确定性策略。随机性策略的输出是采取几个动作的概率,而确定性策略是当神经网络的参数固定下来了之后,输入同样的 state,必然输出同样的 action。
在这里插入图片描述

DDPG(Deep Deterministic Policy Gradient)

在这里插入图片描述
在连续控制领域,比较经典的强化学习算法就是 DDPG(Deep Deterministic Policy Gradient)。DDPG 的特点可以从它的名字当中拆解出来,拆解成 Deep、Deterministic 和 Policy Gradient。
DDPG 是 DQN 的一个扩展的版本。在 DDPG 的训练中,它借鉴了 DQN 的技巧:目标网络和经验回放。经验回放这一块跟 DQN 是一样的,但 target network 这一块的更新跟 DQN 有点不一样。
在这里插入图片描述
提出 DDPG 是为了让 DQN 可以扩展到连续的动作空间,就是我们刚才提到的小车速度、角度和电压的电流量这样的连续值。所以 DDPG 直接在 DQN 基础上加了一个策略网络(如上图蓝色矩形所示),用来直接输出动作值。所以 DDPG 需要一边学习 Q 网络,一边学习策略网络。Q 网络的参数用w来表示。策略网络的参数用 θ \theta θ来表示。我们称这样的结构为Actor-Critic的结构。
在这里插入图片描述
通俗地解释一下 Actor-Critic 的结构:
策略网络扮演的就是 actor 的角色,它负责对外展示输出,输出舞蹈动作。Q 网络就是评论家(critic),它会在每一个 step 都对 actor 输出的动作做一个评估,打一个分,估计一下它做一次的 action 未来能有多少收益,也就是去估计这个 actor 输出的这个 action 的 Q 值大概是多少,即 Q w ( s , a ) Q_w(s,a) Qw(s,a)。 Actor 就需要根据舞台目前的状态来做出一个 action。
评论家就是评委,它需要根据舞台现在的状态和演员输出的 action 这两个值对 actor 刚刚的表现去打一个分数 Q w ( s , a ) Q_w(s,a) Qw(s,a)。所以 actor 就是要根据评委的打分来调整自己的策略。也就是更新 actor 的神经网络参数 θ \theta θ, 争取下次可以做得更好。而 critic 就是要根据观众的反馈,也就是环境的反馈 reward 来调整自己的打分策略,也就是要更新 critic 的神经网络的参数w,它的目标是要让每一场表演都获得观众尽可能多的欢呼声跟掌声,也就是要最大化未来的总收益。
最开始训练的时候,这两个神经网络参数是随机的。所以 critic 最开始是随机打分的,然后 actor 也跟着乱来,就随机表演,随机输出动作。但是由于我们有环境反馈的 reward 存在,所以 critic 的评分会越来越准确,也会评判的那个 actor 的表现会越来越好。既然 actor 是一个神经网络,是我们希望训练好的这个策略网络,那我们就需要计算梯度来去更新优化它里面的参数 θ \theta θ 。简单的说,我们希望调整 actor 的网络参数,使得评委打分尽可能得高。注意,这里的 actor 是不管观众的,它只关注评委,它就是迎合评委的打分,打的这个 Q w ( s , a ) Q_w(s,a) Qw(s,a)而已。
在这里插入图片描述
接下来就是类似 DQN。DQN 的最佳策略是想要学出一个很好的 Q 网络。 学好这个网络之后,我们希望选取的那个动作使你的 Q 值最大。DDPG 的目的也是为了求解让 Q 值最大的那个 action。Actor 只是为了迎合评委的打分而已,所以用来优化策略网络的梯度就是要最大化这个 Q 值,所以构造的 loss 函数就是让 Q 取一个负号。我们写代码的时候要做的就是把这个 loss 函数扔到优化器里面,它就会自动最小化 loss,也就是最大化这个 Q。
在这里插入图片描述
那我们把两个网络的 loss function 就可以构造出来。我们可以看到策略网络的 loss function 是一个复合函数。我们把 a = μ θ ( s ) a =\mu_{\theta(s)} a=μθ(s)代进去 ,最终策略网络要优化的是策略网络的参数 θ \theta θ

Q 网络要优化的是那个 Q 的输出 Q w ( s , a ) Q_w(s,a) Qw(s,a)和那个 Q_target 之间的一个均方差。但是 Q网络的优化存在一个和 DQN 一模一样的问题就是它后面的这个 Q_target 是不稳定的。这个在之前的 DQN 有讲过。后面的 Q w ˉ ( s ′ , a ′ ) Q_{\bar{w}}\left(s^{\prime}, a^{\prime}\right) Qwˉ(s,a)也是不稳定的。因为 Q w ˉ ( s ′ , a ′ ) Q_{\bar{w}}\left(s^{\prime}, a^{\prime}\right) Qwˉ(s,a) 也是一个预估的值。为了稳定这个 Q_target。DDPG 分别给 Q 网络和策略网络都搭建了 target network,专门就是为了用来稳定这个 Q_target。

target_Q 网络就为了来计算 Q_target 里面的 Q w ˉ ( s ′ , a ′ ) Q_{\bar{w}}\left(s^{\prime}, a^{\prime}\right) Qwˉ(s,a)。然后 Q w ˉ ( s ′ , a ′ ) Q_{\bar{w}}\left(s^{\prime}, a^{\prime}\right) Qwˉ(s,a) 里面的需要的 next action a’就是通过 target_P 网络来去输出,即 a ′ = μ θ ˉ ( s ′ ) a^{\prime}=\mu_{\bar{\theta}}\left(s^{\prime}\right) a=μθˉ(s)

为了区分前面的 Q 网络和策略网络以及后面的 target_Q 网络和 target_P 策略网络,前面的网络的参数是 w,后面的网络的参数是 w ˉ \bar{w} wˉ。这就是为什么我们去看一些 DDPG 的文章,会发现 DDPG 会有四个网络。策略网络的 target 网络 和 Q 网络的 target 网络就是颜色比较深的这两个,它只是为了让计算 Q_target 的时候能够更稳定一点而已。因为这两个网络也是固定一段时间的参数之后再跟评估网络同步一下最新的参数。

Exploration vs. Exploitation

DDPG 通过 off-policy 的方式来训练一个确定性策略。因为策略是确定的,如果 agent 使用同策略来探索,在一开始的时候,它会很可能不会尝试足够多的 action 来找到有用的学习信号。为了让 DDPG 的策略更好地探索,我们在训练的时候给它们的 action 加了噪音。DDPG 的原作者推荐使用时间相关的OU noise,但最近的结果表明不相关的、均值为0的Gaussian noise的效果非常好。由于后者更简单,因此我们更喜欢使用它。为了便于获得更高质量的训练数据,你可以在训练过程中把噪声变小。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值