数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 MCMC 采样
- 机器学习方法概论
统计学习
深度学习
- 深度学习简介
- 深度前馈网络
- 反向传播算法
- 正则化
- 深度学习中的最优化问题
- 卷积神经网络
- CNN:图像分类
- 循环神经网络 RNN
- Transformer
- 一、Transformer [2017]
- 二、Universal Transformer [2018]
- 三、Transformer-XL [2019]
- 四、GPT1 [2018]
- 五、GPT2 [2019]
- 六、GPT3 [2020]
- 七、OPT [2022]
- 八、BERT [2018]
- 九、XLNet [2019]
- 十、RoBERTa [2019]
- 十一、ERNIE 1.0 [2019]
- 十二、ERNIE 2.0 [2019]
- 十三、ERNIE 3.0 [2021]
- 十四、ERNIE-Huawei [2019]
- 十五、MT-DNN [2019]
- 十六、BART [2019]
- 十七、mBART [2020]
- 十八、SpanBERT [2019]
- 十九、ALBERT [2019]
- 二十、UniLM [2019]
- 二十一、MASS [2019]
- 二十二、MacBERT [2019]
- 二十三、Fine-Tuning Language Models from Human Preferences [2019]
- 二十四 Learning to summarize from human feedback [2020]
- 二十五、InstructGPT [2022]
- 二十六、T5 [2020]
- 二十七、mT5 [2020]
- 二十八、ExT5 [2021]
- 二十九、Muppet [2021]
- 三十、Self-Attention with Relative Position Representations [2018]
- 三十一、USE [2018]
- 三十二、Sentence-BERT [2019]
- 三十三、SimCSE [2021]
- 三十四、BERT-Flow [2020]
- 三十五、BERT-Whitening [2021]
- 三十六、Comparing the Geometry of BERT, ELMo, and GPT-2 Embeddings [2019]
- 三十七、CERT [2020]
- 三十八、DeCLUTR [2020]
- 三十九、CLEAR [2020]
- 四十、ConSERT [2021]
- 四十一、Sentence-T5 [2021]
- 四十二、ULMFiT [2018]
- 四十三、Scaling Laws for Neural Language Models [2020]
- 四十四、Chinchilla [2022]
- 四十七、GLM-130B [2022]
- 四十八、GPT-NeoX-20B [2022]
- 四十九、Bloom [2022]
- 五十、PaLM [2022] (粗读)
- 五十一、PaLM2 [2023](粗读)
- 五十二、Self-Instruct [2022]
- 句子向量
- 词向量
- 传统CTR 预估模型
- CTR 预估模型
- 一、DSSM [2013]
- 二、FNN [2016]
- 三、PNN [2016]
- 四、DeepCrossing [2016]
- 五、Wide 和 Deep [2016]
- 六、DCN [2017]
- 七、DeepFM [2017]
- 八、NFM [2017]
- 九、AFM [2017]
- 十、xDeepFM [2018]
- 十一、ESMM [2018]
- 十二、DIN [2017]
- 十三、DIEN [2019]
- 十四、DSIN [2019]
- 十五、DICM [2017]
- 十六、DeepMCP [2019]
- 十七、MIMN [2019]
- 十八、DMR [2020]
- 十九、MiNet [2020]
- 二十、DSTN [2019]
- 二十一、BST [2019]
- 二十二、SIM [2020]
- 二十三、ESM2 [2019]
- 二十四、MV-DNN [2015]
- 二十五、CAN [2020]
- 二十六、AutoInt [2018]
- 二十七、Fi-GNN [2019]
- 二十八、FwFM [2018]
- 二十九、FM2 [2021]
- 三十、FiBiNET [2019]
- 三十一、AutoFIS [2020]
- 三十三、AFN [2020]
- 三十四、FGCNN [2019]
- 三十五、AutoCross [2019]
- 三十六、InterHAt [2020]
- 三十七、xDeepInt [2023]
- 三十九、AutoDis [2021]
- 四十、MDE [2020]
- 四十一、NIS [2020]
- 四十二、AutoEmb [2020]
- 四十三、AutoDim [2021]
- 四十四、PEP [2021]
- 四十五、DeepLight [2021]
- 图的表达
- 一、DeepWalk [2014]
- 二、LINE [2015]
- 三、GraRep [2015]
- 四、TADW [2015]
- 五、DNGR [2016]
- 六、Node2Vec [2016]
- 七、WALKLETS [2016]
- 八、SDNE [2016]
- 九、CANE [2017]
- 十、EOE [2017]
- 十一、metapath2vec [2017]
- 十二、GraphGAN [2018]
- 十三、struc2vec [2017]
- 十四、GraphWave [2018]
- 十五、NetMF [2017]
- 十六、NetSMF [2019]
- 十七、PTE [2015]
- 十八、HNE [2015]
- 十九、AANE [2017]
- 二十、LANE [2017]
- 二十一、MVE [2017]
- 二十二、PMNE [2017]
- 二十三、ANRL [2018]
- 二十四、DANE [2018]
- 二十五、HERec [2018]
- 二十六、GATNE [2019]
- 二十七、MNE [2018]
- 二十八、MVN2VEC [2018]
- 二十九、SNE [2018]
- 三十、ProNE [2019]
- Graph Embedding 综述
- 图神经网络
- 一、GNN [2009]
- 二、Spectral Networks 和 Deep Locally Connected Networks [2013]
- 三、Fast Localized Spectral Filtering On Graph [2016]
- 四、GCN [2016]
- 五、神经图指纹 [2015]
- 六、GGS-NN [2016]
- 七、PATCHY-SAN [2016]
- 八、GraphSAGE [2017]
- 九、GAT [2017]
- 十、R-GCN [2017]
- 十一、 AGCN [2018]
- 十二、FastGCN [2018]
- 十三、PinSage [2018]
- 十四、GCMC [2017]
- 十五、JK-Net [2018]
- 十六、PPNP [2018]
- 十七、VRGCN [2017]
- 十八、ClusterGCN [2019]
- 十九、LDS-GNN [2019]
- 二十、DIAL-GNN [2019]
- 二十一、HAN [2019]
- 二十二、HetGNN [2019]
- 二十三、HGT [2020]
- 二十四、GPT-GNN [2020]
- 二十五、Geom-GCN [2020]
- 二十六、Graph Network [2018]
- 二十七、GIN [2019]
- 二十八、MPNN [2017]
- 二十九、UniMP [2020]
- 三十、Correct and Smooth [2020]
- 三十一、LGCN [2018]
- 三十二、DGCNN [2018]
- 三十三、AS-GCN
- 三十四、DGI [2018]
- 三十五、DIFFPOLL [2018]
- 三十六、DCNN [2016]
- 三十七、IN [2016]
- 图神经网络 2
- 图神经网络 3
- 推荐算法(传统方法)
- 一、Tapestry [1992]
- 二、GroupLens [1994]
- 三、ItemBased CF [2001]
- 四、Amazon I-2-I CF [2003]
- 五、Slope One Rating-Based CF [2005]
- 六、Bipartite Network Projection [2007]
- 七、Implicit Feedback CF [2008]
- 八、PMF [2008]
- 九、SVD++ [2008]
- 十、MMMF 扩展 [2008]
- 十一、OCCF [2008]
- 十二、BPR [2009]
- 十三、MF for RS [2009]
- 十四、 Netflix BellKor Solution [2009]
- 推荐算法(神经网络方法 1)
- 一、MIND [2019](用于召回)
- 二、DNN For YouTube [2016]
- 三、Recommending What Video to Watch Next [2019]
- 四、ESAM [2020]
- 五、Facebook Embedding Based Retrieval [2020](用于检索)
- 六、Airbnb Search Ranking [2018]
- 七、MOBIUS [2019](用于召回)
- 八、TDM [2018](用于检索)
- 九、DR [2020](用于检索)
- 十、JTM [2019](用于检索)
- 十一、Pinterest Recommender System [2017]
- 十二、DLRM [2019]
- 十三、Applying Deep Learning To Airbnb Search [2018]
- 十四、Improving Deep Learning For Airbnb Search [2020]
- 十五、HOP-Rec [2018]
- 十六、NCF [2017]
- 十七、NGCF [2019]
- 十八、LightGCN [2020]
- 十九、Sampling-Bias-Corrected Neural Modeling [2019](检索)
- 二十、EGES [2018](Matching 阶段)
- 二十一、SDM [2019](Matching 阶段)
- 二十二、COLD [2020 ] (Pre-Ranking 模型)
- 二十三、ComiRec [2020](https://www.wenjiangs.com/doc/0b4e1736-ac78)
- 二十四、EdgeRec [2020]
- 二十五、DPSR [2020](检索)
- 二十六、PDN [2021](mathcing)
- 二十七、时空周期兴趣学习网络ST-PIL [2021]
- 推荐算法之序列推荐
- 一、FPMC [2010]
- 二、GRU4Rec [2015]
- 三、HRM [2015]
- 四、DREAM [2016]
- 五、Improved GRU4Rec [2016]
- 六、NARM [2017]
- 七、HRNN [2017]
- 八、RRN [2017]
- 九、Caser [2018]
- 十、p-RNN [2016]
- 十一、GRU4Rec Top-k Gains [2018]
- 十二、SASRec [2018]
- 十三、RUM [2018]
- 十四、SHAN [2018]
- 十五、Phased LSTM [2016]
- 十六、Time-LSTM [2017]
- 十七、STAMP [2018]
- 十八、Latent Cross [2018]
- 十九、CSRM [2019]
- 二十、SR-GNN [2019]
- 二十一、GC-SAN [2019]
- 二十二、BERT4Rec [2019]
- 二十三、MCPRN [2019]
- 二十四、RepeatNet [2019]
- 二十五、LINet(2019)
- 二十六、NextItNet [2019]
- 二十七、GCE-GNN [2020]
- 二十八、LESSR [2020]
- 二十九、HyperRec [2020]
- 三十、DHCN [2021]
- 三十一、TiSASRec [2020]
- 推荐算法(综述)
- 多任务学习
- 系统架构
- 实践方法论
- 深度强化学习 1
- 自动代码生成
工具
- CRF
- lightgbm
- xgboost
- scikit-learn
- spark
- numpy
- matplotlib
- pandas
- huggingface_transformer
- 一、Tokenizer
- 二、Datasets
- 三、Model
- 四、Trainer
- 五、Evaluator
- 六、Pipeline
- 七、Accelerate
- 八、Autoclass
- 九、应用
- 十、Gradio
Scala
- 环境搭建
- 基础知识
- 函数
- 类
- 样例类和模式匹配
- 测试和注解
- 集合 collection(一)
- 集合collection(二)
- 集成 Java
- 并发
1.4 实验
1.4.1 人工合成数据集
为了解
MMoE
模型是否可以更好地处理任务相关性较低的情况,我们改变了人工合成数据的任务相关性,并观察了不同模型的行为如何变化。我们还进行了可训练性
trainability
分析,并表明和Shared-Bottom
模型相比,MMoE
模型更易于训练。配置:
输入维度为
100
。所有
MoE based
模型都有8
个专家,每个专家都实现为一个隐层维度为16
的单层网络。tower
网络实现为一个隐层维度为8
的单层网络。我们注意到,共享的专家和
tower
中所有参数的总量是 $ 100 \times 16 \times 8 + 16\times 8\times 2 = 13056 $ 。对于
baseline
的Shared-Bottom
模型,我们仍然将tower
网络实现为一个隐层维度为8
的单层网络。我们设置单层的shared-bottom network
,其隐层维度为 $ 13056/(100 + 8 \times 2)\simeq 113 $ 。所有模型都使用
Adam
优化器训练,学习率在[0.0001, 0.001, 0.01]
中进行网格搜索。
注意:由于两个回归任务是对称的,因此只需报告一个任务的
loss
值即可。对于每种模型配置,我们重复
200
次独立运行,每次使用随机生成的数据和随机的模型初始化。平均结果如下图所示。可以看到:对于所有模型,具有较高相关性的数据,其性能要优于具有较低相关性的数据。其中性能以损失函数
loss
来衡量。在具有不同相关性的数据上,
MMoE
模型的性能差距要远小于OMoE
模型和Shared-Bottom
模型。当我们将MMoE
模型和OMoE
模型进行比较时,这种趋势尤为明显:- 在两个任务相同的极端情况下,
MMoE
模型和OMoE
模型的性能几乎没有区别。 - 当两个任务之间的相关性降低时,
OMoE
模型的性能就会明显降低,而MMoE
模型的影响很小。
因此,在低关联性的情况下,具有
task-specific gate
对任务差异建模至关重要。- 在两个任务相同的极端情况下,
就平均性能而言,两种
MoE
模型在所有情况下都优于Shared-Bottom
模型。这表明MoE
结构本身带来了额外的好处。根据这一观察,我们在后续展示了MoE
模型比Shared-Bottom
模型具有更好的可训练性trainability
。
对于大型神经网络模型,我们非常关心它们的可训练性
trainability
,即模型在一系列超参数设置和模型初始化的鲁棒性。最近,
Collins
等人发现,某些门控RNN
模型(如LSTM
和GRU
),这些模型我们认为比普通RNN
性能更好,更容易训练,而不是具有更好的模型容量。虽然我们已经证明
MMoE
可以更好地处理任务相关性较低的情况,但是我们也希望更深入地了解它在可训练性方面的表现。利用我们的人工合成数据,我们可以自然地研究我们的模型对于数据和模型初始化中的随机性的鲁棒性。我们在每种配置下重复实验多次。每次数据都是在相同的分布、但是不同的随机种子生成的,模型的初始化也不同。我们在下图中绘制了重复运行的最终
loss
值的直方图。在直方图中有三个有趣的观察结果:首先,在所有配置中,
Shared-Bottom
模型的性能差异要比MoE-based
模型大得多。这意味着Shared-Bottom
模型通常比MoE-based
模型具有更差质量的局部极小值。其次,当任务相关度为
1
时,OMoE
模型的性能方差与MMoE
模型的性能方差具有相似的鲁棒性。而当任务相关性降低到0.5
时,OMoE
模型的鲁棒性有显著的下降。注意到
MMoE
和OMoE
唯一的区别在于是否采用多门结构。这验证了多门结构在解决由任务差异导致的冲突conflict
,从而带来的不良局部极小值方面的有效性。最后,值得观察的是:所有三种模型的最低
loss
是可比的。这并不奇怪,因为神经网络在理论上是通用的函数逼近器approximator
。只要有足够的模型容量,就应该存在一个 “正确的”Shared-Bottom
模型来很好地学习这两个任务。但是请注意:这是
200
个独立实验的分布。而且我们怀疑,对于更大、更复杂的模型(例如,当shared-bottom network
是RNN
时),获得任务关系的 “正确” 模型的机会可能更低。因此,显式建模任务关系仍然是可取的。
1.4.2 真实数据集
baseline
方法:除了Shared-Bottom
多任务模型之外,我们还比较了几种state-of-the-art
多任务深度神经网络模型。L2-Constrained
:该方法是为一个拥有两个任务的跨语言问题cross-lingual problem
设计的。在该方法中,不同任务的参数由L2
约束软性共享shared softly
。假设任务 $ k,k=1,2 $ 的
$ \mathcal J = \mathbb E\left[L\left(y_1,f\left(\mathbf{\vec x};\theta_1\right)\right)\right] + \mathbb E\left[L\left(y_2,f\left(\mathbf{\vec x};\theta_2\right)\right)\right] +\alpha \left\|\theta_1-\theta_2\right\|_2^2 $ground truth label
为 $ y_k $ ,任务 $ k $ 的预估结果为 $ \hat y_k=f\left(\mathbf{\vec x};\theta_k\right) $ ,其中 $ \theta_k $ 为模型参数。该方法的目标函数为:其中:
- $ y_1 $ 为任务
1
的ground truth label
, $ y_2 $ 为任务2
的ground truth label
。 - $ L(\cdot,\cdot) $ 为损失函数。
- $ \alpha $ 为超参数。该方法使用 $ \alpha $ 的大小来建模任务相关性。
- $ y_1 $ 为任务
$ \begin{bmatrix} \tilde{\mathbf{\vec x}}_1^{(i)}\\ \tilde{\mathbf{\vec x}}_2^{(i)} \end{bmatrix}=\begin{bmatrix} \alpha_{1,1}&\alpha_{1,2}\\ \alpha_{2,1}&\alpha_{2,2} \end{bmatrix}\begin{bmatrix} {\mathbf{\vec x}}_1^{(i)}\\ {\mathbf{\vec x}}_2^{(i)} \end{bmatrix} $Cross-Stitch
:该方法通过引入一个Cross-Stitch
单元,从而在两个任务之间共享知识。Cross-Stitch
单元从任务1
和任务2
中获取隔离separated
的隐层 $ \mathbf{\vec x}_1,\mathbf{\vec x}_2 $ 作为输入,并通过以下等式分别输出 $ \tilde{\mathbf{\vec x}}_1^{(i)},\tilde{\mathbf{\vec x}}_2^{(i)} $ :其中:
- $ \alpha_{j,k},j,k=1,2 $ 为可训练的参数,代表从任务 $ k $ 到任务 $ j $ 的交叉迁移
cross transfer
。 - $ \tilde{\mathbf{\vec x}}_1^{(i)},\tilde{\mathbf{\vec x}}_2^{(i)} $ 表示在任务
1
和任务2
中被发送到更高的层的representation
。 $ i $ 表示第 $ i $ 层。
- $ \alpha_{j,k},j,k=1,2 $ 为可训练的参数,代表从任务 $ k $ 到任务 $ j $ 的交叉迁移
Tensor-Factorization
:在该方法中,将多个任务的权重张量进行张量分解从而用于跨任务的参数共享。为进行比较,我们实现了Tucker
分解以学习多任务模型,据报道该模型可以提供最可靠的结果。例如,给定输入隐层维度为 $ m $ 、输出隐层维度为 $ n $ 、任务数量 $ K $ 的情况下,权重 $ \mathbf W $ 是一个 $ m\times n\times K $ 的张量,它由以下等式得到:
$ \mathbf W = \sum_{i_1}^{r_1}\sum_{i_2}^{r_2}\sum_{i_3}^{r_3}S(i_1,i_2,i_3)\times \mathbf U_1(:,i_1)\circ\mathbf U_2(:,i_2)\circ \mathbf U_3(:,i_3) $其中:
- $ \mathbf S\in \mathbb R^{r_1\times r_2\times r_3} $ 为一个张量,它为可训练的参数。
- $ \mathbf U_1\in \mathbb R^{m\times r_1},\mathbf U_2\in \mathbb R^{n\times r_2},\mathbf U_3\in \mathbb R^{K\times r_3} $ 为矩阵。它们都是可训练的参数。
- $ \circ $ 为向量的外积。
- $ r_1,r_2,r_3 $ 为超参数。
配置:
我们采用了一种超参数调优器
hyper-parameter tuner
为所有模型搜索最佳超参数,调优算法是一个高斯过程模型Gaussian Process model
。除了调优所有方法的学习率和训练
step
的数量之外,我们还调优了一些model-specific
的超参数:MMoE
:专家的数量、每个专家的隐层维度。L2-Constrained
:隐层维度、 $ \alpha $ 系数。Cross-Stitch
:隐层维度、Cross-Stitch layer
的维度。Tensor-Factorization
:系数 $ r_1,r_2,r_3 $ 、隐层维度。
为使得公平地比较,我们通过为每层隐单元数量设置相同的上限来限制所有方法的最大模型大小,即
2048
。对于MMoE
,它就是 “专家数量” 乘以 “每个专家的隐层维度” 。我们的方法和所有
baseline
方法都是使用Tensorflow
来实现的。
a. Census-income 数据集
UCI census-income
数据集:从1994
年人口普查数据库中抽取的,包含299285
个美国成年人的人口信息,每个样本有40
个特征。通过将某些特征设置为预测目标,我们从该数据集中构造了两个多任务学习问题,并计算了
10000
个随机样本中任务标签的皮尔逊相关系数的绝对值:- 任务
1
:预测收入是否超过5
万美元;任务2
:预测他/她是否从未结婚。绝对皮尔逊相关系数为0.1768
。 - 任务
1
:预测教育程度是否至少为大学;任务2
:预测他/她是否从未结婚。绝对皮尔逊相关系数为0.2373
。
数据集中有
199523
个训练样本和99762
个测试样本。我们进一步按1:1
的比例将测试样本随机划分为验证集和测试集。注意:我们从输入特征中删除教育和婚姻状况,因为这些特征被视为标签。- 任务
配置:
由于这两组任务都是二元分类问题,因此我们将
AUC
分数作为评估指标。在这两组中,我们都将婚姻状况任务作为辅助任务,而将第一组中的收入任务、第二组中的教育任务视为主要任务。我们关注主要任务的AUC
。对于超参数调优,我们使用验证集上主要任务的
AUC
作为目标。对于每种方法,我们使用超参数调优器进行数千次实验,以找到最佳的超参数配置。
在找到最佳超参数之后,我们使用随机参数初始化在训练集上对每种方法进行
400
次训练,并在测试集上报告结果(主要任务的平均AUC
)。
下表给出了两组任务的实验结果,可以看到:
由于这两组中的任务相关性(大致由
label
的皮尔逊相关系数来衡量)都不是很强,因此Shared-Bottom
模型在多任务模型中几乎总是最差的(Tensor-Factorization
除外)。L2-Constrained
和Cross-Stitch
都为每个任务提供了单独的模型参数,并增加了如何学习这些参数的约束,因此它们的性能要比Shared-Bottom
模型更好。但是,对模型参数学习的约束很大程度上依赖于任务关系的假设,这不如
MMoE
使用的参数调制机制parameter modulation mechanism
灵活。因此MMoE
在第二组任务中的所有方面都超越其他多任务模型。Tensor-Factorization
方法在两组中效果都是最差的。这是因为它倾向于对所有任务的隐层权重进行低秩张量和低秩矩阵的泛化。该方法对于任务相关性可能非常敏感,因为当任务之间的相关性较低时,它倾向于过度泛化over-generalize
,并且需要更多的数据和更长的训练时间。多任务模型未针对验证集上的婚姻状况辅助任务进行调优,而单任务模型则针对辅助任务进行了调优。因此,单任务模型在辅助任务上获得最佳性能是合理的。
b. 大规模内容推荐数据集
我们在谷歌的大型内容推荐系统上进行实验,其中为数十亿用户推荐数十亿个
item
。具体而言,给定用户当前消费item
的行为,推荐系统旨在向用户推荐接下来要消费的item
列表。我们的推荐系统采用一些现有内容推荐框架,包括一个候选生成器
candidate generator
、以及一个深度排序模型。在我们的设置中,深度排序模型可以针对两种类型的排序目标进行优化:- 针对互动
engagement
相关的目标进行优化,如点击率CTR
、互动时长。 - 针对满意度
satisfaction
相关的目标进行优化,如喜欢率like rate
。
我们的训练数据包括数以千亿记的用户隐式反馈,如点击
click
和喜欢like
。如果单独训练,则每个任务的模型需要学习数十亿个参数。因此,和分别独立学习多个目标相比,Shared-Bottom
架构具有更小规模的优势。实际上,Shared-Bottom model
已经在生产环境中使用。- 针对互动
配置:
- 我们通过为深度排序模型创建两个二元分类任务来评估多任务模型:预测用户互动相关的行为、预测用户满意度相关的行为。我们将这两个任务命名为
engagement
子任务、satisfaction
子任务。 - 推荐系统使用稀疏特征的
embedding
,并将所有稠密特征归一化为[0.0,1.0]
之间。 - 对于
Shared-Bottom
模型,我们将shared-bottom network
实现为一个前馈神经网络,它具有几个全连接层并使用ReLU
激活函数。每个任务在shared-bottom network
之上构建全连接层作为tower
网络。 - 对于
MMoE
,我们只需要将shared-bottom network
的顶层修改为MMoE layer
,并保持MMoE layer
的输出维度不变。因此,我们不会在模型训练和serving
中增加额外的计算成本。 - 我们还实现了其他
baseline
方法,例如L2-Constrained
和Cross-Stitch
。由于它们的模型架构,与Shared-Bottom
模型相比,它们的参数数量大约翻了一倍。 - 我们不和
Tensor-Factorization
进行比较,因为如果没有高效率的工程实现,Tucker
乘积的计算不能扩展到十亿级。 - 所有模型均采用
batch size = 1024
的mini-batch
随机梯度下降法进行优化。
- 我们通过为深度排序模型创建两个二元分类任务来评估多任务模型:预测用户互动相关的行为、预测用户满意度相关的行为。我们将这两个任务命名为
离线效果评估:对于离线评估,我们在固定的
300
亿条用户隐式反馈集合上训练模型,并在100
万条数据的hold-out
数据集上进行评估。鉴于satisfaction
子任务的标签要比engagement
子任务的标签稀疏的多,离线结果噪音很大。因此我们只在下表中给出engagement
子任务的AUC
得分和平方误差R-Squared
得分。我们分别展示了训练
200
万步(千亿级样本、batch size = 1024
)、400
万步、600
万步之后的结果。可以看到:在所有指标上,
MMoE
均优于其它模型。这里
OMoE
效果并没有超越Shared-Bottom
,这不符合预期(OMoE
是集成模型)。L2Constrained
和Cross-Stitch
比Shared-Bottom
模型更差。这很可能是由于这两个模型是建立在两个独立的单任务模型上,并且有太多的模型参数使得难以很好地约束constrained
。
注:这里用户隐式反馈数据
300
亿条,但是训练样本有千亿级,是因为还有些负采样的样本。为更好地理解门控
gate
是如何工作的,我们在下图中显示了每个任务的softmax gate
的分布。可以看到:MMOE
学到了这两个任务之间的差异,并自动平衡balance
了共享参数和非共享参数。- 由于
satisfaction
子任务的标签比engagement
子任务的标签更加稀疏,因此satisfaction
子任务的gate
更多地聚焦于单个专家上。
在线效果评估:最后,我们在内容推荐系统上对我们的
MMoE
模型进行了在线实验。我们不进行L2-Constrained
和CrossStitch
方法的在线实验,因为这两种模型通过引入更多的参数使得serving
时间加倍。我们进行了两组实验:
第一组实验是比较
Shared-Bottom
模型和单任务Single-Task
模型。Shared-Bottom
模型在engagement
子任务和satisfaction
子任务上都进行了训练。单任务模型仅在engagement
子任务上进行训练。注意:尽管没有在
satisfaction
子任务上进行训练,但是单任务模型在测试时用作排序模型,因此我们也可以计算它推荐结果的satisfaction
指标。第二组实验是将我们的
MMoE
模型和第一个实验中的Shared-Bottom
模型进行比较。
这两组实验都是使用相同数量的在线流量完成的。下表给出了在线实验的结果,可以看到:
- 首先,和单任务模型相比,通过使用
Shared-Bottom
模型,我们看到在线satisfaction
指标大幅提升了19.72%
、在线engagement
指标略有下降(-0.22%
)。 - 其次,和
Shared-Bottom
模型相比,通过使用MMoE
模型,我们同时提升了这两个指标。
注意:在该推荐系统中,
engagement
指标的原始值比satisfaction
指标的原始值大得多。并且在提高satisfaction
指标的同时,希望没有engagement
指标的下降、甚至是能够有engagement
指标的提升。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论