From 7491db9b305644abdf904d1393d6899fa322dc5b Mon Sep 17 00:00:00 2001 From: qiwang067 Date: Sat, 5 Sep 2020 17:27:34 +0800 Subject: [PATCH] fix ch2 typos --- docs/chapter2/chapter2.md | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/docs/chapter2/chapter2.md b/docs/chapter2/chapter2.md index 334b651..970dbe4 100644 --- a/docs/chapter2/chapter2.md +++ b/docs/chapter2/chapter2.md @@ -126,19 +126,21 @@ Policy 定义了在某一个状态应该采取什么样的行为,当我们知 这里我们看一看,MDP 里面的状态转移跟 MRP 以及 MP 的一个差异。 -* 对于之前的马尔可夫链的过程,它的转移是直接就决定,就从你当前是 s,那么就直接通过这个转移概率就直接决定了你下一个状态会是什么。 - -* 但是对于 MDP,它的中间多了一层这个行为 a ,就是说在你当前这个状态的时候,你首先要决定的是采取某一种行为。那么你会到了某一个黑色的这个节点。到了这个黑色的节点,因为你有一定的不确定性,当你当前状态决定过后以及你当前采取的行为过后,你到未来的状态其实也是一个概率分布。所以你采取行为以及你决定,然后你可能有有多大的概率到达某一个未来状态,以及另外有多大概率到达另外一个状态。所以在这个当前状态跟未来状态转移过程中这里多了一层决策性,这是MDP跟之前的马尔可夫过程很不同的一个地方。在马尔科夫决策过程中,行为是由 agent 决定,所以多了一个 component,agent 会采取行为来决定未来的状态转移。 +* 马尔可夫过程的转移是直接就决定,就你当前是 s,那么就直接通过这个转移概率决定了下一个状态是什么。 +* 但对于 MDP,它的中间多了一层这个行为 a ,就是说在你当前这个状态的时候,首先要决定的是采取某一种行为。那么你会到了某一个黑色的节点。到了这个黑色的节点,因为你有一定的不确定性,当你当前状态决定过后以及你当前采取的行为过后,你到未来的状态其实也是一个概率分布。所以你采取行为后,你可能有多大的概率到达某一个未来状态,以及另外有多大概率到达另外一个状态。**所以在这个当前状态跟未来状态转移过程中这里多了一层决策性,这是 MDP 跟之前的马尔可夫过程很不同的一个地方。**在马尔科夫决策过程中,行为是由 agent 决定,所以多了一个 component,agent 会采取行为来决定未来的状态转移。 ![](img/2.22.png) -顺着 MDP 的定义,我们可以把 state-value function,就是在 MDP 里面的价值函数也进行一个定义,它的定义是跟 MRP是类似的,但是这里 expectation over policy,就是这个期望是基于你采取的这个 policy ,就当你的 policy 决定过后,让我们通过对这个 policy 进行采样,然后我们可以得到一个期望。那么就可以计算出它的这个价值函数。这里我们另外引入了一个 `Q 函数(action-value function)`。 +* 顺着 MDP 的定义,我们可以把 state-value function,就是在 MDP 里面的价值函数也进行一个定义,它的定义是跟 MRP是类似的,但是这里 expectation over policy,就是这个期望是基于你采取的这个 policy ,就当你的 policy 决定过后,我们通过对这个 policy 进行采样来得到一个期望,那么就可以计算出它的这个价值函数。 -这个 Q 函数定义的是某一个状态某一个行为,然后它有可能得到的这个 return 的一个期望,这里期望其实也是 over policy function。所以你需要对这个 policy function 进行一个加和,然后最后得到它的这个价值。第三步,这里导出了价值函数跟 Q 函数之间的一个关系。价值函数跟 Q 函数的关系,就是直接对价值函数中的行为函数进行加和,就可以得到这个价值。 +* 这里我们另外引入了一个 `Q 函数(action-value function)`。这个 Q 函数定义的是某一个状态某一个行为,然后它有可能得到的这个 return 的一个期望,这里期望其实也是 over policy function。所以你需要对这个 policy function 进行一个加和,然后最后得到它的这个价值。 +* 价值函数跟 Q 函数的关系,就是直接对价值函数中的行为函数进行加和,就可以得到这个价值。 ![](img/2.23.png) -我们这里会得到一个 `Bellman Expectation Equation`,通过对它价值函数的定义,我们可以对它进行一个分解,我们就可以直接又得到一个这个类似于我们之前 MRP 的 Bellman Equation,这里叫 Bellman Expectation Equation。 因为这里期望是期望于它所有的这个 policy 所有可能的行为都把它 marginalize 掉,然后得到 return。那么对于 Q 函数,我们也可以做类似的分解,那么也可以得到对于 Q 函数的这个 Bellman Expectation Equation。 +我们这里会得到一个 `Bellman Expectation Equation`,通过对它价值函数的定义,我们可以对它进行一个分解,我们就可以得到一个类似于之前 MRP 的 Bellman Equation,这里叫 Bellman Expectation Equation。 因为这里期望是期望于它所有的这个 policy 所有可能的行为都把它 marginalize 掉,然后得到 return。 + +对于 Q 函数,我们也可以做类似的分解,也可以得到对于 Q 函数的 Bellman Expectation Equation。 **Bellman Expectation Equation 定义了你当前状态跟未来状态之间的一个关联。** @@ -192,7 +194,7 @@ $$ ![](img/2.33.png) -首先看一下 policy evaluation,就是当给定一个 MDP 的时候,我们有一个事先定好的 policy。那么我们可以获得多少的价值。就对于当前这个策略,我们可以得到多大的这个 value function。这里一个方法是说,我们直接把这个 Bellman Expectation Backup,这个等式拿出来,变成一个迭代的一个过程,这样反复迭代直到收敛。这样就可以计算它的一个过程。这个迭代过程是可以看作是 `synchronous backup` 的一个过程。等式 14 说的就是这个 Bellman Expectation Backup,我们把这个转换成一个动态规划的一个迭代。当我们得到上一时刻的这个 $v_t$ 的时候,那我们下一时刻就通过这个递归的一个关系,我们可以推出下一时刻的这个值,那么反复去迭代它,最后它的值就是从 $v_1,v_2$,到最后收敛过后这个值。这个值就是我们当前给定的 policy 对应的价值函数。 +首先看一下 policy evaluation,就是当给定一个 MDP 的时候,我们有一个事先定好的 policy。那么我们可以获得多少的价值。就对于当前这个策略,我们可以得到多大的这个 value function。这里一个方法是说,我们直接把这个 Bellman Expectation Backup,这个等式拿出来,变成一个迭代的过程,这样反复迭代直到收敛。这样就可以计算它的一个过程。这个迭代过程是可以看作是 `synchronous backup` 的一个过程。等式 14 说的就是这个 Bellman Expectation Backup,我们把这个转换成一个动态规划的迭代。当我们得到上一时刻的 $v_t$ 的时候,那我们下一时刻就通过这个递归的一个关系,我们可以推出下一时刻的这个值,那么反复去迭代它,最后它的值就是从 $v_1,v_2$,到最后收敛过后这个值。这个值就是我们当前给定的 policy 对应的价值函数。 ![](img/2.34.png) @@ -222,11 +224,11 @@ $$ ![](img/2.39.png) -所以当迭代第一次的时候,我们 $v(s)$ 某些状态已经有些值的变化。 +所以当迭代第一次的时候,$v(s)$ 某些状态已经有些值的变化。 ![](img/2.40.png) -然后我们再迭代一次(one sweep),然后发现它就从周围的状态也开始有值。因为周围状态跟之前有值的状态是临近的,所以它就相当于把旁边这个状态转移过来。所以当我们逐渐迭代的话,你会发现这个值一直在变换。等迭代了很多次过后,然后很远的这些状态的价值函数已经有些值了,而且你可以发现它这里整个过程呈现逐渐扩散开的一个过程,这其实也是 policy evaluation 的一个可视化。当我们每一步在进行迭代的时候,就远的状态就会得到了一些值,就逐渐从一些已经有奖励的这些状态,逐渐扩散,当你 run 很多次过后,然后它就逐渐稳定下来,最后值就会确定不变,这样收敛过后,每个状态上面的值就是它目前得到的这个 value function 的值。 +我们再迭代一次(one sweep),然后发现它就从周围的状态也开始有值。因为周围状态跟之前有值的状态是临近的,所以它就相当于把旁边这个状态转移过来。所以当我们逐渐迭代的话,你会发现这个值一直在变换。等迭代了很多次过后,很远的这些状态的价值函数已经有些值了,而且你可以发现它这里整个过程呈现逐渐扩散开的一个过程,这其实也是 policy evaluation 的一个可视化。当我们每一步在进行迭代的时候,就远的状态就会得到了一些值,就逐渐从一些已经有奖励的这些状态,逐渐扩散,当你 run 很多次过后,它就逐渐稳定下来,最后值就会确定不变,这样收敛过后,每个状态上面的值就是它目前得到的这个 value function 的值。 ![](img/2.41.png) @@ -337,7 +339,7 @@ Value iteration 算法的目的是为了得到一个最佳的策略。一个解 ![](img/2.64.png) -我们再来对比下 policy iteration 和 value iteration,这两个算法都是为了解 MDP 的控制问题。 +我们再来对比下 policy iteration 和 value iteration,这两个算法都可以解 MDP 的控制问题。 * Policy iteration 由两部分组成:policy evaluation 和 policy improvement。它很清楚地把这个过程分成了两步,就首先对于当前已经搜索到的策略函数,然后对它进行一个估值,得到估值过后,把 Q 函数算出来,我们进一步进行改进。