【李宏毅深度强化学习2018】P3 Q-learning(Basic Idea)

                             第三讲 Q-learning(Basic Idea)

视频地址:https://www.bilibili.com/video/av24724071?t=1121&p=3

PPT地址:http://speech.ee.ntu.edu.tw/~tlkagk/courses/MLDS_2018/Lecture/QLearning%20(v2).pdf

第一讲整理:【李宏毅深度强化学习2018】P1 Policy Gradient(Review)

第二讲整理:【李宏毅深度强化学习2018】P2 Proximal Policy Optimization (PPO)

Q-learning 是 value base 的方法,在这种方法中我们不是要学习一个 policy网络,而是要学一个 critic网络。critic 并不采取行为,只是针对现有的 actor \pi,评价它的好坏。

critic 给出了一个 value function V^\pi(s),代表在遇到游戏的某个 state 后,采取策略 \pi  一直玩到游戏结束,所能得到的 reward 之和

所以 V^\pi(s)(即critic)是个函数,一个网络(前两讲提到 actor 同样是个网络)。它的输入是某个state,输出是一个scalar标量。上图游戏画面中左边的 V^\pi(s) 很大,因为当前怪物比较多,防护罩也没被摧毁,从此时玩到游戏结束得到的 reward 就会比较多;而相对的右边的 V^\pi(s) 就比较小。综上 critic 的输出取决于两点:1是 state,2是 actor 的策略 \pi

怎么评价一个 critic 的好坏呢?

基于蒙特卡洛 Monte-Carlo(MC)based 的评价方法:

由于 critic 就是一个网络,所以我们可以训练它,训练的方法是,给定一个策略 \pi,在 S_a 的情况下,网络输出为 V^\pi(S_a)(代表预测的 reward);实际得到的 reward 为 G_a 。我们的目标就是让 V^\pi(S_a) 和 G_a 尽可能接近,这其实和 regression problem 很相似。

基于时序差分Temporal-difference base 的方法评价方法:

MC base 的策略需要在某个 state 后一直玩到游戏结束,但游戏若太长,这样就不合理。

TD base 只需要从 S_t 玩到 S_{t+1} 就行。因为 V^\pi(S_t)=V^\pi(S_{t+1})+r_t ,即 :

S_t 状态下采取策略 \pi 玩完游戏得到的 value   =  S_{t+1} 状态下采取策略 \pi 玩完游戏得到的 value  +  执行动作 a_t 得到的单步 r_t

所以我们比较 V^\pi(S_t)-V^\pi(S_{t+1}) 和 r_t 间的接近程度即可。

MC base 和TD base方法的比较

MC 方法的问题在于最后得到的 G_a 的方差很大(回顾一下, G_a 在 S_a 的情况下根据策略 \pi进行游戏得到的实际 reward. 其实是一个随机变量,因为游戏是有随机性的,每一次得到 G_a 是不一样的)。

因为 G_a 是很多步 reward 的求和,而根据公式 Var[kX]=k^2Var[X]每一步 reward 的方差累加后的方差会乘上 k^2。所以最后 G_a 的方差很大,即每次算出来的  V^\pi(S_a) 都会相差很多。

而用 TD base 中有随机性的部分是 r,它的方差比较小。但 TD 的问题在于 V^\pi(S_{t+1}) 可能很不准确。以下举例说明:

现在假如我们玩了8个 episode 的游戏,每一行对应一个episode,得到以下结果:

我们可以很直观的计算出 V^\pi(S_b)=3/4(6/8)(不论用 MC 方法还是 TD 方法)。但是根据 MC base 和 TD base 方法算出的 V^\pi(S_a) 是不一样的(可能是 3/4 或 0):

MC 方法的计算过程是,由于 S_a 只在第一个 episode 中出现,出现后根据策略 \pi 得到的 reward 是0,所以 V^\pi(S_a) =0

TD 方法的计算过程是,由于 S_a 只在第一个 episode 中出现,而 S_a 出现后跳到了 S_b ,所以 V^\pi(S_a)=V^\pi(S_b)+r=3/4+0=3/4.

MC 考虑的想法是 S_a 是一个非常不好的 state,出现 S_a 后 S_b 被影响只得到 0 的 reward,所以认为 V^\pi(S_a) 为0.

但TD考虑的想法是 S_a 后 S_b 得到 reward 为 0 只是一个巧合,与 S_a 无关,大部分情况下 S_b 还是会得到 3/4 的 reward,所以认为 V^\pi(S_a) 为3/4。(因为Sb在Sa之后)

另一种 critic 模型

而现在讨论的 Q function 的输入是一个 (s, a) 的 pair。这样相当于Q function 假设 state 下强制采取 action a

假设你的 action 是无法穷举的,那只能用上图左边的方法,把(s, a)一同作为输入;但若 action 有限,可以采用上图右边的方法,只输入s,然后分别输出在不同 action 情况下的输出值。

critic 看上去只能评价某个 action 的好坏,但是实际上可以直接用它来做 reinforcement learning(Q-learning)。方法是只要学到一个 \pi 的 Q function Q^\pi(s,a) ,就能有办法找到一个更好的 actor \pi',这样就能不断更新policy  \pi

什么叫 \pi'​​​​​​​ 比 π 好呢?

就是说面对所有 state s 时,使用策略 \pi'​​​​​​​ 得到的 value 一定比使用策略 \pi 得到的 value 大,即:V^{\pi'}(s)\geqslant V^\pi(s)

找 \pi'​​​​​​​ 的方法是,对于已经学到的 Q function  Q^\pi(s,a),在某个给定的 state 下,分别带入可能的 action,看看哪一个 action 使得函数值最大,把使得函数值最大的 a,作为以后面对该 state 时采取的 action

上图证明了 V^{\pi'}(s)\geqslant V^\pi(s)TODO

猜你喜欢

转载自blog.csdn.net/qq_36829091/article/details/84111047