热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

模仿学习(ImitationLearning)完全介绍(一)

在传统的强化学习任务中,通常通过计算累积奖赏来学习最优策略(policy),这种方式简单直接,而且在可以获得较多训练数据的情况下有较好的表现。然而在多步决策(sequentiald

在传统的强化学习任务中,通常通过计算累积奖赏来学习最优策略(policy),这种方式简单直接,而且在可以获得较多训练数据的情况下有较好的表现。然而在多步决策(sequential decision)中,学习器不能频繁地得到奖励,且这种基于累积奖赏及学习方式存在非常巨大的搜索空间。而模仿学习(Imitation Learning)的方法经过多年的发展,已经能够很好地解决多步决策问题,在机器人、 NLP 等领域也有很多的应用。

模仿学习是指从示教者提供的范例中学习,一般提供人类专家的决策数据《模仿学习(Imitation Learning)完全介绍(一)》
《模仿学习(Imitation Learning)完全介绍(一)》

在简单自动驾驶任务中(如下图),状态就是指汽车摄像头所观测到的画面《模仿学习(Imitation Learning)完全介绍(一)》
《模仿学习(Imitation Learning)完全介绍(一)》

但是不是我们完成训练后模型就能够有比较好的效果?答案是否定的,这里存在复合误差(compounding errors),训练好的策略模型《模仿学习(Imitation Learning)完全介绍(一)》
《模仿学习(Imitation Learning)完全介绍(一)》

数据增广(Data Augmentation)

为了解决误差随时间越来越大的问题,可以采用数据增广(Data Augmentation)方法,如下图,这是一个端对端的自动驾驶解决方案(NVIDIA 2016),汽车装配了左右两侧的摄像头与中央摄像头来获取当前观测的环境,并且能够通过 Back propagation 使其从错误状态中恢复。它在训练模型前人为地调整了环境不好时汽车的运动动作,另外,摄像头图像的识别采用的是卷积神经网络。

《模仿学习(Imitation Learning)完全介绍(一)》
《模仿学习(Imitation Learning)完全介绍(一)》

如果我们能够获取大量的训练数据形成一个合适的状态概率分布或者说样本空间,从而得到一个很好的策略模型同样能直接地解决这个问题(如图)。但这往往不太现实,因为需要耗费的成本太大。起初大部分研究者也几乎全在研究如何优化策略减少误差,并提出了很多方法,但都不是十分有效。

DAgger (Dataset Aggregation)

该方法则将研究目的从优化策略《模仿学习(Imitation Learning)完全介绍(一)》
《模仿学习(Imitation Learning)完全介绍(一)》
《模仿学习(Imitation Learning)完全介绍(一)》
《模仿学习(Imitation Learning)完全介绍(一)》

案例二使用了前面提到的 DAgger 方法,图中红线的位置是每个状态的标记,第三步即人工拖拽红线到合适的位置。论文见文末参考资料[5]。

《模仿学习(Imitation Learning)完全介绍(一)》
《模仿学习(Imitation Learning)完全介绍(一)》
《模仿学习(Imitation Learning)完全介绍(一)》
《模仿学习(Imitation Learning)完全介绍(一)》

结构化预测(Structured prediction)

结构化预测问题由输入空间《模仿学习(Imitation Learning)完全介绍(一)》
《模仿学习(Imitation Learning)完全介绍(一)》

除此之外,结构化预测在字幕生成、机器翻译等 NLP 领域也有应用。

下面是结构化预测在强化学习中的定义:

Sequence labelling

x = the monster ate the sandwich

y = Dt Nn Vb Dt Nn

  • State: 输入序列 x 和已经生成的标签
  • Actions: 下一个输出的标签
  • Reward: 当预测值和真实值符合时《模仿学习(Imitation Learning)完全介绍(一)》

    标题:A blue monster is eating a COOKIE

    • State: 图像信息和已经生成词句
    • Actions: 下一个输出的词语
    • Reward: 当预测值和真实值符合时《模仿学习(Imitation Learning)完全介绍(一)》
      《模仿学习(Imitation Learning)完全介绍(一)》

      在 RNN 模型中,对训练数据《模仿学习(Imitation Learning)完全介绍(一)》
      《模仿学习(Imitation Learning)完全介绍(一)》

      具体关于这个应用的细节可以参见论文:参考资料[8]。

      再举一个使用 LSTMs 的有监督模仿学习案例,如下图,机器人需要通过模仿学习学会拣起并放置小物块,这里的输入 X 是所有对象的姿势、旋转和位置情况,以及操纵装置的状态,输出 y 是操纵装置的下一个 pose。具体实现论文见参考资料[9]。

      《模仿学习(Imitation Learning)完全介绍(一)》
      《模仿学习(Imitation Learning)完全介绍(一)》

      模仿学习的方法还有 Interaction & active learning,Inverse reinforcement learning(IRL) 等。IRL 是应用比较多的一种方法,与其它方法直接模仿人类行为不同,它是根据观测来确定奖励函数,之后的文章会具体展开。

      最后再说下模仿学习的局限,一是需要人类专家提供数据这点通常得花大量精力,而且采用深度网络的学习方式又需要大量的数据;二是在一些复杂困难的行为里,我们无法提供相关的行为数据,比如飞机的花式表演。另外,人类可以自身的实践里获得越来越多的数据来实现自我的一步步提升,机器应该也可以逐渐达到这个效果。

      参考资料:

      1. CMU 10703: Deep RL and Control (Lecture 3/6)
      2. CS 294 Lecture 2-3
      3. 周志华《机器学习》强化学习-模仿学习部分
      4. Alessandro Giusti et al., A Machine Learning Approach to Visual Perception of Forest Trails for Mobile Robots
      5. Shreyansh Daftry et al.,Learning Transferable Policies for Monocular Reactive MAV Control
      6. Bagnell, An Invitation to Imitation
      7. Bojarski et al., End to End Learning for Self-Driving Cars
      8. “https://arxiv.org/abs/1607.05241”>Nguyen, Imitation Learning with Recurrent Neural Networks
      9. Rouhollah et al., Learning real manipulation tasks from virtual demonstrations using LSTM

推荐阅读
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • 本文介绍了一种轻巧方便的工具——集算器,通过使用集算器可以将文本日志变成结构化数据,然后可以使用SQL式查询。集算器利用集算语言的优点,将日志内容结构化为数据表结构,SPL支持直接对结构化的文件进行SQL查询,不再需要安装配置第三方数据库软件。本文还详细介绍了具体的实施过程。 ... [详细]
  • 统一知识图谱学习和建议:更好地理解用户偏好
    本文介绍了一种将知识图谱纳入推荐系统的方法,以提高推荐的准确性和可解释性。与现有方法不同的是,本方法考虑了知识图谱的不完整性,并在知识图谱中传输关系信息,以更好地理解用户的偏好。通过大量实验,验证了本方法在推荐任务和知识图谱完成任务上的优势。 ... [详细]
  • 本文介绍了一种图的存储和遍历方法——链式前向星法,该方法在存储带边权的图时时间效率比vector略高且节省空间。然而,链式前向星法存图的最大问题是对一个点的出边进行排序去重不容易,但在平行边无所谓的情况下选择这个方法是非常明智的。文章还提及了图中搜索树的父子关系一般不是很重要,同时给出了相应的代码示例。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • 本博文基于《Amalgamationofproteinsequence,structureandtextualinformationforimprovingprote ... [详细]
  • 在单位的一台4cpu的服务器上部署了esxserver,挂载了6个虚拟机,目前运行正常。在安装部署过程中,得到了cnvz.net论坛精华区 ... [详细]
  • plt python 画直线_机器学习干货,一步一步通过Python实现梯度下降的学习
    GradientDescent-梯度下降梯度下降法(英语:Gradientdescent)是一个一阶最优化算法,通常也称为最速下降法。要使用梯度下降法找 ... [详细]
  • 生产环境下JVM调优参数的设置实例
     正文前先来一波福利推荐: 福利一:百万年薪架构师视频,该视频可以学到很多东西,是本人花钱买的VIP课程,学习消化了一年,为了支持一下女朋友公众号也方便大家学习,共享给大家。福利二 ... [详细]
  • 交换机配置:intg100unshintvlani1ipadd192.168.56.177qstelseuser-iv4authaaaproinsshupl3qsshuserpyt ... [详细]
  • keras归一化激活函数dropout
    激活函数:1.softmax函数在多分类中常用的激活函数,是基于逻辑回归的,常用在输出一层,将输出压缩在0~1之间,且保证所有元素和为1,表示输入值属于每个输出值的概率大小2、Si ... [详细]
  • 题目描述http:acm.nyist.netJudgeOnlineproblem.php?pid306Dr.Kong设计的机器人卡多非常爱玩,它常常偷偷跑出实验室,在某个游乐场 ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
author-avatar
Dewey
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有