This commit is contained in:
qiwang067
2021-05-30 16:50:09 +08:00
parent 5c1ff468d8
commit e1e0d5a878

View File

@@ -33,8 +33,6 @@ $$
### State Value Function Estimation ### State Value Function Estimation
**怎么衡量这个状态价值函数 $V^{\pi}(s)$ 呢?**有两种不同的做法MC-based 的方法和 TD-based 的方法。 **怎么衡量这个状态价值函数 $V^{\pi}(s)$ 呢?**有两种不同的做法MC-based 的方法和 TD-based 的方法。
` Monte-Carlo(MC)-based`的方法就是让演员去跟环境做互动,你要看演员好不好, 你就让演员去跟环境做互动,给评论家看。然后,评论家就统计说, ` Monte-Carlo(MC)-based`的方法就是让演员去跟环境做互动,你要看演员好不好, 你就让演员去跟环境做互动,给评论家看。然后,评论家就统计说,
@@ -42,7 +40,7 @@ $$
* 演员如果看到状态 $s_a$,接下来的累积奖励会有多大。 * 演员如果看到状态 $s_a$,接下来的累积奖励会有多大。
* 如果它看到状态 $s_b$,接下来的累积奖励会有多大。 * 如果它看到状态 $s_b$,接下来的累积奖励会有多大。
但是实际上,你不可能把所有的状态通通都扫过。如果你是玩 Atari 游戏的话,状态是图像,你没有办法把所有的状态通通扫过。所以实际上 $V^{\pi}(s)$ 是一个网络。对一个网络来说,就算输入状态是从来都没有看过的,它也可以想办法估测一个值的值 但是实际上,你不可能把所有的状态通通都扫过。如果你是玩 Atari 游戏的话,状态是图像,你没有办法把所有的状态通通扫过。所以实际上 $V^{\pi}(s)$ 是一个网络。对一个网络来说,就算输入状态是从来都没有看过的,它也可以想办法估测一个值。
![](img/6.2.png ':size=350') ![](img/6.2.png ':size=350')
@@ -153,7 +151,7 @@ Q-function 有两种写法:
它的大原则是这样,假设你有一个初始的演员,也许一开始很烂,随机的也没有关系。初始的演员叫做 $\pi$,这个 $\pi$ 跟环境互动,会收集数据。接下来你学习一个 $\pi$ 这个演员的 Q 值,你去衡量一下 $\pi$ 在某一个状态强制采取某一个动作,接下来用 $\pi$ 这个策略 会得到的期望奖励,用 TD 或 MC 都是可以的。你学习出一个 Q-function 以后,就保证你可以找到一个新的策略 $\pi'$ policy $\pi'$ 一定会比原来的策略 $\pi$ 还要好。那等一下会定义说,什么叫做好。所以假设你有一个 Q-function 和某一个策略 $\pi$,你根据策略 $\pi$ 学习出策略 $\pi$ 的 Q-function接下来保证你可以找到一个新的策略 $\pi'$ ,它一定会比 $\pi$ 还要好,然后你用 $\pi'$ 取代 $\pi$,再去找它的 Q-function得到新的以后再去找一个更好的策略。**这样一直循环下去policy 就会越来越好。** 它的大原则是这样,假设你有一个初始的演员,也许一开始很烂,随机的也没有关系。初始的演员叫做 $\pi$,这个 $\pi$ 跟环境互动,会收集数据。接下来你学习一个 $\pi$ 这个演员的 Q 值,你去衡量一下 $\pi$ 在某一个状态强制采取某一个动作,接下来用 $\pi$ 这个策略 会得到的期望奖励,用 TD 或 MC 都是可以的。你学习出一个 Q-function 以后,就保证你可以找到一个新的策略 $\pi'$ policy $\pi'$ 一定会比原来的策略 $\pi$ 还要好。那等一下会定义说,什么叫做好。所以假设你有一个 Q-function 和某一个策略 $\pi$,你根据策略 $\pi$ 学习出策略 $\pi$ 的 Q-function接下来保证你可以找到一个新的策略 $\pi'$ ,它一定会比 $\pi$ 还要好,然后你用 $\pi'$ 取代 $\pi$,再去找它的 Q-function得到新的以后再去找一个更好的策略。**这样一直循环下去policy 就会越来越好。**
首先要定义的是什么叫做比较好?我们说 $\pi'$ 一定会比 $\pi$ 还要好,什么叫做好呢?这边好是说,对所有可能的状态 s 而言,$V^{\pi^{\prime}}(s) \geq V^{\pi}(s)$。也就是说我们走到同一个状态 s 的时候,如果拿 $\pi$ 继续跟环境互动下去,我们得到的奖励一定会小于等于用 $\pi'$ 跟环境互动下去得到的奖励。所以不管在哪一个状态,你用 $\pi'$ 去做交互,得到的期望奖励一定会比较大。所以 $\pi'$ 是比 $\pi$ 还要好的一个策略。 首先要定义的是什么叫做比较好?我们说 $\pi'$ 一定会比 $\pi$ 还要好,这边好是说,对所有可能的状态 s 而言,$V^{\pi^{\prime}}(s) \geq V^{\pi}(s)$。也就是说我们走到同一个状态 s 的时候,如果拿 $\pi$ 继续跟环境互动下去,我们得到的奖励一定会小于等于用 $\pi'$ 跟环境互动下去得到的奖励。所以不管在哪一个状态,你用 $\pi'$ 去做交互,得到的期望奖励一定会比较大。所以 $\pi'$ 是比 $\pi$ 还要好的一个策略。
有了 Q-function 以后,怎么找这个 $\pi'$ 呢?如果你根据以下的这个式子去决定你的动作, 有了 Q-function 以后,怎么找这个 $\pi'$ 呢?如果你根据以下的这个式子去决定你的动作,
$$ $$
@@ -320,7 +318,7 @@ A: 因为 Q 值是有正有负的,所以可以它弄成一个概率,你先
![](img/6.18.png ':size=550') ![](img/6.18.png ':size=550')
有了这个 buffer 以后,你是怎么训练这个 Q 的模型呢,怎么估 Q-function你的做法是这样你会迭代地去训练这个 Q-function在每次迭代里面你从这个 buffer 里面随机挑一个 batch 出来,就跟一般的网络训练一样,你从那个训练集里面,去挑一个 batch 出来。你去采样一个 batch 出来,里面有一把的经验,根据这把经验去更新你的 Q-function。就跟 TD learning 要有一个目标网络是一样的。你去采样一堆 batch采样一个 batch 的数据,采样一堆经验,然后再去更新你的 Q-function。 有了 buffer 以后,你是怎么训练 Q 的模型呢,怎么估 Q-function你的做法是这样你会迭代地去训练这个 Q-function在每次迭代里面你从这个 buffer 里面随机挑一个 batch 出来,就跟一般的网络训练一样,你从那个训练集里面,去挑一个 batch 出来。你去采样一个 batch 出来,里面有一把的经验,根据这把经验去更新你的 Q-function。就跟 TD learning 要有一个目标网络是一样的。你去采样一堆 batch采样一个 batch 的数据,采样一堆经验,然后再去更新你的 Q-function。
当我们这么做的时候, 它变成了一个 `off-policy` 的做法。因为本来我们的 Q 是要观察 $\pi$ 的经验,但实际上存在你的 replay buffer 里面的这些经验不是通通来自于 $\pi$,有些是过去其他的 $\pi$ 所遗留下来的经验。因为你不会拿某一个 $\pi$ 就把整个 buffer 装满,然后拿去测 Q-function这个 $\pi$ 只是采样一些数据塞到那个 buffer 里面去,然后接下来就让 Q 去训练。所以 Q 在采样的时候, 它会采样到过去的一些资料。 当我们这么做的时候, 它变成了一个 `off-policy` 的做法。因为本来我们的 Q 是要观察 $\pi$ 的经验,但实际上存在你的 replay buffer 里面的这些经验不是通通来自于 $\pi$,有些是过去其他的 $\pi$ 所遗留下来的经验。因为你不会拿某一个 $\pi$ 就把整个 buffer 装满,然后拿去测 Q-function这个 $\pi$ 只是采样一些数据塞到那个 buffer 里面去,然后接下来就让 Q 去训练。所以 Q 在采样的时候, 它会采样到过去的一些资料。
@@ -359,8 +357,8 @@ A: 整体来说DQN 与 Q-learning 的目标价值以及价值的更新方式
* [Intro to Reinforcement Learning (强化学习纲要)](https://github.com/zhoubolei/introRL) * [Intro to Reinforcement Learning (强化学习纲要)](https://github.com/zhoubolei/introRL)
* [神经网络与深度学习](https://nndl.github.io/) * [神经网络与深度学习](https://nndl.github.io/)
* [强化学习基础 David Silver 笔记](https://zhuanlan.zhihu.com/c_135909947) * [强化学习基础 David Silver 笔记](https://zhuanlan.zhihu.com/c_135909947)
* [百面深度学习](https://book.douban.com/subject/35043939/)