fix some typos

This commit is contained in:
qiwang067
2020-10-26 14:15:56 +08:00
parent 299ea44810
commit 76536d6103

View File

@@ -24,26 +24,39 @@
![](img/6.2.png) ![](img/6.2.png)
**怎么衡量这个 state value function $V^{\pi}(s)$ 呢?**有两种不同的做法。 **怎么衡量这个 state value function $V^{\pi}(s)$ 呢?**有两种不同的做法MC based 的方法和 TD based 的方法
一个是用` Monte-Carlo(MC) based` 的方法。MC based 的方法就是让 actor 去跟环境做互动,你要看 actor 好不好, 你就让 actor 去跟环境做互动,给 critic 看。然后critic 就统计说,actor 如果看到 state $s_a$,接下来 accumulated reward 会有多大。如果它看到 state $s_b$接下来accumulated reward 会有多大。但是实际上,你不可能把所有的 state 通通都扫过。如果你是玩 Atari 游戏的话,你的 state 是 image ,你没有办法把所有的 state 通通扫过。所以实际上我们的 $V^{\pi}(s)$ 是一个 network。对一个 network 来说,就算是 input state 是从来都没有看过的,它也可以想办法估测一个 value 的值。 **一个是用` Monte-Carlo(MC) based` 的方法。**MC based 的方法就是让 actor 去跟环境做互动,你要看 actor 好不好, 你就让 actor 去跟环境做互动,给 critic 看。然后critic 就统计说,
怎么训练这个 network 呢?因为如果在 state $s_a$,接下来的 accumulated reward 就是 $G_a$。也就是说,对这个 value function 来说,如果 input 是 state $s_a$,正确的 output 应该是 $G_a$。如果 input state $s_b$,正确的 output 应该是 value $G_b$。所以在 training 的时候, 它就是一个 `regression problem`。Network 的 output 就是一个 value你希望在 input $s_a$ 的时候output value 跟 $G_a$ 越近越好input $s_b$ 的时候output value 跟 $G_b$ 越近越好。接下来把 network train 下去就结束了。这是第一个方法MC based 的方法 * actor 如果看到 state $s_a$,接下来的 accumulated reward 会有多大
* 如果它看到 state $s_b$,接下来的 accumulated reward 会有多大。
但是实际上,你不可能把所有的 state 通通都扫过。如果你是玩 Atari 游戏的话,你的 state 是 image ,你没有办法把所有的 state 通通扫过。所以实际上我们的 $V^{\pi}(s)$ 是一个 network。对一个 network 来说,就算 input state 是从来都没有看过的,它也可以想办法估测一个 value 的值。
怎么训练这个 network 呢?因为如果在 state $s_a$,接下来的 accumulated reward 就是 $G_a$。也就是说,对这个 value function 来说,如果 input 是 state $s_a$,正确的 output 应该是 $G_a$。如果 input state $s_b$,正确的 output 应该是 value $G_b$。**所以在 training 的时候, 它就是一个 `regression problem`。**Network 的 output 就是一个 value你希望在 input $s_a$ 的时候output value 跟 $G_a$ 越近越好input $s_b$ 的时候output value 跟 $G_b$ 越近越好。接下来把 network train 下去就结束了。这是第一个方法MC based 的方法。
![](img/6.3.png) ![](img/6.3.png)
第二个方法是`Temporal-difference(时序差分)` 的方法, `即 TD based ` 的方法。在 MC based 的方法中,每次我们都要算 accumulated reward也就是从某一个 state $s_a$ 一直玩到游戏结束的时候,得到的所有 reward 的总和。所以你要 apply MC based 的 approach你必须至少把这个游戏玩到结束。但有些游戏非常的长你要玩到游戏结束才能够 update network花的时间太长了。因此我们会采用 TD based 的方法。TD based 的方法不需要把游戏玩到底,只要在游戏的某一个情况,某一个 state $s_t$ 的时候,采取 action $a_t$ 得到 reward $r_t$ ,跳到 state $s_{t+1}$,就可以 apply TD 的方法。 **第二个方法是`Temporal-difference(时序差分)` 的方法, `即 TD based ` 的方法。**
在 MC based 的方法中,每次我们都要算 accumulated reward也就是从某一个 state $s_a$ 一直玩到游戏结束的时候,得到的所有 reward 的总和。所以你要 apply MC based 的 approach你必须至少把这个游戏玩到结束。但有些游戏非常长你要玩到游戏结束才能够 update network花的时间太长了因此我们会采用 TD based 的方法。
TD based 的方法不需要把游戏玩到底,只要在游戏的某一个情况,某一个 state $s_t$ 的时候,采取 action $a_t$ 得到 reward $r_t$ ,跳到 state $s_{t+1}$,就可以 apply TD 的方法。
怎么 apply TD 的方法呢?这边是基于以下这个式子: 怎么 apply TD 的方法呢?这边是基于以下这个式子:
$$ $$
V^{\pi}\left(s_{t}\right)=V^{\pi}\left(s_{t+1}\right)+r_{t} V^{\pi}\left(s_{t}\right)=V^{\pi}\left(s_{t+1}\right)+r_{t}
$$ $$
假设我们现在用的是某一个 policy $\pi$,在 state $s_t$,它会采取 action $a_t$,给我们 reward $r_t$ ,接下来进入 $s_{t+1}$ 。state $s_{t+1}$ 的 value 跟 state $s_t$ 的 value它们的中间差了一项 $r_t$。因为你把 $s_{t+1}$ 得到的 value 加上得到的 reward $r_t$ 就会等于 $s_t$ 得到的 value。有了这个式子以后你在 training 的时候,你并不是直接去估测 V而是希望你得到的结果 V 可以满足这个式子。也就是说你会是这样 train 的,你把 $s_t$ 丢到 network 里面,因为 $s_t$ 丢到 network 里面会得到 $V^{\pi}(s_t)$,把 $s_{t+1}$ 丢到你的 value network 里面会得到$V^{\pi}(s_{t+1})$,这个式子告诉我们,$V^{\pi}(s_t)$ 减 $V^{\pi}(s_{t+1})$ 的值应该是 $r_t$。然后希望它们两个相减的 loss 跟 $r_t$ 越接近train 下去update V 的参数,你就可以把 V function learn 出来。 假设我们现在用的是某一个 policy $\pi$,在 state $s_t$,它会采取 action $a_t$,给我们 reward $r_t$ ,接下来进入 $s_{t+1}$ 。State $s_{t+1}$ 的 value 跟 state $s_t$ 的 value它们的中间差了一项 $r_t$。因为你把 $s_{t+1}$ 得到的 value 加上得到的 reward $r_t$ 就会等于 $s_t$ 得到的 value。有了这个式子以后你在 training 的时候,你并不是直接去估测 V而是希望你得到的结果 V 可以满足这个式子。
也就是说你会是这样 train 的,你把 $s_t$ 丢到 network 里面,因为 $s_t$ 丢到 network 里面会得到 $V^{\pi}(s_t)$,把 $s_{t+1}$ 丢到你的 value network 里面会得到$V^{\pi}(s_{t+1})$,这个式子告诉我们,$V^{\pi}(s_t)$ 减 $V^{\pi}(s_{t+1})$ 的值应该是 $r_t$。然后希望它们两个相减的 loss 跟 $r_t$ 越接近train 下去update V 的参数,你就可以把 V function learn 出来。
![](img/6.4.png) ![](img/6.4.png)
MC 跟 TD 有什么样的差别呢?**MC 最大的问题就是 variance 很大**。因为我们在玩游戏的时候,它本身是有随机性的。所以你可以把 $G_a$ 看成一个 random variable。因为你每次同样走到 $s_a$ 的时候,最后你得到的 $G_a$ 其实是不一样的。你看到同样的 state $s_a$,最后玩到游戏结束的时候,因为游戏本身是有随机性的,玩游戏的 model 搞不好也有随机性,所以你每次得到的 $G_a$ 是不一样的,每一次得到 $G_a$ 的差别其实会很大。为什么它会很大呢?因为 $G_a$ 其实是很多个不同的 step 的 reward 的和。假设你每一个 step 都会得到一个 reward$G_a$ 是从 state $s_a$ 开始一直玩到游戏结束每一个timestamp reward 的和。 **MC 跟 TD 有什么样的差别呢?**
**MC 最大的问题就是 variance 很大。**因为我们在玩游戏的时候,它本身是有随机性的。所以你可以把 $G_a$ 看成一个 random variable。因为你每次同样走到 $s_a$ 的时候,最后你得到的 $G_a$ 其实是不一样的。你看到同样的 state $s_a$,最后玩到游戏结束的时候,因为游戏本身是有随机性的,玩游戏的 model 搞不好也有随机性,所以你每次得到的 $G_a$ 是不一样的,每一次得到 $G_a$ 的差别其实会很大。为什么它会很大呢?因为 $G_a$ 其实是很多个不同的 step 的 reward 的和。假设你每一个 step 都会得到一个 reward$G_a$ 是从 state $s_a$ 开始一直玩到游戏结束每一个timestamp reward 的和。
举例来说,我在右上角就列一个式子是说, 举例来说,我在右上角就列一个式子是说,
@@ -60,12 +73,15 @@ Var 是指 variance。
在这中间会有随机性的是 r。因为计算你在 $s_t$ 采取同一个 action你得到的 reward 也不一定是一样的,所以 r 是一个 random variable。但这个 random variable 的 variance 会比 $G_a$ 还要小,因为 $G_a$ 是很多 r 合起来,这边只是某一个 r 而已。$G_a$ 的 variance 会比较大r 的 variance 会比较小。但是这边你会遇到的**一个问题是你这个 V 不一定估得准**。假设你的这个 V 估得是不准的,那你 apply 这个式子 learn 出来的结果,其实也会是不准的。所以 MC 跟 TD 各有优劣。**今天其实 TD 的方法是比较常见的MC 的方法其实是比较少用的。** 在这中间会有随机性的是 r。因为计算你在 $s_t$ 采取同一个 action你得到的 reward 也不一定是一样的,所以 r 是一个 random variable。但这个 random variable 的 variance 会比 $G_a$ 还要小,因为 $G_a$ 是很多 r 合起来,这边只是某一个 r 而已。$G_a$ 的 variance 会比较大r 的 variance 会比较小。但是这边你会遇到的**一个问题是你这个 V 不一定估得准**。假设你的这个 V 估得是不准的,那你 apply 这个式子 learn 出来的结果,其实也会是不准的。所以 MC 跟 TD 各有优劣。**今天其实 TD 的方法是比较常见的MC 的方法其实是比较少用的。**
![](img/6.6.png) ![](img/6.6.png)
上图是讲 TD 跟 MC 的差异。假设有某一个 critic它去观察某一个 policy $\pi$ 跟环境互动的 8 个 episode 的结果。有一个actor $\pi$ 跟环境互动了8 次得到了8 次玩游戏的结果。接下来这个 critic 去估测 state 的 value。 **上图是讲 TD 跟 MC 的差异。**假设有某一个 critic它去观察某一个 policy $\pi$ 跟环境互动的 8 个 episode 的结果。有一个actor $\pi$ 跟环境互动了8 次得到了8 次玩游戏的结果。接下来这个 critic 去估测 state 的 value。
* 我们看看 $s_b$ 的 value 是多少。$s_b$ 这个state 在 8 场游戏里面都有经历过,其中有 6 场得到 reward 1场得到 reward 0所以如果你是要算期望值的话,就看到 state $s_b$ 以后得到的 reward一直到游戏结束的时候得到的 accumulated reward 期望值是 3/4 **我们先计算 $s_b$ 的 value。**$s_b$ 这个state 在 8 场游戏里面都有经历过,其中有 6 场得到 reward 1 2 场得到 reward 0所以如果你是要算期望值的话,就看到 state $s_b$ 以后得到的 reward一直到游戏结束的时候得到的 accumulated reward 期望值是 3/4,计算过程如下式所示:
* 但 $s_a$ 期望的 reward 到底应该是多少呢?这边其实有两个可能的答案:一个是 0一个是 3/4。为什么有两个可能的答案呢这取决于你用MC 还是TD。用 MC 跟用 TD 算出来的结果是不一样的。 $$
\frac{6 \times 1 + 2 \times 0}{8}=\frac{6}{8}=\frac{3}{4}
$$
**但 $s_a$ 期望的 reward 到底应该是多少呢?**这边其实有两个可能的答案:一个是 0一个是 3/4。为什么有两个可能的答案呢这取决于你用MC 还是TD。用 MC 跟用 TD 算出来的结果是不一样的。
假如你用 MC 的话,你会发现这个 $s_a$ 就出现一次,看到 $s_a$ 这个 state接下来 accumulated reward 就是 0所以今天 $s_a$ expected reward 就是 0。 假如你用 MC 的话,你会发现这个 $s_a$ 就出现一次,看到 $s_a$ 这个 state接下来 accumulated reward 就是 0所以 $s_a$ expected reward 就是 0。
但 TD 在计算的时候,它要 update 下面这个式子。 但 TD 在计算的时候,它要 update 下面这个式子。
$$ $$
@@ -74,15 +90,15 @@ $$
因为我们在 state $s_a$ 得到 reward r=0 以后,跳到 state $s_b$。所以 state $s_b$ 的 reward 会等于 state $s_b$ 的 reward 加上在state $s_a$ 跳到 state $s_b$ 的时候可能得到的 reward r。而这个得到的 reward r 的值是 0$s_b$ expected reward 是3/4那 $s_a$ 的 reward 应该是 3/4。 因为我们在 state $s_a$ 得到 reward r=0 以后,跳到 state $s_b$。所以 state $s_b$ 的 reward 会等于 state $s_b$ 的 reward 加上在state $s_a$ 跳到 state $s_b$ 的时候可能得到的 reward r。而这个得到的 reward r 的值是 0$s_b$ expected reward 是3/4那 $s_a$ 的 reward 应该是 3/4。
用 MC 跟 TD 估出来的结果,其实很有可能是不一样的。就算 critic 观察到一样的 training data它最后估出来的结果也不见得会是一样。为什么会这样呢?你可能问说,一个比较对呢?其实就都对。 用 MC 跟 TD 估出来的结果很有可能是不一样的。就算 critic 观察到一样的 training data它最后估出来的结果也不一定是一样。为什么会这样呢?你可能问说,一个结果比较对呢?其实就都对。
因为在第一个 trajectory $s_a$ 得到 reward 0 以后,再跳到 $s_b$ 也得到 reward 0。这边有两个可能。 因为在第一个 trajectory $s_a$ 得到 reward 0 以后,再跳到 $s_b$ 也得到 reward 0。这边有两个可能。
* 一个可能是 $s_a$,它就是一个带 sign 的 state所以只要看到 $s_a$ 以后,$s_b$ 就会拿不到 reward有可能 $s_a$ 其实影响了 $s_b$。如果是用 MC 的算法的话,它会把 $s_a$ 影响 $s_b$ 这件事考虑进去。所以看到 $s_a$ 以后,接下来 $s_b$ 就得不到 reward所以看到 $s_a$ 以后,期望的 reward 是 0。 * 一个可能是 $s_a$ 是一个带 sign 的 state所以只要看到 $s_a$ 以后,$s_b$ 就会拿不到 reward$s_a$ 可能影响了 $s_b$。如果是用 MC 的算法的话,它会把 $s_a$ 影响 $s_b$ 这件事考虑进去。所以看到 $s_a$ 以后,接下来 $s_b$ 就得不到 reward$s_b$ 期望的 reward 是 0。
* 另一个可能是看到 $s_a$ 以后, $s_b$ 的 reward 是 0 这件事只是一个巧合,并不是 $s_a$ 所造成,而是因为说 $s_b$ 有时候就是会得到 reward 0这只是单纯运气的问题。其实平常 $s_b$ 会得到 reward 期望值是 3/4跟 $s_a$ 是完全没有关系的。所以假设 $s_a$ 之后会跳到 $s_b$,那其实得到的 reward 按照 TD 来算应该是 3/4。 * 另一个可能是看到 $s_a$ 以后, $s_b$ 的 reward 是 0 这件事只是一个巧合,并不是 $s_a$ 所造成,而是因为说 $s_b$ 有时候就是会得到 reward 0这只是单纯运气的问题。其实平常 $s_b$ 会得到 reward 期望值是 3/4跟 $s_a$ 是完全没有关系的。所以假设 $s_a$ 之后会跳到 $s_b$,那其实得到的 reward 按照 TD 来算应该是 3/4。
所以不同的方法考虑了不同的假设,运算结果不同。 **所以不同的方法考虑了不同的假设,运算结果不同。**
## State-action Value Function ## State-action Value Function