Lee Hung-yi强化学习专栏系列博客主要转载自博主 qqqeeevvv,原专栏地址 课程视频 课件地址
上一篇笔记讲了reward很稀疏的情况,但是在实际中,可能问题还会更进一步:很多场景是很难有一个明确的reward甚至没有reward。所以需要很厉害的agent或者直接由人来示范的资料/数据,让agent跟着做。
本文会讲两个Imitation Learning的方法: 1)Behavior Cloning 2)Inverse Reinforcement Learning (IRL)
Behavior Cloning其实和监督学习(supervised learning)是一样的。 以自动驾驶为例子,搜集很多的expert(假设是人类)驾驶资料,这些资料的状态s是开车的场景,动作a是在此场景下做出的动作。把这些资料输入到Neural Network中,使网络输出的动作能尽可能接近实际人类做出的动作,就完成任务。 但是这个过程中,expert观察到state是有限的。比如在实验中,让人去开车,都能顺利转弯,没有出现撞墙的情况。而这时让agent去开车,如果某一时间它没及时转弯导致处于快撞墙的state,由于缺少相应的训练资料导致agent不知道接下来怎么做。
所以这时需要引入Dataset Aggregation稍微缓解下这个问题。 1)让actor π 1 \pi_1 π1开车 2)让一个专家坐在车子里观察所处状态并告诉actor 做出什么动作。 3)但是actor不会听取专家的建议,还是以actor的意愿去开车,最终就撞墙了,一个episode结束。 4)这时actor就知道在快要撞墙的时候要采取什么样的动作,然后用这个新的data去训练新的actor π 2 \pi_2 π2。 5)重复1234步……
以上就是Dataset Aggregation的过程
从上面我们可以看出Behavior Cloning很容易实现,但是它也有问题: 1)agent会完全复制expert的行为,不管这个行为对不对 2)agent的学习能力有限,没办法什么都学,有可能只学到不好的东西,没学到有价值的东西 3)有可能会遇到Mismatch的问题(上面开车那个例子)
这里再具体看一下第三点 在监督学习中,是希望训练数据和测试数据是独立同分布的。而在Behavior Cloning中,actor做出的action是会影响后续的state的(数据之间是有关联的,不是独立的)。因为Network的训练是有误差的,训练出来的actor π ∗ \pi^* π∗不可能完全和expert actor π ^ \hat{\pi} π^一模一样,就会导致某个state下,两者采取的action不一样,然后就导致后面的state完全不一样了,最坏的情况就是actor后面遇到的state是expert没遇到过的,这时actor就会完全不知道如何进行下去了。即,失之毫厘,差之千里。
所以,虽然Behavior Cloning简单但是并不是一个很好的办法,所以又有第二种方法Inverse Reinforcement Learning (IRL)
左图是熟悉的Reinforcement Learning的步骤,通过Environment和Reward function,最终更新出理想的Actor。
右图就是 Inverse Reinforcement Learning 的步骤,由于没办法从Environment获得reward,那就通过收集expert的资料还有Environment的信息,来反推Reward function,推出Reward function就能应用以前的Reinforcement Learning的做法了。 具体来看Inverse Reinforcement Learning怎么运作的。
1)expert π ^ \hat{\pi} π^ 去玩游戏,记录游戏过程,形成n个 τ ^ \hat{\tau} τ^,每个 τ ^ \hat{\tau} τ^代表1个episode。 2)actor π \pi π 去玩游戏,记录游戏过程,形成n个 τ \tau τ。 3)设定一个Reward Function,这个Reward Function强制要求expert的累计得分一定要高于actor的累计得分。 4)有了Reward Function就可以使actor去更新出更强的actor。(通过强化学习算法) 5)当actor能在此时的Reward Function达到很高的reward时,修改Reward Function(还是要求expert的得分一定要高于actor),让actor根据新Reward Function去更新出更强的actor。 6)重复上述步骤。
Inverse Reinforcement Learning可以实现只用很少量的expert的示范资料,就训练出一个很理想的actor。
看了以上的步骤,可以想到,actor和reward function就对应类似于GAN的generator和discriminator。通过reward function的不断修改,使actor越来越接近expert的水平。