阅读笔记——Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts

参考:https://www.jianshu.com/p/ab7216e95fa9

实现代码链接:https://github.com/drawbridge/keras-mmoe

 

摘要

基于神经网络的多任务学习已经成功应用于真实世界里的大规模应用,如推荐系统。例如,在电影推荐中,除了给用户推荐他们倾向于购买和观看的电影外,系统还可以对用户后来喜欢的电影优化。用多任务学习,我们旨在建立一个单独的模型来同时学习多个目标和任务。但是,常用的多任务模型的预测质量通常对任务之间的关系很敏感。因此,研究特定任务目标和任务内在关系之间的建模平衡是很重要的。

在本文中,我们提出了一种新型的多任务学习方法,Multi-gate Mixture-of-Experts (MMoE),显式地从数据中学习模型任务关系。我们通过中所有任务之间共享专家子模块来将混合专家(MOE)结构应用于多任务学习中,同时也有一个门网络训练来优化每个任务。为了验证我们的方法在不同任务关联级别的数据上的有效性,我们首先将其应用到一个合成数据集上,我们可以控制任务关系。我们表明了提出的方法在任务关联性极低的情况下,性能比基线方法表现好。结果还表明了,根据训练数据和模型初始化不同程度的随机性,MMoE结构带来了额外的可训练化优势。此外,我们还验证了用MMoE在真实任务中的性能提升,包括二分类基线和Google的大规模内容推荐系统。

 

 

1、引言

近年来,深度神经网络模型已经成功应用于喝多真实世界的大规模应用中,如推荐系统。这样的推荐系统通常需要同时优化多个目标。例如,当给用户推荐观看的电影时,我们可能想用户不仅购买和观看该电影,而且也喜欢后边的电影,以便于他们将回来看更多的电影。这样,我们可以构建模型来同时预测用户的购买和他们的评分。事实上,很多大规模推荐系统已经采用了基于深度神经网络模型的多任务学习。

研究人员已经发现,多任务学习模型可以利用正则化和迁移学习来提高模型预测能力。但是,实践中,多任务学习模型并不总是在所有任务上都优于对应的单任务学习模型。事实上,很多基于DNN的多任务学习模型对入数据分布差异和任务之间的关联等因素很敏感。来自任务差异的内在冲突实际上会损害至少部分任务的预测,特别是当模型参数广泛在所有任务之间共享。

前人的工作研究了在多任务学习中的任务差异,通过为每个任务假设特定数据生成过程,根据假设测量任务差异,然后根据任务的差异程度提出建议。但是,由于实际应用通常有更复杂的数据模式,因此通过用之前工作中国呢提出的方法来测量任务差异是很困难的。

最近的几项工作日出了新的建模技术,不依赖显式任务差异测量来处理多任务学习中的任务差异。但是,这些技术通常包括每个任务增加很多模型参数来缓解任务差异。由于大规模推荐系统可能包含百万级或亿级的参数,这些额外的参数通常约束不足,kennel影响模型质量。由于有限的服务资源,额外的这些参数计算消耗通常在真实产品设计中是被禁止的。

 

 

在本文中,我们提出的基于新的多门混合专家结构(MMoE)多任务学习方法,是受MoE模型和最近的MoE层的启发。MMoE明确的建模任务关系,学习特定任务功能来利用共享表示。它允许参数自动分配来捕获共享任务信息或特定任务信息,避免每个任务增加很多新参数。

MMoE的主干网络上基于最常用的多任务DNN结构的共享底层构建的。共享底层模型结构如图1(a),输入层后接几层是在所有任务重共享的,然后每个任务有网络的单独“tower”在底层表达的顶部。替换在所有任务中共享的一个底层网络,我们的模型,如图1(c),有一组底层网络,每个称为一个专家。在我们的文章中,每个专家是一个前馈网络。然后我们为每个任务引入一个门网络。这个门网络输入特征,输出softmax门来给专家们分配不同的权值,允许不同的任务利用不同的专家。组合专家的结果然后通过特定任务塔网络。以这种方式,不同任务的门网络可以学习不同的专家分配组合模式,因此捕获任务关系。

为了理解MMoE如何针对不同级别的任务相关性学习各自的专家和任务门网络,我们进行了一个合成实验,这里我们可以通过它们的Person相关性来控制任务相关性。类似于【24】,我们用两个合成回归任务,并用正弦函数作为数据生成机制来引入非线性。在这样的设置下,我们的方法优于基线方法,尤其当任务相关性低的时候。在这组实验中,我们也发现MMoE是更容易训练和收敛的,并且在多次运行中收敛到更好的loss。这和最新发现的调制和门机制可以提高非凸深度神经网络训练是相关的。

我们进一步在基准数据集(UCI Census-income dataset)上用多任务问题设置评估了MMoE的性能。我们和几个性能较好的利用soft参数共享来建模任务相关性的多任务模型,发现在我们的方法中的提升。

