8. 强化学习之——模仿学习

8. 强化学习之——模仿学习课程大纲注:本文所有内容源自于B站周博磊老师更新完的强化学习纲要课程,听完之后获益很多,本文也是分享我的听课笔记。周老师Bilibili视频个人主页:https://space.bilibili.com/511221970?spm_id_from=333.788.b_765f7570696e666f.2感谢周老师:)…


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

目录

课程大纲

Introduction & Behavioral Cloning

DAGGER algorithm to improve BC【就是在BC中引入了online iteration,2011】

Inverse RL & GAIL

Inverse RL

GAIL

Connection between IRL & GAIL

改进模仿学习的性能

模仿学习与强化学习结合

(1)最简单直接的结合:预训练和调整 Pretrain and Finetune【应用十分广泛】

(2)IL 结合 Off-Policy RL:算是对 Pretrain and Finetune 的改进

(3)另一种结合方式:把 IL 作为一项辅助的损失函数

一个有趣的 Case Study—— motion imitation

IL 本身存在的问题

总结


课程大纲

模仿学习介绍

行为克隆 BC 和 DAGGER 算法

逆强化学习 IRL 和 生成对抗模仿学习GAIL

改进模仿学习的性能

把模仿学习和强化学习结合

Introduction & Behavioral Cloning

从最简单的行为克隆方法开始介绍:比较简单的思想就是把策略的学习当做有监督的学习来进行,例如学习出来策略网络

8. 强化学习之——模仿学习

这样直接把它当做一个有监督的问题来解决的话其实是有问题的:数据的分布假设相矛盾 —— 有监督学习假设数据是 IID 的,但是一个时序的决策过程采集到的数据是有关联的;而且如果模型进入到 off-course 状态(训练时没见到过的状态)时不知道怎么回来

8. 强化学习之——模仿学习

一个可能的解决方案就是:不断添加数据,变成 online 的过程

DAGGER algorithm to improve BC【就是在BC中引入了online iteration,2011】

8. 强化学习之——模仿学习

8. 强化学习之——模仿学习

DAGGER 的缺点在于第三步实在是太耗费时间了,可以改进 DAGGER 吗?第三步是不是可以用其他的算法来打标签呢?

改进DAGGER:

8. 强化学习之——模仿学习

Inverse RL & GAIL

Inverse RL

IRL 与 RL 的对比:

8. 强化学习之——模仿学习

IRL的举例:

8. 强化学习之——模仿学习

GAIL

类似于 IRL,GAN 学习了一个目标函数用于生成模型,GAIL 模仿了 GAN 的思想

8. 强化学习之——模仿学习

Connection between IRL & GAIL

8. 强化学习之——模仿学习

改进模仿学习的性能

怎样提升我们的策略模型?

问题一:Multimodal behavior

8. 强化学习之——模仿学习

解决方案:

①输出一个多高斯模型,也就是多峰的叠加的形式

8. 强化学习之——模仿学习

②隐变量模型

③自回归离散

问题二:Non-Markovian behavior

8. 强化学习之——模仿学习

解决方案:

①建模整个观测历史,比如说 LSTM

8. 强化学习之——模仿学习

8. 强化学习之——模仿学习

用 LSTM 和 示教数据 完成机械臂抓取的例子【AAAI 2018】

8. 强化学习之——模仿学习

8. 强化学习之——模仿学习

那么其实在机器人领域,如何 scale up 数据一直是一个很大的问题

8. 强化学习之——模仿学习

斯坦福的李飞飞组提出的 crowdsourcing 的方法来采集很多很多很多人的示教数据,RoboTurk项目出了一种解决方案

模仿学习其实还有一些问题

①人为提供数据,这个数据本身就有限

②人有时候不能很好提供数据,例如对无人机示教、对复杂机器人的示教

③人本身是可以在环境中自由探索的,是否可以借鉴这一点呢?

所以下面我们就想把模仿学习与强化学习结合起来

模仿学习与强化学习结合

模仿学习与强化学习的各自的特点对比

8. 强化学习之——模仿学习

怎么把两者结合起来,既有 Demonstration 又有 Rewards?

(1)最简单直接的结合:预训练和调整 Pretrain and Finetune【应用十分广泛】

也就是说用 Demonstration 预训练一个 Policy(解决 exploration 的问题),然后用 RL 去 improve policy 和解决那些 off-policy 的状态,最终达到超过示教者表现的过程

Pretrain and Finetune 的流程如下: 

8. 强化学习之——模仿学习

这里是之前的 DAGGER 算法,可以和 Pretrain and Finetune 进行对比:

8. 强化学习之——模仿学习

Pretrain and Finetune 的应用:

①应用于 AlphaGo【Nature 2016 Silver】

8. 强化学习之——模仿学习

②应用于 Starcraft2【DeepMind工作】

8. 强化学习之——模仿学习

Pretrain and Finetune 的问题:

8. 强化学习之——模仿学习

①在第三步的时候我们之前获得的比较好的 Policy 用强化学习来训练的时候,可能会面临分布不一致的问题

②最开始的 experience 可能是很糟糕的,这样在进行训练时会摧毁 policy network

