【逆强化学习-0】Introduction

文章目录

  • 专栏传送门
  • 0.引言
  • 1.逆强化学习发展历程
  • 2.需要准备的

专栏传送门

0.简介
1.学徒学习
2.最大熵学习

0.引言

\qquad相比于深度学习,国内强化学习的教程并不是特别多,而相比强化学习,逆强化学习的教程可谓是少之又少。而本人想将整理到的资料融合到一块并记录下来,因此开辟了这个分栏。有关这个领域的应用倒是有很多博客可以参考,但真正介绍原理很清楚的博客很少,因此本系列以介绍原理为主,辅助代码实验。
\qquad逆强化学习(Inverse Reinforcement Learning,IRL)其实是模仿学习(Imitation Learning,IL)的一种,与普通IL方法不同的是,其通过学习Expert,求得Environment的奖励函数Reward,再结合正强化学习(Forward Reinforcement Learning),达到与环境互动,模仿专家系统行为的目的。
\qquad与普通强化学习不同,强化学习虽然不像监督学习一样需要知道样本的标签,但是需要知道每一个样本对应的奖励函数Reward;然而逆强化学习则利用人类的行为求取这个Reward。在这个过程中会遇到各种问题,但是成功的案例也不少,最典型的要数美国berkly大学做的机器人摆盘子和倒弹珠的实验:

http://rll.berkeley.edu/gcl

在这里插入图片描述
\qquad在该实验中,机器人将10个盘子依次摆放到对应位置是一个特定的强化学习任务,这个任务的损失函数很难人为界定,但是可以通过人工演示正确的范例来让机器人加以学习,从而达到学习环境奖励函数并优化Policy的目的。

\qquadIRL领域open-access的papers有很多,可惜本人水平有限,理解太浅。虽说知乎和CSDN的大V们也做过很多介绍,可惜看了之后都是失望大于期望的,这些博客大多参考了国外的课程,可惜播放源大多数都不是国内源,虽说打不开,本人将链接也贴在下方以作参考。

  1. 莫烦python-强化学习系列
  2. 台湾大学-深度强化系学习系列视频(非国内源)
  3. 台湾大学-模仿学习简介(非国内源)
  4. 美国Berkly大学-模仿学习课程(非国内源)
  5. 模仿学习(行为克隆+逆强哈学习)教学(非国内源)

1.逆强化学习发展历程

IRL的重要论文(OpenAI提供的论文)

论文链接

\qquad如果翻看近些年IRL的论文就会发现,其IRL的思想早在2000年左右就已经提出了,但它的热门期也是随着2013年Deep RL的出现而开始的。目前主要的方法有以下几种:

  1. 学徒学习(Apprenticeship Learning, 2004)
  2. 最大熵学习(Maximum Entropy Learning,2010)
  3. 引导损失函数学习(Guided Cost Learning,2016)
  4. Gail(Generative Adversarial Imitation Learning,2016)
  5. DeepMimic(Example-Guided Deep Reinforcement Learning of Physics-Based Character Skills,2018)
  6. Vail(Variational Discriminator Bottleneck: Improving Imitation Learning,2018)
  7. MetaMimic(One-Shot High-Fidelity Imitation,2018)

\qquad本人在这个领域也属于小白水平,目前只大概了解了前4种方法的原理,若有错误或不清晰的地方,还望大家指正(后续系列方法的整理会持续更新)。
\qquadIRL与RL一样,它的分类方法也基本遵循了以下原则(图片来自OpenAI的spiningup官网):
在这里插入图片描述
\qquad首先出现的Model-Free的方法,其次出现Model-Based方法。在Model-Free方法中,大家也是先研究Q-Learning系列的(Value-Based)方法,然后再研究Policy-Based方法。这里的Model指的是Dynamic Model,在MDP中指状态转移概率(矩阵),很多时候这个矩阵无法求得,就必须依赖Model-Free的方法,通常Model-Free都是基于Policy Optimization或者Sample Based的,以下是一些Model-Based和Model Free的IRL方法整理。

