Reinforcement Learning_P3
Critic
那上一次 RL 的部分,我们讲说我们要 Learn 一个 Actor,那这一次,我们要 Learn 另外一个东西,这个东西叫做 Critic
我会先解释 Critic 是什麽,然后我们再来讲说,这个 Critic 对 Learn Actor 这个东西,有什麽样的帮助

Critic 它的工作是要来评估一个 Actor 的好坏,就你现在已经有一个 Actor,它的参数叫 θ,那 Critic 的工作就是,它要评估说如果这个 Actor,它看到某个样子的 Observation,看到某一个游戏画面,接下来它可能会得到多少的 Reward
那 Critic 有好多种不同的变形,有的 Critic 是只看游戏画面来判断,有的 Critic 是说采取某,看到某一个游戏画面,接下来又发现 Actor 採取某一个 Action,在这两者都具备的前提下,那接下来会得到多少 Reward

那这样讲,还是有点抽象,所以我们讲的更具体一点,我们直接介绍一个,我们等一下会真的被用上,你在作业裡面真的派得上用场的,这个 Critic 叫做 ==Value Function==,那这个 Value Function,我们这边用大写的 来表示
它的输入是 s,也就是现在游戏的状况,比如说游戏的画面,那这边要特别注意一下 V,它是有一个上标 θ 的

这个上标 θ 代表这个 V ,它观察的对象是 θ 这个 Actor,它观察的这个 Actor 它的参数是 θ,那这个 V ,就是一个 Function,它的输入是 S,那输出是一个 Scalar,这边用 来表示这一个 Scalar
那 Scalar这个数值的含义是,这一个 Actor θ,放在上标的这个 Actor θ,它如果看到 Observation S,如果看到输入的这个 S 的游戏画面,接下来它得到的,Discounted Cumulated Reward 是多少
这个的 Value Function 它的工作,就是要去估测说,对某一个 Actor 来说,如果现在它已经看到某一个游戏画面,那接下来会得到的,Discounted Cumulated Reward 应该是多少
当然 Discounted Cumulated Reward,你可以直接透过把游戏玩到底,就你看到你已经有了 Actor θ,那假设它看到这个 State s,那最后它到底会得到多少的这个 G' ,你就把这个游戏玩完你就知道了
但是这些这个 Value Function,它的能力就是它要未卜先知,未看先猜,游戏还没有玩完,只光看到 S 就要预测这个 Actor,它可以得到什麽样的表现,那这个就是 Value Function 要做的事情
举例来说,假设你给 Value Function 这一个游戏画面,它就要直接预测说,看到这个游戏画面,接下来应该会得到很高的 Cumulated Reward,为什麽,因为游戏,这个游戏画面裡面还有很多的外星人

假设你的这个 Actor 它很厉害,它是一个好的 Actor,它是能杀得了外星人的 Actor,那接下来它就会得到很多的 Reward
那像这个画面,这已经是游戏的中盘

游戏的残局,游戏快结束了,剩下的外星人没几隻了,那可以得到的 Reward 就比较少,那这些数值,你把整场游戏玩完你也会知道,但是 Value Function 想要做的事情,就是未卜先知,在游戏没玩完之前,就先猜应该会得到多少的,Discounted Cumulated Reward
那这边有一件要跟大家特别强调的事情是,这个 Value Function 是有一个上标 θ 的,这 个 Value Function,跟我们观察的 Actor 是有关係的,同样的 Observation,同样的游戏画面,不同的 Actor,它应该要得到不同的,Discounted Cumulated Reward
我刚才在举例子的时候我说,假设我们有一个好的 Actor,看到这个游戏画面会有高的 Value,看到这个游戏画面会有低的 Value,但是假设你的 Actor 其实很烂,它很容易被外星人杀死,那也许看到这个画面,它的 Value 也是低的,因为有一堆外星人,它随便动两下它就被杀死了,它根本得不到 Reward,这个烂的 Actor 在这个画面,它可能拿到的 V 也是低的,所以 Value Function 的数值,是跟观察的对象有关係的,好 这个是 Critic
How to estimate
Monte-Carlo (MC) based approach
那在讲 Critic 要怎麽被使用,在 Reinforcement Learning 之前,我们来讲一下 Critic 是怎麽被训练出来的,那有两种常用的训练方法,第一种方法,是 Monte Carlo Based 的方法,这边缩写成 MC

