【强化学习纲要】8 模仿学习

  • 8.1 模仿学习概要
  • 8.2 Behavioral cloning and DAGGER
  • 8.3 Inverse RL and GAIL
  • 8.4 进一步改进模仿学习的模型
  • 8.5 模仿学习和强化学习结合
  • 8.6 Case studies

周博磊《强化学习纲要》
学习笔记
课程资料参见: https://github.com/zhoubolei/introRL.
教材:Sutton and Barton
《 Reinforcement Learning: An Introduction》

8.1 模仿学习概要

  • 什么是模仿学习?

    • 模仿学习可以把它看作是对agent policy network的一种强监督学习,在训练这个agent的时候会告诉他正确的action是什么,每一步agent都会做出一个决策。
    • 在正常的强化学习里面,agent并没有及时得到反馈每一步对不对。模仿学习是说在每一步做出行为后就可以直接告诉agent当前这一步正确行为是什么,所以就可以把它看作对行为模型的监督学习。
    • 但是这两者也不完全一致,因为这里面也有很多问题,agent是在一个时序决策过程,所以它每一步做出的影响都会影响它后面做出的决策,所以把它当作一个纯粹的监督学习还是不能满足所有的需求的。

8.2 Behavioral cloning and DAGGER

  • 所以对于每一步的决策,很多情况下面可以采集到很多监督信号。比如说需要训练一个自动驾驶的车辆,最容易采集的就是直接在每一个出租车以及人前面装上摄像头,记录司机的行为,这样就会采集到很多的驾驶数据,那么我们可以把它转换成一个监督学习的任务,相当于使得模型每一步都模仿人类世界的行为。

    • 这就是模仿学习里面比较常见的一个算法:Behavioral cloning(BC),就是每一步都克隆人的行为。

Case Study: End to End Learning for Self-Driving Cars

  • DAVER-2 System By Nvidia: It works to some degree!
    自动驾驶的demo。

    • 在车上面记录前置摄像头以及司机的转向行为,记录数据。然后车就在无人驾驶的情况下面输入In-vehicle camera,自动针对前置摄像头观测到的数据来进行决策。
  • 利用72小时人类开车的数据作为训练

    有3个摄像头,把3个摄像头采集到的数据放入CNN网络,这里训练也同时记录了人类对方向盘的操控,用方向盘的操控作为一个训练,这样就可以得到训练强监督的办法,训练开车的agent。然后就可以在真实场景里面开车。

    但显而易见这样有很大的缺陷,比如你没法控制让agent左转还是右转,它只会从输入直接给一个输出,所以里面还有很多不足的地方。但是这个工作证明了Behavioral cloning是可以正常运作的。
  • Example code of behavior clone: https://github.com/Az4z3l/CarND-Behavioral-Cloning

Case Study: Trail following as a classification轨迹跟踪

  • A. Giusti, et al. A Machine Learning Approach to Visual Perception of Forest Trails for Mobile Robot. IEEE trans on Robotics and
    Automation

  • https://youtu.be/umRdt3zGgpU

监督模仿学习的局限性

  • 训练好的policy没法训练off-course situation。也就是说如果进入到之前没有的状态,他就不知道怎么做了。训练这个模型的时候其实用的离线数据,离线数据采集好后就固定下来了。
  • agent进入之前并没有见到的状态后,会发生错误,会随着时间 TTT 上面已知累加,会进入一个完全未知的状态。在这种情况下就没法进行一个正常的行为。
  • 现在我们的问题是,怎么让agent采集到的数据和实际面临的数据分布尽可能一致?

Annotating More On-Policy Data Iteratively

我们可以采取的一个办法是一直保证采取更多的数据。

  • 在我们训练好一个agent后,我们可以让这个agent在这个环境里面进行运作;
  • 如果进入之前没有的状态,我们就把这个状态收集过来,让人给一个标签,就可以收集到这种状态,放入数据库,就可以重新收集policy网络。
  • 就可以在我们deploy(部署)这个数据的时候采集更多的数据,就使得之前的数据库变得越来越完善,训练出来的agent也会越来越好。

