fix some typos

This commit is contained in:
qiwang067
2020-10-08 21:26:09 +08:00
parent 0bbc0d31c8
commit 54b9e55d1f
4 changed files with 77 additions and 32 deletions

View File

@@ -134,8 +134,14 @@
在一个强化学习环境里面agent 的目的就是为了选取一系列的动作来极大化它的奖励,所以这些采取的措施必须有长期的影响。但在这个过程里面,它的奖励其实是被延迟了,就是说你现在采取的某一步决策可能要等到时间很久过后才知道这一步到底产生了什么样的影响。这里一个示意图就是我们玩这个 Atari 的 Pong 这个游戏,你可能只有到最后游戏结束过后,才知道这个球到底有没有击打过去。中间你采取的 up 或 down 行为,并不会直接产生奖励。强化学习里面一个重要的课题就是近期奖励和远期奖励的一个 trade-off。怎么让 agent 取得更多的长期奖励是强化学习的问题。
![](img/1.22.png)
在跟环境的交互过程中agent 会获得很多观测。在每一个观测会采取一个动作,它也会得到一个奖励。Agent 在采取当前动作的时候会依赖于它之前得到的这个历史,所以你可以把整个游戏的状态看成关于这个历史的函数。
在跟环境的交互过程中agent 会获得很多观测。在每一个观测会采取一个动作,它也会得到一个奖励。**所以历史是观测、行为、奖励的序列:**
$$
H_{t}=O_{1}, R_{1}, A_{1}, \ldots, A_{t-1}, O_{t}, R_{t}
$$
Agent 在采取当前动作的时候会依赖于它之前得到的这个历史,**所以你可以把整个游戏的状态看成关于这个历史的函数:**
$$
S_{t}=f\left(H_{t}\right)
$$
Q: 状态和观测有什么关系?
A: `状态(state)` $s$ 是对世界的完整描述,不会隐藏世界的信息。`观测(observation)` $o$ 是对状态的部分描述,可能会遗漏一些信息。

View File