Model-BasedModel-Free
Maximum Margin Optimization, Apprenticeship Learning, Maximum Entropy Learning, Deep Maximum Entropy LearningRelative Entropy Learning, Path Integral Entropy Learning, Guided Cost Loss, Model-Free Imitation Learning via Policy Optimization

\qquad在深度学习盛行之后,也出现了很多IRL的Deep Learning的方法,当然,只要知道了梯度如何计算,其实深度学习和线性函数是一回事。

2.需要准备的

博客篇幅不宜过长,因此以下基础知识内容本系列的博客不会再详细赘述,还望读者自行学习,毕竟基础不牢地动山摇嘛

  1. 强化学习的基础知识(可以看引言中莫烦的视频,或者参考OpenAI官网教程)在这里插入图片描述
  2. 深度学习的基本理论(其实这才是最好学的,好在B站有不少,在这里就不作推荐了)
  3. 概率论的基础知识(说实话,高数和线代用的不是特别多,但是对概率论基础知识的掌握还是非常必要的)
  4. Linux的开发环境(强化学习的仿真环境gym目前只支持Linux呀,虽说有人在Windows上成功了,但也不是Official Support的)

\qquad后续会根据第一章提到的发展历程更新这个系列的博客,欢迎同道之人交流探讨!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/544430.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

不知道Mysql排序的特性,加班到12点,认了认了!

小弟新写了一个功能,自测和测试环境测试都没问题,但在生产环境会出现偶发问题。于是,加班到12点一直排查问题,终于定位了的问题原因:Mysql Limit查询优化导致。现抽象出问题模型及解决方案,分析给大家&…

js中==与===的区别

2019独角兽企业重金招聘Python工程师标准>>> 1、对于string,number等基础类型,和是有区别的 1)不同类型间比较,之比较“转化成同一类型后的值”看“值”是否相等,如果类型不同,其结果就是不等 2&#xff09…

c语言中memcpy函数_带有示例的C中的memcpy()函数

