热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Distral:Robustmultitaskreinforcementlearning.

作者:张楚珩链接:https:zhuanlan.zhihu.comp51091244来源:知乎著作权归作者所有。商业转载请联系作者获得授权

作者:张楚珩
链接:https://zhuanlan.zhihu.com/p/51091244
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

中Distral是Distill & transfer learning的缩写。


原文传送门

Teh, Yee, et al. "Distral: Robust multitask reinforcement learning." Advances in Neural Information Processing Systems. 2017.


特色

提出了一种同时在多个任务上训练的强化学习方法,主要的想法是把各个任务上学到的策略进行提纯(distill,本意是蒸馏)得到一个共有的策略,然后再使用这个共有的策略去指导各个特定任务上的策略进行更好的学习。文章称,这种多任务的强化学习方法避免了不同任务产生互斥的梯度,反而干扰学习;同时,也避免了各个任务学习进度不一致,导致某个任务的学习主导了整体的学习。个人感觉,这种各个任务间提纯的方法也说不定能用到多智能体间的相互交互上。


背景

为什么要做多任务学习?需要过多的交互(采样)是目前强化学习的一大重要问题,这阻碍了强化学习应用到模拟环境以外的其他地方。如果能通过进行多任务学习让智能体学习到一些共有的知识,这样在一个新环境下就能通过少量样本学习到好的策略了,这样就相当于从另一个角度降低了学习算法所需要的样本。


过程


  1. 大致思想

在各个环境各自学习各自策略的基础上建立一个中间的策略 [公式] ,各个策略进行学习的时候会在中间策略的正则下来学习,而各个不同的策略综合起来由提纯得到这个中间策略。

2. 目标函数

考虑多个任务 [公式] (这里的 [公式] 既表示任务,也表示任务下相应的策略)和由这些策略提纯得到的策略 [公式]

设定如下的最大化目标

即主要约束了各个策略 [公式] 不要偏离中心策略 [公式] 太远,同时再加上了entropy项以鼓励探索。

3. 优化方式

文章讨论了两种优化方式,一种是联合优化,一种是交替优化。前一种就是每次都对所有的策略 [公式] 的参数化表示做SGD;后一种就是每次固定一个训练另一个,即固定 [公式] 优化 [公式] ,再固定 [公式] 优化 [公式]。在后一种情况下,第一步可以使用和已有的soft Q-learning一样的实现,第二步可以使用和已有的一些distillation方法已有的实现,实践上这两者已经是稳定的了。

固定 [公式] 的时候,我们可以定义一个正则化的奖励

这样问题就变成了一个附加entropy项的单任务强化学习问题了,使用Soft Q-learning的框架(不熟悉的可以参考本专栏的文章【强化学习算法 10】SQL)就是学习这样的任务(红色删除线应为 [公式] ,文章打印错误)

它相当于是以 [公式] 为先验来学习的,这是一个比 [公式] 更为鼓励探索的一个先验, [公式] 的作用后面会再提到。相应的Boltzmann策略是

固定 [公式] 的时候,目标函数里面只有一项与 [公式] 相关

可以使用maximum likelihood estimator或者对目标函数做SGD得到,这就是一个distillation的过程。

4. 策略的表示

一种自然的策略表示方法是都采用Boltzmann策略的表示方法

不过文中还提出了另一种更好的方法,即各个特定的策略 [公式] 表示为与 [公式] 共有的部分和其自己特有部分的加和,这样各个特定策略学习过程中就只需要集中精力学习自己特有的部分了。

左边是文中提到的更好的一种表示方式,右边是各自表示各自的

中心策略 [公式] 使用一个神经网络 [公式] 来表示

特定的策略 [公式] 使用使用中心策略的神经网络 [公式] 和各自的神经网络 [公式] 来表示

注意到这就是一个以 [公式] 为先验的Boltzmann策略,其中advantage使用的是soft advantage

在这种表示方法下就可以自然使用策略梯度方法进行联合优化

