模仿学习算法:Data Aggregation Approach: DAGGER算法——Mixing policy
论文:
《A Reduction of Imitation Learning and Structured Prediction to No-Regret Online Learning》
算法描述:
=====================================================
Mixing Policy:
个人理解:
imitation learning的大意就是有一个expert专家,你给它输入状态,他就能给你返回一个action,这个action是质量比较好的action,也就是说expert的policy会更优,但是我们现在需要根据expert的经验来训练一个自己的控制器(一个输入state就可以输出一个不错的action的)。对于这个问题最intuitively的解法就是使用我们的需要训练的policy去环境交互,然后采集大量的episode数据,再把这些采集到的数据(state)输入到expert策略中得到expert的action,然后使用监督学习算法来进行拟合,以此来训练我们自己的policy;但是这种使用监督学习方法来根据expert的策略训练我们自己policy难以得到很好的效果,往往随着策略的rollout展开会随着时间步的增加其策略的action和expert的策略action会更加的偏离,因此该种监督学习的方式难以根据expert的policy来训练出一个效果不错的自己的policy,也是因此就有了其他的一些方法,其中一个效果不错的算法就是这里的Data Aggregation Approach: DAGGER算法。
在DAGGER算法中有一个操作是mixing policy,对于这一步操作个人一直都不是很能理解的,因为如果expert的policy是一个已知参数的神经网络,那么我们自然可以采用加权合并的方式来计算这个mixing policy,但是在实际设定中这个expert往往是human being甚至是一些无法得到其内部情况的一个黑盒,因此这里就不能采用加权合并的方式来获得这个mixing policy。对此,给出一个个人的观点,那就是这里的mixing policy其实就是在执行时随机采样,小于belta概率的话就执行expert的策略来进行采样,否则就使用自己的策略来进行采样,以此来达到mixing policy的效果。
关于belta的值的设定:
我们看到论文中的设置方式可以有两种,第一种是只有在第一次迭代计算时使用belta=1,其他迭代次数时belta=0;第二种是设置ßi=pi-1,i=1,2,3,4,5.....,这里可以设置p的取值为0.1到0.9。 第一种设置要比第二种设置要简单,往往效果也不错,这里要说明一下,在论文中一般的迭代次数比较少,如20次迭代,当然原始论文中的拟合函数都是比较简单的分离器,但是这也能体现出该种方法往往不需要太多次数的迭代;第一种设置的demo代码:https://gitee.com/devilmaycry812839668/Imitation-Learning-Dagger-Torcs
根据论文中的原始实验,采用第二种方式设置belta时p时往往选择小一些的会有更好的效果,如上面的实验效果图中p=0.5要优于p=0.9。
=====================================================
模仿学习算法:Data Aggregation Approach: DAGGER算法——Mixing policy的更多相关文章
- [Algorithm] 群体智能优化算法之粒子群优化算法
同进化算法(见博客<[Evolutionary Algorithm] 进化算法简介>,进化算法是受生物进化机制启发而产生的一系列算法)和人工神经网络算法(Neural Networks,简 ...
- 转载: scikit-learn学习之K-means聚类算法与 Mini Batch K-Means算法
版权声明:<—— 本文为作者呕心沥血打造,若要转载,请注明出处@http://blog.csdn.net/gamer_gyt <—— 目录(?)[+] ================== ...
- 算法9-5:最大流算法的Java代码
残留网络 在介绍最大流算法之前先介绍一下什么是残留网络.残余网络的概念有点类似于集合中的补集概念. 下图是残余网络的样例. 上面的网络是原始网络.以下的网络是计算出的残留网络.残留网络的作用就是用来描 ...
- 链表插入和删除,判断链表是否为空,求链表长度算法的,链表排序算法演示——C语言描述
关于数据结构等的学习,以及学习算法的感想感悟,听了郝斌老师的数据结构课程,其中他也提到了学习数据结构的或者算法的一些个人见解,我觉的很好,对我的帮助也是很大,算法本就是令人头疼的问题,因为自己并没有学 ...
- [2] TensorFlow 向前传播算法(forward-propagation)与反向传播算法(back-propagation)
TensorFlow Playground http://playground.tensorflow.org 帮助更好的理解,游乐场Playground可以实现可视化训练过程的工具 TensorFlo ...
- 机器学习:k-NN算法(也叫k近邻算法)
一.kNN算法基础 # kNN:k-Nearest Neighboors # 多用于解决分裂问题 1)特点: 是机器学习中唯一一个不需要训练过程的算法,可以别认为是没有模型的算法,也可以认为训练数据集 ...
- 冒泡排序算法和简单选择排序算法的js实现
之前已经介绍过冒泡排序算法和简单选择排序算法和原理,现在有Js实现. 冒泡排序算法 let dat=[5, 8, 10, 3, 2, 18, 17, 9]; function bubbleSort(d ...
- 『嗨威说』算法设计与分析 - 贪心算法思想小结(HDU 2088 Box of Bricks)
本文索引目录: 一.贪心算法的基本思想以及个人理解 二.汽车加油问题的贪心选择性质 三.一道贪心算法题点拨升华贪心思想 四.结对编程情况 一.贪心算法的基本思想以及个人理解: 1.1 基本概念: 首先 ...
- 模拟退火算法SA原理及python、java、php、c++语言代码实现TSP旅行商问题,智能优化算法,随机寻优算法,全局最短路径
模拟退火算法SA原理及python.java.php.c++语言代码实现TSP旅行商问题,智能优化算法,随机寻优算法,全局最短路径 模拟退火算法(Simulated Annealing,SA)最早的思 ...
- 机器学习算法-K-NN的学习 /ML 算法 (K-NEAREST NEIGHBORS ALGORITHM TUTORIAL)
1为什么我们需要KNN 现在为止,我们都知道机器学习模型可以做出预测通过学习以往可以获得的数据. 因为KNN基于特征相似性,所以我们可以使用KNN分类器做分类. 2KNN是什么? KNN K-近邻,是 ...
随机推荐
- 获取前(后)x月的日期
package com.jesims.busresume.web; import org.springframework.stereotype.Service; import java.text.Da ...
- MySql 表数据的增、删、改、查
数据表的增.删.改.查 前言 在学习 MySql 一定少不了对数据表的增.删.改.查,下面将详细讲解如何操作数据表. 前面已经建好了表 customer 列表如下: 插入数据 插入数据可以使用 INS ...
- 这个vue3的后台管理系统虽然简洁但不简单
今天介绍一个新的Vue后台管理框架,相比其他后台功能丰富管理系统,这个后台管理系统可以用干净简洁来形容--Nova-admin Nova-admin Nova-admin 是一个基于Vue3.Vite ...
- 【HDC 2024】华为云开发者联盟驱动应用创新,赋能开发者成长
本文分享自华为云社区<[HDC 2025]华为云开发者联盟驱动应用创新,赋能开发者成长>,作者:华为云社区精选. 6月21日到23日,华为开发者大会(HDC 2024)于东莞松山湖举行,这 ...
- .NET下 支持大小写不敏感的JSON Schema验证方法
问题 有很多应用程序在验证JSON数据的时候用到了JSON Schema. 在微服务架构下,有时候各个微服务由于各种历史原因,它们所生成的数据对JSON Object属性名的大小写规则可能并不统一,它 ...
- QT6设置应用程序图标
准备好一个ico格式的图标, 放到源码文件中, 比如放在 resources/logo.ico 在源码目录中新建一个icon.rc的文件, 内容如下: IDI_ICON1 ICON DISCARDAB ...
- Unity 中关于SubMesh的拾取问题
问题背景 最近在开发一个功能,钻孔功能,每一层(段)都需要单独拾取,显示不同的颜色,使用不同材质 问题分析 对于这个功能,由于上述需求,很容易想到用submesh实现,但是主要问题是在于对于Subme ...
- python subprocess读取终端输出内容
参考链接:https://www.cnblogs.com/songzhenhua/p/9312718.html https://www.cnblogs.com/darkchii/p/9013673.h ...
- BigDecimal加减乘除、比较
// 加 a+b a.add(b); // 减 a-b a.subtract(b); // 乘 a*b a.multiply(b); // 除 a/b a.divide(b); // 绝对值 a.ab ...
- Spring声明事务和分布式事务处理技术
Spring声明事务的两种方式 方式一.传统的编程式事务管理: 需要手动编写代码在业务层注入事务管理模板(一般不用) 方式二.基于 AOP 技术实现的声明式事务管理: Spring 声明式事务管理在底 ...