最后,我们在实际中的大规模内容推荐系统测试了MMoE,这里当给用户推荐items同时学习两个分类任务。我们用数千亿的训练样本来训练MMoE模型,和一个底层共享模型来对比。我们发现在离线评估指标如AUC上有很大的提升。此外,我们的MMoE模型在线上也一致的提升了线上指标。

本文的贡献有三点:首先,我们提出了一个新的多门混合专家模型,显式建模任务关系。通过调制和门网络,我们的模型在模型共享信息和模型特定任务信息见自适应调整参数。第二,我们在合成数据上进行了可控实验。我们报道了任务关系如何在多任务学习中影响训练动态,以及MMoE如何提升模型表达能力和可训练性。最后,我们在真实基准数据上和一个拥有千亿用户和items的大规模产品推荐系统上进行了实验。我们的实验验证了在真实环境里我们提出的方法的效率和有效性。

 

2、相关工作

2.1 在DNNs中的多任务学习

多任务模型可以学习不同任务之间的共性和差异。这样做可以提升效率和每个任务的模型质量。一种广泛应用的多任务学习模型是由Caruana提出的,有一个共享的模型结构,底部隐藏层是中多任务间共享的。这个结构大大减低了过拟合的风险,但是可能会出现由任务差异性导致的优化冲突,因为所有任务中共享底层需要相同的参数设置。

为了理解任务相关性如何影响模型质量,之前的工作用合成数据生成,操作不同类型的任务相关性,来评估多任务模型的有效性。

代替在任务间共享隐藏层及相同的模型参数,一些最近的方法在特定任务参数上增加了不同形式的限制。例如,对于两个任务,Duong et al. [15]在两组参数间增加了L-2限制。交叉十字网络【27】为每个任务学习一个单独的特定任务隐藏层embeddings的组合。Yang et al. [34] 用一个张量的因子分解模型来给每个任务生成隐藏层的参数。对于共享底层模型,这些方法有更多的特定任务参数,当任务差异在更新共享参数导致冲突时,可以获得更好的性能。但是,特定任务参数量更大要求更多的训练数据来拟合,可能在大规模模型中无效。

 

2.2 子网集合和专家混合

在本文中,我们采用了一些在深度学习中最近的发现,如参数调制和组合方法可以对多任务学习建模任务关系。在DNNs中,组合模型和子网络的组合都被证明是可以提升模型性能的。

Eigen et al [16] 和 Shazeer et al [31] 将混合专家模型转换为基础的构建模块(MoE层),然后中一个DNN中堆叠它们。这个MoE层根据中训练和serving的时候的输入来选择子网络(专家)。因此,这个模型不仅中建模时更有力,而且通过引入稀疏性到门网络中来减少计算量。同时,PathNet [17],是一个巨大的神经网络,拥有很多层以及在每一层有多个子模块是为人工智能设计来处理不同任务。当训练一个任务时,同时多条路径也被不同的workers随机选择并训练。最好的路径的参数时固定的,为训练新的任务选择新的路径。我们受这些工作的启发,用子网络的组合来获得迁移学习同时节省计算量。

 

2.3 多任务学习应用

多亏分布式机器学习系统的发展,很多大规模真实环境的应用已经采用了基于DNN的多任务学习方法,并且观察到了基本的质量改进。在多语种机器翻译任务中,共享模型参数,有有限训练数据的翻译任务可以通过与训练数据量大的任务联合学习来提升。对于构建推荐系统,发现多任务学习对提供内容相关的推荐有效。在【3】中,文本推荐任务通过共享特征表达和底层隐藏层来提升。【11】中,共享底部模型用于对视频推荐学习排序算法。类似于这些工作,我们在一个真实的大规模推荐系统中评估我们的建模方法。我们证明了我们的方法是可扩展的,并且比其他先进的建模方法具有更好的性能。

 

3、准备工作

3.1 底部共享多任务模型

我们首先介绍图1(a)中的底部共享多任务模型,它是由Rich Caruana提出的框架,广泛用于多种多任务学习应用中。所以,我们中多任务建模中把它看作是一个具有代表性的基本方法。

给定K个任务,模型包括一个底部共享网络,表示为函数f,和k个塔网络hk,这里对于每个任务分别k=1,2,…,K。底部共享网络中输入层后边,塔网络是在共享底部的数据上边。然后每个任务独立的输出yk在对应的特定任务塔后边。对于任务k,这个模型可以表示为:

 

3.2 合成数据生成

之前的工作【15,27】表明多任务学习模型的性能很依赖数据中的内在任务关系。但是在真实应用中直接研究任务相关性影响多任务模型是很困难的,因为中真实应用中我们不能简单的改变任务间的关系及观察影响。因此,为了建立这种关系的研究,我们首先使用合成数据,我们可以很容易测量和控制任务相关性。

