From aedf4753f4daab331a3ba23614a0acc79e695303 Mon Sep 17 00:00:00 2001 From: qiwang067 Date: Sat, 17 Oct 2020 20:46:22 +0800 Subject: [PATCH] fix some typos --- docs/chapter3/chapter3.md | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/docs/chapter3/chapter3.md b/docs/chapter3/chapter3.md index ae89e08..d9d0e12 100644 --- a/docs/chapter3/chapter3.md +++ b/docs/chapter3/chapter3.md @@ -2,7 +2,7 @@ 这节课我们通过最简单的`表格型的方法`来讲解如何使用 value-based 方法去求解强化学习。 -## Sarsa +## Sarsa: On-policy TD Control ### MDP @@ -109,17 +109,21 @@ $$ 这种强化方式其实在数学上面一行公式就表达出来了,这种更新的方式叫做`时序差分(Temporal Difference)`。这个公式就是说可以拿下一步的 Q 值 $Q(S_{t+_1},A_{t+1})$ 来更新我这一步的 Q 值 $Q(S_t,A_t)$ 。 -为了理解这个公式,如图所示,我们先把 $R_{t+1}+\gamma Q\left(S_{t+1}, A_{t+1}\right.)$ 当作是一个目标值,就是 $Q(S_t,A_t)$ 想要去逼近的一个目标值。我们想要计算的就是 $Q(S_t,A_t)$ 。因为最开始 Q 值都是随机初始化或者是初始化为零,它需要不断地去逼近它理想中真实的 Q 值,我们就叫 target 。Target 就是未来收益的总和大概有多少,而且是带衰减的那个。 +为了理解这个公式,如上图所示,我们先把 $R_{t+1}+\gamma Q\left(S_{t+1}, A_{t+1}\right.)$ 当作是一个目标值,就是 $Q(S_t,A_t)$ 想要去逼近的一个目标值。我们想要计算的就是 $Q(S_t,A_t)$ 。**因为最开始 Q 值都是随机初始化或者是初始化为零,它需要不断地去逼近它理想中真实的 Q 值,我们就叫 target 。Target 就是带衰减的未来收益的总和。** -我们用 $G_t$ 来表示未来收益总和(return),我们对 return 做一下简单的数学变化,可以知道 +我们用 $G_t$ 来表示未来收益总和(return),并且对它做一下数学变化: $$ -G_t = R_{t+1}+ \gamma G_{t+1} +\begin{aligned} +G_{t} &=R_{t+1}+\gamma R_{t+2}+\gamma^{2} R_{t+3}+\gamma^{3} R_{t+4}+\cdots \\ +&=R_{t+1}+\gamma\left(R_{t+2}+\gamma R_{t+3}+\gamma^{2} R_{t+4}+\cdots\right) \\ +&=R_{t+1}+\gamma G_{t+1} +\end{aligned} $$ +就可以知道 $G_t = R_{t+1}+ \gamma G_{t+1}$。 +也就是说,我们拿 $Q(S_t,A_t)$ 来逼近 $G_t$,那 $Q(S_{t+1},A_{t+1})$ 其实就是近似 $G_{t+1}$。我就可以用 $Q(S_{t+1},A_{t+1})$ 近似 $G_{t+1}$,然后把 $R_{t+1}+Q(S_{t+1},A_{t+1})$ 当成目标值。 -也就是说,我们拿 $Q(S_t,A_t)$ 来逼近这个 $G_t$ , 那 $Q(S_{t+1},A_{t+1})$ 其实就是近似这个 $G_{t+1}$ ,那我们可以把 $G_{t+1}$ 放到这个目标值这里。$Q(S_t,A_t)$ 就是要逼近这个目标值。我们用软更新的方式来逼近。 - -软更新的方式就是 $\alpha$ ,每次我只更新一点点,$\alpha$ 有点类似于学习率。最终的话,Q 值都是可以慢慢地逼近到真实的 target 值。这样我们的更新公式只需要用到当前时刻的 $S_{t},A_t$ ,然后还有拿到的 $R_{t+1}, S_{t+1},A_{t+1}$ 。 +$Q(S_t,A_t)$ 就是要逼近这个目标值。我们用软更新的方式来逼近。软更新的方式就是 $\alpha$ ,每次我只更新一点点,$\alpha$ 有点类似于学习率。最终的话,Q 值都是可以慢慢地逼近到真实的 target 值。这样我们的更新公式只需要用到当前时刻的 $S_{t},A_t$,还有拿到的 $R_{t+1}, S_{t+1},A_{t+1}$ 。 **该算法由于每次更新值函数需要知道当前的状态(state)、当前的动作(action)、奖励(reward)、下一步的状态(state)、下一步的动作(action),即 $(S_{t}, A_{t}, R_{t+1}, S_{t+1}, A_{t+1})$ 这几个值 ,由此得名 `Sarsa` 算法**。它走了一步之后,拿到了 $(S_{t}, A_{t}, R_{t+1}, S_{t+1}, A_{t+1})$ 之后,就可以做一次更新。 @@ -129,7 +133,7 @@ $$ ![](img/3.16.png)我们直接看这个框框里面的更新公式, 和之前的公式是一模一样的。$S'$ 就是 $S_{t+1}$ 。我们就是拿下一步的 Q 值来更新这一步的 Q 值,不断地强化每一个 Q。 -## Q-learning +## Q-learning: Off-policy TD Control ![](img/3.17.png)