Imitation Learning

本文介绍了模仿学习(Imitation Learning),包括行为克隆(Behavior Cloning)和逆向强化学习(Inverse RL)。在无法获取明确奖励的情况下,通过专家示范进行学习。行为克隆通过监督学习模仿专家行为,但受限于训练数据的局限性。逆向强化学习则尝试从专家演示中反推奖励函数,以找到最优策略。
摘要由CSDN通过智能技术生成

Imitation Learning,也被称作learning from demonstration 或者 apprenticeship learning。针对的是没有回报的场景。

1. 介绍Imitation Learning

在 Imitation learning 里面,你有一些 expert 的 demonstration,那 machine 也可以跟环境互动,但它没有办法从环境里面得到任何的 reward,它只能看着 expert 的 demonstration 来学习什么是好,什么是不好。其实,多数的情况,我们都没有办法真的从环境里面得到非常明确的 reward。举例来说,如果是棋类游戏或者是电玩,你有非常明确的 reward。但是其实多数的任务,都是没有 reward 的。以 chat-bot 为例,机器跟人聊天,聊得怎么样算是好,聊得怎么样算是不好,你无法给出明确的 reward。所以很多 task 是根本就没有办法给出 reward 的。

虽然没有办法给出 reward,但是收集 expert 的 demonstration 是可以做到的。举例来说,

  • 在自动驾驶汽车里面,虽然你没有办法给出自动驾驶汽车的 reward,但你可以收集很多人类开车的纪录。
  • 在 chat-bot 里面,你可能没有办法定义什么叫做好的对话,什么叫做不好的对话。但是收集很多人的对话当作范例,这一件事情也是可行的。

2. Behavior Cloning

在这里插入图片描述
其实 Behavior Cloning 跟 supervised learning 是一模一样的。以自动驾驶汽车为例,你可以收集到人开自动驾驶汽车的所有资料,比如说可以通过行车记录器进行收集。看到这样子的 observation 的时候,人会决定向前。机器就采取跟人一样的行为,也向前,就结束了。这个就叫做 Behavior Cloning,Expert 做什么,机器就做一模一样的事。

怎么让机器学会跟 expert 一模一样的行为呢?就把它当作一个 supervised learning 的问题,你去收集很多行车记录器,然后再收集人在那个情境下会采取什么样的行为。你知道说人在 state s 1 s_1 s1会采取 action a 1 a_1 a1 ,人在 state s 2 s_2 s2会采取 action a 2 a_2 a2。人在 state s 3 s_3 s3会采取 action a 3 a_3 a3。接下来,你就 learn 一个 network。这个 network 就是你的 actor,它 input s i s_i si的时候,你就希望它的 output 是 a i a_i ai,就这样结束了。它就是一个的 supervised learning 的 problem。

Behavior Cloning 虽然非常简单,但它的问题是如果你只收集 expert 的资料,你可能看过的 observation 会是非常有限的。

举例来说,

  • 假设你要 learn 一部自动驾驶汽车,自动驾驶汽车就是要过这个弯道。如果是 expert 的话,它就是把车顺着这个红线就开过去了。但假设你的 agent 很笨,它今天开着开着,就开到撞墙了,它永远不知道撞墙这种状况要怎么处理,为什么?因为 training data 里面从来没有撞过墙,所以它根本就不知道撞墙这一种 case 要怎么处理。
  • 打电玩也是一样,让人去玩 Mario,那 expert 可能非常强,它从来不会跳不上水管,所以机器根本不知道跳不上水管时要怎么处理。

在这里插入图片描述
一般的解决方案就是收集更多expert在各种极端情况下的解决方案。

这里还存在另外两个问题:
在这里插入图片描述

  • 机器会学习它不该不学习的行为。不管 expert 的行为是否有道理,就算没有道理,没有什么用的,就算这是 expert 本身的习惯,机器也会硬把它记下来。机器甚至有可能只学到了不该学的行为,而没有学到关键的行为

在这里插入图片描述

  • 在做 Behavior Cloning 的时候,training data 跟 testing data 是 mismatch 的(data distribution 不同)。training data 是来自专家的policy产生的, testing data是来自我们的Actor的Policy产生的,假设两个 policy 一模一样, 在同一个 state 都会采取同样的 action,那你接下来所看到的 state 都会是一样的。可是这两个Policy如果有一点点的不同,结果都会差的很多(因为是序贯决策问题)

