行为克隆第三个缺点:在监督学习中,我们的数据都是符合独立同分布的,因此数据是无序的,但是在强化学习中,我们的动作存在顺序的不同了,比如 action
a
a
a出现在不同的时刻,导致最终的 reward
r
r
r 都是不同的,如果export的 action
a
a
a 序列和 agent的序列是相同的话还好,但是如果不同的话,就何难match住了,会产出mismatch,因此训练也就无效了。
二、Inverse Reinforcement Learning (逆强化学习)-A kind of GAN
inverse reinforcement learning 技术,刚好是reinforcement learning反过来的,我们有 actor,我们虽然不知道最好的 actor 是什么,但是我们有专家,专家去玩了 N 场游戏,告诉我们说厉害的人玩这个游戏,看起来就是怎么样的。根据专家的 demo,还有 environment 透过一个叫做 inverse reinforcement learning 的技术,我们可以推出 reward function 应该长什么样子。把 reward function 推出来以后,你就可以根据你推导出的 reward function。再去 apply reinforcement learning 的方法,去找出最好的 actor。所以你是用 inverse reinforcement learning 的方法去推出 reward function,再用 reinforcement learning 的方法去找出最好的 actor。
1、inverse reinforcement learning 原理
它的原则就是:你的老师,就是那些 experts 他永远是对的
什么意思,就是说,现在你一开始你有一个 actor,先随机的找出初始化一个 actor 出来
然后去用这个 actor 去跟环境做互动,那这个 actor 会得到很多的 trajectory。会得到很多的游戏纪录,然后接下来啊,你比较 actor 的游戏纪录跟老师的游戏纪录,
然后你订一个 reward function,一定要让老师得到的分数,比 actor 得到的分数高。就是先射箭,再画靶的概念,
就是 expert 去玩一堆游戏,他有一堆游戏的纪录,然后 actor 也去玩游戏,也有游戏的纪录,那我们不知道 reward function 是什么,等他们都玩完以后,再订一个 reward function,订的标准就是,老师,就是这个 expert 得到的分数一定要比学生还要高
学生说,好吧,虽然因为根据这个新的 reward,我是比较弱的。没关系,那我就再去学习,我想要 maximize 新的 reward function
actor 学到 maximize 新的 reward function 以后,他就再去跟环境互动,他就会得到新的 trajectory。他得到新的 trajectory 以后,他本来以为,他跟老师一样厉害了,但是不幸的就是,那个规则是会一直改的,当他变得跟老师一样厉害以后,我们再改一下规格,让老师算出来的分数,还是比较高,然后 actor 就只好很生气的,想办法学,想要跟老师做的一样好。就反复反复进行这个 process,最后,就可以找到一个 reward function
这整个 process,我们用图示画来表示一下,有一个 expert,他有 N 笔游戏纪录,然后你有一个 actor,它也有 N 笔游戏纪录。然后你要订一个 reward function,让 expert 得到的分数,永远赢过 actor。然后你接下来,反正你去找一个 reward function,老师一定是好的,它一定是不好的,接下来根据这个 reward function,你可以去学这个 actor,根据这个 reward function,你可以去学这个 actor,让这个 actor 根据这个 reward function,可以得到最好的分数。但等这个 actor 做得比较好之后,这个规则又变了,然后这个 process又反复的循环,这个 process,你有没有觉得很熟悉呢?它跟 GAN 的 process,其实是一模一样的。