DAgger: Dataset Aggregation数据集集合

这也是DAgger的核心。

  • 它希望解决的问题是希望pdata(ot)p_{data}(o_t)pdata​(ot​)的分布和policy 采集到的数据pπθ(ot)p_{{\pi}_{\theta}}(o_t)pπθ​​(ot​)尽可能一致。
  • 它采取的办法是,利用初步的human data训练一个agent;让agent在环境里面进一步采集,和环境交互采集到另外一个数据库;让人给新采集到的数据进行标签;把它组合到原来的数据库里面去。再重新训练policy,这样迭代的过程就可以采集到越来越多更实际的数据,这样就可以让agent在运作的过程中,遇到的数据都是在训练数据中出现过的。
  • 局限性是第三步是很耗时的过程。
  • 因此这里可以改进的办法是可以在第三步的时候可以用其他的算法。因为有些其他的算法可能是个速度比较慢的算法,因为这里是个离线的过程可以允许比较慢的算法,或者可以用优化的办法来search最佳的结果。因此第三步可以用其他算法来产生标签这样就可以完善它的数据集,来训练policy network。

8.3 Inverse RL and GAIL

Inverse Reinforcement Learning (IRL)

  • 左边是普通强化学习的情况。在强化学习里面是给定了环境,也给定了奖励函数,通过强化学习可以对价值函数以及决策函数进行参数化来优化参数。
  • 右边是逆强化学习。面临的问题是相反的,给定了环境,行为(可能是policy network也可能是expert的一些示教(数据)),我们希望从这些数据里面去反推reward function。相当于我们可以把reward function进行建模变成需要去优化的一个函数。通过观测到数据去优化reward function,训练出reward function后,我们可以去新训练这个agent,模仿这个Expert agents/demonstrations的行为。

Guided Cost Learning

  • Finn, et al, ICML’16. https://arxiv.org/pdf/1603.00448.pdf

    大致思想是由一个human demonstrations,用human demonstrations和机器人得到了行为,训练一个cost function cθc_{\theta}cθ​去优化函数,使得和policy optimization结合起来,可以使得policy network的行为和human network的行为越来越一致。

Generative Adversarial Imitation Learning(GAIL)生成对抗模仿模型

  • 仿照的是GAN,GAN是在数据生成里面利用非常广的算法,利用了对抗损失函数的方法,来训练generator GGG。在GAN模型里面由generator GGG生成七 和discriminator DDD辨别器 。generator的目的是产生数据欺骗discriminator,discriminator的目的是区分开generator生成的虚假和真实的数据。通过对抗的原理就可以得到generator和discriminator。
  • GAIL是模仿了GAN的思想。可以把demonstration trajectory τ\tauτ看成是sample xxx;把policy π\piπ~q(τ)q(\tau)q(τ)看成generator GGG;把reward function rrr看成discriminator DDD。
  • 我们希望训练一个generator可以产生轨迹使得discriminator没法区分出是human产生的轨迹还是生成模型产生的轨迹。
  • Ho and Ermon,NIPS’16. https://arxiv.org/pdf/1606.03476.pdf

IRL和GAIL的联系

  • 在Guided Cost Learning里面是希望训练一个reward function,使得human demonstration可以maximized cost function,robot attempt可以minimized cost function。
  • 在GAIL环境下面是训练了一个discriminator,是个binary分类器,使得discriminimator对robot attempt和human domostrations的区分越来越小。
  • Finn, Christiano, et al. A connection between GANs, Inverse RL, and Energy-based Models. https://arxiv.org/pdf/1611.03852.pdf
    这篇论文揭示了这三者之间的联系。

