fix ch12 typos
This commit is contained in:
@@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
DDPG 是 DQN 的一个扩展的版本。在 DDPG 的训练中,它借鉴了 DQN 的技巧:目标网络和经验回放。经验回放这一块跟 DQN 是一样的,但 target network 这一块的更新跟 DQN 有点不一样。
|
DDPG 是 DQN 的一个扩展的版本。在 DDPG 的训练中,它借鉴了 DQN 的技巧:目标网络和经验回放。经验回放这一块跟 DQN 是一样的,但 target network 这一块的更新跟 DQN 有点不一样。
|
||||||

|

|
||||||
提出 DDPG 是为了让 DQN 可以扩展到连续的动作空间,就是我们刚才提到的小车速度、角度和电压的电流量这样的连续值。所以 DDPG 直接在 DQN 基础上加了一个策略网络,就是蓝色的这个,用来直接输出动作值。所以 DDPG 需要一边学习 Q 网络,一边学习策略网络。Q 网络的参数用 $w$ 来表示。策略网络的参数用 $\theta$ 来表示。我们称这样的结构为 `Actor-Critic` 的结构。
|
提出 DDPG 是为了让 DQN 可以扩展到连续的动作空间,就是我们刚才提到的小车速度、角度和电压的电流量这样的连续值。所以 DDPG 直接在 DQN 基础上加了一个策略网络(如上图蓝色矩形所示),用来直接输出动作值。所以 DDPG 需要一边学习 Q 网络,一边学习策略网络。Q 网络的参数用 $w$ 来表示。策略网络的参数用 $\theta$ 来表示。我们称这样的结构为 `Actor-Critic` 的结构。
|
||||||
|
|
||||||

|

