狗都能看懂的Imitation Learning的讲解

上一篇博客讲述了奖励稀疏时的训练方法。实际场景中,可能难度还会更大一些。很多场景很难有一个明确的reward,甚至没有reward。那么这里就提出模仿学习,即agent模仿expert的操作。具体两个方法是:Behavior Cloning、Inverse Reinforcement Learning

Behavior Cloning

动作克隆,其实本质上就是有监督学习,以自动驾驶为例子,让agent自己去开,不现实。一般的做法就是收集很多人类驾驶的训练样本,图中的s是开车的场景,a是在此场景下做出的动作。把这些资料输入到Neural Network中,使网络输出的动作能尽可能接近实际人类做出的动作,就完成任务。

在这里插入图片描述

但这个Behavior Cloning也是有缺点,expert通常是很有经验的,比较少犯错的。比如在驾驶中,expert是很少会在转弯中会撞墙。所以缺少了这部分的样本,agent在这些情况下就不知道如何处理

Behavior Cloning-2.png

这时候可以引入Dataset Aggregation可以缓解这个问题。

Behavior Cloning-3.png

  1. 通过行为模仿,训练一个actor π 1 \pi_1 π1
  2. π 1 \pi_1 π1去与环境做互动
  3. 遇到不同state的时候, π 1 \pi_1 π1询问expert的做法,但是不会采取expert的做法,如果这时候导致episode结束,那就拿着新数据(expert的做法作为label)训练。
  4. 这时actor就知道在快要撞墙的时候要采取什么样的动作,然后用这个新的data去训练新的 π 2 \pi_2 π2
  5. 重复1-4

Behavior Cloning-4.png

即使采用了Dataset Aggregation的Behavior Cloning,也有它的缺点,比如每次训练都需要expert试错,在特定的场景,比如自动驾驶,以撞车收集数据肯定不可行。其次expert不是所有行为都是好的,需要学习的。最关键的一点,强化学习的问题多数属于马尔科夫链,即下一个状态只和上一个状态有关,那所以上一个状态是错的,下一个状态就跟着错了,一步错步步错。那这个expert缺少这种数据,所以引导也很有限。

Inverse Reinforcement Learning

反向强化学习,比较通俗的解释就是,先射箭再画靶。

IRL-1.png

正常的Reinforcement Learning的步骤,是通过Environment和Reward function,最终更新出理想的Actor。

Inverse Reinforcement Learning的步骤,由于没办法从Environment获得reward,那就通过收集expert的训练数据和Environment的信息,来反推Reward function,推出Reward function再用以前的Reinforcement Learning的方法来训练Actor。

IRL-2.png

在具体的训练中,我们如何实操?

  1. 让expert π ^ \hat{\pi} π^去玩游戏,记录游戏过程,形成n个 τ ^ \hat{\tau} τ^,每个 τ ^ \hat{\tau} τ^代表一个episode。
  2. 让actor π \pi π去玩游戏,记录游戏过程,形成n个 τ \tau τ
  3. 设定一个reward function,这个reward function强制要求expert的累计得分一定要高于actor的累计得分。
  4. 用这个reward function训练出一个新的actor π \pi π,如果它的reward已经比expert高了,那就修改reward function,使得其 π \pi π获取的reward还是比expert低。
  5. 重复1-4

这个过程其实和GAN的训练很像,reward function就是一个判别器,actor则是一个生成器。actor需要不断提高自己,使得在新的reward function下,得到的reward越高越好。

Third Person Imitation Learning

第三人称视角的模仿学习,顾名思义,agent会观看expert的行为进行学习,这也是一个拟人的过程。这里就不展开讲解了,仅做记录。

Recap: Sentence Generation & Chat-bot

在这里插入图片描述

最后,也可以将强化学习用在句子生成上,即expert给定很多对话的素材,agent通过学习这些素材来生成人类会回答的句子。

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值