AAAI24
摘要
多任务强化学习致力于用单一策略完成一组不同的任务。为了通过跨多个任务共享参数来提高数据效率,常见的做法是将网络分割成不同的模块,并训练路由网络将这些模块重新组合成特定于任务的策略。然而,现有的路由方法对所有任务采用固定数量的模块,忽略了具有不同难度的任务通常需要不同数量的知识。这项工作提出了一种动态深度路由(D2R)框架,该框架学习策略性地跳过某些中间模块,从而为每个任务灵活选择不同数量的模块。在此框架下,我们进一步引入了 ResRouting 方法来解决离策略训练期间行为和目标策略之间不同的路由路径问题。此外,我们设计了一种自动路由平衡机制,以鼓励对未掌握任务的持续路由探索,而不干扰已掌握任务的路由。我们在 Meta-World 基准测试中对各种机器人操作任务进行了广泛的实验,其中 D2R 实现了最先进的性能,并显着提高了学习效率。
介绍怎么写的
drl已经有很多的突破了,但是训练单策略概括所有的任务仍然是一项挑战。
MTRL是做有什么的,有什么好处,有难点。相似任务的共享能提高采样效率,但是
如何确定任务间共享什么以及如何共享,仍然是一项挑战。
本文为了解决这样的问题,目前常见的方法是什么。基于模块化和路由机制的一类方法。介绍一下该方法。
常见的方法忽视了什么问题,我们提出了我们的方法,简单介绍是怎么做的。
为了解决另一个问题,提出了另一种方法。自动路由平衡机制。
我们做了大量的实验,实现了sota,在采样效率和最终表现都比sota要好。也有良好的理论分析和消融实验。
Related work
- MTRL
- SAC
- Modularization and Routing
- 现有的路由方法可以分为
- Output-level routing
- 任务共享backbone的所有全部模块,但是每个任务有具体的head
- 典型的方法是Multi-head
- Model-level routing
- 由多个单独的网络模型,通过路由网络选择指定的权重
- 典型的方法是Moe
- Layer-level routing
- Model-level routing方法的扩展,每层内是独立的,层间通过路由网络选择
- 典型的方法是Soft Modularization
- Output-level routing
- 现有的路由方法可以分为
输出级别的路由灵活性是最差的,multi-head方法也是没有把额外的信息,如state info考虑在内的。
Method
本文提出了module级别的路由,路由网路学习一个有向无环图(DAG,Directed Acyclic Graph)来得到特定任务的网络。顶点表示模块,边表示模块之间的路由连接。Model-level routing和Layer-level routing 都可以看成DAG的一种特例。
1. 动态深度路由
目的是基于任务困难度,选择合适的模块和组合起来。每个时间步,路由网络根据当前的state和任务id重新组合基本的module,得到特定任务的DAG
基本的模块网络:
M
i
M^i
Mi表示第i个模块,括号里表示该模块的输入,是前面i-1个模块的加权
路由网络:
z i z^i zi表示路由子网络输出的,对于第i层模块网络的logits,路由网络的输入是状态信息表征和任务id表征的相乘element-wise multiplication
d
i
d^i
di表示第i个模块之前的所有选择的模块,也就是路径,长度最长为i-1
d
j
i
d^i_j
dji表示是否是topk中的logits,如果是则为1,否则为0
总的来说,为了得到第i个模块的输入,通过路由网络得到i之前路径(被选择的模块)的输出权重,得到这个权重就可以实现公式(3),得到加权的i之前路径的输出结果,并作为第i个模块的输入。
而考虑到每个任务不完全需要所有的模块,简单的任务可能需要更少的module,因此只选择topk,在实现选择k=2
这种稀疏化容易带来探索利用的问题,因此使用采样的方法,将(6)修改为(7)
2. ResRouting for Off-policy Training
- 上面的方法虽然是和RL算法无关的,但是考虑到采样效率,选择off-policy的SAC
- 但是,off-policy有一个特定的问题,行为策略和目标策略可能会有不同的路由路径
- 由于target和behavior更新之间存在gap,盲目的更新造成负转移
一般的off-policy算法流程是,行为策略 π o l d \pi_{old} πold采样存到replay buffer中,然后根据replay buffer采样的数据更新目标策略网络 π ϕ \pi_{\phi} πϕ。
由于更新不同步,采样的数据是由旧行为策略( π o l d \pi_{old} πold)生成的。在更新网络时,新策略( π ϕ \pi_{\phi} πϕ)选择的路径和旧策略选择的路径可能不同。如果仅更新旧策略选择的路径模块(下图中的M1和M3),会导致负面转移。这是因为经过更新后,新策略选择了更合适且不会带来负面转移的模块(M1和M2),而抛弃了旧策略选择的部分模块。
即使SAC每次采样一组数据,就更新一次,那buffer中也是各种各样的old policy产生的数据。
因此,作者提出了新的路由方法,ResRouting
当然,也可以仅更新新目标策略( π ϕ \pi_{\phi} πϕ)选择的路径,也就是下图中的M1和M2,在消融实验部分也对比了ResRouting和仅更新目标策略( π ϕ \pi_{\phi} πϕ)选择的路径的实验结果,ResRouting会更好,作者的解释是行为策略 π o l d \pi_{old} πold探索的行为没有被利用上,也就M3没被目标网络考虑在内。
d o l d d_{old} dold表示 π θ o l d \pi_{\theta_{old}} πθold网络的路径,和环境交互存储到buffer中的都是 d o l d d_{old} dold网络生成的值,公式5就变成了:
每个模块的输出被修改为:
σ i \sigma^i σi表示阈值,与可选路由源的数量有关,本文被设定为1/i。也就是说,超过阈值的才会被选择,否则就会停止梯度反传更新。比如上图中,采样的数据是由M1和M3生成的,应该要更新M1和M3对应的模块,但是Target网络选择是M1和M2,那么M3可能就是不合适的,盲目的更新M3会导致负转移。ResRouting方法是设定阈值,如果要更新的模块在Target网络中小于阈值,那么就停止这个模块的更新,即M3不更新。
而考虑到梯度停止更新,比如M3,那么M3之前的模块也会停止更新,会造成次优解,造成训练效率减少以及不平衡的更新频率。作者提出使用残差连接的方式,将上面的公式修改为:
3. Automatic Route-Balancing
除了目标策略和行为不一致的问题,还有经典的路由平衡问题,即简单的任务会更容易的收敛。
方法是使用了温度系数取代公式(7):
τ
τ
\tau_{\tau}
ττ表示SAC中的温度系数,在多任务中,每个任务的SAC是不同的,而且可以反应任务的困难度。
算法伪代码:
Experiments
方法达到了sota
消融实验
(b)中比较了直接更新目标策略( π ϕ \pi_{\phi} πϕ)选择的路径(橙色)和ResRouting的方法(红色),说明是有作用的,但不大。
但是没比较另外一种方式,以目标策略选择路径为主导,如果在行为策略中的概率小于阈值,就跳跃连接。实验结果可能也差不多。文章来源:https://www.toymoban.com/news/detail-804831.html
总结
- 这种稀疏topk的结构,是需要保证足够探索性的,本文的方法是,随机采样k个模块,可以保证收敛吗,是不是可以采用类似epsilon-贪婪的方法,平衡探索和利用
- 伪代码非常有助于理解!
- 路由网络Gate也是有N个,每个输出对应module需要的概率分布
- 专家的数量需要事先指定
参考:
https://arxiv.org/abs/2312.14472文章来源地址https://www.toymoban.com/news/detail-804831.html
到了这里,关于论文笔记|Not All Tasks Are Equally Difficult MultiTask Reinforcement Learning with Dynamic Depth Routing的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!