google在2019《Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts》提出了mmoe:
摘要
基于神经网络的多任务学习已经在许多现实世界中的大规模应用中取得了成功,例如推荐系统。例如,在电影推荐中,除了向用户提供他们倾向于购买和观看的电影外,系统还可能优化用户之后对电影的喜好。通过多任务学习,我们的目标是构建一个单一模型,同时学习这些多个目标和任务。然而,常用多任务模型的预测质量通常对任务之间的关系非常敏感。因此,研究任务特定目标(task-specific objectives)与任务间(inter-task)关系之间的建模权衡是非常重要的。
在这项工作中,我们提出了一种新颖的多任务学习方法,多门控混合专家(MMoE),它明确地从数据中学习建模任务关系。我们通过在所有任务中共享专家子模型,并将混合专家(MoE)结构适应于多任务学习,同时还有一个针对每个任务进行训练的门控网络以优化该任务。为了验证我们的方法在具有不同任务相关性水平数据上的有效性,我们首先将其应用于一个我们可以控制任务相关性的合成数据集。我们展示了当任务相关性较低时,所提出的方法比基线方法表现更好。我们还展示了MMoE结构根据训练数据和模型初始化的不同随机性水平,带来了额外的可训练性好处。
此外,我们通过在包括一个二分类基准测试和谷歌大规模内容推荐系统在内的真实任务上展示MMoE的性能提升,进一步证明了我们方法的有效性。
1.介绍
近年来,深度神经网络模型已经在许多现实世界中的大规模应用中取得了成功,例如推荐系统[11]。这样的推荐系统通常需要同时优化多个目标。例如,在为用户推荐电影时,我们不仅希望用户购买和观看电影,还希望他们在观看后喜欢这些电影,这样他们就会回来观看更多电影。也就是说,我们可以创建模型同时预测用户的购买行为和他们的评分。实际上,许多大规模推荐系统已经采用了使用深度神经网络(DNN)模型的多任务学习[3]。
研究人员报告说,多任务学习模型可以通过利用正则化和迁移学习来改善所有任务的模型预测[8]。然而,在实践中,多任务学习模型并不总是能在所有任务上胜过相应的单任务模型[23, 26]。实际上,许多基于DNN的多任务学习模型,对诸如数据分布差异和任务间关系等因素非常敏感[15, 34]。任务差异固有的冲突实际上可能会损害至少某些任务的预测,特别是当模型参数在所有任务中广泛共享时。
先前的工作[4, 6, 8]通过假设每个任务的特定数据生成过程,根据假设测量任务差异,然后根据任务的不同程度提出建议,来研究多任务学习中的任务差异。然而,由于现实应用通常具有更加复杂的数据模式,通常很难测量任务差异,并且很难利用这些先前工作的建议方法。
最近有几项工作提出了新颖的建模技术来处理多任务学习中的任务差异,而无需依赖于显式的任务差异测量[15, 27, 34]。然而,这些技术通常涉及为每个任务添加更多的模型参数以适应任务差异。由于大规模推荐系统可能包含数百万或数十亿个参数,这些额外的参数通常受到的约束不足,这可能会损害模型质量。这些参数的额外计算成本在实际生产环境中通常也是禁止的,因为服务资源有限。
在本文中,我们提出了一种基于新颖的多门控混合专家(MMoE)结构的多任务学习方法,该结构受到混合专家(MoE)模型[21]和最近的MoE layer[16, 31]的启发。MMoE显式地建模任务关系,并学习任务特定功能(task-specific functionalities)以利用共享表示(shared representations)。它允许参数自动分配,以捕获共享任务信息或任务特定信息,避免了为每个任务添加许多新参数的需要。
MMoE的backbone是建立在最常用的共享底层多任务深度神经网络(DNN)结构之上的[8]。共享底层模型(share bottom)结构如图1(a)所示,其中输入层之后的几层在所有任务中共享,然后每个任务在底层表示之上有一个单独的“塔”形网络。与所有任务共享一个底层网络不同,我们的模型,如图1(c)所示,有一组底层网络,每个网络都被称为一个专家。在我们的论文中,每个专家是一个前馈网络。然后我们为每个任务引入了一个门控网络。门控网络接收输入特征,并输出softmax门控,将不同权重的专家组合起来,允许不同任务以不同方式利用专家。组合后的专家结果随后被传递到特定任务的塔形网络中。通过这种方式,不同任务的门控网络可以学习到不同的专家组合模式,从而捕捉到任务之间的关系。
图1: (a) Shared-Bottom model. (b) One-gate MoE model. (c) Multi-gate MoE model
为了理解MMoE如何在不同任务相关性水平下学习其专家和任务门控网络,我们进行了一个合成实验,在这个实验中,我们可以通过它们的皮尔逊相关性来测量和控制任务相关性。类似于[24],我们使用两个合成回归任务,并使用正弦函数作为数据生成机制来引入非线性。在这种设置下,我们的方法在性能上超过了基线方法,特别是当任务相关性较低时。在这组实验中,我们还发现MMoE更容易训练,并在多次运行中收敛到更好的损失。这与最近的发现有关,即调制和门控机制可以改善在训练非凸深度神经网络时的可训练性[10, 19]。
我们进一步在基准数据集上评估了MMoE的性能,UCI人口普查收入数据集,采用多任务问题设置。我们将其与几种使用软参数共享(soft parameter sharing)来建模任务关系的SOTA多任务模型进行了比较,并观察到我们的方法有所改进。
最后,我们在真实的大规模内容推荐系统上测试了MMoE,在这个系统中,在向用户推荐item的同时,同时学习两个分类任务。我们训练了MMoE模型,使用了数千亿个训练实例,并将其与共享底层的生产模型进行了比较。我们观察到离线指标如AUC有显著提高。此外,我们的MMoE模型在实时实验中一致地提高了在线指标。
本文的贡献有三个方面:
- 首先,我们提出了一种新颖的多门控混合专家模型,该模型显式地建模任务关系。通过调制(modulation)和门控网络(gating networks),我们的模型会自动调整参数化,以模拟共享信息和模拟任务特定信息。
- 其次,我们在合成数据上进行了控制实验。我们报告了任务相关性如何影响多任务学习中的训练动态,以及MMoE如何提高模型的表达能力和可训练性。
- 最后,我们在真实的基准数据和拥有数亿用户和物品的大规模生产推荐系统上进行了实验。我们的实验验证了我们提出的方法在现实世界环境中的效率和有效性。
2 相关工作
2.1 DNN中的多任务学习
多任务模型可以学习不同任务之间的共性和差异。这样做可以提高每个任务的效率和模型质量[4, 8, 30]。一种广泛使用的多任务学习模型是由Caruana[8, 9]提出的,该模型具有共享底部模型(share-bottom)结构,其中底部隐藏层在任务之间共享。这种结构大大降低了过拟合的风险,但由于任务差异导致的优化冲突,可能会受到影响,因为所有任务都需要在共享底部层上使用同一组参数。
为了了解任务相关性如何影响模型质量,先前的工作使用合成数据生成并操纵不同类型的任务相关性,以评估多任务模型的有效性[4–6, 8]。
一些最近的方法不是在任务之间共享隐藏层和相同的模型参数,而是在任务特定参数上添加不同类型的约束[15, 27, 34]。例如,对于两个任务,Duong等人[15]在两组参数之间添加L-2约束。交叉缝合网络(cross-stick network)[27]为每个任务学习任务特定隐藏层嵌入的独特组合。Yang等人[34]使用张量分解模型为每个任务生成隐藏层参数。与共享底部模型相比,这些方法具有更多的任务特定参数,并且在任务差异导致更新共享参数时的冲突时可以实现更好的性能。然而,更多的任务特定参数需要更多的训练数据来适应,并且在大规模模型中可能效率不高。
2.2 子网集成与专家混合
在本文中,我们将深度学习中的一些最新发现,如参数调制(parameter modulation)和集成(ensemble)方法,应用于多任务学习中的任务关系建模。在DNN中,集成模型和子网集成已被证明可以提高模型性能[9, 20]。
Eigen等人[16]和Shazeer等人[31]将混合专家模型(MoE model)转化为基本构建模块(MoE layer),并将其堆叠在深度神经网络中。MoE layer能够在训练时和服务时根据该层的输入选择子网络(专家)。因此,该模型不仅在建模能力上更加强大,还通过在选择门控网络中引入稀疏性降低了计算成本。
类似地,PathNet[17]是为人工通用智能设计来处理不同任务的巨大神经网络,它具有多层结构,且每层包含多个子模块。在训练一个任务时,会随机选择多条路径并由不同工作节点并行训练。最优路径的参数会被固定,然后为新任务选择新路径进行训练。
我们从这些工作中获得启发,通过使用子网络(专家)集成来实现迁移学习,同时节省计算资源。
2.3 多任务学习应用
得益于分布式机器学习系统的发展[13],许多大规模现实世界应用已经采用了基于DNN的多任务学习算法,并观察到了显著的质量改进。
- 在多语言机器翻译任务中,通过共享模型参数,具有有限训练数据的翻译任务可以通过与具有大量训练数据的任务联合学习来改进[22]。
- 在构建推荐系统时,多任务学习被发现有助于提供上下文感知的推荐[28, 35]。在[3]中,通过共享特征表示和下层隐藏层改进了文本推荐任务。在[11]中,使用共享底部模型学习视频推荐的排序算法。类似于这些先前的工作,我们在现实世界的大规模推荐系统上评估了我们的建模方法。
我们证明了得益于分布式机器学习系统的发展[13],许多大规模现实世界应用已经采用了基于DNN的多任务学习算法,并观察到了显著的质量改进。
在多语言机器翻译任务中,通过共享模型参数,具有有限训练数据的翻译任务可以通过与具有大量训练数据的任务联合学习来改进[22]。在构建推荐系统时,多任务学习被发现有助于提供上下文感知的推荐[28, 35]。在[3]中,通过共享特征表示和下层隐藏层改进了文本推荐任务。在[11]中,使用共享底部模型学习视频推荐的排序算法。
类似于这些先前的工作,我们在现实世界的大规模推荐系统上评估了我们的建模方法。我们证明了我们的方法确实是可扩展的,并且与其他最先进的建模方法相比具有有利的性能。
3.前提
3.1 Shared-bottom多任务模型
我们首先介绍了图1(a)中的共享底层多任务模型,这是由Rich Caruana[8]提出并被许多多任务学习应用所广泛采用的一个框架[18, 29]。因此,我们将其视为多任务建模中的代表性基线方法。
给定K个任务,该模型由一个共享底层网络组成,表示为函数𝑓,以及K个塔形网络(tower networks) $h_k$,其中:k=1,2,…,K,分别对应每个任务。共享底层网络跟在输入层之后,塔形网络建立在共享底层的输出之上。然后,每个任务的单独输出$y_k$跟随相应的特定任务塔形网络。对于任务k,模型可以表述为:
\[y_k = h_k(f(x))\]…(1)
3.2 合成数据生成
先前的研究[15,27]表明,多任务学习模型的性能高度依赖于数据中固有的任务相关性。然而,在实际应用中直接研究任务相关性如何影响多任务模型具有挑战性,因为我们无法轻易改变任务间的相关性并观察其效果。因此,为了建立这种关系的实证研究,我们首先使用可以方便测量和控制任务相关性的合成数据。
受Kang等人[24]的启发,我们生成两个回归任务,并使用这两个任务标签的皮尔逊相关系数作为任务关系的量化指标。由于我们关注的是DNN模型,不同于[24]中使用的线性函数,我们采用[33]中的正弦函数组合作为回归模型。具体合成数据生成步骤如下:
- 给定输入特征维度$d$,生成两个正交单位向量$\mathbf{u}_1, \mathbf{u}_2 \in \mathbb{R}^d$,即满足:
-
给定尺度常数$c$和相关性分数$-1 \leq \rho \leq 1$,生成两个权重向量$\mathbf{w}_1, \mathbf{w}_2$:
\(\mathbf{w}_1 = c\mathbf{u}_1\) \(\mathbf{w}_2 = c\left( \rho\mathbf{u}_1 + \sqrt{1-\rho^2}\mathbf{u}_2 \right) \tag{2}\)
-
随机采样一个输入数据点$\mathbf{x} \in \mathbb{R}^d$,其每个元素服从标准正态分布$N(0,1)$。
-
为两个回归任务生成标签$y_1, y_2$:
\(y_1 = \mathbf{w}_1^\top \mathbf{x} + \sum_{i=1}^m \sin(\alpha_i \mathbf{w}_1^\top \mathbf{x} + \beta_i) + \epsilon_1 \tag{3}\) \(y_2 = \mathbf{w}_2^\top \mathbf{x} + \sum_{i=1}^m \sin(\alpha_i \mathbf{w}_2^\top \mathbf{x} + \beta_i) + \epsilon_2 \tag{4}\)
其中:
- $\alpha_i, \beta_i$($i=1,2,…,m$)是控制正弦函数形状的给定参数,
- $\epsilon_1, \epsilon_2$独立同分布于$N(0,0.01)$。
-
重复步骤3-4直至生成足够数据量。
该合成数据生成方法通过控制参数$\rho$可以精确调节两个任务间的相关性:
- $\rho=1$表示完全相关
- $\rho=-1$表示完全负相关
- $\rho=0$表示不相关
同时通过正弦函数组合引入非线性特征,更符合DNN模型的学习特性。
数据生成中的相关性控制
由于非线性数据生成过程,直接生成具有给定标签皮尔逊相关性的任务并不直观。因此,我们通过调整公式(2)中权重向量的余弦相似度$\cos(\mathbf{w}_1,\mathbf{w}_2) = \rho$来间接控制相关性,随后测量生成的标签皮尔逊相关系数。需要注意的是,在线性情况下:
\[\begin{cases} y_1 = \mathbf{w}_1^\top \mathbf{x} + \epsilon_1 \\ y_2 = \mathbf{w}_2^\top \mathbf{x} + \epsilon_2 \end{cases}\]标签$y_1$和$y_2$的皮尔逊相关系数严格等于$\rho$。
在非线性情况下(公式(3)和公式(4)),如图2所示,$y_1$和$y_2$仍然保持正相关关系。为简化表述,在本文后续部分,我们将权重向量的余弦相似度直接称为”任务相关性”。
图2:标签皮尔逊相关系数 vs. 权重余弦相似度(任务相关性)。X轴表示权重向量$\mathbf{w}_1$和$\mathbf{w}_2$的余弦相似度$\cos(\mathbf{w}_1,\mathbf{w}_2) = \rho$,取值范围$[-1, 1]$。Y轴表示实际生成的标签$y_1$和$y_2$之间的皮尔逊相关系数
3.3 任务相关性的影响
为了验证在基线多任务模型设置中,任务相关性较低会损害模型质量,我们在合成数据上进行了如下对照实验:
- 给定一组任务相关系数列表,为每个相关系数生成对应的合成数据集;
- 在严格控制所有模型与训练超参数保持一致的前提下,分别在每个数据集上训练一个共享底层(Shared-Bottom)多任务模型;
- 独立重复执行步骤1和2数百次,确保每次生成的数据集相互独立,但始终保持任务相关系数列表与超参数设置相同;
- 计算每个任务相关系数下模型的平均性能表现。
图3展示了不同任务相关性对应的损失曲线。与预期一致,随着任务相关性的降低,模型性能呈现下降趋势。这一规律在多种超参数设置下均成立。此处我们仅以图3为例展示对照实验结果:
- 在该案例中,每个塔式网络(tower network)采用包含8个隐藏单元的单层神经网络结构;
- 共享底层网络为规模=16的单层网络;
- 模型基于TensorFlow [1]框架实现;
- 使用默认参数设置的Adam优化器[25]进行训练。
由于两个回归任务具有对称性,故仅需汇报其中一个任务的结果。该现象验证了我们的假设:传统多任务模型对任务间关系具有敏感性。
4 建模方法
4.1 MoE模型(Mixture-of-Experts)
原始专家混合模型(MoE, Mixture-of-Experts)[21] 可表述为:
\[y = \sum_{i=1}^{n} \delta(x)_i f_i(x) \quad (5)\]其中满足:
- $\sum_{i=1}^{n} \delta(x)_i = 1$
- $\delta(x)_i$:(即 $\delta(x)$ 的第 $i$ 个输出logit)表示选择专家 $f_i$ 的概率
这里,$f_i$($i=1,…,n$)代表 $n$ 个专家网络,$\delta$ 表示门控网络(gating network),其作用是对所有专家的输出结果进行集成。具体而言:
- 门控网络 $\delta$ 根据输入数据生成一个关于 $n$ 个专家的概率分布
- 最终输出是所有专家输出的加权和
MoE layer:
虽然MoE最初是作为多个独立模型的集成方法开发的,但Eigen等人[16]和Shazeer等人[31]将其转化为基础构建模块(MoE layer),并堆叠在深度神经网络(DNN)中。MoE layer与原始MoE模型结构相同,但:
- 输入来自前一层的输出
- 输出传递给后一层
整个模型通过端到端方式进行训练。
Eigen等人[16]和Shazeer等人[31]提出的MoE层结构的主要目标是:实现条件计算[7,12]——即根据每个输入样本动态激活网络的部分组件。具体表现为:对于每个输入样本,门控网络能够基于输入条件仅选择一部分专家参与计算。
4.2 多门控混合专家模型(Multi-gate Mixture-of-Experts)
我们提出了一种新的MoE模型,该模型旨在捕捉任务差异,同时相较于共享底层多任务模型,不需要显著增加模型参数量。这个新模型被称为多门控混合专家模型(MMoE, Multi-gate Mixture-of-Experts),其核心思想是:将公式1中的共享底层网络f替换为公式5中的MoE层。更重要的是,我们为每个任务k添加了一个单独的门控网络$δ^k$。更准确地说,任务k的输出$y_k$可以表示为:
\[y_k = h_k(f_k(x)) \quad (6)\]其中$f_k(x)$的计算公式为:
\[f_k(x) = Σ_{i=1}^n δ^k(x)_i f_i(x) \quad (7)\]模型结构示意图请参见图1(c)。
我们的实现采用相同的具有ReLU激活函数的MLP。门控网络简单地通过对输入进行线性变换并添加softmax层构成:
\[δ^k(x) = softmax(W_{δ^k}x) \quad (8)\]其中:
- $W_{δ^k} ∈ R^{n×d}$是一个可训练矩阵。n表示专家数量,d表示特征维度。
每个门控网络可以学习根据输入样本”选择”要使用的专家子集。这对于多任务学习中实现灵活的参数共享是非常可取的。作为一种特殊情况,如果只选择门控得分最高的单个专家,那么每个门控网络实际上将输入空间线性划分为n个区域,每个区域对应一个专家。MMoE能够通过决定不同门控产生的划分如何相互重叠,以一种复杂的方式对任务关系进行建模。如果任务相关性较低,那么共享专家会受到惩罚,这些任务的门控网络将学会利用不同的专家。相较于共享底层模型,MMoE只增加了几个额外的门控网络,而门控网络中的模型参数数量可以忽略不计。因此,整个模型仍然尽可能地享受多任务学习中的知识迁移优势。
为了理解为每个任务引入单独的门控网络如何帮助模型学习任务特定信息,我们将其与所有任务共享一个门控的网络结构进行比较。我们称之为单门控混合专家模型(OMoE, One-gate Mixture-of-Experts)。这是MoE层对共享底层多任务模型的直接改编。模型结构示意图请参见图1(b)。
5 MMoE在合成数据上的表现
在本节中,我们希望了解MMoE模型是否确实能够更好地处理任务相关性较低的情况。与第3.3节类似,我们在合成数据上进行对照实验来研究这个问题。我们改变合成数据的任务相关性,观察不同模型的行为变化。我们还进行了可训练性分析,结果表明基于MoE的模型相比Shared-Bottom模型更容易训练。
5.1 不同任务相关性数据上的表现
我们对提出的MMoE模型和两个基线模型(Shared-Bottom模型和OMoE模型)重复了第3.3节中的实验。
模型结构
输入维度为100。两个基于MoE的模型都有8个专家,每个专家实现为单层网络。专家网络隐藏层的大小为16。塔式网络仍然是大小为8的单层网络。我们注意到共享专家和塔式网络中的模型参数总数为100 × 16 × 8 + 16 × 8 × 2 = 13056。对于基线Shared-Bottom模型,我们仍将塔式网络设置为大小为8的单层网络。我们将单层共享底层网络的大小设置为13056/(100 + 8 × 2) ≈ 113。
实验结果
所有模型都使用Adam优化器进行训练,学习率通过网格搜索从[0.0001, 0.001, 0.01]中选取。对于每个模型-相关性对设置,我们进行了200次独立随机数据生成和模型初始化的运行。平均结果如图4所示。
图4 MMoE、OMoE和Shared-Bottom在具有不同相关性的合成数据上的平均表现
观察结果总结如下:
-
对于所有模型,在相关性较高的数据上的表现都优于在相关性较低的数据上的表现。
-
MMoE模型在不同相关性数据上的表现差距比OMoE模型和Shared-Bottom模型小得多。这一趋势在我们比较MMoE模型和OMoE模型时尤为明显:在两个任务完全相同的极端情况下,MMoE模型和OMoE模型的表现几乎没有差异;然而当任务相关性降低时,OMoE模型的表现会出现明显的退化,而MMoE模型几乎不受影响。因此,在任务相关性较低的情况下,拥有针对特定任务的门控机制来建模任务差异至关重要。
-
在所有场景下,就平均表现而言,两个MoE模型都优于Shared-Bottom模型。这表明MoE结构本身带来了额外的优势。基于这一观察,我们将在下一小节展示MoE模型比Shared-Bottom模型具有更好的可训练性。
5.2 可训练性(Trainability)
对于大型神经网络模型,我们非常关注它们的可训练性,即模型在一系列超参数设置和模型初始化范围内的鲁棒性。
最近,Collins等人[10]发现,一些我们原以为比普通RNN表现更好的门控RNN模型(如LSTM和GRU)实际上只是更容易训练,而不是具有更好的模型容量。虽然我们已经证明MMoE能够更好地处理任务相关性较低的情况,但我们还想更深入地了解它在可训练性方面的表现。
在我们的合成数据上,我们可以自然地研究模型对数据和模型初始化中随机性的鲁棒性。我们在每个设置下重复进行多次实验。每次实验数据都来自相同的分布但使用不同的随机种子,并且模型也采用不同的初始化方式。我们在图5中绘制了重复运行最终损失值的直方图。
图5 MMoE、OMoE和Shared-Bottom在具有不同相关性的合成数据上的表现直方图
从直方图中我们可以得到三个有趣的观察结果:
-
首先,在所有任务相关性设置下,Shared-Bottom模型的表现方差都比基于MoE的模型大得多。这意味着Shared-Bottom模型通常比基于MoE的模型有更多质量较差的局部最小值。
-
其次,虽然当任务相关性为1时,OMoE模型的表现方差与MMoE模型同样稳健,但当任务相关性降低到0.5时,OMoE的稳健性明显下降。值得注意的是,MMoE和OMoE之间唯一的区别是否有多门控结构。这验证了多门控结构在解决由任务差异引起的冲突导致的不良局部最小值方面的有效性。
-
最后,值得注意的是,三个模型的最低损失值是可比的。这并不令人惊讶,因为从理论上讲神经网络是通用逼近器。只要有足够的模型容量,就应该存在一个能够同时学好两个任务的”正确”Shared-Bottom模型。然而需要注意的是,这是200次独立实验运行的分布结果。我们怀疑对于更大更复杂的模型(例如当共享底层网络是循环神经网络时),获得”正确”任务关系模型的机会将更低。因此,显式地建模任务关系仍然是可取的。
6 真实数据实验
本节我们在真实数据集上进行实验,以验证所提方法的有效性。
6.1 基线方法
除Shared-Bottom多任务模型外,我们还将所提方法与几种试图从数据中学习任务关系的先进多任务深度神经网络模型进行比较。
L2约束方法[15]:该方法专为具有两个任务的跨语言问题设计。在此方法中,通过L2约束实现不同任务参数的软共享。
设:$y_k$表示任务$k$的真实标签($k \in {1,2}$)
任务$k$的预测表示为: $\widehat{y}_k = f(x; \theta_k)$,其中:$\theta_k$为模型参数。
该方法的优化目标函数为:
\[L(y_1, f(x; \theta_1)) + L(y_2, f(x; \theta_2)) + \alpha \|\theta_1 - \theta_2\|_2^2\]其中:
- $y_1,y_2$分别为任务1和任务2的真实标签,
- $\alpha$为超参数。
该方法通过调节$\alpha$的大小来建模任务相关性。
交叉缝合方法(Cross-Stitch)[27]:该方法通过引入”交叉缝合(Cross-Stitch)”单元实现两个任务间的知识共享。该单元接收来自任务1和任务2的独立隐藏层输入$x_1$和$x_2$,并通过以下方程分别输出$\widetilde{x}_1$和$\widetilde{x}_2$:
\[\begin{bmatrix} \widetilde{x}_1 \\ \widetilde{x}_2 \end{bmatrix} = \begin{bmatrix} \alpha_{11} & \alpha_{12} \\ \alpha_{21} & \alpha_{22} \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \end{bmatrix}\]其中:
- $\alpha_{jk}$($j,k=1,2$)是可训练参数,表示从任务$k$到任务$j$的交叉迁移。
- $\widetilde{x}_1$和$\widetilde{x}_2$分别被传送到任务1和任务2的更高层。
张量分解方法[34]:该方法将多任务权重建模为张量,并采用张量分解方法实现跨任务参数共享。在我们的比较中,我们实现了Tucker分解来学习多任务模型,据报道这种方法能产生最可靠的结果[34]。例如,给定:
- 输入隐藏层大小$m$
- 输出隐藏层大小$n$
- 任务数$k$
权重张量$W$(维度为$m \times n \times k$),通过以下方程获得:
\[W = \sum_{i_1=1}^{r_1}\sum_{i_2=1}^{r_2}\sum_{i_3=1}^{r_3} S(i_1,i_2,i_3) \cdot U_1(:,i_1) \circ U_2(:,i_2) \circ U_3(:,i_3)\]其中:
- 大小为$r_1 \times r_2 \times r_3$的张量$S$,大小为$m \times r_1$的矩阵$U_1$,大小为$n \times r_2$的矩阵$U_2$,以及大小为$k \times r_3$的矩阵$U_3$均为可训练参数。它们通过标准反向传播一起训练。
- $r_1,r_2,r_3$为超参数。
6.2 超参数调优
我们采用近期深度学习框架[10]中使用的超参数调优器,为真实数据集实验中的所有模型搜索最佳超参数。该调优算法是基于高斯过程的模型,类似于Spearmint[14,32]中介绍的方法。
公平性对比实验设置
为确保实验对比的公平性,我们通过设定每层隐藏单元数的统一上限(2048)来限制所有方法的最大模型规模。对于MMoE模型而言,这一限制具体体现为”专家数量”与”每个专家的隐藏单元数”的乘积。本研究提出的方法与所有基线模型均采用TensorFlow[1]框架实现。
针对所有方法,我们统一调节以下参数:
- 学习率
- 训练步数
同时,我们还针对各方法特性调节其特定超参数:
- MMoE模型:专家数量、每个专家的隐藏单元数
- L2约束方法:隐藏层大小、L2约束权重α
- 交叉缝合方法:隐藏层大小、交叉缝合层大小
- 张量分解方法:Tucker分解参数r1、r2、r3、隐藏层大小
6.3 Census-income Data
在本小节中,我们报告并讨论在census-income数据集上的实验结果。
6.3.1 Dataset Description.
UCI census-income数据集[2]提取自1994年人口普查数据库。该数据集包含299,285条美国成年人的demographic信息实例,共有40个特征。我们通过将部分特征设置为预测目标,从该数据集中构建了两个多任务学习问题,并在10,000个随机样本上计算了任务标签的Pearson相关系数的绝对值:
(1) 任务1:预测收入是否超过5万美元; 任务2:预测该人的婚姻状况是否为”从未结婚”。 Pearson相关系数绝对值:0.1768。
(2) 任务1:预测教育水平是否达到大学及以上; 任务2:预测该人的婚姻状况是否为”从未结婚”。 Pearson相关系数绝对值:0.2373。
在该数据集中,有199,523个训练样本和99,762个测试样本。我们进一步将测试样本按1:1的比例随机划分为验证集和测试集。
需要注意的是,我们将教育和婚姻状况从输入特征中移除,因为在这两种设置中它们被视为标签。我们将MMoE与前述基线方法进行比较。由于这两组任务都是二分类问题,我们使用AUC分数作为评估指标。在这两组中,我们将婚姻状况任务视为辅助任务,将第一组的收入任务和第二组的教育任务视为主任务。
对于超参数调优,我们使用验证集上主任务的AUC作为优化目标。对于每种方法,我们使用超参数调优器进行数千次实验以找到最佳超参数配置。在超参数调优器为每种方法找到最佳超参数后,我们在训练数据集上以随机参数初始化的方式进行400次训练,并报告测试数据集上的结果。
6.3.2 Results.
对于这两组任务,我们报告了400次运行的平均AUC,以及获得最佳主任务性能的那次运行的AUC。表1和表2展示了两组任务的结果。我们还通过为每个任务单独训练一个模型来调优和训练单任务模型,并报告其结果。
鉴于任务相关性(通过Pearson相关系数粗略衡量)在这两组中都不是很强,Shared-Bottom模型在多任务模型中几乎总是表现最差(Tensor-Factorization方法除外)。L2-Constrained和Cross-Stitch方法为每个任务设置了独立的模型参数,并对参数学习方式施加了约束,因此其表现优于Shared-Bottom模型。然而,对模型参数学习施加约束严重依赖于任务关系的假设,这比MMoE使用的参数调制机制灵活性更低。因此,在任务相关性比第一组更弱的第二组中,MMoE在所有方面都优于其他多任务模型。
Tensor-Factorization方法在两组中表现最差。这是因为该方法倾向于用低秩张量和矩阵来泛化所有任务的隐藏层权重。当任务相关性较弱时,该方法容易过度泛化,需要更多数据和更长的训练时间,因此对任务相关性非常敏感。
多任务模型在验证集上没有针对辅助婚姻状况任务进行调优,而单任务模型是专门针对该任务进行训练的。因此,单任务模型在辅助任务上获得最佳性能是合理的。
6.4 大规模内容推荐
在本小节中,我们针对谷歌公司的大规模内容推荐系统进行实验。该系统需要从数亿个独特项目中为数十亿用户生成推荐结果。具体而言,给定用户当前消费某个项目的实时行为,该推荐系统旨在向用户展示下一批可能消费的相关项目列表。
我们的推荐系统采用了与现有内容推荐框架[11]类似的架构,包含候选生成器和深度排序模型两个部分。在我们的设置中,深度排序模型被训练用于优化两类排序目标:
- (1) 优化与用户参与度(engagement)相关目标,如点击率和参与时长;
- (2) 优化与用户满意度(satisfaction)相关目标,如点赞率。
我们的训练数据包含数千亿条用户隐式反馈数据(如点击和点赞)。如果单独训练每个任务对应的模型,每个模型都需要学习数十亿个参数。因此,与单独学习多个目标相比,Shared-Bottom架构具有模型规模更小的优势。事实上,这种Shared-Bottom模型已经被应用于生产环境。
6.4.1 实验设置
我们通过为深度排序模型创建两个二分类任务来评估多任务模型:
- (1) 预测用户参与度相关行为;
- (2) 预测用户满意度相关行为。
我们将这两个任务分别命名为参与度子任务和满意度子任务。
我们的推荐系统对稀疏特征使用嵌入表示,并将所有稠密特征归一化到[0,1]范围内。对于Shared-Bottom模型,我们将共享底层网络实现为一个包含多个全连接层的feed-forward神经网络,并使用ReLU激活函数。在共享底层网络之上,我们为每个任务构建一个全连接层作为塔式网络。对于MMoE模型,我们只需将共享底层网络的顶层替换为MMoE层,同时保持输出隐藏单元的维度不变。因此,在模型训练和服务过程中,我们没有增加明显的额外计算成本。
我们还实现了L2-Constrained和Cross-Stitch等基线方法。由于其模型架构特点,这些方法的参数量大约是Shared-Bottom模型的两倍。我们没有与Tensor-Factorization方法进行比较,因为在不进行大量效率优化的情况下,Tucker积的计算无法扩展到十亿级规模。所有模型都采用小批量随机梯度下降(SGD)进行优化,批量大小为1024。
6.4.2 离线评估结果
在离线评估中,我们在固定的300亿条用户隐式反馈数据上训练模型,并在100万条保留数据集上进行评估。由于满意度子任务的标签比参与度子任务稀疏得多,离线评估结果表现出很高的噪声水平。我们仅在表3中展示了参与度子任务的AUC分数和R平方分数。
我们展示了模型在训练200万步(相当于100亿个样本,批量大小为1024)、400万步和600万步后的结果。MMoE在两个指标上都优于其他模型。L2-Constrained和Cross-Stitch的表现不如Shared-Bottom模型。这可能是因为这两个模型基于两个独立的单任务模型构建,拥有过多参数而无法得到良好约束。
指标 | AUC@2M | AUC@4M | AUC@6M | R2@2M | R2@4M | R2@6M |
---|---|---|---|---|---|---|
Shared-Bottom | 0.6879 | 0.6888 | 0.6900 | 0.08812 | 0.09159 | 0.09287 |
L2-Constrained | 0.6866 | 0.6881 | 0.6895 | 0.08668 | 0.09030 | 0.09213 |
Cross-Stitch | 0.6880 | 0.6885 | 0.6899 | 0.08949 | 0.09112 | 0.09332 |
OMoE | 0.6876 | 0.6891 | 0.6893 | 0.08749 | 0.09085 | 0.09230 |
MMoE | 0.6894 | 0.6897 | 0.6908 | 0.08978 | 0.09263 | 0.09362 |
表3 真实大规模推荐系统上的engagement表现
为了更好地理解门控机制的工作原理,我们在图6中展示了每个任务softmax门控的分布情况。可以看出,MMoE学习到了这两个任务的差异,并自动平衡了共享参数和非共享参数。由于满意度子任务的标签比参与度子任务更稀疏,其门控更集中于单个专家。
图6 在参与度和满意度子任务上的Softmax门控分布
6.4.3 在线实验结果
最后,我们在内容推荐系统上对MMoE模型进行了在线实验。我们没有对L2-Constrained和Cross-Stitch方法进行在线实验,因为这两个模型会因引入更多参数而使服务时间增加一倍。
我们进行了两组实验。第一组实验是比较Shared-Bottom模型和单任务模型。Shared-Bottom模型同时在参与度子任务和满意度子任务上进行训练,而单任务模型仅在参与度子任务上进行训练。需要注意的是,虽然单任务模型没有在满意度子任务上进行训练,但在测试时它仍作为排序模型提供服务,因此我们也可以计算其满意度指标。第二组实验是将我们的MMoE模型与第一组实验中的Shared-Bottom模型进行比较。两组实验使用相同规模的在线流量。
表4展示了这些在线实验的结果。首先,使用Shared-Bottom模型使满意度在线指标大幅提升19.72%,同时参与度在线指标略有下降(-0.22%)。其次,使用MMoE模型相比Shared-Bottom模型提升了两个指标。在这个推荐系统中,参与度指标的原始值远大于满意度指标,因此在提升满意度指标的同时不损失甚至提升参与度指标是非常理想的。
真实实验 | 参与度指标提升 | 满意度指标提升 |
---|---|---|
Shared-Bottom对比Single-Task的提升 | -0.22%* | 19.72%** |
MMoE对比Shared-Bottom的提升 | 0.25%** | 2.65%** |
表4 真实实验结果, $*$: 表示90%置信区间, $**$: 表示95%置信区间
7 结论
我们提出了一种新颖的多任务学习方法——多门控混合专家(MMoE),该方法能显式地从数据中学习建模任务关系。通过在合成数据上的对照实验,我们证明了所提方法能更好地处理任务相关性较弱的场景。我们还证明了MMoE相比基线方法更容易训练。通过在基准数据集和真实大规模推荐系统上的实验,我们展示了该方法相对于多种先进基线多任务学习模型的优势。
除了上述优势外,实际机器学习生产系统中的另一个主要设计考量是计算效率。这也是Shared-Bottom多任务模型被广泛采用的最重要原因之一。模型的共享部分在服务时节省了大量计算资源[18,29]。所有三种先进基线模型(见第6.1节)都在牺牲这种计算优势的情况下学习任务关系。然而,MMoE模型在很大程度上保留了计算优势,因为门控网络通常很轻量级,且专家网络在所有任务间共享。此外,通过将门控网络设计为稀疏top-k门控[31],该模型还有潜力实现更好的计算效率。
我们希望这项工作能激励其他研究者进一步探索使用这些方法进行多任务建模。