8.4 进一步改进模仿学习的模型

  • 这里比较重要的一点是我们采集到的demonstration很多时候可能是在同一个状态下面有多个可能的解。
    比如像绕开这棵树,可以从左边也可以从右边走。

    但是在采集的时候只能采集到其中一条数据。
  • 因此我们希望改进能够解决:
    • Multimodal behavior多模态行为
    • Non-Markovian behavior非马尔可夫行为
  • 比较直接的改进是可以把policy network建成一个mixture of Gaussians,即多峰的高斯分布的输出。因为这样的多峰的可以由很多个mode,这样就可以输出很多个action的行为。
  • 另外我们可以把policy network进一步改进,让它实际采集的input behavior 观测把之前的观测都考虑进来,做出下一步的决策行为。

    所以我们输入的情况下可以把之前帧尽可能多的放到网络里面,这样这个网络就可以通过之前很多帧做出正确的决策。
  • 更进一步的改进,比如把LSTM加入里面,把之前帧的信息做一个整合,再输出当前应该做出怎么样的行为。这样使得它做出更准确的决策。

Case Study: Learning from demonstration using LSTM

  • Rahmatizadeh et al. Learning real manipulation tasks from virtual demonstrations using LSTM. AAAI 2018
  • 很多机器人的应用里面imitation learning都是非常重要的,因为机器人的setup下,是非常贵的。如果纯粹通过强化学习trial and error的方法,去尝试的话很难学到好的policy。最好的办法是让人控制手臂,采集到demonstration,然后让机器人结合demonstration来学习就可以极大的提高它的效率。
    比如说这个工作就是在一个虚拟环境下面,通过控制一个手柄采集到了示教的数据,然后把采集到的示教的数据用到机械臂上。
  • 模型中利用LSTM当成监督学习来训练它的模型。这里也用到了Mixture of Gaussians 来处理多峰的模型,因为机器人模型要控制很多jiont model,所以输出是一个连续的输出。
  • 但是这样的机械臂控制也有一个问题,怎样scale up(提高)它的 demonstration?因为在控制手臂的时候他都是通过人来控制机器人,去示教它的值。

    比如之前的那个是人为的控制了650次demonstrations。
  • 因此我们提出可以用==Crowd-sourcing(众包)==的办法来采集数据。

RoboTurk: Crowdsourcing Robotic Demonstrations

  • RoboTurk is a crowdsourcing platform that is collecting human demonstrations of tasks such as “picking” and “assembly”;
  • 137.5 hours of demonstration for two tasks
  • 1071 successful picking demonstrations and 1147 assembly demonstrations

模仿学习的缺点

  • 必须人为的收集数据,数据并不是很好的收集到。
  • 有些比较复杂的机械情况下面,人并不是很好的提供数据,比如六旋翼的飞行桨很难通过一个遥控来采集数据
  • 人的行为有的时候是非监督学习

8.5 模仿学习和强化学习结合

  • 模仿学习:

    • 优点:

      • 简单稳定的监督学习
    • 缺点:
      • 需要提供demonstration
      • distributional shift(分配移位),data分布不一致
      • 只能和demo一样好
  • 强化学习:
    • 优点:

      • 可以取得比demo(人)更好的结果
    • 缺点:
      • 需要定义好reward function
      • 需要平衡exploration和exploitation
      • Potentially non-convergent
  • 怎样结合起来?在训练的过程中既有人的示教demonstration又有reward function?

Simplest Combination: Pretrain预训练 & Finetune微调

  • 最简单的一个方法是pretraining预训练的方法。先采集到人为的数据,然后把人为的数据监督学习得到一个初步的策略网络。得到策略网络后,再进一步用强化学习来改进初步得到的策略网络。
  • Pretrain预训练 & Finetune微调

    先利用demonstration data,通过监督的方法得到网络;
    再进一步改进策略。
  • == DAgger==

    相对于DAgger,是先采集human data,得到data set;
    然后把data set里面data都进行标定;
    再合成新的数据库,再训练policy。

Pretrain & Finetune for AlphaGo

  • SL Policy Network:通过监督学习采集到人类选手下围棋的30million的moves 的数据,通过监督的办法先训练了policy network,
  • RL policy network:然后把policy network放到self-play里面,通过强化学习的办法进一步finetune weight,这样就可以得到一个超人的行为。
  • David Silver, et al. Mastering the ancient game of Go with Machine Learning. Nature 2016