|
||||||
**通俗地解释一下 Actor-Critic 的结构**,
|
**通俗地解释一下 Actor-Critic 的结构**,
|
||||||
@@ -48,20 +48,22 @@ DDPG 是 DQN 的一个扩展的版本。在 DDPG 的训练中,它借鉴了 DQN
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
接下来就是类似 DQN。DQN 的最佳策略是想要学出一个很好的 Q 网络。 学好这个网络之后,我们希望选取的那个动作使你的 Q 值最大。DDPG 的目的也是为了求解让 Q 值最大的那个 action。Actor 只是为了迎合评委的打分而已,所以用来优化策略网络的梯度就是要最大化这个 Q 值,所以构造的 loss 函数就是让 Q 取一个负号。我们写代码的时候要做的就是把这个 loss 函数扔到优化器里面,它就会自动最小化 loss,也就是最大化这个 Q。然后这里注意,除了策略网络要做优化,DDPG 还有一个 Q 网络也要优化。评委一开始也不知道怎么评分,它也是在一步一步的学习当中,慢慢地去给出准确的打分。那我们优化 Q 网络的方法其实跟 DQN 优化 Q 网络的方法是一模一样的,我们用真实的 reward $r$ 和下一步的 Q 即 Q' 来去拟合未来的收益也就是 Q_target。
|
接下来就是类似 DQN。DQN 的最佳策略是想要学出一个很好的 Q 网络。 学好这个网络之后,我们希望选取的那个动作使你的 Q 值最大。DDPG 的目的也是为了求解让 Q 值最大的那个 action。Actor 只是为了迎合评委的打分而已,所以用来优化策略网络的梯度就是要最大化这个 Q 值,所以构造的 loss 函数就是让 Q 取一个负号。我们写代码的时候要做的就是把这个 loss 函数扔到优化器里面,它就会自动最小化 loss,也就是最大化这个 Q。
|
||||||
|
|
||||||
|
然后这里注意,除了策略网络要做优化,DDPG 还有一个 Q 网络也要优化。评委一开始也不知道怎么评分,它也是在一步一步的学习当中,慢慢地去给出准确的打分。那我们优化 Q 网络的方法其实跟 DQN 优化 Q 网络的方法是一模一样的,我们用真实的 reward $r$ 和下一步的 Q 即 Q' 来去拟合未来的收益也就是 Q_target。
|
||||||
|
|
||||||
然后让 Q 网络的输出去逼近这个 Q_target。所以构造的 loss function 就是直接求这两个值的均方差。构造好 loss 后,之后我们就扔进去那个优化器,让它自动去最小化 loss 就好了。
|
然后让 Q 网络的输出去逼近这个 Q_target。所以构造的 loss function 就是直接求这两个值的均方差。构造好 loss 后,之后我们就扔进去那个优化器,让它自动去最小化 loss 就好了。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
那我们把两个网络的 loss function 就可以构造出来。我们可以看到策略网络的 loss function 是一个复合函数。我们把那个 $a = \mu_\theta(s)$ 代进去,最终策略网络要优化的是策略网络的参数 $\theta$ 。
|
那我们把两个网络的 loss function 就可以构造出来。我们可以看到策略网络的 loss function 是一个复合函数。我们把 $a = \mu_\theta(s)$ 代进去,最终策略网络要优化的是策略网络的参数 $\theta$ 。
|
||||||
|
|
||||||
Q 网络要优化的是那个 Q 的输出 $Q_w(s,a)$ 和那个 Q_target 之间的一个均方差。但是 Q网络的优化存在一个和 DQN 一模一样的问题就是它后面的这个 Q_target 是不稳定的。这个在之前的 DQN 有讲过。后面的 $Q_{\bar{w}}\left(s^{\prime}, a^{\prime}\right)$ 也是不稳定的。因为 $Q_{\bar{w}}\left(s^{\prime}, a^{\prime}\right)$ 也是一个预估的值。为了稳定这个 Q_target。DDPG 分别给 Q 网络和策略网络都搭建了 target network,专门就是为了用来稳定这个 Q_target。
|
Q 网络要优化的是那个 Q 的输出 $Q_w(s,a)$ 和那个 Q_target 之间的一个均方差。但是 Q网络的优化存在一个和 DQN 一模一样的问题就是它后面的这个 Q_target 是不稳定的。这个在之前的 DQN 有讲过。后面的 $Q_{\bar{w}}\left(s^{\prime}, a^{\prime}\right)$ 也是不稳定的。因为 $Q_{\bar{w}}\left(s^{\prime}, a^{\prime}\right)$ 也是一个预估的值。为了稳定这个 Q_target。DDPG 分别给 Q 网络和策略网络都搭建了 target network,专门就是为了用来稳定这个 Q_target。
|
||||||
|
|
||||||
|
|
||||||
target_Q 网络就为了来计算 Q_target 里面的 $Q_{\bar{w}}\left(s^{\prime}, a^{\prime}\right)$。然后 $Q_{\bar{w}}\left(s^{\prime}, a^{\prime}\right)$ 里面的需要的 next action $a'$ 就是通过 target_P 网络来去输出,即 $a^{\prime}=\mu_{\bar{\theta}}\left(s^{\prime}\right)$。
|
target_Q 网络就为了来计算 Q_target 里面的 $Q_{\bar{w}}\left(s^{\prime}, a^{\prime}\right)$。然后 $Q_{\bar{w}}\left(s^{\prime}, a^{\prime}\right)$ 里面的需要的 next action $a'$ 就是通过 target_P 网络来去输出,即 $a^{\prime}=\mu_{\bar{\theta}}\left(s^{\prime}\right)$。
|
||||||
|
|
||||||
为了区分前面的 Q 网络和策略网络以及后面的 target_Q 网络和 target_P 策略网络。前面的网络的参数是 $w$,后面的网络的参数是 $\bar{w}$。这就是为什么我们去看一些 DDPG 的文章,会发现 DDPG 会有四个网络。策略网络的 target 网络 和 Q 网络的 target 网络就是颜色比较深的这两个,它只是为了让计算 Q_target 的时候能够更稳定一点而已。因为这两个网络也是固定一段时间的参数之后再跟评估网络同步一下最新的参数。
|
为了区分前面的 Q 网络和策略网络以及后面的 target_Q 网络和 target_P 策略网络,前面的网络的参数是 $w$,后面的网络的参数是 $\bar{w}$。这就是为什么我们去看一些 DDPG 的文章,会发现 DDPG 会有四个网络。策略网络的 target 网络 和 Q 网络的 target 网络就是颜色比较深的这两个,它只是为了让计算 Q_target 的时候能够更稳定一点而已。因为这两个网络也是固定一段时间的参数之后再跟评估网络同步一下最新的参数。
|
||||||
|
|
||||||
这里面训练需要用到的数据就是 $s,a,r,s'$。我们只需要用到这四个数据,我们就用 Replay Memory 把这些数据存起来,然后再 sample 进来训练就好了。这个经验回放的技巧跟 DQN 是一模一样的。注意,因为 DDPG 使用了经验回放这个技巧,所以 DDPG 是一个 `off-policy` 的算法。
|
这里面训练需要用到的数据就是 $s,a,r,s'$。我们只需要用到这四个数据,我们就用 Replay Memory 把这些数据存起来,然后再 sample 进来训练就好了。这个经验回放的技巧跟 DQN 是一模一样的。注意,因为 DDPG 使用了经验回放这个技巧,所以 DDPG 是一个 `off-policy` 的算法。
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user