diff --git a/docs/chapter12/chapter12.md b/docs/chapter12/chapter12.md index 61aede9..b49d58d 100644 --- a/docs/chapter12/chapter12.md +++ b/docs/chapter12/chapter12.md @@ -5,13 +5,22 @@ ![](img/12.1.png) 离散动作与连续动作是相对的概念,一个是可数的,一个是不可数的。 -* 在 CartPole 环境中,可以有向左推小车、向右推小车两个动作。在 Frozen Lake 环境中,小乌龟可以有上下左右四个动作。在 Atari 的 Pong 游戏中,游戏有 6 个按键的动作可以输出。 - -* 但在实际情况中,经常会遇到连续动作空间的情况,也就是输出的动作是不可数的。比如说推小车力的大小、 选择下一时刻方向盘的转动角度或者四轴飞行器的四个螺旋桨给的电压的大小等等。 +* 离散动作有如下几个例子: + * 在 CartPole 环境中,可以有向左推小车、向右推小车两个动作。 + * 在 Frozen Lake 环境中,小乌龟可以有上下左右四个动作。 + * 在 Atari 的 Pong 游戏中,游戏有 6 个按键的动作可以输出。 +* 但在实际情况中,经常会遇到连续动作空间的情况,也就是输出的动作是不可数的。比如: + * 推小车力的大小, + * 选择下一时刻方向盘的转动角度, + * 四轴飞行器的四个螺旋桨给的电压的大小。 ![](img/12.2.png) -对于这些连续的动作控制空间,Q-learning、DQN 等算法是没有办法处理的。那我们怎么输出连续的动作呢,这个时候,万能的神经网络又出现了。在上面这个离散动作的场景下,比如说我输出上下或是停止这几个动作。有几个动作,神经网络就输出几个概率值,我们用 $\pi_\theta(a_t|s_t)$ 来表示这个随机性的策略。在连续的动作场景下,比如说我要输出这个机器人手臂弯曲的角度,这样子的一个动作,我们就输出一个具体的浮点数。我们用 $\mu_{\theta}(s_t)$ 来代表这个确定性的策略。 +对于这些连续的动作控制空间,Q-learning、DQN 等算法是没有办法处理的。那我们怎么输出连续的动作呢,这个时候,万能的神经网络又出现了。 + +* 在离散动作的场景下,比如说我输出上、下或是停止这几个动作。有几个动作,神经网络就输出几个概率值,我们用 $\pi_\theta(a_t|s_t)$ 来表示这个随机性的策略。 + +* 在连续的动作场景下,比如说我要输出这个机器人手臂弯曲的角度,这样子的一个动作,我们就输出一个具体的浮点数。我们用 $\mu_{\theta}(s_t)$ 来代表这个确定性的策略。 我们再解释一下随机性策略跟确定性策略。 @@ -21,7 +30,10 @@ ![](img/12.3.png) * 要输出离散动作的话,我们就是加一层 softmax 层来确保说所有的输出是动作概率,而且所有的动作概率加和为 1。 -* 要输出连续动作的话,一般可以在输出层这里加一层 tanh。tanh 的图像的像右边这样子,它的作用就是可以把输出限制到 [-1,1] 之间。我们拿到这个输出后,就可以根据实际动作的一个范围再做一下缩放,然后再输出给环境。比如神经网络输出一个浮点数是 2.8,然后经过 tanh 之后,它就可以被限制在 [-1,1] 之间,它输出 0.99。然后假设说小车的一个速度的那个动作范围是 [-2,2] 之间,那我们就按比例从 [-1,1] 扩放到 [-2,2],0.99 乘 2,最终输出的就是 1.98,作为小车的速度或者说推小车的力输出给环境。 +* 要输出连续动作的话,一般可以在输出层这里加一层 tanh。 + * tanh 的图像的像右边这样子,它的作用就是把输出限制到 [-1,1] 之间。 + * 我们拿到这个输出后,就可以根据实际动作的范围再做一下缩放,然后再输出给环境。 + * 比如神经网络输出一个浮点数是 2.8,然后经过 tanh 之后,它就可以被限制在 [-1,1] 之间,它输出 0.99。假设小车速度的动作范围是 [-2,2] 之间,那我们就按比例从 [-1,1] 扩放到 [-2,2],0.99 乘 2,最终输出的就是 1.98,作为小车的速度或者说推小车的力输出给环境。 ## DDPG(Deep Deterministic Policy Gradient) @@ -36,7 +48,11 @@ DDPG 是 DQN 的一个扩展的版本。在 DDPG 的训练中,它借鉴了 DQN 的技巧:目标网络和经验回放。经验回放这一块跟 DQN 是一样的,但 target network 这一块的更新跟 DQN 有点不一样。 ![](img/12.5.png) -提出 DDPG 是为了让 DQN 可以扩展到连续的动作空间,就是我们刚才提到的小车速度、角度和电压的电流量这样的连续值。所以 DDPG 直接在 DQN 基础上加了一个策略网络(如上图蓝色矩形所示),用来直接输出动作值。所以 DDPG 需要一边学习 Q 网络,一边学习策略网络。Q 网络的参数用 $w$ 来表示。策略网络的参数用 $\theta$ 来表示。我们称这样的结构为 `Actor-Critic` 的结构。 +**提出 DDPG 是为了让 DQN 可以扩展到连续的动作空间**,就是我们刚才提到的小车速度、角度和电压的电流量这样的连续值。 + +* DDPG 直接在 DQN 基础上加了一个策略网络(如上图蓝色矩形所示),用来直接输出动作值,所以 DDPG 需要一边学习 Q 网络,一边学习策略网络。 +* Q 网络的参数用 $w$ 来表示。策略网络的参数用 $\theta$ 来表示。 +* 我们称这样的结构为 `Actor-Critic` 的结构。 ![](img/12.6.png) **通俗地解释一下 Actor-Critic 的结构**,