Pretrain & Finetune for Starcraft2

  • https://deepmind.com/blog/alphastar-mastering-real-time-strategy-game-starcraft-ii/
  • 首先采集人类的行为训练出policy
  • 采用Population-based and multi-agent reinforcement learning

Problem with the Pretrain & Finetune


当得到了一个初步的policy network后,用强化学习来训练的时候,强化学习采集到的experience可能本身是非常糟糕的,会直接摧毁policy network。
那么在这个过程中,怎么让它不要忘记demonstrations呢?

Solution: Off-policy Reinforcement Learning

  • Off-policy RL是可以用任何experience,是可以把人类施教的experience也放到buffer里面。
  • 把demonstration当作data在每一步都提供。
  • Off-policy policy gradient (with importance sampling)
  • Off-policy Q-learning

Policy gradient with demonstrations

Guided Policy Search

Q-learning with demonstrations

  • Vecerik et al., ‘17, “Leveraging Demonstrations for Deep Reinforcement Learning on Robotics Problems with Sparse Rewards

Imitation learning as an auxiliary loss function

  • Hybrid objective: we can combine RL and imitation learning objective

    第一部分是强化学习本身需要优化expectation over reward function,另外一半是直接优化极大似然imitation learning。
    面临问题:放KaTeX parse error: Undefined control sequence: \lamda at position 1: \̲l̲a̲m̲d̲a̲

Hybrid policy gradient

  • Rajeswaran et al., ‘17, “Learning Complex Dexterous Manipulation with Deep Reinforcement Learning and Demonstrations”

Hybrid Q-Learning

  • Hester et al., AAAI’18, “Deep Q-learning from Demonstrations”

8.6 Case studies

Case Study: Motion Imitation

  • 把这个reference motion表征成一个sequence of target poses
  • 定义一个reward function
  • First term is imitation objective (imitate the reference motion),
    second term is task dependent
  • Train with PPO
  • Imitation reward is carefully designed
  • Peng et al. SIGGRAPH’18. DeepMimic: Example-Guided Deep Reinforcement Learning of Physics-Based Character Skills
    https://xbpeng.github.io/projects/DeepMimic/index.html
  • Follow-up work: how to get rid of MoCap data(在人身上贴很多标定点)
  • Learning dynamics from videos
  • Vision-based pose estimator
  • Peng, et al. SFV: Reinforcement Learning of Physical Skills from Videos Transactions on Graphics (Proc. ACM SIGGRAPH Asia 2018) https://bair.berkeley.edu/blog/2018/10/09/sfv/

Two Major Problems in Imitation Learning

  • How to collect expert demonstrations

    • Crowdsourcing
    • Guided policy search or optimal control for trajectory optimization
  • How to optimize the policy for off-course situations
    • Simulate those situations to collect new labels
    • Use off-policy learning with the already collected samples
    • Combine IL and RL

Conclusion

  • Imitation learning is an important research topic to bridge machine learning and human demonstration

    • Robot learning (learn from few samples)
    • Inverse reinforcement learning
    • Active learning
    • etc
  • Recent survey: An Algorithmic Perspective on Imitation Learning: https://arxiv.org/pdf/1811.06711.pdf

