文章作者:肖茁建博士 京东 算法工程师

编辑整理:Hoh

出品平台:DataFunTalk

导读: 商品搜索引擎是电商平台满足用户购物需求的一个重要系统,它根据用户输入的搜索词,返回个性化的排序列表,以供用户选择。本文主要介绍MoE模型在京东搜索精排中的应用,以及结合实际场景对MoE模型进行的一系列改进。

01 背景介绍

1. 类目差异

当用户在电商平台购买不同类目的商品时,用户的关注点也会发生变化。例如:当用户搜索食品零食相关商品时,会更倾向于选择销量高的;而当搜索服饰、户外运动等类目的商品时,对风格、店铺、品牌等信息会更敏感。

2. 小类目学习

对于一些小类目的商品,在训练集样本量上和大类目相比差距悬殊,在模型训练过程中会被大类目商品的样本所影响和主导(dominate)。

我们针对类目差异和小类目学习这两个问题,提出了多类目MoE模型。

02 MoE模型介绍

在介绍多类目MoE 模型之前,首先介绍一下典型的MoE模型结构和Top-K gating的MoE结构。

MoE 模型是一个经典的神经网络模型,主要包括两个核心组件:一个门网络(gating network)和多个专家网络(expert network)。门网络的输出作为对应的专家网络的权重,用于对专家网络的输出进行加权求和。MoE 模型的输出可以写成下面的公式:

其中,N表示专家网络的个数,E表示专家网络,G表示门网络。

Google在2017年的一篇文章[1]中,改进了MoE模型中的门网络结构,提出了一种Top-K gating的结构。当模型对一个样本进行预测时,首先会根据门网络的输出,选择最大的K个权重所对应的专家网络,然后只对选中的K个专家网络的输出进行加权求和。具体的计算公式如下:

从公式可以看出,如果一个专家网络对应的权重值不是最高的K个,则经过softmax之后权重会变成0。在模型训练和预测的过程中,对于这些不在Top K中的专家网络,不会激活,从而降低模型的计算复杂度。

03 我们的改进

京东的电商平台有一套完整的多层级的类目结构,并且以树形结构组织。如图,是一个两层级类目结构的示意图。在类目结构上,自顶向下看(从Top-Categories 到Sub-Categories),不同的Top-Categories 之间,用户的购物行为会有比较明显的差异,但是同一个Top-Categories下的Sub-Categories之间,用户的购物行为一般都比较接近。

针对类目差异和小类目学习两个问题,我们利用了现有的层级类目信息,在Top_K MoE 的模型结构上做了相对应的改进,提出了多类目MoE的模型结构,如下图:

图中的模型结构分为两部分:专家网络(中间部分)和门网络(右边部分)。首先介绍专家网络,它由一组结构相同的MLP组成,我们将query和item的所有特征都拼接在一起作为专家网络的输入。同时,将Sub-Category 的embedding作为门网络(绿色)的输入,从门网络的输出中选择Top-K计算权重,并且激活相对应的专家网络(绿色部分)。Sub-Category作为门网络的输入,可以让模型对不同的类目,选择激活不同的专家网络,并且给予不同的权重。

同时,我们在上述Top_K MoE模型框架下,还提出了两个改进结构:

1. Hierarchical Soft Constraint(HSC)

HSC结构可以利用现有的层级类目结构,在模型训练过程中,协助小类目样本更好的学习。具体的做法是:在模型训练时,增加一个HSC门网络(HSC gate,图中蓝色部分),这个gate结构的输入是Top-Category,输出与MoE的gate结构维度一致,代表了不同专家网络对于Top-Category 的重要程度。我们将选择激活的专家网络对应的权重和HSC门网络对应的权重的L2距离作为模型训练的一个损失项,加入到模型的训练过程中。

HSC loss的具体表示形式如下:

其中,U_topk 表示激活的K个专家网络的index集合。

这样做可以让相同Top-Category下的所有Sub-Category所激活的专家网络尽量的接近。尤其对于样本量少的小类目,可以利用到相同Top-category下的其他类目信息,能一定程度上解决小样本学习难的问题。

2. Adversarial Regularization

Adversarial Regularization是我们提出的第二个改进结构。由于我们使用的Top_K的门网络结构,所以对于每条样本,专家网络都会分为两部分:激活的专家网络和没有激活的专家网络。Adversarial Regularization的目的是在训练过程中增加不同专家网络之间的区分性,避免专家网络的预测结果趋同。换句话说,我们鼓励没有被激活的专家(disagreeing experts)给出差异较大的预测结果。

Adversarial Regularization具体计算如下:

其中,U_topK 表示激活的专家网络集合,U_d 表示没有被激活的专家网络集合。为了降低计算复杂度,我们在实际模型训练过程中,只从没有被激活的专家网络中随机选择一个,用于计算Adversarial Regularization。

增加了HSC和Adversarial Regularization之后,模型训练时的损失函数变成下面的形式:

04 实验结论

我们在Amazon数据集以及In-house数据集上分别评测了多类目MoE模型的指标。以DNN和传统的MoE模型作为baseline,Adv-MoE和HSC-MoE分别表示只有Adversarial Regularization和HSC loss的两个模型,Adv&HSC-MoE是我们最终的多类目模型。下图是我们在amazon数据集上的AUC指标,同时为了检测指标提升的显著性,我们也计算了对应的p值。

同时,我们在In-house数据集上做了多组实验,分别评测了模型的整体效果、类目差异的效果以及在小样本类目上的提升。下图是模型在AUC和NDCG两个指标上的评测结果。

我们也评测了使用单独类目的训练集训练模型和使用合并多个类目的训练集训练模型两种模型训练方式。下图是具体结果,其中M表示手机类目,B表示图书类目,C表示服饰类目。

由于MoE模型的门网络输出表示了不同的专家网络的权重,所以我们分析了不同类目下,门网络的输出,以便观察模型对于类目差异的学习效果。如下图所示:

我们将门网络的输出做T-SNE降维,观察不同类目的聚类效果,图上不同的颜色代表不同的类别(蓝色表示日用百货相关类目,绿色表示电器相关类目,红色表示流行服饰相关类目)。可以从图上明显的看出,我们提出的方法在聚类效果更好,也说明对于相似的类目,我们的模型更倾向于选择相似的专家网络,差异大的类目,更倾向于选择不同