美文网首页
路由模型的深度与多样性探究

路由模型的深度与多样性探究

作者: 天国的邮递员_ | 来源:发表于2021-05-17 16:00 被阅读0次

    这篇文章是Google Brain关于路由模型异构结构和不同深度等因素的探究,收录于ICLR2019。文章关于topk选择的一些观点,对于后续的Switch Transformer研究有着一些影响。可以说这是谷歌大脑的大佬们在路由模型探索中的一些中间思考。

    论文题目:《DIVERSITY AND DEPTH IN PER-EXAMPLE ROUTING MODELS》

    论文地址:https://openreview.net/pdf?id=BkxWJnC9tX


    摘要:

    文章指出先前的路由模型相关工作都忽略了模型结构的多样性以及不同的路由决策。大佬们认为结构的多样性和路由的深度能够增强路由网络的表征能力。因此本文就是这两方面的尝试,并且在异构的结构上取得了35%的效果提升,在路由深度的探索上还待优化。


    介绍:

    神经网络用相同的方法处理每一个输入,这种静态的范式相比于人脑灵活处理感知输入显得很僵硬。因此基于输入的处理过程是否能够提升神经网络的表现?这种”专有“的处理过程能够提供更好的参数效率以及减少计算。

    先前大部分工作利用一个网络路由不同的输入,使用大量的子单元或者专家来处理,对于某个输入只有部分专家是激活的。路由网络和专家的学习是同时进行的。

    先前的路由模型都是由较小的同构网络组成,直观上来看,不同类型的输入样本应该适用于不同结构的处理单元。同时,路由决策一般小于五个。

    因此这篇工作就是探究异构结构和路由深度的影响。实验结果表明,异构结构对于提升效果十分关键,但是更多的router决策由于优化困难效果不佳。


    方法:

    一种很自然的想法:定义一个超网包含很多的专家和路由网络。如下,相似的样本路由到相似的处理路径,不同的样本路由到不同的处理路径。

    路由网络例子

    将样本路由到well-matched的专家至关重要。需要另一个较小的router网络学习这种分发机制,并且router能够利用样本的中间态表示。

    一种学习router的方法是强化学习,本文工作用的则是MoE文章的noisy top-k 门控网络:

    门控网络

    这种topk的运算方式,虽然引入了不连续的输入,但是梯度下降学习在noisy top-k门控网络表现很好。这也和之前QA工作上的经验相符合,有机会写一篇介绍下。

    在MoE基础上,文中提出固定的k会容易使得网络过拟合。因此提出一种k淬火的trick:在最初的层激活比较大的k,接近分类层用更小的k,这和直观上低层coarse特征,高层elaborate特征想对应。对应比较粗的划分,可能需要多个专家的权重分配,到了上层更abstract的特征表示时,细致的划分只需要较少的专家权重分配。同时在实验上也取得比较好的效果。

    还有个负载均衡的问题,假如初期某些专家表现优于随机初始化,那么gate就偏向于选择这部分专家,正反馈会使得专家的激活不均匀。因此对应MoE论文,加入了important loss正则化:

    important loss

    多样性:

    先前MoE中专家仅是参数不同结构相同的结构是次优的。举了狗的例子,一张放大的狗图片需要完整图像的信息,而多目标中对狗的分析可能需要max-pooling这种操作滤过无关的信息。

    先前有一些神经网络结构搜索模型同时更新网络结构和参数,这种one-shot模型就是异构路由模型的一种特殊case,只不过对于所有输入在超网中的路由路径都一致。异构路由模型可以很容易地通过增加task embedding输入从而拓展到多任务,就如同task-based 模型Pathnet一样。

    模型结构如图:

    模型结构图

    模型总体是一个堆叠的cell结构,cell由堆叠的choice blocks组成。如右边结构所示,choice block需要选择哪些输入和哪些操作(卷积 池化 自身(skip connection))。与Bender工作不同之处在于1、每个样本的路由路径不同,one-shot结构搜索则是选择单个路径2、每一个cell是不同的,one-shot的结构中使用的是单个相同cell结构

    路由深度:

    随着网络的加深,模型的表现会有相应的提升。因此,路由模型也需要拓展到比较大的深度。计算消耗上来说,路由模型拥有block-sparse结构,只需激活部分专家进行稠密计算,所以从硬件来说是容易拓展的。

    在一个简化的模型上,如果存在n个路由决策,同时每个决策选择E个专家,那么存在E^n 条路径。先前Shazeer的MoE工作关注于增大E,我们对于增加路由决策更感兴趣,因为路径数量会指数级增长。

    但是随着路由深度n的增长,选择也会变得越来越多,优化routing model会很困难。所以工作的目的是在现有技术下是否能够灵活地拓展路由深度n,而是需要额外地研究。


    相关工作:

    路由模型归属于条件计算类中,可以在不增加计算消耗的同时提升模型容量。本文工作类似于Rosenbaum的多任务学习路由工作。不同点在于异构的专家以及更深的路由。

    例如NAS之类的自动搜索技术在ImageNet上取得很好效果。但是这类结构搜索计算消耗大,并且最终还是一个静态的模型。

    还有一类树结构的循环神经网络和参数预测模型。对于每一个输入利用循环神经网络匹配一个特定的树结构,但是学习过程不允许结构改变。参数预测模型相比于对于所有样本利用一套固定的参数,推理出一系列基于样本的参数。虽然参数变化,但是结构是不变的。在多样性路由模型中,模型结构变化的同时参数是静态的,如何结合两种idea是未来的工作。


    实验:

    在研究异构性和路由深度之前,作者先在MNIST上验了一把noisy top-k gating的效果。左边的图展示了,相同类别的样本趋向于路由到相同pair的专家。右图展示了每个专家上处理样本的标签分布是不同的,能够体现一定的specialization。并且加入normalization能够提升结果的稳定性,这也和之前product key网络的经验不谋而合。

    MNIST数据集router效果图

    异构性:

    以Omniglot作为routing model的benchmark,数据集包含了50种不同的字母,其中每个字母由一系列灰度为20的105*105手写用例组成。将每个字母的预测视为单独的任务,因此构成多任务预测任务。由于baselingCMTR(一种层次化进化算法)的训练时间与任务数呈线性关系,因此在划分数据集的时候只基于20个字母。

    路由模型由一个共享的卷积层和八个专家层组成,每一层拥有48个卷积核。每个任务配有独立的linear readout layer并且基于任务的表示会额外地输入每个router。

    Omniglot benchmark 效果

    异构的路由模型相比于SOTA减少了35%的误差。CMTR有3M参数而本文的模型只有1.8M参数。说明了通过淬火的topk trick,本文的routing模型能够在low-resource task表现很好。

    消融实验中,通过固定三种配置的专家组来做对比。

    Omniglot 消融实验

    结果证明,diverse architectural components简化建模并且提升模型效果。

    在不同数据集上的额外消融实验,最终结果很一般。最终的结果在不同数据集上效果不同,并且和数据大小也没有太大关系。作者在文中的结论是增加不同的运算操作以及增加重要计算操作的复制是一种直接提升模型效果的方法。这个地方其实不太明白,可以看到结果仅使用3x3的卷积核效果很不错,异构的专家层效果相当,但是并没有给出diversity&cloning的效果,个人觉得这个结论有点牵强。

    其他数据集上的异构消融实验

    routing depth:

    论文给出了在CIFAR-10上的效果,结果上看起来routing model效果甚至劣化了。比如在cell nums=6,filters nums=64的配置下,routing model的效果相当于all-on C=6,F=32的效果,然而计算量是2x,对比于搜索出的one-shot模型,计算量甚至是3.5x。而且当C增大到12时,效果甚至劣化了。作者认为复杂的routing优化导致了效果的劣化,类似于noisy top-k gating这样的router方法是经验性的而无法学习出很强的solutions。

    routing depth效果图

    结论:

    在结构异构上,本文的实验在模型最终效果上取得了重要的效果?到那时路由深度的优化仍然是不确定的。

    作者认为开辟static model的痛点领域是routing model所需要的。并且预言了在超大规模任务上是routing model发力的领域(switch transformer在两年后不负众望),并且对routing models的优化持乐观态度。

    相关文章

      网友评论

          本文标题:路由模型的深度与多样性探究

          本文链接:https://www.haomeiwen.com/subject/fjhndltx.html