热门标签 | 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

推荐阅读
  • 掌握DSP必备的56个核心问题,我已经将其收藏以备不时之需! ... [详细]
  • LeetCode 实战:寻找三数之和为零的组合
    给定一个包含 n 个整数的数组,判断该数组中是否存在三个元素 a、b、c,使得 a + b + c = 0。找出所有满足条件且不重复的三元组。 ... [详细]
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
  • 在使用 SQL Server 时,连接故障是用户最常见的问题之一。通常,连接 SQL Server 的方法有两种:一种是通过 SQL Server 自带的客户端工具,例如 SQL Server Management Studio;另一种是通过第三方应用程序或开发工具进行连接。本文将详细分析导致连接故障的常见原因,并提供相应的解决策略,帮助用户有效排除连接问题。 ... [详细]
  • 手指触控|Android电容屏幕驱动调试指南
    手指触控|Android电容屏幕驱动调试指南 ... [详细]
  • 本文总结了JavaScript的核心知识点和实用技巧,涵盖了变量声明、DOM操作、事件处理等重要方面。例如,通过`event.srcElement`获取触发事件的元素,并使用`alert`显示其HTML结构;利用`innerText`和`innerHTML`属性分别设置和获取文本内容及HTML内容。此外,还介绍了如何在表单中动态生成和操作``元素,以便更好地处理用户输入。这些技巧对于提升前端开发效率和代码质量具有重要意义。 ... [详细]
  • 本文介绍了如何在iOS平台上使用GLSL着色器将YV12格式的视频帧数据转换为RGB格式,并展示了转换后的图像效果。通过详细的技术实现步骤和代码示例,读者可以轻松掌握这一过程,适用于需要进行视频处理的应用开发。 ... [详细]
  • 贪心策略在算法设计中的应用与优化
    贪心算法在算法设计中具有广泛的应用,特别是在解决优化问题时表现出色。本文通过分析经典问题“买卖股票的最佳时机II”,探讨了贪心策略的基本原理及其在实际问题中的应用。通过实例分析,展示了贪心算法如何通过局部最优选择逐步达到全局最优解,并讨论了其在时间和空间复杂度上的优势。此外,还提出了一些优化方法,以提高算法的效率和适用性。 ... [详细]
  • 如何正确安装Python:详细步骤与常见问题解答
    本文详细介绍了如何正确安装Python,包括环境准备、下载与安装过程、路径配置等关键步骤,并针对初学者常见的安装问题提供了详细的解答和解决方案,帮助读者顺利搭建Python开发环境。 ... [详细]
  • 每日精选Codeforces训练题:1119E(贪心算法)、821C(栈模拟)和645D(拓扑排序)
    题目涉及三种不同类型的算法问题:1119E(贪心算法)、821C(栈模拟)和645D(拓扑排序)。其中,1119E的问题背景是有n种不同长度的棍子,长度分别为2^0, 2^1, …, 2^(n-1),每种棍子的数量为a[i]。任务是计算可以组成的三角形数量。根据三角形的性质,任意两边之和必须大于第三边。该问题可以通过贪心算法高效解决,通过合理选择棍子组合来最大化三角形的数量。 ... [详细]
  • 在 Linux 系统中,`/proc` 目录实现了一种特殊的文件系统,称为 proc 文件系统。与传统的文件系统不同,proc 文件系统主要用于提供内核和进程信息的动态视图,通过文件和目录的形式呈现。这些信息包括系统状态、进程细节以及各种内核参数,为系统管理员和开发者提供了强大的诊断和调试工具。此外,proc 文件系统还支持实时读取和修改某些内核参数,增强了系统的灵活性和可配置性。 ... [详细]
  • 2019年斯坦福大学CS224n课程笔记:深度学习在自然语言处理中的应用——Word2Vec与GloVe模型解析
    本文详细解析了2019年斯坦福大学CS224n课程中关于深度学习在自然语言处理(NLP)领域的应用,重点探讨了Word2Vec和GloVe两种词嵌入模型的原理与实现方法。通过具体案例分析,深入阐述了这两种模型在提升NLP任务性能方面的优势与应用场景。 ... [详细]
  • 微软发布紧急安全更新,所有Windows 10版本均面临影响!
    微软于周五紧急发布了两项安全更新,旨在解决Windows 10所有版本中Windows Codecs库和Visual Studio Code应用存在的安全隐患。此次更新是继本周初发布的月度例行安全补丁之外的额外措施,凸显了这些问题的紧迫性和重要性。这些漏洞可能被攻击者利用,导致系统权限提升或远程代码执行等严重后果。建议用户尽快安装更新,以确保系统的安全性。 ... [详细]
  • 如果你对 IntelliJ IDEA 的界面不太熟悉,可能会对如何在 Android Studio 中执行一些常见任务感到困惑。本文提供了多种开发技巧和实用窍门,帮助开发者更好地利用 Android Studio 的强大功能,包括界面导航、代码调试和项目管理等方面,使开发过程更加高效顺畅。 ... [详细]
  • 本文通过复旦大学自然语言处理课程中的一个具体案例,详细解析了中文词汇分割技术的实现方法。该案例利用Java编程语言,结合词典和算法模型,展示了如何高效地进行中文文本的词汇分割,为相关研究和应用提供了宝贵的参考。 ... [详细]
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社区 版权所有