fix some errors

This commit is contained in:
qiwang067
2020-07-18 18:58:39 +08:00
parent 99fd30d035
commit 08230befcf
16 changed files with 8 additions and 8 deletions

View File

@@ -177,13 +177,13 @@ POMDP 可以用一个 7 元组描述:$(S,A,T,R,\Omega,O,\gamma)$,其中 $S$
Policy 就是决定了这个 agent 的行为,它其实是一个函数,把输入的状态变成行为。所以这里有有两种 policy。 Policy 就是决定了这个 agent 的行为,它其实是一个函数,把输入的状态变成行为。所以这里有有两种 policy。
* 一种是 `stochastic policy(随机性策略)`,它就是 $\pi$ 函数 $\pi(a | s)=P\left[A_{t}=a | S_{t}=s\right]$ 当你输入一个状态 s 的时候,输出其实是一个概率。这概率就是你所有行为的一个概率,然后你可以进一步对这个概率分布进行采样,然后得到真实的你采取的行为。比如说这个概率可能是有 70% 的概率往左30% 的概率往右,那么你通过采样就可以得到一个 action。 * 一种是 `stochastic policy(随机性策略)`,它就是 $\pi$ 函数 $\pi(a | s)=P\left[A_{t}=a | S_{t}=s\right]$ 当你输入一个状态 s 的时候,输出是一个概率。这概率就是你所有行为的一个概率,然后你可以进一步对这个概率分布进行采样,得到真实的你采取的行为。比如说这个概率可能是有 70% 的概率往左30% 的概率往右,那么你通过采样就可以得到一个 action。
* 一种是 `deterministic policy(确定性策略)`,就是说你这里有可能只是采取它的极大化,采取最有可能的概率。所以你现在这个概率就是事先决定好的。 * 一种是 `deterministic policy(确定性策略)`,就是说你这里有可能只是采取它的极大化,采取最有可能的概率。所以你现在这个概率就是事先决定好的。
从 Atari 游戏的来看的话policy function 的输入就是一游戏的一帧,然后它的输出决定你是往左走或者是往右走。 从 Atari 游戏的来看的话policy function 的输入就是一游戏的一帧,然后它的输出决定你是往左走或者是往右走。
通常情况下,强化学习一般使用`随机性策略`。随机性策略可以有很多优点: 通常情况下,强化学习一般使用`随机性策略`。随机性策略有很多优点:
* 在学习时可以通过引入一定随机性更好地探索环境; * 在学习时可以通过引入一定随机性更好地探索环境;
@@ -203,8 +203,6 @@ Policy 就是决定了这个 agent 的行为,它其实是一个函数,把输
![](img/1.28.png) ![](img/1.28.png)
然后这里第三个组成部分是这个模型,模型决定了下一个状态会是什么样的,就是说下一步的状态取决于你当前的状态以及你当前采取的行为。然后它由两个部分组成,一个是 Probability它这个转移状态之间是怎么转移的。另外一个模型的是这个奖励函数当你在当前状态采取了某一个行为可以得到多大的奖励。 然后这里第三个组成部分是这个模型,模型决定了下一个状态会是什么样的,就是说下一步的状态取决于你当前的状态以及你当前采取的行为。然后它由两个部分组成,一个是 Probability它这个转移状态之间是怎么转移的。另外一个模型的是这个奖励函数当你在当前状态采取了某一个行为可以得到多大的奖励。
![](img/1.29.png) ![](img/1.29.png)
当我们有了这三个成分过后,然后其实就形成了一个 `Markov Decision Process`。这个决策过程可视化了状态之间的转移以及我们采取的行为。 当我们有了这三个成分过后,然后其实就形成了一个 `Markov Decision Process`。这个决策过程可视化了状态之间的转移以及我们采取的行为。

View File

