模仿学习(Imitation Learning)概述

模仿学习(Imitation Learning)概述本篇文章是基于台大李宏毅老师的课程写的,如有疏漏,请看原课程。https://www.youtube.com/watch?v=rl_ozvqQUU81.什么是模仿学习?模仿学习(ImitationLearning)也被称为基于演示的学习(LearningByDemonstration)或者学徒学习(ApprenticeshipLearning)。机器是可以与环境进行交互的,但…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

本篇文章是基于台大李宏毅老师的课程写的,如有疏漏,请看原课程。https://www.youtube.com/watch?v=rl_ozvqQUU8

模仿学习(Imitation Learning)概述1. 什么是模仿学习

模仿学习(Imitation Learning)也被称为基于演示的学习(Learning By Demonstration)或者学徒学习(Apprenticeship Learning)。

机器是可以与环境进行交互的,但是大部分情况下,机器却不能从这个过程中显示的获得奖励(例外是类似于马里奥之类的游戏,显然获得的分数就是奖励)。奖励函数是难以确定的,人工制定的奖励函数往往会导致不可控制的结果(比如,我想通过强化学习让机器人学会自动抓握物体,如果我设计的奖励函数是机器手与目标物体的距离,机器人可能会通过掀桌子等手段让目标物体靠近机器手,而不是像人类一样抓握)。因此我们考虑让机器学习人类的做法,来使得机器可以去做人类才能完成的事。

模仿学习主要有两种方式:行为克隆(Behavior Cloning)和逆向强化学习(Inverse Reinforcement Learning),接下来我们一一介绍。

 

2. 行为克隆(Behavior Cloning)

行为克隆是一种十分简单,十分直接的想法。假设我们有许多专家的示例数据,它们以这样的形式出现:<s1,a1>,<s2,a2>,…,<sn,an>,si代表当前的环境,ai代表当前环境下专家采取的动作。

模仿学习(Imitation Learning)概述

如上图所示,我们得到了这一串专家动作之后,直接丢到一个神经网络中,s是输入,a是输出,直接训练出一个结果。

这种想法显然存在很多问题,机器的输出太依赖专家的数据了,一旦出现了训练数据中没有的场景,机器的输出就会失去了参考,变得极其不靠谱。如下图所示,汽车正常行驶在路上,没有问题,机器可以把车开的很好,但是一旦车偏理了预定轨道,因为专家没遇到过这种情况,机器马上就不知道怎么开车了。另外,我们在此类问题中处理的都是一系列相关的环境和动作,如果我们处理的是独立同分布的数据,那错一个也就罢了,不影响,但是在此类问题中,极易出现一步错步步错的情况。

模仿学习(Imitation Learning)概述

针对这种问题,我们有数据增强(Data Aggregation)的手段,数据增强的手段有一些,大家可以通过查阅其他文献得到。在这个课程中,作者举的例子是我们假设车里面坐了一个专家,专家在每个不同的环境下都会给一个策略,但是机器仍然是按照原本的模型输出的策略行进的,这样子当汽车偏离的时候,虽然车可能依然会撞墙,但是此时专家就会把这个模型缺失的一部分数据补充上。

另外,行为克隆还有一个非常严重的问题,机器会学习到专家所有的行为,甚至是无关紧要的行为。这里作者举了一个很有意思的例子,在《生活大爆炸》中,霍华德在教谢尔顿中文,霍华德在说中文的同时,还不时用手指点,然后我们可爱的谢尔顿就在模仿口音的同时把动作也模仿了出来,以为这些动作是在这个文化中说话必须的。如果机器是原原本本的把这些行为全部学到为还好,至少没有什么坏处,但是更多的时候,机器是学习不全,学不到为的。比如,一个机器去学习一位企业家是如何成功的,他发现,企业家有如下几个特质:勤奋,智慧,领导力,“996福报论”。然后他觉得前面三个太难学习到了,因此只学会了最后一个,那广大劳动人民可要遭殃了。总结来说,机器只是机械的不完整的学习了人类的行为,没有抓住事务的本质。

总的来说,行为克隆本质上是一种有监督的学习,在现实应用中,很不靠谱。

3. 逆向强化学习(Inverse Reinforcement Learning)

上面我们提到,奖励函数十分难以确定,那么有没有一种方法可以去学习奖励函数呢?逆向强化学习算法应运而生。

