深度强化学习之模仿学习(Imitation Learning)

深度强化学习之模仿学习(Imitation Learning)  上一部分研究的是奖励稀疏的情况,本节的问题在于如果连奖励都没有应该怎么办,没有奖励的原因是,一方面在某些任务中很难定量的评价动作的好坏,如自动驾驶,撞死人和撞死动物的奖励肯定不同,但分别为多少却并不清楚,另一方面,手动设置的奖励可能导致不可控的行为。要解决此类问题,可以将人类专家的范例作为强化学习代理的参考去学习,因此模仿学习又叫演示学习(Learningbydemonstration)…

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

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

在这里插入图片描述
  上一部分研究的是奖励稀疏的情况,本节的问题在于如果连奖励都没有应该怎么办,没有奖励的原因是,一方面在某些任务中很难定量的评价动作的好坏,如自动驾驶,撞死人和撞死动物的奖励肯定不同,但分别为多少却并不清楚,另一方面,手动设置的奖励可能导致不可控的行为。要解决此类问题,可以将人类专家的范例作为强化学习代理的参考去学习,因此模仿学习又叫演示学习(Learning by demonstration)或学徒学习(Apprenticeship Learning)。下面将介绍两种模仿学习方法:行为克隆和逆向强化学习。
1、行为克隆(Behavior Cloning)
  行为克隆和监督学习的思想如出一辙,人类专家采取什么动作,代理就采取什么动作。以自动驾驶为例,收集很多人类专家的驾驶资料,这些资料的状态s是开车的场景,动作a是在此场景下的动作。把这些资料输入到神经网络中,使网络的输出尽可能地接近人类实际做出的动作,就可以完成任务。
在这里插入图片描述
  但是在这个过程中,专家观察到的状态是有限的。比如在实验中,让人去开车就都能顺利转弯,而不会出现撞墙的情况,而这时让代理去开车,如果某一时间它没能和人类专家一样及时转弯导致出现快撞墙的状态,由于人类专家并没有给出这种情况下的处理动作,代理就不知道下一步应该怎么办。一种解决方法就是让代理收集更多的数据——Dataset Aggregation。
在这里插入图片描述
Dataset Aggregation
在这里插入图片描述
  通过Behavior Cloning得到actor Π1,使用Π1与环境进行交互,即开车;让专家坐在车里观察所处的状态并告诉actor做出什么动作;但是actor并不会听取专家的建议,还是以actor的意愿开车,如果最终撞墙一个episode就结束了;这时actor就知道在快要撞墙的时候采取什么动作了,然后用这个新的数据去训练新的策略Π2;重复多次步骤1~4。 以上就是Dataset Aggregation的过程。
  从上面可以看出行为克隆很容易实现,但是也存在问题:

  1. 代理会完全复制专家的行为,不管这个行为对不对,因为没有奖励,代理会将人类专家的行为当成圣旨;
  2. 代理的学习能力有限,代理会选择错误的行为进行复制,那什么该学什么不该学就显得很重要;
  3. 有可能出现mismatch的问题(上面开车的例子)。

  什么是mismatch问题呢?
在这里插入图片描述
  在监督学习中,期望训练数据和测试数据具有相同的分布,而在行为克隆中,代理做出的动作是会影响后续状态的。因为神经网络的训练存在误差,训练出来的actor Π*与人类专家Π不可能完全一模一样,就会导致某个状态下,两者采取的动作不一样,自然而然就会导致后面的状态完全不同,最坏的情况就是actor遇到了专家从未遇到过的状态,这时actor就完全懵逼了,即失之毫厘,差之千里。
  所以,虽然行为克隆简单但是并不是一种很好的方法,所以就出现了第二种方法:逆向强化学习。
2、逆向强化学习(Inverse Reinforcement Learning,IRL)
在这里插入图片描述
  上面的左图是熟悉的强化学习的步骤,通过环境和奖励函数,最终得到理想的actor。右图是逆向强化学习的步骤,由于无法从环境中获得奖励,那就需要通过收集人类专家的资料和环境的信息,来反推奖励函数,推出奖励函数后就可以使用正常强化学习的做法了。
在这里插入图片描述
 emsp;具体来看逆向强化学习的运作步骤:

  1. 让专家先玩游戏,记录游戏过程,形成n个episode;
  2. actor再去玩游戏啊,记录游戏过程,形成n个episode;
  3. 设定一个奖励函数,这个奖励函数强制要求专家的累计得分一定要高于actor的累计得分;
  4. 有了奖励函数就可以使actor去更新出更强的actor;
  5. 当actor能在此时的奖励函数下得到很高的奖励(还是要求专家的得分高于actor),让actor根据新的奖励函数更新出更强的actor;
  6. 重复执行以上步骤。

  逆向强化学习可以实现只用很少的专家示范资料,就可以训练出一个很理想的actor。
  看了以上步骤,可以 想到,actor和奖励函数对应于GAN中的generator和discriminator。通过奖励函数的不断修正,使actor越来越接近专家的水平。
在这里插入图片描述

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/193153.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • java 和 C 代码运行效率的比较(整理)「建议收藏」

    java 和 C 代码运行效率的比较(整理)「建议收藏」最近和朋友无意间讨论起了有关java和C的效率问题,(我是java推介者,他是c语言推介者,他做的是嵌入式)故,想通过网络查询一下,总结一下,两者到底效率如何,其有何差异,原因

  • 顺序表的定义_顺序表的逻辑顺序和物理顺序

    顺序表的定义_顺序表的逻辑顺序和物理顺序顺序表的定义线性表的顺序存储又称为顺序表来看一个生活中的例子:周末和朋友一起吃火锅,人非常多,我们需要在等候区等候,这个等候区就与顺序表有非常多的相似之处,借助它去理解顺序表的特点。首先,在等候

  • doc2vec和word2vec(zigbee简介及应用)

    作者:GidiShperber在本文中,你将学习什么是doc2vec,它是如何构建的,它与word2vec有什么关系,你能用它做什么,并且没有复杂的数学公式。介绍文本文档的量化表示在机器学习中是一项具有挑战性的任务。很多应用都需要将文档量化处理,例如:文档检索,web搜索,垃圾邮件过滤,主题建模等。但是,要做到这一点好的方法不多。很多方法使用众所周知但简单化的词袋方法(BOW)…

  • TB6612FNG 驱动学习笔记

    TB6612FNG是东芝半导体公司生产的一款直流电机驱动器件,它具有大电流MOSFET-H桥结构,双通道电路输出,可同时驱动2个电机。TB6612FNG每通道输出最高1.2A的连续驱动电流,启动峰值电流达2A/3.2A(连续脉冲/单脉冲);4种电机控制模式:正转/反转/制动/停止;PWM支持频率高达100kHz;待机状态;片内低压检测电路与热停机保护电路;工作温度:-20~85℃;SSOP…

  • idea2021.10激活码永久【2021最新】

    (idea2021.10激活码永久)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html1STL5S9V8F-eyJsaWNlbnNlSWQi…

  • 《数据结构导论自考知识点(自己总结)》「建议收藏」

    《数据结构导论自考知识点(自己总结)》「建议收藏」《数据结构导论自考知识点》一、线性表:1、插入:从后往前挪,删除:从前往后挪2、顺序存储(方式:for循环)3、链式存储:{单链表的一个结点由两部分组成,数据元素和指针。datanext^^数据指针}二、栈、队列:4、栈:top++入栈,top–出栈5、队列:顺序队列,出队操作队首,指针后移一位,front=(front+1)%习题:一个二维数组,…

发表回复

您的电子邮箱地址不会被公开。

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