@@ -22,7 +22,17 @@
![](img/2.5.png)
首先看一看`马尔可夫链(Markov Chain)`。举个例子,这个图里面有四个状态,这四个状态从 $s_1,s_2,s_3,s_4$ 之间互相转移。比如说从 $s_1$ 开始, $s_1$ 有 0.1 的概率继续存活在 $s_1$ 状态。另外,它有 0.2 的概率转移到 $s_2$ ,有 0.7 的概率转移到 $s_4$ 。如果 $s_4$ 是我们当前状态的话,那么它有 0.3 的概率转移到 $s_2$ ,有 0.2 的概率转移到 $s_3$ ,另外有 0.5 的概率留在这里。
首先看一看`马尔可夫链(Markov Chain)`。举个例子,这个图里面有四个状态,这四个状态从 $s_1,s_2,s_3,s_4$ 之间互相转移。比如说从 $s_1$ 开始,
* $s_1$ 有 0.1 的概率继续存活在 $s_1$ 状态,
* 有 0.2 的概率转移到 $s_2$
* 有 0.7 的概率转移到 $s_4$ 。
如果 $s_4$ 是我们当前状态的话,
* 它有 0.3 的概率转移到 $s_2$
* 有 0.2 的概率转移到 $s_3$
* 有 0.5 的概率留在这里。
我们可以用`状态转移矩阵(State Transition Matrix)`来描述这样的状态转移。状态转移矩阵类似于一个 conditional probability当我们知道当前我们在 $s_t$ 这个状态过后,到达下面所有状态的一个概念。所以它每一行其实描述了是从一个节点到达所有其它节点的概率。
@@ -40,7 +50,7 @@
![](img/2.7.png)
我们再来看一看`马尔可夫奖励过程(Markov Reward Process, MRP)`。MRP 是马尔可夫链再加上了一个奖励函数。在 MRP中转移矩阵跟它的这个状态都是跟马尔可夫链一样的多了一个`奖励函数(reward function)`。**奖励函数是一个期望**,就是说当你到达某一个状态的时候,可以获得多大的奖励,然后这里另外定义了一个 discount factor $\gamma$ 。
**`马尔可夫奖励过程(Markov Reward Process, MRP)` 是马尔可夫链再加上了一个奖励函数。**在 MRP 中,转移矩阵跟它的这个状态都是跟马尔可夫链一样的,多了一个`奖励函数(reward function)`。**奖励函数是一个期望**,就是说当你到达某一个状态的时候,可以获得多大的奖励,然后这里另外定义了一个 discount factor $\gamma$ 。
![](img/2.8.png)
@@ -54,9 +64,9 @@
* 第一个是 `horizon` ,它说明了同一个 episode 或者是整个一个轨迹的长度,它是由有限个步数决定的。
* 这里我们再定义一个 `return`。Return 说的是我们把奖励进行折扣然后获得的这个收益。Return 可以定义为奖励的逐步叠加,然后这里有一个叠加系数,就是越往后得到的奖励,折扣得越多。这说明我们其实更希望得到现有的奖励,未来的奖励就要把它打折扣。
* 当我们有了这个 return 过后,就可以正式定义一个状态的价值了,就是 `state value function`。然后对于这个MRP它里面定义成是关于这个 return 的期望, $G_t$ 是我们之前定义的 discounted return。然后我们这里取了一个期望期望就是说从这个状态开始你有可能获得多大的价值。所以这个期望也可以看成是一个对未来可能获得奖励的它的当前价值的一个表现。就是当你进入某一个状态过后你现在就有多大的价值。
* 当我们有了这个 return 过后,就可以正式定义一个状态的价值了,就是 `state value function`。然后对于这个MRP它里面定义成是关于这个 return 的期望, $G_t$ 是我们之前定义的 `discounted return`。然后我们这里取了一个期望,期望就是说从这个状态开始,你有可能获得多大的价值。所以这个期望也可以看成是一个对未来可能获得奖励的它的当前价值的一个表现。就是当你进入某一个状态过后,你现在就有多大的价值。
![](img/2.10.png)这里我们解释一下为什么需要 discounted factor。
![](img/2.10.png)**这里我们解释一下为什么需要 discounted factor。**
* 第一点是有些马尔可夫过程是带环的,它并没有终结,我们想避免这个无穷的奖励。
* 另外,我们想把这个不确定性表示出来,希望尽可能快地得到奖励,而不是在未来某一个点得到奖励。
@@ -68,7 +78,15 @@
这里我们再来看一看,在这个 MRP 里面,如何计算它的价值。这个 MRP 依旧是这个状态转移。它的奖励函数是定义成这样,它在进入第一个状态的时候会得到 5 的奖励,进入第七个状态的时候会得到 10 的奖励,其它状态都没有奖励。
我们现在可以计算每一个轨迹得到的奖励,比如我们对于这个 $s_4,s_5,s_6,s_7$ 轨迹的奖励进行计算,这里折扣系数是 0.5。我们在 $s_4$ 的时候,奖励为零。下一个状态 $s_5$ 的时候,因为我们已经到了下一步了,所以我们要把 $s_5$ 进行一个折扣,$s_5$ 本身也是没有奖励的。然后是到 $s_6$,也没有任何奖励,折扣系数应该是 $\frac{1}{4}$ 。到达 $s_7$ 后,我们获得了一个奖励,但是因为 $s_7$ 这个状态是未来才获得的奖励,所以我们要进行三次折扣。所以对于这个轨迹,它的 return 就是一个 1.25,类似地,我们可以得到其它轨迹的 return 。
我们现在可以计算每一个轨迹得到的奖励,比如我们对于这个 $s_4,s_5,s_6,s_7$ 轨迹的奖励进行计算,这里折扣系数是 0.5。
* 在 $s_4$ 的时候,奖励为零。
* 下一个状态 $s_5$ 的时候,因为我们已经到了下一步了,所以我们要把 $s_5$ 进行一个折扣,$s_5$ 本身也是没有奖励的。
* 然后是到 $s_6$,也没有任何奖励,折扣系数应该是 $\frac{1}{4}$ 。
* 到达 $s_7$ 后,我们获得了一个奖励,但是因为 $s_7$ 这个状态是未来才获得的奖励,所以我们要进行三次折扣。
所以对于这个轨迹,它的 return 就是一个 1.25,类似地,我们可以得到其它轨迹的 return 。
这里就引出了一个问题,当我们有了一些轨迹的实际 return怎么计算它的价值函数。比如说我们想知道 $s_4$ 状态的价值,就是当你进入 $s_4$ 后,它的价值到底如何。一个可行的做法就是说我们可以产生很多轨迹,然后把这里的轨迹都叠加起来。比如我们可以从 $s_4$ 开始,采样生成很多轨迹,都把它的 return 计算出来,然后可以直接把它取一个平均作为你进入 $s_4$ 它的价值。这其实是一种计算价值函数的办法,通过这个蒙特卡罗采样的办法计算 $s_4$ 的状态。接下来会进一步介绍蒙特卡罗算法。
@@ -76,12 +94,12 @@
但是这里我们采取了另外一种计算方法,我们通过一定的推导就可以从这个价值函数里面推导出 `Bellman Equation贝尔曼等式`。**Bellman Equation 定义了当前状态跟未来状态之间的这个关系**。
其中
其中
* 我们可以把 $s'$ 看成未来的所有状态。
* 这里有一个转移 $P(s'|s)$ ,就是我们从当前状态转移到未来状态,那么它之间是满足于这个关系
* 我们可以把第二部分看成是一个 Discounted sum of future reward。
* $V(s')$ 代表的是未来某一个状态的价值。我们从当前这个位置开始有一定的概率去到未来的所有状态,所以我们要把这个概率也写上去,这个转移矩阵也写上去,然后我们就得到了未来状态,然后再乘以一个 $\gamma$,这样就可以把未来的奖励打折扣。
* $s'$ 可以看成未来的所有状态。
* 转移 $P(s'|s)$ 是指从当前状态转移到未来状态的概率
* 第二部分可以看成是一个 Discounted sum of future reward。
* $V(s')$ 代表的是未来某一个状态的价值。我们从当前这个位置开始有一定的概率去到未来的所有状态,所以我们要把这个概率也写上去,这个转移矩阵也写上去,然后我们就得到了未来状态,然后再乘以一个 $\gamma$,这样就可以把未来的奖励打折扣。
未来打了折扣的奖励加上当前立刻可以得到的奖励,就组成了这个 Bellman Equation。Bellman Equation 的推导过程如下:
$$
@@ -89,6 +107,8 @@ $$
V(s)&=\mathbb{E}\left[G_{t} \mid s_{t}=s\right]\\
&=\mathbb{E}\left[R_{t+1}+\gamma R_{t+2}+\gamma^{2} R_{t+3}+\ldots \mid s_{t}=s\right] \\
&=\mathbb{E}\left[R_{t+1}|s_t=s\right] +\gamma \mathbb{E}\left[R_{t+2}+\gamma R_{t+3}+\gamma^{2} R_{t+4}+\ldots \mid s_{t}=s\right]\\
&=R(s)+\gamma \mathbb{E}[G_{t+1}|s_t=s] \\
&=R(s)+\gamma \mathbb{E}[V(s_{t+1})|s_t=s]\\
&=R(s)+\gamma \sum_{s^{\prime} \in S} P\left(s^{\prime} \mid s\right) V\left(s^{\prime}\right)
\end{aligned}
$$
@@ -103,13 +123,16 @@ $$
我们可以把 Bellman Equation 写成一种矩阵的形式。首先有这个转移矩阵。我们当前这个状态是一个向量 $[V(s_1),V(s_2),\cdots,V(s_N)]^T$。我们可以写成迭代的形式。我们每一行来看的话,$V$ 这个向量乘以了转移矩阵里面的某一行,再加上它当前可以得到的 reward就会得到它当前的价值。
当我们写成如下的矩阵形式后
当我们写成如下的矩阵形式后:
$$
V = R+ \gamma PV
$$
我们可以直接得到一个`解析解(analytic solution)`,就通过矩阵求逆的过程,就可以把这个 V 的这个价值直接求出来。但是一个问题是这个矩阵求逆的过程的复杂度是 $O(N^3)$。所以当状态非常多的时候,比如说从十个状态到一千个状态,到一百万个状态。那么当我们有一百万个状态的时候,这个转移矩阵就会是个一百万乘以一百万的矩阵,这样一个大矩阵的话求逆是非常困难的,所以这种通过解析解去解,只能对于很小量的 MRP。
就可以直接得到一个`解析解(analytic solution)`:
$$
V=(I-\gamma P)^{-1} R
$$
我们可以通过矩阵求逆的过程把这个 V 的这个价值直接求出来。但是一个问题是这个矩阵求逆的过程的复杂度是 $O(N^3)$。所以当状态非常多的时候,比如说从十个状态到一千个状态,到一百万个状态。那么当我们有一百万个状态的时候,这个转移矩阵就会是个一百万乘以一百万的矩阵,这样一个大矩阵的话求逆是非常困难的,所以这种通过解析解去解,只能对于很小量的 MRP。
![](img/2.15.png)
@@ -127,7 +150,7 @@ $$
![](img/2.18.png)
相对于 MRP`马尔可夫决策过程(Markov Decision Process)`多了一个 `decision`,其它的定义跟 MRP 都是类似的。这里我们多了一个决策,多了一个 action ,那么这个状态转移也多了一个 condition就是你采取某一种行为然后你未来的状态会不同。它不仅是依赖于你当前的状态也依赖于在当前状态你这个 agent 它采取的这个行为会决定它未来的这个状态走向。对于这个价值函数,它也是多了一个条件,多了一个你当前的这个行为,就是说你当前的状态以及你采取的行为会决定你在当前可能得到的奖励多少。
**相对于 MRP`马尔可夫决策过程(Markov Decision Process)`多了一个 `decision`,其它的定义跟 MRP 都是类似的。**这里我们多了一个决策,多了一个 action ,那么这个状态转移也多了一个 condition就是你采取某一种行为然后你未来的状态会不同。它不仅是依赖于你当前的状态也依赖于在当前状态你这个 agent 它采取的这个行为会决定它未来的这个状态走向。对于这个价值函数,它也是多了一个条件,多了一个你当前的这个行为,就是说你当前的状态以及你采取的行为会决定你在当前可能得到的奖励多少。
![](img/2.19.png)
@@ -135,27 +158,27 @@ Policy 定义了在某一个状态应该采取什么样的行为,当我们知
![](img/2.20.png)
这里说明了 MDP 跟 MRP 的之间的一个转换,就是已知一个 MDP 以及一个 policy $\pi$ 的时候,我们可以把 MDP 转换成MRP。在 MDP 里面,转移函数 $P(s'|s,a)$ 是基于它当前状态以及它当前的 action因为我们现在已知它 policy function就是说在每一个状态我们知道它可能采取的行为的概率那么就可以直接把这个 action 进行加和,直接把这个 a 去掉,那我们就可以得到对于 MRP 的一个转移,这里就没有 action。对于这个奖励函数我们也可以把 action 拿掉,这样就会得到一个类似于 MRP 的奖励函数。
这里说明了 MDP 跟 MRP 的之间的一个转换已知一个 MDP 一个 policy $\pi$ 的时候,我们可以把 MDP 转换成 MRP。在 MDP 里面,转移函数 $P(s'|s,a)$ 是基于它当前状态以及它当前的 action因为我们现在已知它 policy function就是说在每一个状态我们知道它可能采取的行为的概率那么就可以直接把这个 action 进行加和,直接把这个 a 去掉,那我们就可以得到对于 MRP 的一个转移,这里就没有 action。对于这个奖励函数我们也可以把 action 拿掉,这样就会得到一个类似于 MRP 的奖励函数。
![](img/2.21.png)
这里我们看一看MDP 里面的状态转移跟 MRP 以及 MP 的一个差异。
**这里我们看一看MDP 里面的状态转移跟 MRP 以及 MP 的一个差异。**
* 马尔可夫过程的转移是直接就决定,就你当前是 s那么就直接通过这个转移概率决定了下一个状态是什么。
* 但对于 MDP它的中间多了一层这个行为 a ,就是说在你当前这个状态的时候,首先要决定的是采取某一种行为那么你会到了某一个黑色的节点。到了这个黑色的节点,因为你有一定的不确定性,当你当前状态决定过后以及你当前采取的行为过后,你到未来的状态其实也是一个概率分布。所以你采取行为后,你可能有多大的概率到达某一个未来状态,以及另外有多大概率到达另外一个状态。**所以在这个当前状态跟未来状态转移过程中这里多了一层决策性,这是 MDP 跟之前的马尔可夫过程很不同的一个地方。**在马尔夫决策过程中,行为是由 agent 决定,所以多了一个 componentagent 会采取行为来决定未来的状态转移。
* 马尔可夫过程的转移是直接就决定。比如当前状态是 s那么就直接通过这个转移概率决定了下一个状态是什么。
* 但对于 MDP它的中间多了一层这个行为 a ,就是说在你当前这个状态的时候,首先要决定的是采取某一种行为那么你会到了某一个黑色的节点。到了这个黑色的节点,因为你有一定的不确定性,当你当前状态决定过后以及你当前采取的行为过后,你到未来的状态其实也是一个概率分布。所以你采取行为后,你可能有多大的概率到达某一个未来状态,以及另外有多大概率到达另外一个状态。**所以在这个当前状态跟未来状态转移过程中这里多了一层决策性,这是 MDP 跟之前的马尔可夫过程很不同的一个地方。**在马尔夫决策过程中,行为是由 agent 决定,所以多了一个 componentagent 会采取行为来决定未来的状态转移。
![](img/2.22.png)
* 顺着 MDP 的定义,我们可以把 state-value function就是在 MDP 里面的价值函数也进行一个定义,它的定义是跟 MRP是类似的但是这里 expectation over policy就是这个期望是基于你采取的这个 policy ,就当你的 policy 决定过后,我们通过对这个 policy 进行采样来得到一个期望,那么就可以计算出它的这个价值函数。
* 顺着 MDP 的定义,我们可以把 `state-value function`,就是在 MDP 里面的价值函数也进行一个定义,它的定义是跟 MRP 是类似的,但是这里 expectation over policy就是这个期望是基于你采取的这个 policy ,就当你的 policy 决定过后,**我们通过对这个 policy 进行采样来得到一个期望,那么就可以计算出它的这个价值函数。**
* 这里我们另外引入了一个 `Q 函数(action-value function)`。这个 Q 函数定义的是某一个状态某一个行为,然后它有可能得到的这个 return 的一个期望这里期望其实也是 over policy function。所以你需要对这个 policy function 进行一个加和,然后最后得到它的这个价值。
* 价值函数跟 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。
通过对状态-价值函数进行一个分解,我们就可以得到一个类似于之前 MRP 的 Bellman Equation这里叫 `Bellman Expectation Equation`
对于 Q 函数,我们也可以做类似的分解,也可以得到对于 Q 函数的 Bellman Expectation Equation。
@@ -202,7 +225,7 @@ $$
![](img/2.31.png)
接下来给大家介绍 MDP 的 `prediction``control`,这两个问题是 MDP 里面的核心问题。
MDP 的 `prediction``control` 是 MDP 里面的核心问题。
* Prediction 是说给定一个 MDP 以及一个 policy $\pi$ ,去计算它的 value function就等于每个状态它的价值函数是多少。
* Control 这个问题是说我们去寻找一个最佳的一个策略,它的 input 就是MDP输出是通过去寻找它的最佳策略然后同时输出它的最佳价值函数(optimal value function)以及它的这个最佳策略(optimal policy)。
@@ -214,7 +237,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。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,7 +245,13 @@ Policy evaluation 的核心思想就是直接把这个 Bellman expectation backu
$$
v_{t+1}(s)=\sum_{a \in \mathcal{A}} \pi(a \mid s)\left(R(s, a)+\gamma \sum_{s^{\prime} \in \mathcal{S}} P\left(s^{\prime} \mid s, a\right) v_{t}\left(s^{\prime}\right)\right)
$$
然后反复迭代,然后就会得到一个收敛的价值函数的值,这个函数因为我们已经给定了它的这个 policy function那我们可以直接把它简化成一个 MRP 的表达形式,那么它的形式就更简洁一些,就相当于我们把这个 $a$ 去掉。然后这样它就只有价值函数跟转移函数了。那我们通过去迭代这个更简化的一个函数,这样我们也可以得到它每个状态的价值,因为不管是在 MRP 以及 MDP它的这个价值函数包含的这个变量都是只跟这个状态有关就相当于进入某一个状态未来可能得到多大的价值
然后反复迭代,然后就会得到一个收敛的价值函数的值。
因为我们已经给定了这个函数的 policy function那我们可以直接把它简化成一个 MRP 的表达形式,那么它的形式就更简洁一些,就相当于我们把这个 $a$ 去掉,如下式所示:
$$
v_{t+1}(s)=R^{\pi}(s)+\gamma P^{\pi}\left(s^{\prime} \mid s\right) v_{t}\left(s^{\prime}\right)
$$
这样它就只有价值函数跟转移函数了。通过去迭代这个更简化的一个函数,我们也可以得到它每个状态的价值。因为不管是在 MRP 以及 MDP它的这个价值函数包含的这个变量都是只跟这个状态有关就相当于进入某一个状态未来可能得到多大的价值。
![](img/2.35.png)
@@ -252,7 +281,7 @@ $$
![](img/2.41.png)
Policy evaluation 是说给定一个 MDP 和一个 policy我们可以估算出它的价值函数。这个问题的另外一方面是说如果我们只有一个 MDP如何去寻找一个最佳的策略然后可以得到一个`最佳价值函数(Optimal Value Function)`。Optimal Value Function 的定义是说,我们去搜索一种 policy $\pi$ ,然后我们会得到每个状态它的状态值最大的一个情况,$v^*$ 就是到达每一个状态,它的值的极大化情况。在这种极大化情况上面,我们得到的策略就可以说它是最佳策略(optimal policy)。Optimal policy 使得每个状态,它的状态函数都取得最大值。所以当我们说某一个 MDP 的环境被解了过后,就是说我们可以得到一个 optimal value function然后我们就说它被解了。在这种情况下面然后我们它的最佳的价值函数是一致的就它达到了这个 upper bound它的值是一致的但是这里可能有多个最佳的 policy多个 policy 可以取得相同的最佳价值。
**Policy evaluation 是说给定一个 MDP 和一个 policy我们可以估算出它的价值函数。**这个问题的另外一方面是说如果我们只有一个 MDP如何去寻找一个最佳的策略然后可以得到一个`最佳价值函数(Optimal Value Function)`。Optimal Value Function 的定义是说,我们去搜索一种 policy $\pi$ ,然后我们会得到每个状态它的状态值最大的一个情况,$v^*$ 就是到达每一个状态,它的值的极大化情况。在这种极大化情况上面,我们得到的策略就可以说它是最佳策略(optimal policy)。Optimal policy 使得每个状态,它的状态函数都取得最大值。所以当我们说某一个 MDP 的环境被解了过后,就是说我们可以得到一个 optimal value function然后我们就说它被解了。在这种情况下面然后我们它的最佳的价值函数是一致的就它达到了这个 upper bound它的值是一致的但是这里可能有多个最佳的 policy多个 policy 可以取得相同的最佳价值。
![](img/2.42.png)
@@ -286,7 +315,15 @@ Policy evaluation 是说给定一个 MDP 和一个 policy我们可以估算
![](img/2.48.png)
当改进停止过后,我们取它极大化的这个 action 之后,它直接就会变成它的这个价值函数。所以我们在这里有了一个新的一个等式,就叫 `Bellman Optimality Equation`。这个 Bellman Optimality Equation 满足的时候,是说整个 MDP 已经到达最佳的状态。它到达最佳状态过后,对于我们这个 Q 函数,我们取它最大的 action 时候的那个值,就是直接等于它的最佳的这个 value function这个条件只有当整个状态已经收敛过后已经得到一个最佳的 policy 的时候,然后它是满足的。
当改进停止过后,我们取它极大化的这个 action 之后,它直接就会变成它的这个价值函数,即
$$
q^{\pi}\left(s, \pi^{\prime}(s)\right)=\max _{a \in \mathcal{A}} q^{\pi}(s, a)=q^{\pi}(s, \pi(s))=v^{\pi}(s)
$$
所以我们在这里有了一个新的等式:
$$
v^{\pi}(s)=\max _{a \in \mathcal{A}} q^{\pi}(s, a)
$$
上式被称为 `Bellman Optimality Equation`。**这个 Bellman Optimality Equation 满足的时候,是说整个 MDP 已经到达最佳的状态。**它到达最佳状态过后,对于我们这个 Q 函,取它最大的 action 时候的那个值,就是直接等于它的最佳的这个 value function。只有当整个状态已经收敛过后得到一个最佳的 policy 的时候,这个条件才是满足的。
![](img/2.49.png)
@@ -302,13 +339,15 @@ $$
![](img/2.50.png)
Value iteration 说的是我们把 Bellman Optimality Equation 当成一个 update rule 来进行之前我们是说上面这个等式只有当整个状态已经到达最佳状态的时候,然后才满足。但这里可以把它转换成一个 backup 的等式。 Backup 就是说一个迭代的等式,我们不停地去迭代 Bellman Optimality Equation到了最后它能逐渐趋向于最佳的策略所以这也是 value iteration 算法的精髓,就是我们去为了得到最佳的 $v^*$ ,对于每个状态它的 $v^*$ 这个值,我们直接把这个 Bellman Optimality Equation 进行迭代,迭代了很多次之后它就会收敛。
**Value iteration 说的是我们把 Bellman Optimality Equation 当成一个 update rule 来进行。**之前我们是说上面这个等式只有当整个状态已经到达最佳状态的时候,然后才满足。但这里可以把它转换成一个 backup 的等式。 Backup 就是说一个迭代的等式,我们不停地去迭代 Bellman Optimality Equation到了最后它能逐渐趋向于最佳的策略所以这也是 value iteration 算法的精髓,就是我们去为了得到最佳的 $v^*$ ,对于每个状态它的 $v^*$ 这个值,我们直接把这个 Bellman Optimality Equation 进行迭代,迭代了很多次之后它就会收敛。
![](img/2.51.png)
Value iteration 算法的目的是为了得到一个最佳的策略。一个解法是直接把这个 `Bellman Optimality backup`,把它这个等式拿进来进行迭代,迭代很多次,收敛过后得到的那个值就是它的最佳的那个值。所以这个算法开始的时候,它是先把所有值初始化,通过每一个状态,然后它会进行这个迭代。
* Value iteration 算法的目的是为了得到一个最佳的策略。
把等式 22 插到等式 23 里面,就是Bellman Optimallity backup 的那个等式。有了这个等式过后,然后进行不停地迭代,迭代过后,然后收敛。然后就会得到这个 $V^*$ 。当我们有这个 $V^*$ 过后,一个问题是如何进一步推算出它的最佳策略。最佳策略的话,我们可以直接用 arg max就先把它的 Q 函数重构出来,重构出来过后,每一个列对应的最大的那个 action 就是它现在的最佳策略,这样就可以把最佳策略从最佳价值函数里面推导出来
* 一个解法是直接把这个 `Bellman Optimality backup`,把它这个等式拿进来进行迭代,迭代很多次,收敛过后得到的那个值就是它的最佳的那个值
* 所以这个算法开始的时候,它是先把所有值初始化,通过每一个状态,然后它会进行这个迭代。把等式 22 插到等式 23 里面,就是 Bellman Optimallity backup 的那个等式。有了这个等式过后,然后进行不停地迭代,迭代过后,然后收敛。然后就会得到这个 $v^*$ 。当我们有这个 $v^*$ 过后,一个问题是如何进一步推算出它的最佳策略。
* 最佳策略的话,我们可以直接用 arg max就先把它的 Q 函数重构出来,重构出来过后,每一个列对应的最大的那个 action 就是它现在的最佳策略。这样就可以把最佳策略从最佳价值函数里面推导出来。
![](img/2.52.png)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 233 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB