【李宏毅深度强化学习笔记】8、Imitation Learning

【李宏毅深度强化学习笔记】1、策略梯度方法(Policy Gradient)

【李宏毅深度强化学习笔记】2、Proximal Policy Optimization (PPO) 算法

【李宏毅深度强化学习笔记】3、Q-learning(Basic Idea)

【李宏毅深度强化学习笔记】4、Q-learning更高阶的算法

【李宏毅深度强化学习笔记】5、Q-learning用于连续动作 (NAF算法)

【李宏毅深度强化学习笔记】6、Actor-Critic、A2C、A3C、Pathwise Derivative Policy Gradient

【李宏毅深度强化学习笔记】7、Sparse Reward

【李宏毅深度强化学习笔记】8、Imitation Learning(本文)

-------------------------------------------------------------------------------------------------------

【李宏毅深度强化学习】视频地址:https://www.bilibili.com/video/av63546968?p=8

课件地址:http://speech.ee.ntu.edu.tw/~tlkagk/courses_MLDS18.html

-------------------------------------------------------------------------------------------------------

上一篇笔记讲了reward很稀疏的情况,但是在实际中,可能问题还会更进一步:很多场景是很难有一个明确的reward甚至没有reward。所以需要很厉害的agent或者直接由人来示范的资料,让agent跟着做。

本文会讲两个Imitation Learning的方法:

  1. Behavior Cloning
  2. Inverse Reinforcement Learning (IRL)

Behavior Cloning

Behavior Cloning其实和监督学习(supervised learning)是一样的。 以自动驾驶为例子,搜集很多的expert(假设是人类)驾驶资料,这些资料的状态s是开车的场景,动作a是在此场景下做出的动作。把这些资料输入到Neural Network中,使网络输出的动作能尽可能接近实际人类做出的动作,就完成任务。

但是这个过程中,expert观察到state是有限的。比如在实验中,让人去开车,都能顺利转弯,没有出现撞墙的情况。而这时让agent去开车,如果某一时间它没及时转弯导致处于快撞墙的state,由于缺少相应的训练资料导致agent不知道接下来怎么做。

所以这时需要引入Dataset Aggregation稍微缓解下这个问题。

  1. 让actor \pi_1开车
  2. 让一个专家坐在车子里观察所处状态并告诉actor 做出什么动作。
  3. 但是actor不会听取专家的建议,还是以actor的意愿去开车,最终就撞墙了,一个episode结束。
  4. 这时actor就知道在快要撞墙的时候要采取什么样的动作,然后用这个新的data去训练新的actor \pi_2
  5. 重复1234步……

以上就是Dataset Aggregation的过程

从上面我们可以看出Behavior Cloning很容易实现,但是它也有问题:

  1. agent会完全复制expert的行为,不管这个行为对不对
  2. agent的学习能力有限,没办法什么都学,有可能只学到不好的东西,没学到有价值的东西
  3. 有可能会遇到Mismatch的问题(上面开车那个例子)

这里再具体看一下第三点

在监督学习中,是希望训练数据和测试数据有独立同分布的。而在Behavior Cloning中,actor做出的action是会影响后续的state的。因为Network的训练是有误差的,训练出来的actor 不可能完全和expert actor 一模一样,就会导致某个state下,两者采取的action不一样,然后就导致后面的state完全不一样了,最坏的情况就是actor后面遇到的state是expert没遇到过的,这时actor就会完全不知道如何进行下去了。即,失之毫米,差之千里。

所以,虽然Behavior Cloning简单但是并不是一个很好的办法,所以又有第二种方法Inverse Reinforcement Learning (IRL)

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 \pi\hat 去玩游戏,记录游戏过程,形成n个\tau\hat,每个\tau\hat代表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的水平。

发布了16 篇原创文章 · 获赞 26 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/ACL_lihan/article/details/104111622
今日推荐