如下图所示,传统的强化学习下方的箭头应该是从左到右的,基于奖励函数与环境交互,做出最大奖励的行为,但是在逆向强化学习算法中,这个过程却是从右向左进行,通过专家数据学习到奖励函数(注意,在逆向强化学习算法中从左到右也要走,后面会讲到)。

模仿学习(Imitation Learning)概述

逆强化学习的算法框架如下:

模仿学习(Imitation Learning)概述

我们通过专家数据,去学习一个奖励函数,再通过这个奖励函数去生成模型的轨迹。至于如何去学习这个奖励函数,我们给的指导就是要保证专家数据获得的奖励一定要比模型生成的数据的奖励要多。

我们仔细去研究这个过程,就会发现这个过程和GAN好像。上图右下角生成Actor和Actor轨迹的行为就像是GAN中的Generator,而右上角的奖励函数,起到的就是Discriminator的作用,用来去区分这个网络是不是专家生成的。Generator尽可能去寻找奖励最大的行为,而Discriminator则不断优化奖励函数,让专家的行为和模型的行为区分开来。关于GAN和逆向强化学习,我们在下篇文章中继续分析。

注意,在逆强化学习中,我们也要执行强化学习的步骤,因此逆强化学习的运算量是不小的。

模仿学习(Imitation Learning)概述

4. 应用

停车场导航:我们发现,因为在逆向强化学习中,数据只是作为一种演示,因此往往只需要很少的数据就能得到不错的结果。

机器人:这里作者举了两个例子,一个是First Person的,就是人类直接拿着机器人的手,手把手教着机器人去做事,另一种是Third Person的,就是通过观察人类的行为做事。

句子生成和对话机器人:其实,我们也可以把这两个任务看成是一个模仿学习的过程。环境是目前给你的语句,比如I’m,后面要生成一个action,比如fine。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/191651.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Django(20)ORM模型迁移命令

    Django(20)ORM模型迁移命令迁移命令makemigrations:将模型生成迁移脚本。模型所在的app,必须放在settings.py中的INSTALLED_APPS中。这个命令有以下几个常用选项:app_label:后面可

    2022年7月31日
    4
  • PyCharm 2022.01.13永久激活[最新免费获取]

    (PyCharm 2022.01.13永久激活)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~1…

    2022年3月31日
    113
  • 路由器有线桥接的两种方式异同

    路由器有线桥接的两种方式异同根据这篇文章 http www gezila com tutorials 46010 html 我小结下两种方式之要点及异同另主路由器为路由器 A 副路由器为路由器 B 方式一 LAN WAN1 A 的 LAN 口接到 B 的 WAN 口 2 B 的以太网接入方式 WAN 口接入类型 选择动态 ip 这个 ip 实质是由 A 的 DHCP 服务分配的 如图 可见 A 给 B 分配的 ip 地

    2025年6月17日
    0
  • HDFS命令_hadoop集群命令

    HDFS命令_hadoop集群命令hdfs常用命令:第一部分:hdfs文件系统命令第一类:文件路径增删改查系列:hdfsdfs-mkdirdir创建文件夹hdfsdfs-rmrdir删除文件夹dirhdfsdfs-ls查看目录文件信息hdfsdfs-lsr递归查看文件目录信息hdfsdfs-statpath返回指定路径的信息第二类:空间大小查看系列命令:hdfsdfs-du-hdir按照适合阅读的形式人性化显示文件大小hdfsdfs-dusuri递归显示目标

    2022年10月5日
    0
  • mac如何安装pip_mac怎么卸载python

    mac如何安装pip_mac怎么卸载pythonmac下直接安装pip和卸载pip的方法如下:1、pip的安装:输入sudoeasy_installpip就可以安装pip了。验证pip安装是否成功:输入:pip结果找不到文件。尝试输入:pip3-V或者pip3则说明已经安装成功了。2、pip的卸载:输入命令:sudopipuninstallpip然后输入密码后如下图:输入y,回车。即要卸载pip,再次用pip-V或者pip显示已经找不到文件,即卸载成功了。卸载不再做图片演示。注意:输入p

    2022年10月7日
    0
  • 安装cocoapods遇到error: RPC failed; curl 56 SSLRead() return error -36问题

    安装cocoapods遇到error: RPC failed; curl 56 SSLRead() return error -36问题

    2022年2月23日
    42

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号