This commit is contained in:
qiwang067
2022-02-06 21:46:25 +08:00
parent 30d920c091
commit 25ff26c83b

View File

@@ -195,11 +195,11 @@ $$
## Tips
这边有一些在实现的时候,你也许用得上的 tip。
### Tip 1: Add a Baseline
### Tip 1: 添加基线
![](img/4.11.png)
**第一个 tip 是 add 一个 baseline。** 如果给定状态 s 采取动作 a 会给你整场游戏正的奖励,就要增加它的概率。如果状态 s 执行动作 a整场游戏得到负的奖励就要减少这一项的概率。
**第一个 tip 是添加基线(baseline** 如果给定状态 s 采取动作 a 会给你整场游戏正的奖励,就要增加它的概率。如果状态 s 执行动作 a整场游戏得到负的奖励就要减少这一项的概率。
但在很多游戏里面,奖励总是正的,就是说最低都是 0。比如说打乒乓球游戏 你的分数就是介于 0 到 21 分之间,所以 R 总是正的。假设你直接套用这个式子, 在训练的时候告诉模型说,不管是什么动作你都应该要把它的概率提升。 在理想上,这么做并不一定会有问题。因为虽然说 R 总是正的,但它正的量总是有大有小,你在玩乒乓球那个游戏里面,得到的奖励总是正的,但它是介于 0~21分之间有时候你采取某些动作可能是得到 0 分,采取某些动作可能是得到 20 分。
@@ -219,7 +219,7 @@ $$
![1.](img/4.14.png)
为了解决奖励总是正的这个问题,你可以把奖励减掉一项叫做 b这项 b 叫做 baseline。你减掉这项 b 以后,就可以让 $R(\tau^n)-b$ 这一项有正有负。 所以如果得到的总奖励 $R(\tau^n)$ 大于 b 的话,就让它的概率上升。如果这个总奖励小于 b就算它是正的正的很小也是不好的你就要让这一项的概率下降。 如果$R(\tau^n)<b$ 你就要让这个状态采取这个动作的分数下降 。这个 b 怎么设呢?一个最简单的做法就是:你把 $\tau^n$ 的值取期望, 算一下 $\tau^n$ 的平均值,即:
为了解决奖励总是正的这个问题,你可以把奖励减掉一项叫做 b这项 b 叫做基线。你减掉这项 b 以后,就可以让 $R(\tau^n)-b$ 这一项有正有负。 所以如果得到的总奖励 $R(\tau^n)$ 大于 b 的话,就让它的概率上升。如果这个总奖励小于 b就算它是正的正的很小也是不好的你就要让这一项的概率下降。 如果$R(\tau^n)<b$ 你就要让这个状态采取这个动作的分数下降 。这个 b 怎么设呢?一个最简单的做法就是:你把 $\tau^n$ 的值取期望, 算一下 $\tau^n$ 的平均值,即:
$$
b \approx E[R(\tau)]
$$
@@ -277,7 +277,7 @@ $$
在算优势函数时,你要计算 $\sum_{t^{\prime}=t}^{T_{n}} r_{t^{\prime}}^{n}$ ,你需要有一个互动的结果。你需要有一个模型去跟环境做互动,你才知道接下来得到的奖励会有多少。优势函数 $A^{\theta}\left(s_{t}, a_{t}\right)$ 的上标是 $\theta$$\theta$ 就是代表说是用 $\theta$ 这个模型跟环境去做互动,然后你才计算出这一项。从时间 t 开始到游戏结束为止,所有 r 的加和减掉 b这个就叫优势函数。
优势函数的意义就是,假设我们在某一个状态$s_t$ 执行某一个动作 $a_t$,相较于其他可能的动作,它有多好。它在意的不是一个绝对的好,而是相对的好,即`相对优势(relative advantage)`。因为会减掉一个 b减掉一个 baseline 所以这个东西是相对的好,不是绝对的好。 $A^{\theta}\left(s_{t}, a_{t}\right)$ 通常可以是由一个网络估计出来的,这个网络叫做 critic。
优势函数的意义就是,假设我们在某一个状态$s_t$ 执行某一个动作 $a_t$,相较于其他可能的动作,它有多好。它在意的不是一个绝对的好,而是相对的好,即`相对优势(relative advantage)`。因为会减掉一个 b减掉一个 基线 所以这个东西是相对的好,不是绝对的好。 $A^{\theta}\left(s_{t}, a_{t}\right)$ 通常可以是由一个网络估计出来的,这个网络叫做 critic。
## REINFORCE: Monte Carlo Policy Gradient