受Kang et al. [24]启发,我们生成两个回归任务,并且用两个任务的labels的皮尔逊系数作为任务相关性的数量表示。因为我们关注DNN模型,代替中【24】中使用的线性函数,我们像【33】中使用的,设置回归模型为正弦函数的组合。明确的,我们生成合成数据如下。

1)、给定输入特征维度d,我们生成两个正交单位向量u1,u2 

2)、给定尺度常数c和一个修正分数-1《p〈1,生成两个带权值的向量w1,w2,如 

3)、随机抽样输入数据点x,每个元素来自N(0,1)

4)、为两个回归任务生成两个labels如下: 

 

 

这里    是给定的参数来控制正弦函数的形状,

5)、重复3和4直到数据生成足够

 

由于非线性数据的生成过程,它不是直接生成与给定的label皮尔逊相关的任务。相反,我们对等式2中的加权向量的余弦相似度进行操作,即cos(w1,w2) = p,然后测量得到的label皮尔逊相关性。注意到在线性情况下 

这里label皮尔逊相关性就是p。

在非线性情况下,等式3和4中的y1和y2也是正相关的,如图2所示。

在本文的余下部分,对了简化,我们将加权向量的余弦相似度看作是任务相关性。

 

3.3 任务相关性的影响

为了验证低任务相关性在基准多任务模型设置中会损伤模型质量,我们在合成数据上进行了可控实验,如下:

1)、给定任务相关分数的一个列表,对每个分数生成合成数据

2)、分别在每个数据集上训练底部共享多任务模型,同时控制所有的模型及训练的超参数保持一致。

3)、分别用生成的数据集重复步骤1和2多次,但是控制任务相关分数列表和超参数一致。

4)、针对每个任务相关分数计算模型的平均性能。

 

图3显式了不同任务相关性的loss曲线。如期望的,模型性能随着任务相关性降低而下降。这个趋势对大多数不同的超参数设置是普遍的。在图3中我们仅仅展示了控制实验结果的一个例子。在这个例子中,每个塔网络是一个有8个隐藏单元的单层神经网络,共享底部网络是一个size为16的单层网络。模型用tensorflow实现并且用默认设置的Adam优化器训练。注意这两个回归任务是对称的,所以公布一个任务的结果是足够的。这个现象验证了我们的假设,传统多任务模型对任务相关性是敏感的。

 

4、模型方法

4.1 专家混合

原始的MoE模型【21】可以表示为: 

这里 g(x)的输出的第i个logit,表示专家fi的概率。

这里,fi,i=1,…,n是n个专家网络,g表示门网络,组合来自所有专家的结果。更准确的,门网络g基于输入中n个专家上产生一个分布,最后的输出是多有专家输出的加权和。

 

MoE层:尽管MoE首次是被作为一个多个单独模型的组合方法开发的,但Eigen et al [16] 和 Shazeer et al [31]将其转为一个基础构建模块(MoE层),然后堆叠它们为一个DNN。MoE层有和MoE模型一样的结构,但接受前边层的输出作为输入和输出之间的连续层。整个模型再端对端训练。

Eigen etal [16] 和 Shazeer et al [31] 提出的MoE层结构的主要目标是为了实现条件计算,在每个样本的基础,仅网络的一部分是活跃的。对于每个输入样本,模型是可以根据输入条件仅选择专家的一个子集。

 

4.2 多门的专家混合

我们提出一种新的MoE模型,和底部共享多任务模型相比,该设计不要求更多的模型参数就可以捕获任务差异。新模型叫做MMoE模型,关键思想是用等式5中的MoE层来代替等式1中的共享底部网络f。更重要的是,我们对每个任务k增加了独立的门网络gk。更精确的,任务k的输出是 

看图1(c)是模型结构的实例。

我们的实现是由ReLU激活函数的多层感知机构成。门网络是简单的用softmax层对输入的线性转换: 

这里 是可训练的矩阵。n是专家的数量,d是特征维度。

 

每个门网络可以学习根据输入样本选择一个专家的子集来使用。这在多任务学习情况下对于灵活的参数共享是可取的。在一种特殊的情况,如果仅一个最高分的专家被选择,每个门网络实际上线性地将输入空间氛围n个区域,每个区域对应一个专家。MMoE可以以一种复杂的方式对任务关系进行建模,通过决定不同的门如何不与其他的门重叠。如果任务是低相关的,那么共享专家将被处罚,这些门网络将学会利用不同的专家。和底部共享模型对比,MMoE仅多了几个额外的门网络,门网络的模型参数量是可以忽略不计的。所以整个模型在多任务学习中,尽可以能多的享受着知识迁移的好处。

为了理解如何为每个任务引入独立的门网络,可以有助于模型学习特定任务信息,我们和所有任务共享一个门的模型结构进行了对比。我们可以叫它为OMoE。这是直接将MoE层用于共享底部多任务模型中。看图1(b)是模型结构的插图。 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值