如果是用 MC 的方法的话,你就把 Actor 拿去跟环境互动,互动很多轮,那 Actor 跟环境互动以后,Actor 去玩这个游戏以后,你就会得到一些游戏的记录
你就会发现说,那这个时候,你的 Value Function 就得到一笔训练资料,这笔训练资料告诉它说,如果看到 作为输入,它的输出,这个 应该要跟 G'a 越接近越好
那假设你今天 sample 到另外一个 Observation,看到另外一个游戏画面,把游戏玩完之后发现,得到的 Cumulated Reward 是 G'b,那这个时候,你的这个 Value Function ,输入 它就应该得到 ,那这个 就应该跟 G'b 越接近越好
那这个非常直觉,你就去观察 Actor,会得到的 Cumulated Reward,那观察完你就有训练资料,直接拿这些训练资料来训练 Value Function,好 这个 MC ,是一个很直觉的作法
Temporal-difference (TD) approach
接下来我们来看另外一个,没有那麽直觉的作法,这个作法叫做 Temporal-Difference Approach,缩写是 TD
那 Temporal-Difference Approach,它希望做到的事情是,不用玩完整场游戏,才能得到训练 Value 的资料,你**只要在某一个 Observation 的,看到 的时候,你的 Actor 执行了 At 得到 Reward rt,**然后接下来再看到 这样的游戏画面,光看到这样一笔资料,就能够训练 Vπ(S) 了,光看到这样子的资料,就可以拿来更新 Vπ(S) 的参数了
那如果光看这样一笔资料,就可以更新 Vπ(S) 的参数有什麽样的好处,它的好处是你想在 MC 裡面,你要玩完整场游戏,你才能得到一笔训练资料,那有的游戏其实很长,甚至有的游戏也许,它根本就没有不会结束,它永远它都一直继续下去,它永远都不会结束,那像这样子的游戏,你用 MC 就非常地不适合
那这个时候,你可能就希望採用 TD 的方法,好 那怎麽只看到这样子的资料,就拿来训练 Vπ(S)
这边举 一个例子,我们先来看一下, 跟 它们之间的关係

我们说,就是看到 之后的 Cumulated Reward,所以 就是 以此类推
然后 就是 以此类推
那你发现说这两个 Vθ, 跟 ,它们之间是有关係的
你可以把它写成这样一个式子,把 乘上 γ 再加 rt,把 每一项都乘 γ 再加上 rt,就会变成,所以 跟 中间,有这样子的关係
我们现在,有这样一笔资料以后,我们就可以拿来训练我们的 Value Function,希望 Value Function 可以满足,这边我们所写的这个式子

那什麽意思,就假设我们现在有这样一笔资料,我们就把 St,代到 Value Function 裡面得到,我们有 代到 Value Function 裡面,得到 ,虽然我们不知道 是多少,我们也不知道 应该是多少,我们没有这两个东西的标准答案,但我们知道它们相减应该是多少
根据上面这一个式子,我们把 乘上 γ,然后再去减,把 减掉 γ 乘 ,应该要跟 rt 越接近越好,rt 在这边,我们是有蒐集到 rt 这一笔资料的
我们又知道,跟这个 之间的关係,所以我们知道 减掉 γ 乘上 ,应该跟 rt 越接近越好,所以你就有了这样子训练资料,输入,输入 ,它们都通过 Vθ,然后把它们相减,然后要跟 rt 越接近越好
那这个就是 TD 的方法
MC v.s. TD
这两个方法,其实你拿来计算同样的,观察到 的结果,同样的资料,同样的 θ,你用 MC 跟 TD 来观察,你算出来的 Value Function,很有可能会是不一样的
那这边,就举一个例子,这个例子是这样子的,我们观察某一个 Actor,这个 Actor ,跟环境互动玩了某一个游戏八次,当然这边为了简化计算,我们假设这些游戏都非常简单,都一个回合,就到两个回合就结束了

-
所以那个 Actor 第一次玩游戏的时候,它先看到 这个画面,得到 Reware 0
-
接下来看到 这个画面,得到 Reware 0 游戏结束
-
接下来,这个有连续六场游戏,都是看到 这个画面,得到 Reward 1 就结束了
-
最后一场游戏,看到 这个画面,得到 Reward 0 就结束了
那我们这边,先无视 Actor,为了简化起见无视 Actor,我们也假设,γ 就等于 1,也就是没有做 Discount,好 那这个 应该是多少, 应该是多少
我们知道这个 ,它的意思就是这个看到 这一个画面,你会得到的 Reward 的期望值,那 这个画面,我们在这八次游戏中,总共看到了八次,每次游戏都有看到 这个画面,看到 这个画面之后会得到多少 Reward
八次游戏裡面,有六次得到 1 分,两次得到 0 分,所以平均是 3/4 分没有问题,所以 就是 3/4,妥妥的没有争议
那 应该是多少,你觉得看到 ,接下来应该要得到多少 Reward ,根据这八笔训练资料,看到 接下来该得到多少 Reward
几乎没有其他答案,所有人都说是 0,好 多数同学都说是 0,0 是不是一个正确的答案,它既对也不对
其实还有另外一个可能的答案是 3/4,我看没有人写 3/4,等一下来解释,为什麽有可能算出 3/4,但 0 也是一个合理的答案,为什麽你会觉得是应该是 0 ,0 是用 Monte-Carlo 的想法得到的
为什麽是 0,因为我们看到 只有一次,看到 以后会得到多少 Reward,这是 0,看到 以后得到 Reward 0,再看到 得到 Reward 还是 0,所以 Cumulated Reward 就是 0,所以如果从 Monte-Carlo 的角度来看,我们看到 ,接下来算出来的 G 应该是多少,就是 0 ,所以 应该就是 0,妥妥的没问题,几乎所有同学都得到了正确答案
但如果你