解决Pretrain and Finetune 问题的方案:考虑怎样把 Demonstration 一直保留下来 —— Off-Policy RL

 

(2)IL 结合 Off-Policy RL:算是对 Pretrain and Finetune 的改进

off-policy RL 可以用任意的 experience data ,例如对Q-Learning来说,只要把它们放到 replay buffer 里面就可以一直用

8. 强化学习之——模仿学习

①形式一:Policy Gradient with Demonstration

8. 强化学习之——模仿学习

应用举例:

8. 强化学习之——模仿学习

②形式二:Q-Learning with Demonstration

8. 强化学习之——模仿学习

(3)另一种结合方式:把 IL 作为一项辅助的损失函数

8. 强化学习之——模仿学习

    优化 RL的期望回报 + IL的极大似然

    应用举例:【2017年】

8. 强化学习之——模仿学习

8. 强化学习之——模仿学习

一个有趣的 Case Study—— motion imitation

可以在实际的人的关节贴传感器采数据,甚至还可以从视频里通过姿态估计来采数据训练agent

详细内容去听周老师的课吧~

IL 本身存在的问题

(1)怎样去收集 Demonstration 

         ① Crowdsourcing

         ② Guided policy search or optimal control for trajectory optimization

(2)怎样优化 Policy 使得 Agent 能处理 off-course 的状况

         ① 把这些 off-course 的状况也建模进来,打好标签

         ② Use off-policy learning with the already collected samples

         ③ 结合 IL 和 RL 

总结

8. 强化学习之——模仿学习

8. 强化学习之——模仿学习

 

注:本文所有内容源自于B站周博磊老师更新完成的强化学习纲要课程,听完之后获益很多,本文也是分享我的听课笔记。周老师Bilibili视频个人主页:https://space.bilibili.com/511221970?spm_id_from=333.788.b_765f7570696e666f.2

感谢周老师 :)

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

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

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

相关推荐

  • 如何快速把多个ts转去mp4格式 – 无需安装 魔力玄[通俗易懂]

    如何快速把多个ts转去mp4格式 – 无需安装 魔力玄[通俗易懂]魔力玄完美教程ts转mp4,有史以来最简单的方法。完全免费ts转换mp4,学习1分钟。ts转mp4工具,免安装,适合初学者。FFmpeg+Medlexo=无敌搭配FFmpeg是一个超强大的神器而且还是开源,唯一一个缺点就是没有界面。可是不用担心,可以另外下载Medlexo来运用FFmpeg是相当得强大而且很快,真的很快.我得到了开发者的允许分享。开始教程……

    2022年7月18日
  • 傅里叶变换 意义_傅里叶变换表达式

    傅里叶变换 意义_傅里叶变换表达式看到论坛有一个朋友提问为什么傅里叶变换可以将时域变为频域?这个问题真是问到了灵魂深处。在这我只能简单讲讲我的理解,要深刻理解翻信号处理教科书是最好的方法。1.如何描述信号我们常常用数学模型去抽象物理事件。信号也可以用数学模型来表示。有了信号的数学模型,我们就可以利用数学计算对信号模型做各种各样的改变。如果加以计算机,模电,数电的相关知识,我们就可以将我们对信号模型的改变转换为对物理信号的…

    2022年10月20日
  • 简单搞懂子网划分,学会子网划分这篇就够了(例题详解)

    简单搞懂子网划分,学会子网划分这篇就够了(例题详解)搞定子网划分,网段地址,广播地址,可用地址范围,能够快速了解并学会子网划分!

    2022年6月27日
  • 并发与并行的区别_并发执行和并行执行

    并发与并行的区别_并发执行和并行执行学习多线程的时候会遇到一个名词:并发。这是属于操作系统中的词汇,需要了解并发和并行的区别,从网上搜集了几种说法帮助理解。一:并发是指一个处理器同时处理多个任务。并行是指多个处理器或者是多核的处理器同时处理多个不同的任务。并发是逻辑上的同时发生(simultaneous),而并行是物理上的同时发生。来个比喻:并发是一个人同时吃三个馒头,而并行是三个人同时吃三个馒头。二:并行

    2022年10月23日
  • Simulink学习笔记(三)——Simulink自动代码生成(二)「建议收藏」

    前言:   上一篇文章详细学习了如何通过Simulink建立系统模型,进而生成嵌入式代码。本文通过实例进一步加深对代码自动生成的理解和应用。一、建立系统框图      为了方便起见,在这里我们实现一个的简单算法,我们在simulink中建立系统框图如下所示:  在生成代码之前,给k输入一个数,在命令行输入k=3,如下所示:然后配置一些参数,ctrl+E调出Configuration …

    2022年4月10日
  • 连不上docker mysql_docker跨主机通信

    连不上docker mysql_docker跨主机通信宿主机连接docker中的mysqldokcer安装mysqldockerrun\–namemysql\-v$PWD/mysql:/var/lib/mysql\-p3306:3306\-eMYSQL_ROOT_PASSWORD=123456\-dmysql:5.7宿主机连接docker中的mysql错误的连接方式$mysql-uroot-pEnterpasswor…

    2022年8月21日

发表回复

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

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