@@ -218,20 +218,22 @@ $$
![](img/3.18.png) ![](img/3.18.png)
**接下来再更进一步,我们把未来的 reward 做一个 discount**,由此得到的回报被称为 `Discounted Return(折扣回报)`。为什么要把未来的 reward 做一个 discount 呢?因为虽然在某一个时间点,执行某一个 action会影响接下来所有的结果有可能在某一个时间点执行的 action接下来得到的 reward 都是这个 action 的功劳。但在比较真实的情况下, 如果时间拖得越长,影响力就越小。 比如说在第二个时间点执行某一个 action 那我在第三个时间点得到的 reward 可能是在第二个时间点执行某个 action 的功劳,但是在 100 个 timestamp 之后,又得到 reward那可能就不是在第二个时间点执行某一个 action 得到的功劳。 所以我们实际上在做的时候,你会在 R 前面乘上一个 `discount factor` $\gamma$ $\gamma \in [0,1] $ ,一般会设个 0.9 或 0.99 **接下来再更进一步,我们把未来的 reward 做一个 discount**,由此得到的回报被称为 `Discounted Return(折扣回报)`。为什么要把未来的 reward 做一个 discount 呢?因为虽然在某一个时间点,执行某一个 action会影响接下来所有的结果有可能在某一个时间点执行的 action接下来得到的 reward 都是这个 action 的功劳。但在比较真实的情况下, 如果时间拖得越长,影响力就越小。 比如说在第二个时间点执行某一个 action 那我在第三个时间点得到的 reward 可能是在第二个时间点执行某个 action 的功劳,但是在 100 个 timestamp 之后,又得到 reward那可能就不是在第二个时间点执行某一个 action 得到的功劳。 所以我们实际上在做的时候,你会在 R 前面乘上一个 `discount factor` $\gamma$ $\gamma \in [0,1] $ ,一般会设个 0.9 或 0.99
* $\gamma = 0$ : Only care about the immediate reward * $\gamma = 0$ : 只关心即时奖励;
* $\gamma = 1$ : Future reward is equal to the immediate reward * $\gamma = 1$ : 未来奖励等同于即时奖励
如果 time stamp $t'$ 越大,它前面就乘上越多次的 $\gamma$,就代表说现在在某一个 state $s_t$ 执行某一个 action $a_t$ 的时候,它真正的 credit 是在执行这个 action 之后所有 reward 的总和,而且你还要乘上 $\gamma$。 如果 time stamp $t'$ 越大,它前面就乘上越多次的 $\gamma$,就代表说现在在某一个 state $s_t$ 执行某一个 action $a_t$ 的时候,它真正的 credit 是在执行这个 action 之后所有 reward 的总和,而且你还要乘上 $\gamma$。
举一个例子, 你就想成说,这是游戏的第 1、2、3、4 回合,那你在游戏的第二回合的某一个 $s_t$ 你执行 $a_t$,它真正的 credit 得到的分数应该是,假设你这边得到 +1 分 这边得到 +3 分,这边得到 -5 分,它的真正的 credit应该是 1 加上一个 discount 的 credit 叫做 $\gamma$ 乘上 3再加上 $\gamma^2$ 乘上 -5。 举一个例子, 你就想成说,这是游戏的第 1、2、3、4 回合,那你在游戏的第二回合的某一个 $s_t$ 你执行 $a_t$,它真正的 credit 得到的分数应该是,假设你这边得到 +1 分 这边得到 +3 分,这边得到 -5 分,它的真正的 credit应该是 1 加上一个 discount 的 credit 叫做 $\gamma$ 乘上 3再加上 $\gamma^2$ 乘上 -5。
如果大家可以接受这样子的话, 实际上就是这么 implement 的。这个 b 可以是 state-dependent 的,事实上 b 它通常是一个 network estimate 出来的,它是一个 network 的 output。 如果大家可以接受这样子的话, 实际上就是这么 implement 的。这个 b 可以是 state-dependent 的,事实上 b 它通常是一个 network 估计出来的,它是一个 network 的 output。
![](img/3.19.png) ![](img/3.19.png)
把 $R-b$ 这一项合起来,我们统称为` advantage function``A` 来代表 advantage function。Advantage function 是 dependent on s and a我们就是要计算的是在某一个 state s 采取某一个 action a 的时候advantage function 有多大。 把 $R-b$ 这一项合起来,我们统称为` advantage function``A` 来代表 advantage function。Advantage function 是 dependent on s and a我们就是要计算的是在某一个 state s 采取某一个 action a 的时候advantage function 有多大。
这个 advantage function 它的上标是 $\theta$ $\theta$ 是什么意思呢? 因为在算 advantage function时你要计算$\sum_{t^{\prime}=t}^{T_{n}} r_{t^{\prime}}^{n}$ ,你会需要有一个 interaction 的结果。你会需要有一个 model 去跟环境做 interaction,你才知道接下来得到的 reward 会有多少。这个 $\theta$ 就是代表说是用 $\theta$ 这个 model 跟环境去做 interaction,然后你才计算出这一项。从时间 t 开始到游戏结束为止,所有 R summation 把这一项减掉 b然后这个就叫 advantage function。它的意义就是,假设我们在某一个 state $s_t$ 执行某一个 action $a_t$,相较于其他可能的 action它有多好。它真正在意的不是一个绝对的好 而是说在同样的 state 的时候 是采取某一个 action $a_t$ 相较于其它的 action 它有多好,它是相对的好。因为会减掉一个 b减掉一个 baseline 所以这个东西是相对的好,不是绝对的好。 $A^{\theta}\left(s_{t}, a_{t}\right)$ 通常可以是由一个 network estimate 出来的,这个 network 叫做 critic。 在算 advantage function 时,你要计算$\sum_{t^{\prime}=t}^{T_{n}} r_{t^{\prime}}^{n}$ ,你会需要有一个互动的结果。你会需要有一个 model 去跟环境做互动,你才知道接下来得到的 reward 会有多少。这个 advantage function 的上标是 $\theta$$\theta$ 就是代表说是用 $\theta$ 这个 model 跟环境去做互动,然后你才计算出这一项。从时间 t 开始到游戏结束为止,所有 r加和减掉 b这个就叫 advantage function。
Advantage function 的意义就是,假设我们在某一个 state $s_t$ 执行某一个 action $a_t$,相较于其他可能的 action它有多好。它在意的不是一个绝对的好而是相对的好`相对优势(relative advantage)`。因为会减掉一个 b减掉一个 baseline 所以这个东西是相对的好,不是绝对的好。 $A^{\theta}\left(s_{t}, a_{t}\right)$ 通常可以是由一个 network estimate 出来的,这个 network 叫做 critic。
## References ## References

