fix some typos of chapter2

This commit is contained in:
qiwang067
2020-08-27 16:45:11 +08:00
parent 093d63e2ca
commit 891a8aa904

View File

@@ -48,15 +48,15 @@
这里我们进一步定义一些概念。
* 第一个是 `horizon` 的概念,它说明了同一个 episode 或者是整个一个轨迹的长度,它是由有限个步数决定的。
* 第一个是 `horizon` ,它说明了同一个 episode 或者是整个一个轨迹的长度,它是由有限个步数决定的。
* 这里我们再定义一个 `return`。Return 说的是我们把奖励进行折扣然后获得的这个收益。Return 可以定义为奖励的逐步叠加,然后这里有一个叠加系数,就是越往后得到的奖励,折扣得越多。这说明我们其实更希望得到现有的奖励,未来的奖励就要把它打折扣。
* 当我们有了这个 return 过后,就可以正式定义一个状态的价值了,就是 `state value function`。然后对于这个MRP它里面定义成是关于这个 return 的期望, $G_t$ 是我们之前定义的 discounted return。然后我们这里取了一个期望期望就是说从这个状态开始你有可能获得多大的价值。所以这个期望也可以看成是一个对未来可能获得奖励的它的当前价值的一个表现。就是当你进入某一个状态过后你现在就有多大的价值。
![](img/2.10.png)这里我们简短地解释一下为什么需要 discounted factor。
* 第一点是有些马尔可夫过程是带环的,它并没有终结,然后我们想避免这个无穷的奖励。
* 另外,我们想把这个不确定性表示出来,希望尽可能快地得到奖励,而不是在未来某一个点得到奖励。
* 另外如果这个奖励是它是有实际价值的了,我们可能是更希望立刻就得到奖励,而不是我们后面再得到奖励。
* 第一点是有些马尔可夫过程是带环的,它并没有终结,我们想避免这个无穷的奖励。
* 另外,我们想把这个不确定性表示出来,希望尽可能快地得到奖励,而不是在未来某一个点得到奖励。
* 另外如果这个奖励是有实际价值的了,我们可能是更希望立刻就得到奖励,而不是后面再得到奖励。
* 在人的行为里面来说的话,其实也是大家也是想得到立刻奖励。
* 另外,在有些时候,这个系数也可以把它设为 0。比如说当我们设为 0 过后,然后我们就只关注了它当前的奖励。我们也可以把它设为 1设为 1 的话就是对未来并没有折扣,未来获得的奖励跟我们当前获得的奖励是一样的。这个系数其实是应该可以作为强化学习 agent 的一个 hyper parameter 来进行调整,然后就会得到不同行为的 agent。
@@ -244,13 +244,13 @@ Policy evaluation 是说我们给定一个 MDP 以及给定一个 policy
首先我们来看一下 policy iteration。policy iteration 也是一个迭代算法。它主要由两个步骤组成,
* 第一个步骤是 policy evaluation就跟我们之前说的这个评价一个已有的这个价值函数的价值是一致的就是我们当前我们在优化这个 policy $\pi$ ,所以在优化过程中得到一个最新的这个 policy 。让我们先保证这个 policy 不变那么去估计它出来的这个价值。给定当前的policy function去估计这个 v 函数。
* 取得 v 函数过后,我们可以进一步推算出它的 Q 函数。得到 Q 函数过后,那我们就直接去取它的极大化。在 Q 函数上面取极大化,这样我们就有了第二步骤:改进它的策略。通过在这个 Q 函数上面做一个贪心的搜索,这样就会进一步改进它的策略。
* **第一个步骤是 policy evaluation**,就跟我们之前说的这个评价一个已有的这个价值函数的价值是一致的,就是我们当前我们在优化这个 policy $\pi$ ,所以在优化过程中得到一个最新的这个 policy 。让我们先保证这个 policy 不变那么去估计它出来的这个价值。给定当前的policy function去估计这个 v 函数。
* 取得 v 函数过后,我们可以进一步推算出它的 Q 函数。得到 Q 函数过后,那我们就直接去取它的极大化。在 Q 函数上面取极大化,**这样我们就有了第二步骤:改进它的策略。**通过在这个 Q 函数上面做一个贪心的搜索,这样就会进一步改进它的策略。
* 这两个步骤就一直是在迭代进行,所以在这个 policy iteration 里面,在初始化的时候,我们有一个初始化的 $V$ 和 $\pi$ 。然后就是在这两个过程之间迭代,左边这幅图上面这根曲线就是我们当前这个 v 的值,下面是 policy 的值。就跟踢皮球一样,我们先给定当前已有的这个 policy function然后去算它的这个 v。算出 v 过后,我们会得到一个 Q 函数Q 函数我们采取 greedy 的策略,这样我们有踢皮球,踢回这个 policy 。然后就会进一步改进那个 policy ,得到一个改进的 policy 过后,它还不是最佳的,我们再进行 policy evaluation然后又会得到一个新的 value function。基于这个新的 value function 再进行 Q 函数的极大化 ,这样就逐渐迭代,然后就会得到收敛。
![](img/2.46.png)
这里再来看一下第二个步骤 `policy improvement`,我们是如何改进它的这个策略。当我们到这个 v 值过后,我们就可以通过这个 reward function 以及状态转移把它的这个 Q-function 算出来。对于每一个状态,第二个步骤会得到它的一个新一轮的这个 policy ,就在每一个状态,我们去取使它得到最大值的 action。你可以把这个 Q 函数看成一个 Q-table。横轴是它的所有状态纵轴是它的可能的 action。Q 函数得到过后,`Q-table` 就得到了。
这里再来看一下第二个步骤 `policy improvement`,我们是如何改进它的这个策略。当我们到这个 v 值过后,我们就可以通过这个 reward function 以及状态转移把它的这个 Q-function 算出来。对于每一个状态,第二个步骤会得到它的一个新一轮的这个 policy ,就在每一个状态,我们去取使它得到最大值的 action。你可以把这个 Q 函数看成一个 Q-table。横轴是它的所有状态纵轴是它的可能的 action。Q 函数得到过后,`Q-table` 就得到了。
那么对于某一个状态,每一列里面我们会取最大的那个值,最大值对应的那个 action 就是它现在应该采取了更佳的action。所以你看这里下面这个 arg max 操作就说在每个状态里面,我们去采取一个 action这个 action 就是能使这一列的 Q 最大化的那个动作。
@@ -308,7 +308,7 @@ Value iteration 算法的目的是为了得到一个最佳的策略。一个解
![](img/2.58.png)
我们再 run policy update你发现每个状态里面的值基本都改变它不再是上下左右随机在变了它会选取一个最佳的一个策略。
我们再 run policy update你发现每个状态里面的值基本都改变它不再是上下左右随机在变了它会选取一个最佳的策略。
![](img/2.59.png)
@@ -333,9 +333,9 @@ Value iteration 算法的目的是为了得到一个最佳的策略。一个解
![](img/2.64.png)
我们再来看一下 policy iteration 和 value iteration 的一个对比,这两个算法都是为了解 MDP 的控制问题。
我们再来对比下 policy iteration 和 value iteration这两个算法都是为了解 MDP 的控制问题。
* Policy iteration 由两部分组成policy evaluation 和 policy improvement。它很清楚的把这个过程分成了两步就首先对于当前已经搜索到的策略函数然后对它进行一个估值得到估值过后把 Q 函数算出来,我们进一步进行改进。
* Policy iteration 由两部分组成policy evaluation 和 policy improvement。它很清楚的把这个过程分成了两步就首先对于当前已经搜索到的策略函数然后对它进行一个估值得到估值过后把 Q 函数算出来,我们进一步进行改进。
* 但对于 value iteration 的话,它是直接把 Bellman Optimality Equation 拿进来,然后直接去寻找最佳的 value function没有 policy function 在这里面,当我们把这个 optimal value function 算出来过后,那我们可以在最后再执行一步这个提取过程,最佳策略提取过程。这样就可以把它的最佳策略抽取过来。