【强化学习纲要】8 模仿学习相关推荐

  1. 深度强化学习之:模仿学习(imitation learning)

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

  2. 强化学习纲要(周博磊课程)

    提示:阅读本文需要一定的深度学习基础. 课程链接:https://www.bilibili.com/video/BV1LE411G7Xj 我以前的强化学习笔记,相同的内容在下面就不再赘述: 1.强化学 ...

  3. 8. 强化学习之——模仿学习

    目录 课程大纲 Introduction & Behavioral Cloning DAGGER algorithm to improve BC[就是在BC中引入了online iterati ...

  4. 李宏毅强化学习完整笔记!开源项目《LeeDeepRL-Notes》发布

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale开源 核心贡献者:王琦.杨毅远.江季 提起李宏毅老师,熟悉强化学习的读者朋友一 ...

  5. 《强化学习周刊》第10期:强化学习应用之计算机视觉

    No.10 智源社区 强化学习组 强 化 学  习 研究 观点 资源 活动 关于周刊 强化学习作为人工智能领域研究热点之一,它在计算机视觉领域中的应用研究进展与成果也引发了众多关注.为帮助研究与工程人 ...

  6. 一周上榜新书:强化学习、深度学习最受程序员关注

    4月出版了很多新书,上周有两本书最受程序员关注,<动手学强化学习>和<PyTorch深度学习实战>位于一周榜单TOP10.现在和小编一起来看看有哪些新书上榜. 1.动手学强化学 ...

  7. 强化学习从基础到进阶-案例与实践[3]:表格型方法:Sarsa、Qlearning;蒙特卡洛策略、时序差分等以及Qlearning项目实战

    [强化学习原理+项目专栏]必看系列:单智能体.多智能体算法原理+项目实战.相关技巧(调参.画图等.趣味项目实现.学术应用项目实现 专栏详细介绍:[强化学习原理+项目专栏]必看系列:单智能体.多智能体算 ...

  8. 强化学习教程来啦!贡献者来自中科院、清华、北大3位男神!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale开源 核心贡献者:王琦.杨毅远.江季 导读 半年前,Datawhale开源项目 ...

  9. B站学强化学习?港中文周博磊变身up主,中文课程已上线

    本文经机器之心(微信公众号:almosthuman2014)授权转载,禁止二次转载 机器之心整理 众所周知,B 站是一个学习网站.在看完罗翔老师的刑法课之后,是时候探索人工智能了. 新冠疫情还未退散, ...

最新文章

  1. web集群时session同步的3种方法
  2. 其他系统 对外接口设计_领导:项目有个接口要对外开放,小张你来设计一下?...
  3. css怎样通过超链接更改背景,css超链接的底色如何设置
  4. 取消挂载点可以节省磁盘么_Linux下NTFS格式外接硬盘的挂载,取消挂载和开机自动挂载...
  5. 数据库开发——MySQL——多表查询
  6. android菜鸟学习笔记27----Fragment的简单使用
  7. 数据结构与算法:树与二叉树python实现
  8. Delphi 设计模式:《HeadFirst设计模式》Delphi代码---模式小结之一个叫声接口和几只鸭子[转]...
  9. 第五节:框架前期准备篇之锁机制处理并发
  10. 机器学习和人工智能的初学指南
  11. mysql8.0.13 32位下载_MySQL8.0下载-MySQL数据库8.0下载 v8.0.11官方版(32位/64位)--pc6下载站...
  12. JSP中动态includ与静态includ的区别
  13. html制作搜狗主页,自学htmlcss之仿搜狗主页(示例代码)
  14. String类型直接赋值与构造赋值
  15. 设计灵感|优秀案例教你如何像杂志一样排版?
  16. java生成可执行文件_关于打包java文件并生成可执行文件的问题
  17. Webpack——样式处理
  18. crossover卸载 linux,Ubuntu中卸载CrossOver困难?那是你没学会这个命令
  19. c语言中pinMode的作用,Arduino编程基础与常用函数(详细)解析
  20. 自定义键盘KeyboardView如何添加点击音效

热门文章

  1. 在Windows和Linux系统中,有以下常用的磁盘修复命令
  2. mysql加索引,数据库卡死
  3. 核心期刊对论文重复率有什么要求?
  4. Java城市集结圈子
  5. Java+Jsoup爬虫微博
  6. 规则引擎一:IBM规则引擎 ODM入门
  7. webmin漏洞复现集合
  8. 为什么电脑默认硬盘是“C”盘?C盘文件能恢复吗?
  9. 同花顺量化交易平台Supermind股票量化思路--爱问财初探
  10. 08-数据科学的基础:数据收集之市场调查_04 深度访谈