kuaishou在《HoME: Hierarchy of Multi-Gate Experts for Multi-Task Learning at Kuaishou》提出了一种新的HoME的多任务实现方式,我们来看一下实现:
摘要
本文介绍了快手短视频服务中遇到的实际问题及从中汲取的经验教训。在工业界,广泛使用的多任务框架是专家混合(Mixture-of-Experts, MoE)范式,该框架通常为每个任务引入一些共享和特定的专家,然后通过门控网络来衡量相关专家的贡献。尽管MoE取得了显著的改进,但在我们的迭代过程中,我们仍然观察到三个严重影响模型性能的异常现象:
- (1)专家崩溃:我们发现专家的输出分布存在显著差异,一些专家在使用ReLU激活函数时,超过90%的激活值为零,这使得门控网络难以分配公平的权重来平衡专家。
- (2)专家退化:理想情况下,共享专家旨在同时为所有任务提供预测信息。然而,我们发现一些共享专家仅被一个任务占据,这表明共享专家失去了其能力,退化为特定专家。
- (3)专家欠拟合:在我们的服务中,有数十个行为任务需要预测,但我们发现一些数据稀疏的预测任务往往忽略其特定专家,并将较大的权重分配给共享专家。原因可能是共享专家能够从密集任务中感知更多的梯度更新和知识,而特定专家由于行为稀疏,容易陷入欠拟合。
基于这些观察,我们提出了HoME,旨在实现一个简单、高效且平衡的多任务学习MoE系统。具体而言,我们进行了三项有见地的改进:
- (1)专家归一化和Swish机制,以对齐专家输出分布并避免专家崩溃。
- (2)层次掩码机制,以增强任务间的共享效率,减少占用问题并远离专家退化。
- (3)特征门控和自门控机制,以确保每个专家都能获得适当的梯度,从而最大化其有效性。
据我们所知,本文是首个专注于提高多任务MoE系统稳定性的工作,我们进行了广泛的离线和在线实验(离线平均提高0.52%的GAUC,在线平均每位用户的播放时间提高0.954%)和消融分析,以证明HoME的有效性。HoME已部署在快手的短视频服务中,每日为4亿用户提供服务。
1 引言
近年来,诸如抖音和快手等短视频应用迅速崛起;与其他平台不同,用户在这些平台上通常没有明确的意图,例如在谷歌上搜索关键词或在亚马逊上购买衣物/食品,而快手几乎扮演了一种娱乐角色,用户无需输入任何概念。如图1所示,当使用快手时,用户通常通过简单地上下滑动屏幕观看多个自动播放的短视频,有时会留下一些互动,例如长观看、评论等。隐式反馈的比例远大于其他场景。因此,快手能够成长为一个拥有全球4亿用户的大型应用的唯一原因是,我们的系统能够提供个性化和有趣的短视频,给用户带来满意的体验。为此,利用用户留下的稀少但多样的行为线索来准确捕捉他们的兴趣是根本任务。通常,常见的做法是将这种学习过程构建为多任务学习范式,以构建一个能够同时输出不同用户互动的多个估计概率的模型,并通过真实的用户行为日志来监督该模型。
图1 典型的快手多任务行为
作为一种典型的多任务解决方案,专家混合(MoE)的思想在工业界广泛用于实现参数软共享。最著名的方法是多重门控专家混合(MMoE),它由两个主要组件组成(如图2(a)所示):
- 专家网络(expert network)——一组用于建模输入特征和隐式高级特征交叉的专家网络(例如,带有ReLU的MLP)
- 门控网络(gating network)——任务特定的门控网络(例如,带有Softmax的MLP),用于估计不同专家的重要性,以融合它们的输出用于相应任务
最近,一些工作通过引入任务特定专家(例如,CGC)或堆叠更多专家层(例如,PLE,AdaTT)扩展了专家网络,以增强MMoE系统的能力。在快手,我们之前的在线多任务模块配备了MMoE,与基线相比显著改善了我们的A/B测试指标。然而,在推出MMoE后,我们在过去几年中尝试了对多任务建模模块的几种不同更改。但都以失败告终,包括升级到两个或更多专家层,扩展更多共享专家,引入额外的特定专家等。因此,我们开始深入分析以确定可能阻碍我们迭代的潜在原因。不出所料,我们发现了三个严重影响多任务性能的异常现象。
图2 一个朴素的MMoE和专家崩溃问题在实践中出现的说明。如(b)所示,expert总是所有任务分配的门值最大,大多数情况下超过0.98。我们还注意到,expert6的输出要小得多。激活值比其他专家更稀疏,如(c)所示。这些现象表明,在真实数据流场景中, MMoE不稳定,容易崩溃,阻碍了专家之间的公平比较,影响了模型的性能
专家崩溃:我们首先检查了MMoE的门输出情况,并在图2(b)中显示了主要任务分配给6个共享专家的门权重。值得注意的是,所有门(gate)都向共享专家6分配了较大的权重,几乎忽略了其他共享专家。因此,我们接下来检查了共享专家的输出值分布,并观察到它们的显著差异。如图2(c)所示,专家1∼5的均值和方差处于相似水平,但专家6的均值小了100倍。这种不一致的输出分布导致门控网络难以分配公平的权重来平衡不同的专家,这进一步导致处于不同数值水平的专家相互排斥。此外,我们还发现专家输出有太多的0激活(即超过90%的输出),导致其平均导数较小,参数训练不足。
专家退化:在我们解决了上述严重的专家崩溃问题后,我们成功地将多任务模块升级为共享特定的MoE变体CGC。因此,我们好奇门控权重是否能达到预期结果,即所有任务门控网络都能为共享专家和其特定专家分配可感知的分数,以达到平衡状态。不幸的是,我们发现了另一个意外的专家退化现象(如图3所示)。在这里,我们展示了一些主要塔的门控机制的平均分数,我们观察到共享专家几乎不对所有任务做出贡献,而是退化为仅属于少数任务的特定专家。因此,这种观察表明,天真的共享和特定专家架构难以收敛到理想状态。
图3 在CGC中的专家退化问题,其中两个共享专家几乎被task2和task7所垄断,分别以特定的风格工作。
专家欠拟合:在我们进一步解决了专家退化问题并增强了共享专家对所有任务的效率后,我们发现一些特定专家被分配了较小的门值,使得相应任务仅依赖于共享知识,较少使用特定参数。实际上,我们的模型需要同时预测数十个不同的任务,它们的密度(即正样本率)也差异很大,而密集任务可能是稀疏任务的100倍,例如点击与收藏。与可以从多个密集任务接收多个梯度更新的共享专家相比,特定专家(specific-experts)容易陷入欠拟合,进一步导致稀疏任务更多地依赖共享专家,而忽略其特定专家,使得特定参数被浪费。如图4所示,任务6的门控网络向共享专家分配了较大的值,但忽略了其特定专家。
图4 专家欠拟合问题,其中task1和task6几乎只依赖共享专家,而忽略了自己的特定专家,较少利用特定专家网络。
为了解决这些异常现象并提高MoE范式模型的稳定性,我们提出了一种简单、高效且平衡的神经网络架构用于多任务学习:多重门控专家层次模型,简称HoME。具体而言,我们从三个角度提供了有见地和深入的解决方案:公平专家权重的值分布对齐,重新组装任务的层次元专家结构,以及增强稀疏任务专家和深层多层MMoE训练的门控网络:
专家归一化和Swish机制:为了平衡专家输出的方差并避免专家崩溃,我们首先为每个专家引入了归一化操作,将其输出投影到近似正态分布,即专家输出分布≈N(0, I)。然而,在这种设置下,我们发现直接执行归一化也会导致在ReLU函数后存在太多的0。原因可能是归一化专家输出的均值接近0,因此一半的输出将小于0,然后在ReLU下激活为0。为了缓解零导数梯度现象,我们使用Swish函数替换ReLU函数,以提高参数的利用率并加速训练过程。由于归一化和Swish设置,所有专家的输出可以对齐到相似的数值幅度,这有助于我们的门控网络分配可比较的权重。
层次掩码机制
为了减少专家占用问题并避免专家退化(也称为任务冲突跷跷板问题),本文提出了一种简单而有效的级联层次掩码机制(Hierarchy mask)来缓解这种冲突。具体而言,我们插入了一个预排序元专家网络来将不同任务分组,以扩展标准化的MoE系统。如图1所示,我们的短视频行为任务可以根据其先验相关性手动分为两个元类别:
- (1)被动的观看时间任务,例如长观看;
- (2)主动的互动任务,例如评论。
因此,我们可以预先建模粗粒度的元类别专家,然后支持每个任务的以下想法:每个任务不仅应具有完全共享的全局专家,还应具有部分共享的类别内专家。
特征门控和自门控机制
为了增强稀疏任务专家的训练,我们提出了两种门控机制,以确保它们能够获得适当的梯度以最大化其有效性:特征门控(Feature-gate)和自门控(Self-gate)机制。考虑到同一层的专家总是共享相同的输入特征,但不同的专家将接收不同的梯度。因此,相同的特征输入可能会导致多个专家参数优化的梯度冲突的潜在风险。为此,我们首先提出了特征门控机制,以私有化灵活的专家输入,以保护稀疏任务专家的训练。此外,最新的MMoE研究表明,更深的堆叠专家网络可以带来更强大的预测能力。然而,在我们的实验中,我们发现原始门控网络容易逐层稀释梯度,这对稀疏任务专家的训练不友好。为了确保顶层梯度能够有效地传递到底层并稳定更深层的MMoE系统训练,我们进一步设计了自门控机制,以残差方式连接相邻的相关专家。
主要贡献
我们的主要贡献如下:
- 我们深入分析了当前MoE系统的专家问题,并提出了我们的里程碑工作HoME。据我们所知,本文是首个专注于增强多任务MoE系统稳定性的工作,这将为其他研究人员探索更稳健的多任务MoE系统提供启示。
- 我们在快手短视频服务中进行了广泛的离线和在线实验。离线实验显示,所有预测任务都得到了显著改进,在线实验在快手和快手极速版应用中分别获得了0.636%和0.735%的播放时间改进。
- 我们的HoME已在快手的各种服务中广泛部署,每天支持4亿活跃用户。
2 相关工作
在本节中,我们简要回顾多任务学习的演进轨迹。多任务学习在使模型能够在各种研究领域(包括推荐系统[[2, 9, 37]]、自然语言处理[[6, 8, 30]]、计算机视觉[[12, 18, 26]]和普适计算[[13, 22]])中感知多种信号方面发挥着越来越重要的作用。
早期工作
在早期,一些研究利用硬专家共享架构,通过多个任务特定塔(由相同的专家输出驱动)来实现最简单的多任务学习系统。这些架构包括:
- 共享底层架构(Shared-Bottom)[[3]]
- 混合专家模型(Mixture-of-Expert, MoE)[[17]]
后续发展
随后,提出了交叉拼接网络(Cross-Stitch Network)[[25]]和闸门网络(Sluice Network)[[29]],以构建深度专家信息融合网络,生成任务特定的输入,从而实现软专家知识共享。
除了复杂的纵向深度专家交叉外,横向专家权重估计是另一种定制任务特定塔输入的方法。近年来提出的多门混合专家模型(Multi-Gate Mixture-of-Expert, MMoE)[[23]]通过多门机制为不同的专家分配不同的权重,以平衡不同的任务。
MMoE变体及其应用
随着基于神经网络的推荐系统的兴起,MMoE的变体方法在提升模型能力和准确性方面也发挥了重要作用。
2 相关工作
在本节中,我们简要回顾了多任务学习的演进轨迹。多任务学习在赋能模型感知多种信号方面发挥着越来越重要的作用,广泛应用于推荐系统 [2, 9, 37]、自然语言处理 [6, 8, 30]、计算机视觉 [12, 18, 26] 和普适计算 [13, 22] 等领域。
在早期,一些工作利用硬专家共享架构,通过多个任务特定的塔(tower)接收相同的专家输出,构建了最简单的多任务学习系统,包括共享底层(shared-bottom)[3] 和专家混合(Mixture-of-Experts, MoE)[17]。随后,提出了cross-stitch network[25] 和sluice network[29],通过构建深度专家信息融合网络生成任务特定的输入,以实现软专家知识共享。除了复杂的垂直深度专家交叉外,水平专家权重估计是另一种定制任务特定塔输入的方式。近年来提出的多重门控专家混合(Multi-gate Mixture-of-Experts, MMoE)[23] 提供了一种多重门控机制,为不同专家分配不同权重,以平衡不同任务。
随着基于神经网络的推荐系统浪潮的兴起,MMoE 的变体方法在提升模型能力和准确性方面也发挥了重要作用。开创性工作来自 YouTube 排序系统 [40],该系统通过不同的门控网络利用多个共享专家来建模真实的用户-物品交互。为了缓解任务冲突跷跷板(task-conflict seesaw)问题 [5, 31, 33],MMoE 的变体 CGC [33] 和 PLE [33] 不仅利用了共享专家,还引入了额外的特定专家,以实现更灵活的专家共享。基于共享/特定的思想,许多 MMoE 变体被提出,包括:
- MSSM [11]:通过采用字段级和单元级特征选择机制扩展了 PLE 方法,以自动确定输入特征的重要性。
- AdaTT [19]:在 PLE 基础上利用自适应融合门控机制,建模特定专家和共享专家之间的复杂任务关系。
- STAR [31]:采用星型拓扑结构,包含一个共享专家网络和多个特定网络,以融合专家参数。
- MoLA [43]:借鉴了大型语言模型(LLM)中的低秩微调技术,设计了轻量级的低秩特定专家适配器,以替代复杂的特定专家。
3 方法论
在本节中,我们将介绍我们的模型HoME的各个组成部分。我们首先回顾了在工业级推荐系统(RecSys)中,混合专家系统(MoE)是如何工作的,包括特征工程、MoE神经网络的细节以及用于排序的预测分数。随后,我们提出了针对三个问题的解决方案:专家归一化和swish机制用于克服专家崩溃问题,层次掩码机制用于缓解专家退化问题,以及两种门机制用于解决专家欠拟合问题。
3.1 预备知识:工业推荐系统中的多任务学习
工业推荐系统采用两阶段设计:(1)数百个候选物品的生成[35, 36];(2)候选物品的排序[7, 24, 40],以选出几十个最顶部的物品推荐给用户。由于这两个阶段的目标不同,因此使用的技术也完全不同:生成过程侧重于用户侧特征建模和粗略的物品采样,而排序过程则侧重于用户和物品特征的融合以及细粒度的用户多交互拟合。因此,多任务学习模型通常被用于排序过程中,以估计特定用户-物品对的各种交互概率。为简洁起见,模型生成的概率通常有一个简短的名称($xtr$),例如点击概率为$ctr$,有效观看概率为$evtr$,点赞概率为$ltr$,评论概率为$cmtr$等。
3.1.1 标签与特征
形式上,这种排序学习过程通常被组织为多二元分类的形式,每个用户-物品样本包含两类信息——监督标签和输入特征:
-
监督信号:该用户-物品观看体验的真实标签,例如点击$y_{ctr} \in {0, 1}$,有效观看$y_{evtr} \in {0, 1}$,点赞$y_{ltr} \in {0, 1}$,评论$y_{cmtr} \in {0, 1}$以及其他标签。
-
特征输入:MoE的输入旨在从多个角度描述用户和物品的状态,大致可以分为四类:
- (1)ID和类别特征,我们使用简单的查找操作符来获取它们的嵌入,例如用户ID、物品ID、标签ID、是否为活跃用户、是否关注作者、场景ID等;
- (2)统计特征,需要设计分桶策略将其离散化并分配ID,例如过去一个月观看的短视频数量、过去一个月的短视频观看时长等;
- (3)反映用户短期和长期兴趣的序列特征,通常通过一阶段或两阶段的注意力机制建模,例如DIN [42]、DIEN [41]、SIM [27]、TWIN [4];
- (4)预训练的多模态嵌入,例如文本嵌入[10]、asr嵌入[39]、视频嵌入[21]等。
将所有这些结合起来,我们可以获得多任务训练样本(例如,标签为${y_{ctr}, y_{evtr}, \dots}$,输入为$\mathbf{v} = [v_1, v_2, \dots, v_n]$),其中$n$表示特征的总数。
3.1.2 基于混合专家(MoE)的XTR预测
给定训练用户-物品样本的标签 $y_{ctr}, y_{evtr}, \dots$ 和特征 $\mathbf{v}$,接下来我们利用多任务模块进行预测。具体来说,我们展示了一种广泛使用的共享/特定范式MoE变体CGC的细节如下:
\[\begin{aligned} \widehat{y}^{ctr} &= \text{Tower}^{\ ctr}\left(\text{Sum}\left(\text{Gate}^{ctr}(\mathbf{v}), \{\text{Experts}^{\ \{shared,ctr\}}(\mathbf{v})\}\right)\right), \\ \widehat{y}^{evtr} &= \text{Tower}^{\ evtr}\left(\text{Sum}\left(\text{Gate}^{evtr}(\mathbf{v}), \{\text{Experts}^{\ \{shared,evtr\}}(\mathbf{v})\}\right)\right), \\ \widehat{y}^{ltr} &= \text{Tower}^{\ ltr}\left(\text{Sum}\left(\text{Gate}^{ltr}(\mathbf{v}), \{\text{Experts}^{\ \{shared,ltr\}}(\mathbf{v})\}\right)\right), \end{aligned}\]其中:
\[\begin{aligned} \text{Tower}(\cdot) &= \text{Sigmoid}\left(\text{MLP}_T(\cdot)\right), \\ \text{Experts}(\cdot) &= \text{ReLU}\left(\text{MLP}_E(\cdot)\right), \\ \text{Gate}(\cdot) &= \text{Softmax}\left(\text{MLP}_G(\cdot)\right), \end{aligned}\]…(1)
其中:
- $\text{Expert}^{\ shared}: \mathbb{R}^{\mid\mathbf{v}\mid} \rightarrow \mathbb{R}^D$ 和 $\text{Expert}^{\ xtr}: \mathbb{R}^{\mid\mathbf{v}\mid} \rightarrow \mathbb{R}^D$ 分别是ReLU激活的共享和特定专家网络,
- $\text{Gate}^{\ xtr}: \mathbb{R}^{\mid\mathbf{v}\mid} \rightarrow \mathbb{R}^N$ 是对应任务的Softmax激活的门网络,
- $N$ 是相关共享和特定专家的数量,
- $\text{Sum}$ 用于根据门生成的权重聚合 $N$ 个专家的输出,
- $\text{Tower}^{\ xtr}: \mathbb{R}^D \rightarrow \mathbb{R}$ 是Sigmoid激活的任务特定网络,用于衡量相应的交互概率 $\widehat{y}$。
在获得所有估计分数 $\widehat{y}^{ctr}, \dots$ 和真实标签 $y^{ctr}, \dots$ 后,我们直接最小化交叉熵二元分类损失来训练多任务学习模型:
\[L = -\sum_{xtr \in \{ctr, \dots\}} \left( y^{xtr} \log(\widehat{y}^{xtr}) + (1 - y^{xtr}) \log(1 - \widehat{y}^{xtr}) \right),\]…(2)
在在线服务中,常见的操作是设计一个可控的复杂方程,将XTRs组合为一个排序分数:
\[\text{ranking_score} = \alpha \cdot \widehat{y}^{ctr} + \beta \cdot \widehat{y}^{evtr} + \gamma \cdot \widehat{y}^{cmtr} + \dots,\]…(3)
其中:
- $\alpha, \beta, \gamma$ 是超参数。实际上,公式(3)在工业推荐系统中非常复杂,涉及许多策略。我们仅展示一个简单案例。在接下来的部分中,我们将重点改进公式(1)中的多任务学习过程的稳定性。
3.2 专家归一化与Swish机制
尽管公式(1)中的原始MMoE系统取得了显著的改进,但仍然存在严重的专家崩溃问题。将专家的 $MLP_E$ 函数生成的表示记为 ${ z^{shared}, z^{ctr}, z^{evtr}, \dots }$,我们发现它们的均值和方差值存在显著差异。受Transformer的启发,归一化操作是成功训练非常深度神经网络的关键技术之一。我们为每个专家引入了批归一化(Batch Normalization)[16],以支持HoME生成可比较的输出 $z_{norm} \in R^D$:
\[z_{norm} = \text{Batch_Normalization}(z) = \gamma \frac{z - \mu}{\sqrt{\delta^2 + \epsilon}} + \beta,\]其中:
\[\begin{aligned} \mu &= \text{Batch_Mean}(z), \\ \delta^2 &= \text{Batch_Mean}\left((z - \mu)^2\right), \end{aligned}\](4)
其中:
- $z$ 是任意专家的 $\text{MLP}_E$ 输出,
- $\gamma \in R^D$ 和 $\beta \in R^D$ 是可训练的缩放和偏置参数,用于调整分布,
- $\epsilon \in R^D$ 是一个非常小的因子,用于避免除以零错误
- $\mu \in R^D$ 和 $\delta^2 \in R^D$ 是当前批次相同专家输出的均值和方差。
经过专家归一化后,$z_{norm}$ 的分布接近于标准正态分布 $N(0, I)$。因此,$z_{norm}$ 的一半值将小于0,并在ReLU激活下变为0,导致它们的导数和梯度为0,阻碍模型收敛。因此,我们使用Swish函数替换公式(1)中的ReLU,得到HoME的专家结构:
\[\text{HoME_Expert}(\cdot) = \text{Swish}\left(\text{Batch_Normalization}\left(\text{MLP}_E(\cdot)\right)\right),\]…(5)
其中:
- $\text{HoME_Expert}(\cdot)$ 是我们HoME中使用的最终结构。
在归一化和Swish的设置下,所有专家的输出可以对齐到相似的数值范围,这有助于门网络(gating network)分配可比较的权重。为简洁起见,在接下来的部分中,我们仍使用 $\text{Expert}(\cdot)$ 来表示 $\text{HoME_Expert}(\cdot)$。
3.3 层次掩码机制
针对专家退化问题,已有许多工作提出了新颖的特定专家和共享专家架构来缓解任务冲突。然而,遵循特定和共享范式,我们发现共享专家退化问题仍然存在。我们认为,考虑任务之间的先验相关性可能是有益的,如图1所示;我们的预测任务可以分为两类,例如主动交互任务(如点赞、评论等)和被动观看时间任务(如有效观看、长观看等)。在本节中,我们提出了一种简单而有效的级联层次掩码机制,以建模任务之间的先验归纳偏差。具体来说,我们插入了一个预排序的元专家网络来分组不同的任务,这里包括三种元任务知识来支持我们的两类任务:
\[\begin{aligned} z^{inter}_{meta} &= \text{Sum}\left(\text{Gate}^{\ inter}_{\ meta}(\mathbf{v}), \{\text{Experts}^{\ shared,inter}_{\ meta}(\mathbf{v})\}\right), \\ z^{watch}_{meta} &= \text{Sum}\left(\text{Gate}^{\ watch}_{\ meta}(\mathbf{v}), \{\text{Experts}^{\ shared,watch}_{\ meta}(\mathbf{v})\}\right), \\ z^{shared}_{meta} &= \text{Sum}\left(\text{Gate}^{\ shared}_{\ meta}(\mathbf{v}), \{\text{Experts}^{\ shared,inter,watch}_{\ meta}(\mathbf{v})\}\right), \end{aligned}\](6)
其中:
- $z^{inter}{meta}, z^{watch}{meta}, z^{shared}_{meta}$ 是粗粒度的宏观元表示,用于提取:
- (1)交互类任务的知识
- (2)观看时间类任务的知识
- (3)共享知识
在获得这些元表示后,我们接下来根据其对应的元知识和共享元知识进行多任务预测。具体来说,我们利用元知识构建了三种类型的专家:
- (1)根据 $z^{shared}_{meta}$ 构建的全局共享专家
- (2)根据 $z^{inter}{meta}$ 或 $z^{watch}{meta}$ 构建的局部共享专家
- (3)根据 $z^{inter}{meta}$ 或 $z^{watch}{meta}$ 构建的每个任务的特定专家
对于任务特定的门网络,我们直接使用共享元知识 $z^{shared}_{meta}$ 和相应类别的元知识的拼接来生成专家的权重。这里,我们以点击和有效观看交互为例:
\[\begin{aligned} \widehat{y}^{ctr} &= Tower^{ctr}\left(Sum\left(Gate^{ctr}(z^{inter}_{meta} \oplus z^{shared}_{meta}), \\ \{Experts^{shared}(z^{shared}_{meta}), \\ Experts^{inter,ctr}(z^{inter}_{meta})\}\right)\right), \\ \widehat{y}_{evtr} &= Tower^{evtr}\left(Sum\left(Gate^{evtr}(z^{watch}_{meta} \oplus z^{shared}_{meta}), \\ \{Experts^{shared}(z^{shared}_{meta}), \\ Experts^{watch,evtr}(z^{watch}_{meta})\}\right)\right), \end{aligned}\](7)
其中:
- $\oplus$ 表示拼接操作符,
- $\text{Experts}^{\ shared}$ 是所有任务的共享专家,
- $\text{Experts}^{\ inter}$ 和 $\text{Experts}^{\ watch}$ 是类别内任务的共享专家。
值得注意的是,HoME的第一层元抽象与PLE的主要架构差异,这是基于我们在快手真实多任务推荐场景中的观察(见图5)。基于HoME的先验语义划分的元专家网络,我们可以尽可能避免任务之间的冲突,并最大化任务间的共享效率。
图5
3.4 特征门与自门机制
针对专家欠拟合问题,我们发现一些数据稀疏任务的门生成权重往往会忽略其特定专家,而为共享专家分配较大的权重。原因可能是我们的模型需要同时预测20多个不同的任务,而这些密集任务的密度可能是稀疏任务的100倍以上。为了增强稀疏任务专家的训练,我们提出了两种门机制,以确保它们能够获得适当的梯度以最大化其有效性:特征门和自门机制。
对于特征门,其目的是为不同任务专家生成不同的输入特征表示,以缓解所有专家共享相同输入特征时可能出现的梯度冲突。形式上,特征门旨在提取每个输入特征元素的重要性,例如 $\text{Fea_Gate}: \mathbb{R}^{\mid\mathbf{v}\mid} \rightarrow \mathbb{R}^{\mid\mathbf{v}\mid}$,如果输入是 $\mathbf{v}$。然而,在工业推荐系统中,$\mathbf{v}$ 通常是一个高维向量,例如 $\mid\mathbf{v}\mid > 3000+$;因此,为元专家引入这些大矩阵是昂贵的。受LLM效率调优技术LoRA [15] 的启发,我们引入了两个小矩阵来近似生成元素重要性的大矩阵:
\[\text{Fea\_LoRA}(\mathbf{v}, d) = 2 \times \text{Sigmoid}\left(\mathbf{v}(BA)\right),\]其中:
- $B \in \mathbb{R}^{\mid\mathbf{v}\mid \times d}$,$A \in \mathbb{R}^{d \times \mid\mathbf{v}\mid}$,$BA \in \mathbb{R}^{\mid\mathbf{v}\mid \times \mid\mathbf{v}\mid}$。
(8)
注意,我们在Sigmoid函数后应用了一个2×操作符,旨在实现灵活的放大或缩小操作。实际上,$\text{Fea_LoRA}$ 函数是生成私有化专家输入的有效方法。在我们的迭代中,我们发现它可以进一步通过多任务思想增强,即引入更多的 $\text{Fea_LoRA}$ 从多个方面生成特征重要性作为我们的 $\text{Fea_Gate}$:
\[\text{Fea\_Gate}(\mathbf{v}) = \text{Sum}\left(\text{Gate}_{fea}(\mathbf{v}), \{\text{Fea\_LoRA}_{\{1,2,\dots,L\}}(\mathbf{v}, \mid\mathbf{v}\mid/L)\}\right),\](9)
其中 $L$ 是一个超参数,用于控制 $\text{Fea_LoRA}$ 的数量,$\text{Gate}{fea}: \mathbb{R}^{\mid\mathbf{v}\mid} \rightarrow \mathbb{R}^L$ 用于生成权重以平衡不同 $\text{Fea_LoRA}$ 的重要性。注意,我们需要选择一个能被输入长度 $\mid\mathbf{v}\mid$ 整除的 $L$ 来生成 $\text{Fea_LoRA}$ 的维度。因此,我们的专家输入可以如下获得(这里我们展示了第一层元共享专家的输入 $\mathbf{v}^{shared}{meta}$):
\[\mathbf{v}^{shared}_{meta} = \mathbf{v} \odot \text{Fea\_Gate}^{shared}_{meta}(\mathbf{v}),\](10)
其中 $\odot$ 表示逐元素乘积。通过这种方式,不同的专家拥有自己的特征空间,这可以减少梯度冲突的风险,从而保护稀疏任务。
此外,最新的MoE研究表明,更深层次的专家网络堆叠可以带来更强大的预测能力 [19, 33]。然而,在我们的实验中,我们发现原始的门网络容易逐层稀释梯度,尤其是对于稀疏任务专家的训练。除了专家输入级别的 $\text{Fea_Gate}$,我们还在专家输出级别添加了基于残差思想的自门机制,以确保顶层的梯度能够有效地传递到底层。具体来说,$\text{Self_Gate}$ 只关注其特定专家的输出。以观看时间元专家的输出为例:
\[z^{shared}_{meta,self} = \text{Sum}\left(\text{Self\_Gate}^{shared}_{meta}(\mathbf{v}), \{\text{Experts}^{shared}(\mathbf{v})\}\right),\]其中:
\[\text{Self\_Gate}(\cdot) = \begin{cases} \text{Sigmoid}\left(\text{MLP}_G(\cdot)\right) & \text{如果只有1个专家}, \\ \text{Softmax}\left(\text{MLP}_G(\cdot)\right) & \text{其他情况}. \end{cases}\](11)
其中 $\text{Self_Gate}: \mathbb{R}^{\mid\mathbf{v}\mid} \rightarrow \mathbb{R}^K$,$K$ 是相关专家的数量,其激活函数为Sigmoid(如果只有1个专家),否则设置为Softmax。类似地,$z^{inter}{meta,self}$ 和 $z^{watch}{meta,self}$ 可以通过相同的方式获得,然后我们将相应的表示(例如 $z^{inter}{meta} + z^{inter}{meta,self}$)添加到下一层的支持中。详见第5节以获取HoME的细粒度细节。
4 实验
在本节中,我们首先在离线环境中将HoME与几种广泛使用的多任务学习方法进行比较。然后,我们通过修改模型进行了一些变体实验,以验证HoME的有效性。我们还测试了HoME超参数对专家数量和特征门LoRA数量的鲁棒性影响。此外,我们提供了模型专家网络门权重的图表,以展示HoME作为一个平衡系统的潜力。最后,我们将HoME推送到在线A/B测试中,以验证HoME能为快手带来多大的收益。
4.1 实验设置
我们在快手的短视频数据流场景中进行实验,这是快手最大的推荐场景,每天包括超过4亿用户和500亿条日志。为了公平比较,我们仅更改公式(1)中的多任务学习模块,并保持其他模块不变。具体来说,我们实现了MMoE [23]、CGC [33]、PLE [33]、AdaTT [19] 等模型变体作为基线。对于评估,我们使用广泛使用的排序指标AUC和GAUC [42] 来反映模型的预测能力。具体来说,在我们的短视频服务中,GAUC是最重要的离线指标。其主要思想是分别计算每个用户的AUC,然后加权聚合所有用户的AUC:
\[\text{GAUC} = \sum_{u} w_u \text{AUC}_u \quad \text{其中} \quad w_u = \frac{\#\text{logs}_u}{\sum_{i} \#\text{logs}_i},\](12)
其中 $w_u$ 表示用户日志的比例。
4.2 离线实验
主要实验结果如表1所示。注意,在离线评估中,AUC或GAUC的0.03%~0.05%提升足以为我们的业务带来显著的在线收益。我们首先展示了HoME_Expert在MMoE上的有效性,即MMoE。然后,我们将HoME与所有改进的基线进行比较,这些基线都配备了HoME_Expert,例如“CGC w/o shared”,这是CGC的变体,忽略了共享专家和所有门网络。此外,我们还为HoME实现了消融变体:“w/o fg2”和“w/o fg”分别忽略了第二层特征门和所有特征门;“w/o sg”忽略了所有自门;“w/o mask”保留了HoME架构,但所有专家都是共享的。我们有以下观察:
- MMoE*显著优于原始MMoE方法,这表明我们的专家归一化和Swish机制可以克服专家崩溃问题,平衡专家输出,并鼓励专家网络承担应有的责任。
- “CGC* w/o shared”可以看作是每个任务具有特定专家的Shared-bottom。MMoE比这种简单的“CGC w/o shared”解决方案弱(在我们的实验中参数增加了24%),这表明MMoE系统在真实的大规模数据流场景中容易退化。
- *与“CGC w/o shared”相比,CGC没有显著改进**,这表明CGC的共享专家正在退化为某些特定专家。
- 与MMoE相比,PLE和AdaTT*表现更好,这表明在解决专家崩溃问题后,堆叠多个专家网络层并增加模型参数是释放多任务模块潜力的一种有前途的方法。
- HoME在所有任务中均显示出统计上的改进,同时引入更少的参数并取得了最佳结果,这表明我们的修改可以增强多任务MoE系统的稳定性并最大化专家效率。
对于HoME的消融实验:
- “w/o fg-sg-mask”变体与MMoE*表现相当,而“w/o fg-sg”变体在所有任务中均显示出显著改进(例如,AUC提升+0.15%),这表明我们的层次掩码机制是一种强大且低资源的策略,可以在不引入大量额外参数的情况下缓解专家退化问题。
- “w/o fg”变体比“w/o fg-sg”变体表现更好且更稳定,这表明在不同层专家之间添加残差连接有助于训练专家。
- 与HoME和“w/o fg2”变体相比,我们发现第二层特征门可以增强模型能力,但第一层特征门显示出更稳健和更大的改进。原因可能是第一层是输入信息源,并在粗粒度元层中使用,其任务梯度冲突问题比第二细粒度层更严重。
4.3 超参数敏感性讨论
本节探讨了专家数量和特征门LoRA数量的超参数敏感性,以研究HoME的鲁棒性。对于专家数量,我们在“HoME w/o fg”变体下进行实验,因为第一层特征门是一个昂贵的参数消耗操作。从表2中,我们可以观察到HoME的扩展规律现象:仅通过引入更多专家,预测精度会随着参数数量的增加而稳步提高。这种现象也表明我们的HoME是一个平衡的MoE系统,可以释放所有专家的能力。
对于特征LoRA数量,我们在“HoME w/o fg2”变体下进行实验,该变体仅涉及第一层特征门,同时在表1中显示出显著改进。具体来说,在我们的实现中,更多的LoRA数量只会减少隐藏维度,而不会增加额外的参数,这可能会降低单个LoRA的能力。从表3中,我们可以观察到两个LoRA的变体显示出最佳结果,这表明在平衡LoRA数量和LoRA建模能力以提供更多增量信息方面存在瓶颈。
4.4 HoME状态讨论
图6展示了HoME的专家输出分布和门权重流。从中我们可以观察到,HoME实现了平衡的门权重均衡状态:
- 根据特征门的热图(随机可视化的64个维度),我们可以得出结论,我们的特征门可以为每个专家实现灵活的元素级特征选择。
- 所有共享和特定专家的输出在数值上对齐。此外,我们可以发现元共享专家的分布与特定专家的分布不同,这表明共享知识倾向于由元网络编码,而差异知识则被推送到特定专家编码。
- 所有专家都发挥了预期的作用;共享和特定专家贡献了可感知的权重。
图6
4.5 在线A/B测试
在本节中,我们还将HoME推送到在线排序模型中,服务于三个短视频场景:快手单页/双页(如图1所示)和快手极速版单页。在我们的服务中,主要指标是观看时间指标,例如(平均)播放时间,它反映了用户在快手上花费的总时间,我们还展示了视频观看指标,它衡量了用户观看的短视频总量。年轻用户和总用户组的在线A/B测试结果如表4所示。实际上,播放时间约0.1%的提升在快手上是一个统计上显著的改进。我们提出的HoME在所有用户的三个场景中分别实现了+0.311%、+0.474%和+0.169%的显著改进,这是过去一年中最显著的改进。此外,我们可以观察到HoME在所有交互指标(如点击、点赞、评论等)上均实现了显著的业务收益,这表明HoME可以将多任务系统收敛到一个更平衡的均衡状态,而不会出现跷跷板现象。此外,我们发现稀疏行为任务的提升更大,这表明我们的HoME使所有共享或特定专家能够获得适当的梯度以最大化其有效性。
5 结论
在本文中,我们专注于解决多任务学习方法在快手短视频服务中的实际问题以及我们从中学到的经验教训,这是全球最大的推荐场景之一。我们首先发现,现有的广泛使用的多任务家族(即门控混合专家)容易受到几个严重问题的限制,这些问题限制了模型的预期能力。从专家输出中,我们发现了专家崩溃问题,即专家的输出分布显著不同。从共享专家的学习中,我们观察到专家退化问题,即一些共享专家仅服务于一个任务。从特定专家的学习中,我们注意到专家欠拟合问题,即一些稀疏任务的特定专家几乎不贡献任何信息。
为了克服这些问题,我们提出了三个有洞察力的改进:
- 专家归一化和Swish机制,以对齐专家输出分布;
- 层次掩码机制,以规范化任务之间的关系,最大化共享专家的效率;
- 特征门和自门机制,以私有化更灵活的专家输入并连接相邻的相关专家,确保所有专家都能获得适当的梯度。
此外,通过在快手这一全球最大的短视频平台上进行的大量离线和在线实验,我们展示了HoME相比其他广泛使用的多任务方法带来的显著改进。我们的HoME已广泛部署在快手的各种在线模型中,每天为数亿活跃用户提供服务。