为简单起见,我们只展示一层的选择过程。假设有 n 个专家和 m 个输出(即 m 个 gate)的场景层,我们首先利用线性变换来计算每个场景的门控向量如下:
其中,是第 j 场景和第 k 个专家关于输入实例的相关性分数;是可学习参数,是场景 embedding 表征,是高斯噪声()。
行向量是选择专家模块的关键步骤。我们做出如下假设
- 如果相对大于其他向量,则表示,第 k 位的专家更多可能被分类为第 j 场景的 specific 组。
- 如果中的值都相对接近,则第 k 个专家可能包含所有场景之间的共享信息。
因此,我们首先对矩阵执行逐行 softmax 操作 G 如下:
然后,对于第 j 场景,我们形成一个 one-hot 场景向量,其中只有第 j 个元素为 1。如上所述,可以根据和之间的相似性来衡量第 k 个专家是第 j 个场景特有专家的概率。
类似地,我们还为第 j 个场景引入了一个均匀分布的向量,可以根据和之间的相似性来衡量第 k 个专家是第 j 场景共享专家的概率。
因此,选择场景特定和场景共享专家的过程形式化地描述如下:
其中和分别为第 j 个场景的特定和场景共享设置的专家 index,算子 TopK 是返回 top-𝐾 索引的参数操作值,𝐾𝐿( ) 计算 Kullback-Leibler 散度。
使用和 来更新门控向量,实现稀疏专家网络:
然后,将门控标量矩阵和专家输出输入标准的 MMoE 模块得到这个场景层的输出:
综上,本方法最重要的是三点:
- 噪音探索:在 gate 上增加高斯噪声,使得模型去学习不同专家的组合带来的效果,进而选择最佳的专家组合,噪音大幅扩大了专家组合的探索效率。噪声强度是超参,无限大的噪声等价于在专家维度进行随机 dropout,会一定程度影响下面的 loss 约束收敛,而较小的噪声起不到探索效果。因此噪声的施加策略是后续进一步优化的方向。如,随着训练步数增大,专家选择逐渐稳定,那么噪声强度应逐渐变小。
- 稀疏化专家选择:通过计算门控列向量与 onehot 向量与均匀向量的 KL 散度,使得 gate 选择最适合的共享和独享专家,并实现专家网络的稀疏化,并实现了稀疏激活。这显著提升了泛化性,同时模型规模变大,也不会增加推理时延。
- 集中性约束:在以上机制的基础上,进一步增加基于 KL 散度的约束。本质上就是让相同场景 / 任务的样本,尽可能选择同一组最优专家。这种基于距离度量的约束,类似样本聚类的作用,但其实现是更简洁的,可以与深度学习模型一起集成。
在多任务部分,我们给定上述场景层的输出,我们也利用相同的选择过程来实现多任务学习。此处不再赘述。
多层堆叠和扩展
此处可参考 AESM 主模型图。
在实际应用中,一个场景可能很复杂,并且在本质上表现出层次结构 [11,15]。例如我们的基金搜索场景,通过堆叠多个场景层和任务层,我们的模型 AESM 可以十分便捷地处理这种复杂的场景。这与深度网络(DNN)的优势一样,通过更深的深度,而不是宽度,能够以更少的参数表达更复杂的问题。
例如在有𝐿𝑠 层的场景,每层有 N_i 个场景复杂系统中,只需要调整每一层的输入S_i ,最终我们可以对n_1n_2…n_L_s个细分场景进行建模。当我们使用标准的 MMoE 架构时,每一层我们需要相同的专家数量。由于,可以节约大量的计算成本。
此外,我们仍然可以将 𝐿𝑡 多任务层堆叠在一起,自适应地为更高级别的任务进行特征提取。与多场景不同,因为在第一个多任务之后,每个任务都有不同的输入层。在后续的多任务层中使用相同的专家结构,使用不同的输入进行专家选择。当层数大于 1 时,我们使用前一层的输出作为后一层的输入。
模型优化
对于数金搜索的精排模型,选择 sigmoid 作为激活函数。因此,第个实例的交叉熵损失如下:
如上一节介绍,我们增加辅助损失来增强场景 / 任务特定的专家选择。具体来说,对于第的多场景层,可增加下面的 loss 约束:
其中是第个多场景中的输出层。同样,对于第的多场景层,可通过增强训练过程中专家的选择决策;同样多任务层中共享专家的损失函数表示为;综合得到,辅助损失函数定义如下:
整体的损失函数可定义为:
四. 线仿真和消融实验
为了验证 AESM 的有效性, 我们在多个数据集上,将 AESM 于其他多场景 / 多任务模型进行对比。并做了大量消融实验。
实验设计
离线实验中共收集了两个真实场景中的数据集,分别是支付宝和速卖通数据。
支付宝数据集:收集了从 2021 年 11 月 15 日到 11 月 30 日, 两周用户支付宝搜索的行为日志。分为主搜 (HP) 和垂搜 (VP) 两个场景(channel),同时每个 channel 中还可以进一步划分为 热门基金(BS)和基金产品(RI) 两个卡片(这里被抽象为𝑑𝑜𝑚𝑎𝑖𝑛)。因此,整个数据集通过 channel 和 domain 正交分为四个具体的场景。根据行为数据的日期将数据集切分为训练集、验证集和测试集:11 月 15 日 - 11 月 28 日为训练数据,2021 年 11 月 29 日为验证数据,2021 年 11 月 30 日为测试数据。进行点击率和转化率的预估。观察到两个数据集中的数据分布不平衡。例如,仅 VP&BS 场景中的展示次数在所有场景中占比 6.44%,大部分点击发生在场景 VP&RI,反而占 82.33%。
速卖通数据集:同样此数据集存在多场景(按用户国籍划分)和多任务的设置。在本次实验中,选取了𝑁𝐿、𝐹𝑅、𝐸𝑆和𝑈𝑆四个场景的数据集。因为原始数据集只包含训练集和测试集,我们随机抽取 50% 的原始测试数据作为验证集。
表 2:速卖通数据集统计情况我们将 AESM 与两类基线模型进行对比:
- 门感知 (gate-base) 模型,它使用门控机制来处理多场景或多任务问题,包括 MMoE [11]、HMoE [8]、和 PLE [20]
- MMoE [11] 利用多门混合专家隐式建模专家之间的关系,来自多个门的合并表示可以分别转换为多个场景 / 任务预测层;
- HMoE [8] 使用梯度切割技巧显式编码场景之间的关联关系,HMoE 采用两个具有单独参数的模型来优化 CTR 和 CVR 任务;
- PLE [20] 是另一种先进的 MMoE 变体,它将专家分为任务特定组和任务共享组,避免了不同任务之间的负迁移和跷跷板现象;
- 无门模型,如 Hard Sharing [1]、Parallel DNN,Cross-Stitch [13] and STAR。
- Hard Sharing [1] 是一个简单但广泛使用的模型,通过共享的底层对共享的信息进行编码;
- Parallel DNN 是在基本 DNN 上增加适应多场景或任务的转换而来;
- Cross-Stitch [13] 通过线性交叉网络将多个网络结构进行组合,用于学习任务表示;
- STAR 采用星型拓扑结构,由共享中心网络和场景特定网络组合而成;
借鉴 ESMM [12] 的思想,我们优化整个空间中的 CTR 和 CVR,即𝐶𝑇𝐶𝑉𝑅 = 𝐶𝑇𝑅 × 𝐶𝑉𝑅。使用 auc 评估模型的性能。为了保证公平,我们做了以下工作:
- 由于上述的基线模型中并不能同时解决 MSL&MTL。我们在基线模型上进行结构扩展,来适应我们多场景多任务的要求。例如,对于多场景模型 STAR,我们在任务级实现另一个星型拓扑结构。对于多任务模型 PLE,在原有的机构上再叠加一层 PLE 结构来解决多场景问题。
- 所有的基线模型同 AESM 一样使用合并场景数据进行训练,网络的结构的深度及选择专家的个数等超参均保持一致。
基线效果对比
表 3 和表 4 是支付宝和速卖通数据集上不同模型的性能对比。两个表中的结果都表明我们提出的模型 AESM 在所有情况下始终优于所有基线任务。尤其数据稀疏度最高的主搜热门基金,提升更为显著。这表明模型能够适应不同的配置的场景和任务。但其他模型则不一定,例如在 CTR 任务中,PLE 在 VP&BS 场景中的表现优于 MMoE,但在 HP&BS 场景中的表现不如 MMoE。
与多场景和多任务设置中训练的模型相比,所有基线都受到来自不同场景的负迁移的影响。例如,它们在 HP&BS 上的性能不如在单一场景中训练的模型。然而,AESM 在所有场景中都优于所有单一场景模型,表明 AESM 可以更好地利用场景关系,避免负迁移。
表 3:不同模型在支付宝数据集上性能对比
表 4:不同模型在速卖通数据集上性能对比消融分析
为分析每种优化的影响,采用两种不同的 AESM 变体进行消融分析:(1)无高斯噪声和辅助损失 (2)无辅助损失。从下表的结果可以看到,去除高斯噪声和辅助损失后,所有任务上性能均有下降。
对比(1)(2)两种变体 AESM,可以看到高斯噪声在所有的场景中均有着良好的表现。这意味着合理的波动给模型带来了更为广泛的探索空间, 得到更为精确的模型参数。
辅助损失可以引导专家网络选择更接近假定的分布。下图的结果表示,当删除辅助 loss 时,场景和任务的性能均会下降。我们进一步地绘制了门控矩阵下,选定的场景 / 任务分布与假设分布(独热和均匀分布)之间的 KL 散度的差异。可以看到增加辅助损失后,两种分布之间的 KL 散度损失是逐渐下降的。显然,加入辅助损失后模型可以稀疏地进行专家选择。
图 8:稀疏化辅助 loss 的训练收敛对比