所以 Behavior Cloning 并不能够完全解决 imitation learning 这件事情。所以就有另外一个比较好的做法叫做 Inverse Reinforcement Learning。

3. Inverse RL

在这里插入图片描述
为什么叫 Inverse Reinforcement Learning,因为原来的 Reinforcement Learning 里面,有一个环境和一个 reward function。根据环境和 reward function,通过 Reinforcement Learning 这个技术,你会找到一个 actor,你会 learn 出一个optimal actor。

但 Inverse Reinforcement Learning 刚好是相反的,你没有 reward function,你有一堆 expert 的 demonstration,以及可以互动的环境。把所有 expert demonstration 收集起来,然后,使用 Inverse Reinforcement Learning 这个技术去反推出 reward function 长什么样子。你有了reward function 以后,接下来,你就可以套用一般的 reinforcement learning 的方法去找出 optimal actor。所以 Inverse Reinforcement Learning 是先找出 reward function,找出 reward function 以后,再去用 Reinforcement Learning 找出 optimal actor。

在这里插入图片描述
IRL的主要思想是先射箭再画靶。

  • 先利用exprt去玩游戏产生游戏记录,再用我们目前的Actor去玩游戏也产生一些记录;
  • 接下来由此制定一个reward function,制定的标准就是expert的评分一定高于我们的Actor;
  • 有了reward function 之后我们根据这个RF,去训练我们的Actor(最大化reward);
  • 然后我们再用新的actor与环境互动,由于我们根据上一版本的reward function进行了训练,它已经可以在这个 reward function 得到高分,所以我们需要重新调整 reward function,保证expert的打分要高于我们的Actor。
  • 如此重复即可。

什么叫做一个最好的 reward function。最后你 learn 出来的 reward function 应该就是 expert 和 actor 在这个 reward function 都会得到一样高的分数。最终你的 reward function 没有办法分辨出谁应该会得到比较高的分数。

你有没有觉得这个东西,看起来还挺熟悉呢?其实你只要把它换个名字,说 actor 就是 generator,然后说 reward function 就是 discriminator,它就是 GAN。所以它会不会收敛这个问题就等于是问说 GAN 会不会收敛。如果你已经实现过,你会知道不一定会收敛。但除非你对 R 下一个非常严格的限制,如果你的 R 是一个 general 的 network 的话,你就会有很大的麻烦。
在这里插入图片描述

IRL 有很多的 application,比如可以用开来自动驾驶汽车,有人用这个技术来学开自动驾驶汽车的不同风格。每个人在开车的时候会有不同风格,举例来说,能不能够压到线,能不能够倒退,要不要遵守交通规则等等。每个人的风格是不同的,然后用 Inverse Reinforcement Learning 可以让自动驾驶汽车学会各种不同的开车风格。
在这里插入图片描述
比如说,在这个例子里面是要让自动驾驶汽车学会在停车场里面停。这边的 demonstration 是这样,蓝色是终点,自动驾驶汽车要开到蓝色终点停车。给机器只看一行的四个 demonstration,然后让它去学怎么样开车,最后它就可以学出,在红色的终点位置,如果它要停车的话,它会这样开。今天给机器看不同的 demonstration,最后它学出来开车的风格就会不太一样。举例来说,上图第二行是不守规矩的开车方式,因为它会开到道路之外,这边,它会穿过其它的车,然后从这边开进去。所以机器就会学到说,不一定要走在道路上,它可以走非道路的地方。上图第三行是倒退来停车,机器也会学会说,它可以倒退,
在这里插入图片描述
这种技术也可以拿来训练机器人。你可以让机器人,做一些你想要它做的动作,过去如果你要训练机器人,做你想要它做的动作,其实是比较麻烦的。怎么麻烦呢?过去如果你要操控机器的手臂,你要花很多力气去写 program 才让机器做一件很简单的事看。假设你有 Imitation Learning 的技术,你可以让人做一下示范,然后机器就跟着人的示范来进行学习,比如学会摆盘子,拉着机器人的手去摆盘子,机器自己动。让机器学会倒水,人只教它20 次,杯子每次放的位置不太一样。用这种方法来教机械手臂。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值