c语言中memcpy函数memcpy()函数 (memcpy() function) memcpy() is a library function, which is declared in the “string.h” header file - it is used to copy a block of memory from one location to another (it can also be considered as to copy a string to anothe…

【逆强化学习-1】学徒学习(Apprenticeship Learning)

文章目录0.引言1.算法原理2.仿真环境3.运行4.补充(学徒学习深度Q网络)本文为逆强化学习系列第1篇,没有看过逆强化学习介绍的那篇的朋友,可以看一下:Inverse Reinforcement Learning-Introduction 传送门 0.引言 \qquad…

面试官:HashMap有几种遍历方法?推荐使用哪种?

作者 | 磊哥来源 | Java面试真题解析(ID:aimianshi666)转载请联系授权(微信ID:GG_Stone)HashMap 的遍历方法有很多种,不同的 JDK 版本有不同的写法,其中 JDK 8 就提供了 3 种 HashMa…

HTML 5 input placeholder 属性

<input placeholder"请先选择组织" type"text" value"" </input>placeholder 属性提供可描述输入字段预期值的提示信息&#xff08;hint&#xff09;。 该提示会在输入字段为空时显示&#xff0c;并会在字段获得焦点时消失。 注释&…

【逆强化学习-2】最大熵学习(Maximum Entropy Learning)

文章目录0.引言1.算法原理2.仿真0.引言 \qquad本文是逆强化学习系列的第2篇&#xff0c;其余博客传送门如下&#xff1a; 逆强化学习0-Introduction 逆强化学习1-学徒学习 \qquad最大熵学习是2008年出现的方法&#xff0c;原论文&#xff08;链接见【逆强化学习0】的博客&#…

uselocale_Java扫描仪useLocale()方法与示例

uselocale扫描器类useLocale()方法 (Scanner Class useLocale() method) useLocale() method is available in java.util package. useLocale()方法在java.util包中可用。 useLocale() method is used to use this Scanner locale to the given locale (lo). useLocale()方法用…

面试官又整新活,居然问我for循环用i++和++i哪个效率高?

前几天&#xff0c;一个小伙伴告诉我&#xff0c;他在面试的时候被面试官问了这么一个问题&#xff1a;在for循环中&#xff0c;到底应该用 i 还是 i &#xff1f;听到这&#xff0c;我感觉这面试官确实有点不按套路出牌了&#xff0c;放着好好的八股文不问&#xff0c;净整些幺…

UVa 988 - Many Paths, One Destination

称号&#xff1a;生命是非常多的选择。现在给你一些选择&#xff08;0~n-1&#xff09;&#xff0c;和其他选项后&#xff0c;分支数每一次选择&#xff0c;选择共求。 分析&#xff1a;dp&#xff0c;图论。假设一个状态也许是选择的数量0一个是&#xff0c;代表死亡&#xff…

Java PrintWriter close()方法与示例

PrintWriter类close()方法 (PrintWriter Class close() method) close() method is available in java.io package. close()方法在java.io包中可用。 close() method is used to close this stream and free all system resources linked with the stream. close()方法用于关闭…

pipedreader_Java PipedReader ready()方法与示例

pipedreaderPipedReader类ready()方法 (PipedReader Class ready() method) ready() method is available in java.io package. ready()方法在java.io包中可用。 ready() method is used to check whether this PipedReader stream is ready to be read or not. ready()方法用…

面试官:如何实现 List 集合去重?

作者 | 磊哥来源 | Java面试真题解析&#xff08;ID&#xff1a;aimianshi666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;本文已收录《Java常见面试题》系列&#xff0c;开源地址&#xff1a;https://gitee.com/mydb/interviewList 去重指的…

Windows重装Anaconda3失败解决方案【重装失败10来次首次成功的案例!】

文章目录0.环境1.原因2.解决方案0.环境 Win10 Anaconda3 2018版 python 3.7.1 注意&#xff01;此种情况只会在windows上发生&#xff0c;因为在linux上你只需要删除anaconda3整个文件夹&#xff0c;重新安装一定会成功&#xff01; 1.原因 Anaconda肯定是没有成功安装的&am…

java写入文件的几种方法分享

转自&#xff1a;http://www.jb51.net/article/47062.htm 一&#xff0c;FileWritter写入文件 FileWritter, 字符流写入字符到文件。默认情况下&#xff0c;它会使用新的内容取代所有现有的内容&#xff0c;然而&#xff0c;当指定一个true &#xff08;布尔&#xff09;值作为…

python读取pcd点云/转numpy(python2+python3,非ROS环境)

0.引言 \qquadROS的PCL库支持python读取点云&#xff0c;ROS1关联的是python2&#xff08;2.7&#xff09;&#xff0c;ROS2关联的是python3&#xff08;>3.5&#xff09;&#xff0c;但这对于windows的用户和没装ROS的ubuntu用户似乎不够友好。下面就介绍两种不需要ros的方…

Java中List排序的3种方法!

作者 | 王磊来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;在某些特殊的场景下&#xff0c;我们需要在 Java 程序中对 List 集合进行排序操作。比如从第三方接口中获取所有用户的列表&…

setdefault_Java语言环境setDefault()方法及示例

setdefault语言环境类setDefault()方法 (Locale Class setDefault() method) setDefault() method is available in java.util package. setDefault()方法在java.util包中可用。 setDefault() method is used to assign the default locale for this Locale instance of the JV…

Spring 事务失效的 8 种场景!

在日常工作中&#xff0c;如果对Spring的事务管理功能使用不当&#xff0c;则会造成Spring事务不生效的问题。而针对Spring事务不生效的问题&#xff0c;也是在跳槽面试中被问的比较频繁的一个问题。点击上方卡片关注我今天&#xff0c;我们就一起梳理下有哪些场景会导致Spring…

xcode6 AsynchronousTesting 异步任务测试

xcode集成了非常方便的测试框架&#xff0c;XCTest 在xcode6之后&#xff0c;提供了 <XCTest/XCTestCaseAsynchronousTesting.h> 利用此我们可以直接在XCTest里面测试一些异步的任务&#xff0c;比如异步网络请求 如下示例 - (void)testExample {XCTestExpectation *exce…