View File

Before

Width:  |  Height:  |  Size: 1.5 MiB

After

Width:  |  Height:  |  Size: 1.5 MiB

View File

Before

Width:  |  Height:  |  Size: 961 KiB

After

Width:  |  Height:  |  Size: 961 KiB

View File

Before

Width:  |  Height:  |  Size: 802 KiB

After

Width:  |  Height:  |  Size: 802 KiB

View File

Before

Width:  |  Height:  |  Size: 617 KiB

After

Width:  |  Height:  |  Size: 617 KiB

View File

Before

Width:  |  Height:  |  Size: 1.8 MiB

After

Width:  |  Height:  |  Size: 1.8 MiB

View File

Before

Width:  |  Height:  |  Size: 1.5 MiB

After

Width:  |  Height:  |  Size: 1.5 MiB

View File

Before

Width:  |  Height:  |  Size: 613 KiB

After

Width:  |  Height:  |  Size: 613 KiB

View File

Before

Width:  |  Height:  |  Size: 1001 KiB

After

Width:  |  Height:  |  Size: 1001 KiB

View File

Before

Width:  |  Height:  |  Size: 1.4 MiB

After

Width:  |  Height:  |  Size: 1.4 MiB

View File

Before

Width:  |  Height:  |  Size: 862 KiB

After

Width:  |  Height:  |  Size: 862 KiB

View File

Before

Width:  |  Height:  |  Size: 1.0 MiB

After

Width:  |  Height:  |  Size: 1.0 MiB

View File

Before

Width:  |  Height:  |  Size: 405 KiB

After

Width:  |  Height:  |  Size: 405 KiB

View File

Before

Width:  |  Height:  |  Size: 920 KiB

After

Width:  |  Height:  |  Size: 920 KiB

View File

Before

Width:  |  Height:  |  Size: 1.0 MiB

After

Width:  |  Height:  |  Size: 1.0 MiB