Skip to content

Commit

Permalink
fix ch6
Browse files Browse the repository at this point in the history
  • Loading branch information
qiwang067 committed Jul 4, 2021
1 parent df0b9a2 commit f707424
Showing 1 changed file with 5 additions and 5 deletions.
10 changes: 5 additions & 5 deletions docs/chapter6/chapter6.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ $$
举个例子,假设你是玩 space invader 的话,

* 左边这个状态 s,这个游戏画面,$V^{\pi}(s)$ 也许会很大,因为还有很多的怪可以杀, 所以你会得到很大的分数。一直到游戏结束的时候,你仍然有很多的分数可以吃。
* 右边这种情况你得到的 $V^{\pi}(s)$ 可能就很小,因为剩下的怪也不多了,并且红色的防护罩已经消失了,所以可能很快就会死掉。所以接下来得到预期的奖励,就不会太大。
* 右边这种情况得到的 $V^{\pi}(s)$ 可能就很小,因为剩下的怪也不多了,并且红色的防护罩已经消失了,所以可能很快就会死掉。所以接下来得到预期的奖励,就不会太大。

这边需要强调的一个点是说,评论家都是绑一个演员的,评论家没有办法去凭空去评价一个状态的好坏,它所评价的东西是在给定某一个状态的时候, 假设接下来互动的演员是 $\pi$,那我会得到多少奖励。因为就算是给同样的状态,你接下来的 $\pi$ 不一样,你得到的奖励也是不一样的。

Expand All @@ -35,12 +35,12 @@ $$

**怎么衡量这个状态价值函数 $V^{\pi}(s)$ 呢?**有两种不同的做法:MC-based 的方法和 TD-based 的方法。

` Monte-Carlo(MC)-based`的方法就是让演员去跟环境做互动,你要看演员好不好, 你就让演员去跟环境做互动,给评论家看。然后,评论家就统计说,
` Monte-Carlo(MC)-based`的方法就是让演员去跟环境做互动,要看演员好不好,我们就让演员去跟环境做互动,给评论家看。然后,评论家就统计说,

* 演员如果看到状态 $s_a$,接下来的累积奖励会有多大。
* 如果它看到状态 $s_b$,接下来的累积奖励会有多大。

但是实际上,你不可能把所有的状态通通都扫过。如果你是玩 Atari 游戏的话,状态是图像,你没有办法把所有的状态通通扫过。所以实际上 $V^{\pi}(s)$ 是一个网络。对一个网络来说,就算输入状态是从来都没有看过的,它也可以想办法估测一个值。
但是实际上,我们不可能把所有的状态通通都扫过。如果是玩 Atari 游戏的话,状态是图像,你没有办法把所有的状态通通扫过。所以实际上 $V^{\pi}(s)$ 是一个网络。对一个网络来说,就算输入状态是从来都没有看过的,它也可以想办法估测一个值。

![](img/6.2.png ':size=350')

Expand All @@ -61,7 +61,7 @@ $$

假设我们现在用的是某一个策略 $\pi$,在状态 $s_t$,它会采取动作 $a_t$,给我们奖励 $r_t$ ,接下来进入 $s_{t+1}$ 。状态 $s_{t+1}$ 的值跟状态 $s_t$ 的值,它们的中间差了一项 $r_t$。因为你把 $s_{t+1}$ 得到的值加上得到的奖励 $r_t$ 就会等于 $s_t$ 得到的值。有了这个式子以后,你在训练的时候,你并不是直接去估测 V,而是希望你得到的结果 V 可以满足这个式子。

也就是说你会是这样训练的,你把 $s_t$ 丢到网络里面,因为 $s_t$ 丢到网络里面会得到 $V^{\pi}(s_t)$,把 $s_{t+1}$ 丢到你的值网络里面会得到 $V^{\pi}(s_{t+1})$,这个式子告诉我们,$V^{\pi}(s_t)$ 减 $V^{\pi}(s_{t+1})$ 的值应该是 $r_t$。然后希望它们两个相减的 loss 跟 $r_t$ 越接近,训练下去,更新 V 的参数,你就可以把 V function 学习出来
也就是说我们会是这样训练的,我们把 $s_t$ 丢到网络里面,因为 $s_t$ 丢到网络里面会得到 $V^{\pi}(s_t)$,把 $s_{t+1}$ 丢到你的值网络里面会得到 $V^{\pi}(s_{t+1})$,这个式子告诉我们,$V^{\pi}(s_t)$ 减 $V^{\pi}(s_{t+1})$ 的值应该是 $r_t$。然后希望它们两个相减的 loss 跟 $r_t$ 越接近,训练下去,更新 V 的参数,你就可以把 V 函数学习出来

![](img/6.4.png ':size=500')

Expand Down Expand Up @@ -92,7 +92,7 @@ $$
$$
**但 $s_a$ 期望的奖励到底应该是多少呢?**这边其实有两个可能的答案:一个是 0,一个是 3/4。为什么有两个可能的答案呢?这取决于你用 MC 还是TD。用 MC 跟用 TD 算出来的结果是不一样的。

假如你用 MC 的话,你会发现这个 $s_a$ 就出现一次,看到 $s_a$ 这个状态,接下来累积奖励就是 0,所以 $s_a$ 期望奖励就是 0。
假如用 MC 的话,你会发现这个 $s_a$ 就出现一次,看到 $s_a$ 这个状态,接下来累积奖励就是 0,所以 $s_a$ 期望奖励就是 0。

但 TD 在计算的时候,它要更新下面这个式子:
$$
Expand Down

0 comments on commit f707424

Please sign in to comment.