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

文章目录

  • 1. 介绍Imitation Learning
  • 2. Behavior Cloning
  • 3. Inverse RL

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 s1s_1s1​会采取 action a1a_1a1​ ,人在 state s2s_2s2​会采取 action a2a_2a2​。人在 state s3s_3s3​会采取 action a3a_3a3​。接下来,你就 learn 一个 network。这个 network 就是你的 actor,它 input sis_isi​的时候,你就希望它的 output 是aia_iai​,就这样结束了。它就是一个的 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 次,杯子每次放的位置不太一样。用这种方法来教机械手臂。

Imitation Learning相关推荐

  1. 【加州理工】什么是模仿学习(Imitation Learning(模仿学习), 这62页ppt带你了解进展...

    来源:专知 [导读]Imitation Learning(模仿学习)机器学习新的研究热点之一,因其能很好的解决强化学习中的多步决策(sequential decision)问题,近段时间得到了广泛关注 ...

  2. 深度学习课程笔记(七):模仿学习(imitation learning)

    深度学习课程笔记(七):模仿学习(imitation learning) 2017.12.10 本文所涉及到的 模仿学习,则是从给定的展示中进行学习.机器在这个过程中,也和环境进行交互,但是,并没有显 ...

  3. 【李宏毅2020 ML/DL】P115-117 Actor-Critic Sparse Reward Imitation Learning

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 关于强化学习,我专门花半年时间学习实践过,因此这里笔记只记录李老师的 outline .我的强化学习资源仓库: ...

  4. 从《西部世界》到GAIL(Generative Adversarial Imitation Learning)算法

    原文链接:https://blog.csdn.net/jinzhuojun/article/details/85220327 一.背景 看过美剧<西部世界>肯定对里边的真实性(fideli ...

  5. 论文理解【IL - 数据增广】 —— Adversarial Imitation Learning with Trajectorial Augmentation and Correction

    标题:Adversarial Imitation Learning with Trajectorial Augmentation and Correction 发表:ICRA 2021 文章链接:Ad ...

  6. 机器人学习Robot Learning之模仿学习Imitation Learning的发展

    1 前言 在上一篇文章最前沿:机器人学习Robot Learning的发展 - 知乎专栏 中,我们介绍了机器人学习Robot Learning这个方向的发展趋势,并介绍了部分基于DRL的方法,那么在本 ...

  7. 8.Imitation Learning模仿学习(李宏毅)

    1.简介 模仿学习有人又称为学徒制学习,示范学习,但又有人觉得只有逆向强化学习才能称为学徒制学习.示范学习就是人类示范给机器,让机器去模仿学习. 不同于加强学习,在模仿学习中,机器可以与环境互动,但并 ...

  8. imitation learning 前沿论文

    1 前言 在上一篇文章最前沿:机器人学习Robot Learning的发展 - 知乎专栏 中,我们介绍了机器人学习Robot Learning这个方向的发展趋势,并介绍了部分基于DRL的方法,那么在本 ...

  9. 【论文笔记】Reinforcement and Imitation Learning for Diverse Visuomotor Skills

    目录 Abstract Introduction Related Work Model A. Background: GAIL and PPO 1. 行为克隆(Behavior Cloning) 2. ...

最新文章

  1. “高龄”员工如何给家庭保障
  2. php+tcc,64位Linux环境安装PHP TCC扩展方法
  3. codeforce 603B - Moodular Arithmetic
  4. CentOS常用到的查看系统命令
  5. React开发(116):ant design search引入
  6. 如何在终端编译C++代码
  7. 介绍4个大神常用而你不常用的python函数--assert,map,filter,reduce
  8. 【算法导论】第15章动态规划
  9. 在线切换主题颜色无效_HeyUI组件库 | 如何实现在线切换主题
  10. 科研小技巧——论文投稿视频制作指南
  11. 强化学习之混合动作空间
  12. 编程之类的文案_最萌编程高手是这样炼成的
  13. 通信原理:信源编码(一)
  14. javascript实现鼠标移动两个小人的动画效果
  15. Atitit.跨语言反射api 兼容性提升与增强 java c#。Net  php  js
  16. ActiveMQ——消息的生产和消费
  17. 开源协议 - 几张开源协议比较
  18. Docker镜像和容器相关命令
  19. humps在matlab中什么意思,[转载]Humps函数
  20. oracle sql语句备份数据库,用SQL语句备份SQL数据库_oracle

热门文章

  1. OFFICE 制作邀请函
  2. 星座运势预测,python爬虫
  3. Missing instance name in instantiation of '*'.
  4. 人脸核身--第二篇--启用 H5人脸认证
  5. 题目 1026: [编程入门]数字逆序输出
  6. ukf实测信号的预测 matlab,ukf(无迹卡尔曼滤波)算法的matlab程序.
  7. 飞桨day-04 NLP实践作业
  8. vue项目 element表格数据行转列数据互转
  9. 使用树莓派3B、RTL-SDR、OpenWebRX搭建无线电监测站
  10. 精华文章置顶--CDC系列之一 :使用Dejournal Filter在InterSystems IRIS/Caché上通过Mirroring实现CDC功能...