其中正则化的奖励为

5. [公式] 的选择

下面考虑优化目标里面 [公式] 不同数值带来的不同含义


  • [公式] 的时候就等于没有中心策略,即每个任务各学各的;
  • [公式] 的时候相当于在最大化cumulated discounted return的同时,还需要最小化一个 [公式] 项;当 [公式] 的时候, [公式] 项为零,这时候相当于 [公式] 在找一个在这个任务上的greedy策略;
  • [公式] 的时候在最小化KL项的同时,还要最小化 [公式] ,这相当于附加了激励各个策略 [公式] 不要局限在中心策略附加,鼓励了相对于中心策略的探索。

实验

根据前面提到的目标的不同(选择不同的 [公式] )、优化方式的不同(是分别优化还是联合优化)以及结构的不同( [公式] 的表示是否使用中心策略),文章做了以下的7个实验组。

根据目标、优化方法、参数化策略结构不同产生的7个实验组算法

实验主要在一个简单的世界任务和3D的第一人称迷宫任务上做的。个人感觉有如下几个点


  • 多个任务联合起来学习可以使得单个任务的渐进性能都稍微好一点点,这一点说明中心策略 [公式] 确实还是代表了一些共有的知识。(不然,搞了这么一通不如单独每个任务去训练)
  • 格子世界任务选择了一个具有长长走廊的格子世界,中心策略的主要优势就体现在这个走廊上,实验结果表明,使用了中心策略之后,智能体能够快速地朝一个方向通过这个走廊,以此证明这种算法不会产生相互冲突的中心策略更新;但是个人认为其主要原因是这里的state选择并不仅仅是所处的格子,还包括了上一步的行动,正是这样状态空间的选择导致了不会产生相互冲突的中心策略。
  • 就相对于超参数的稳定性来说,KL+ent 2col算法(即使用 [公式] 和相互耦合的策略表示)具有最好的稳定性。
  • 如果学习相对独立的策略,还是不要使用相互耦合的策略表示(即1col)更好。

 

作者:王小惟
链接:https://zhuanlan.zhihu.com/p/70127847
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 


2017-NIPS-Distral: Robust Multitask Reinforcement Learning

Distral (Distill & transfer learning)。简而言之,之前的multitask或多或少都是希望通过参数共享来加快学习(比如对于图片的特征提取层)。但是在实际中,由于任务之间的梯度方向可能会互相干扰,同时不同任务的reward尺度(observation的数值尺度)会不一样大,这就进一步限制了parameter weight的大小,同样也会出现梯度大小等不同的情况等等。既然共享参数会存在这样一系列的问题,这里采用了另外的一套框架,即在每个任务中学习特定的policy,然后在学习过程中进行knowledge的共享。即:将这些policy都蒸馏到一个中心的policy [公式] 中,同时也利用这个 [公式] 来对特定的任务下的policy做正则化来进行约束(感觉就是knowledge transfer过去)。

在训练特定任务时,policy最大化环境的累积收益,同时加上对于 [公式] 的KL散度来做约束,还有相应的entropy正则来鼓励探索。

在训练中心式的policy,就是对于其他所有特定任务的策略的KL散度的最小化。

更近一步,这边提了一下不同的训练方式,比如一起训练,间隔训练等,具体就去看paper即可。

 


推荐阅读
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • 本文详细解析了JavaScript中相称性推断的知识点,包括严厉相称和宽松相称的区别,以及范例转换的规则。针对不同类型的范例值,如差别范例值、统一类的原始范例值和统一类的复合范例值,都给出了具体的比较方法。对于宽松相称的情况,也解释了原始范例值和对象之间的比较规则。通过本文的学习,读者可以更好地理解JavaScript中相称性推断的概念和应用。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文详细介绍了MySQL表分区的创建、增加和删除方法,包括查看分区数据量和全库数据量的方法。欢迎大家阅读并给予点评。 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有