天天看点

multi task训练torch_Multi-Task Reinforcement Learning

multi task训练torch_Multi-Task Reinforcement Learning

最近看B站时候发现机器之心上传了之前12月初的nips2020 meetup的视频,有些关于强化学习的有三个,就看了下,其中有个作者还做了这篇文章的报告,这里简单总结下。nips2020 meetup的B站链接如下:

nips2020 meetup​space.bilibili.com Multi-Task Reinforcement Learning with Soft Modularization 讲座链接​www.bilibili.com

其中meetup中还邀请了南大俞扬老师做了:

强化学习与环境模型

的专题报告,俞老师主要还是讲了下他们怎么使用现实数据构建更好的环境,其中有些关于滴滴和阿里项目还落地了,还是值得一看的。此外,还有华为的郝建业老师做了:

深度强化学习的挑战及落地

的专题报告, 虽然郝老师题目中提到了落地,但是视频讲座中主要讲了几篇他们顶会的论文,主要是常用来比较的那几个游戏。,关于落地的干货基本没有或者很少了。

有兴趣也可以看看,扯远了,回来。

文章地址:Multi-Task Reinforcement Learning with Soft Modularization

https://arxiv.org/pdf/2003.13661.pdf​arxiv.org

代码和项目ppt等主页链接:

https://rchalyang.github.io/SoftModule/assets/SoftModule.pdf​rchalyang.github.io https://rchalyang.github.io/SoftModule/​rchalyang.github.io

前言

文章主要是研究使用同一个网络来解决Multi-Task的问题。Multi-Task常见的有:

  • 为每一个task 单独训练一个policy network, 这个可以用来作为上限对比。
  • 使用同一个网络,但是状态加入a one-hot task ID作为输入。
  • 另外就是使用multi-head,也就是同一个backbone,后面输出有多个head,分别代表一个task输出。

之前同时nips2020,滴滴有一篇文章Multi-Task Deep Reinforcement Learning with Knowledge Transfer for Continuous Control,链接如下:

https://arxiv.org/abs/2010.07494​arxiv.org

用的就是知识蒸馏和迁移学习的方法,大致的思路就是第一种,为每一个task 单独训练一个policy network作为教师网络,然后使用这些teacher去同一个student网络,最后使用这一个student去解决Multi-Task的问题,当然还有另外一些trick,详细的可以看看滴滴的文章。

方案

这篇文章其实使用的还是一个网络解决多个task方案,达到高效率和能解决多个task。他们的方法使用下面一张图可以简要说明:

multi task训练torch_Multi-Task Reinforcement Learning

Base PolicyNetwork and RoutingNetwork

multi task训练torch_Multi-Task Reinforcement Learning

是the task embedding,也就是每个任务的one-hot,

multi task训练torch_Multi-Task Reinforcement Learning

是状态,然后使用mlp对其进行编码。PolicyNetwork每一层有n个module block,这n个 module block连接到下一层的概率由右边的RoutingNetwork来产生。这样对于每一task就可以自适应学习到不同权重,有点类似attention。

效果如下图

multi task训练torch_Multi-Task Reinforcement Learning

线颜色越深权重越大

右边

multi task训练torch_Multi-Task Reinforcement Learning

的计算方式如下

multi task训练torch_Multi-Task Reinforcement Learning
multi task训练torch_Multi-Task Reinforcement Learning

左边第ith module block计算如下

multi task训练torch_Multi-Task Reinforcement Learning

最后再加起来汇总输出,这样研究的也是连续动作。

multi task训练torch_Multi-Task Reinforcement Learning

使用的baseline方法是SAC

multi task训练torch_Multi-Task Reinforcement Learning

policy loss

multi task训练torch_Multi-Task Reinforcement Learning

learnable temperature

文章中的一个小trick

就是不同的任务难易程度不一样,所以需要加权,权重人工定义的话,不好,交给网络自己学。基本思路如下:类似于SAC的temperature parameter

multi task训练torch_Multi-Task Reinforcement Learning

的参数调节。

如果一个任务的

multi task训练torch_Multi-Task Reinforcement Learning

过大的话,意味着其entropy低,这时候增加该任务对于的权重,反之就减少权重。如上面的learnable temperature式子所示,对于每一个任务都有需要学习的参数

multi task训练torch_Multi-Task Reinforcement Learning
multi task训练torch_Multi-Task Reinforcement Learning

最终归一化

multi task训练torch_Multi-Task Reinforcement Learning

加权到每一个任务的优化函数中:

multi task训练torch_Multi-Task Reinforcement Learning

实验结果

对比的baseline方案:

  1. Single-task SAC
  2. Multi-task SAC (MT-SAC)
  3. Multi-task multi-head SAC
  4. Mixture of Experts (Mix-Expert):包含了四个专家相同结构的网络和 一个 learned gating network for expert combination

先来看效果图

multi task训练torch_Multi-Task Reinforcement Learning

每一列学到的线之间的权重很像,这是因为同一列的任务很像,当然,作者在讲座中也提到,这些解释有点马后炮或者事后诸葛亮的感觉,work后就可以强行解释了哈哈。

对不同任务的 routing probabilities 做了t-sne降维可视化

multi task训练torch_Multi-Task Reinforcement Learning

也是任务很像比较接近。马后炮解释哈。

跟其他方法比,还行,不是第一就是第二。

multi task训练torch_Multi-Task Reinforcement Learning

其他的消融实验(balance应该就是实验那个不同任务自学习权重trick的作用)

multi task训练torch_Multi-Task Reinforcement Learning