介绍

youtube在2019公布了它的MMoE多目标排序系统《Recommending What Video to Watch Next: A Multitask Ranking System》。

摘要

在本paper中,我们介绍了一个大规模多目标排序系统,用于在工业界视频分享平台上推荐下一个要观看的视频。该系统会面临许多挑战,包括:存在多个竞争性的排序目标(ranking objectives),以及在user feedback中的隐式选择偏差(implicit selection biases)。为了解决这些挑战,我们探索了多种软参数共享技术(soft-parameter sharing techniques),比如:Multi-gate Mixture-of-Experts,以便对多个排序目标进行有效最优化(optimize)。另外,我们会采用一个Wide&Deep框架来减缓选择偏差(selection biases)。我们演示了我们提出的技术可以在youtube推荐质量上产生有效提升。

介绍

在本paper中,我们描述了一个关于视频推荐的大规模排序系统。也就是说:在给定用户当前观看的一个视频的情况下,推荐该用户可能会观看和享受的下一个视频。通常推荐系统会遵循一个two-stage设计:candidate generation、ranking。该paper主要关注ranking。在该stage,推荐器会具有数百个候选,接着会应用一个复杂的模型来对它们进行排序,并将最可能观看的items推荐给用户。

设计一个真实世界的大规模视频推荐系统充满挑战:

  • 通常有许多不同的、有时甚至有冲突的待优化目标。例如,我们想推荐用户点击率高、愿与朋友共享的、包括观看高的视频
  • 在该系统中通常有隐式偏差(implicit bias)。例如,一个用户通常点击和观看一个视频,仅仅只因为它的排序高,而不是因为用户最喜欢它。因此,从当前系统的数据生成来进行模型训练会是有偏的,这会造成(feedback loop effect)效应[33]。如何有效和高效地学习减少这样的biases是个开放问题。

为了解决这样的挑战,我们为ranking system提出了一个有效的多任务神经网络架构,如图1所示。它会扩展Wide&Deep模型,通过采用Multi-gate Mixture-of-Experts(MMoE) [30]来进行多任务学习。另外,它会引入一个浅层塔结构(shallow tower)来建模和移除选择偏差。我们会应用该结构到视频推荐中:给定当前用户观看的视频,推荐下一个要观看的视频。我们在实验和真实环境中均有较大提升。

图1 我们提出的ranking系统的模型架构。它会消费user logs作为训练数据,构建Multi-gate Mixture-of-Experts layers来预测两类user behaviors,比如:engagement和satisfaction。它会使用一个side-tower来纠正ranking selection bias。在顶部,会组合多个预测到一个最终的ranking score

特别的,我们首先将我们的多任务目标分组成两类:

  • 1) 参与度目标(engagement objectives),比如:用户点击(user clicks),推荐视频的参与度
  • 2) 满意度目标(satisfaction objectives),比如:用户喜欢一个视频的程度,在推荐上留下一个评分

为了学习和估计多种类型的用户行为,我们使用MMoE来自动化学习那些跨潜在冲突的多目标共享的参数。Mixture-of-Experts[21]架构会将input layer模块化成experts,每个expert会关注input的不同部分。这可以提升从复杂特征空间(由多个模块生成)中学到的表示。

接着,通过使用多个gating network,每个objective可以选择experts来相互共享或不共享。

为了建模和减小来自有偏训练数据的选择偏差(selection bias,比如:position bias),我们提出了添加一个shallow tower到主模型中,如图1左侧所示。shallow tower会将input与selection bias(比如:由当前系统决定的ranking order)相关联,接着输出一个scalar作为一个bias项来服务给主模型的最终预测。该模型架构会将训练数据中的label分解成两部分

  • 1.从主模型中学到的无偏用户效用(unbiased user utility)
  • 2.从shallow tower学到的估计倾向评分(estimated propensity score)

我们提出的模型结构可以被看成是Wide&Deep模型的一个扩展,shallow tower表示Wide部分。通过直接学习shallow tower和main model,我们可以具有优点:学习selection bias,无需对随机实验resort来获取propensity score。

为了评估我们提出的ranking系统,我们设计了offline和live实验来验证以下的效果:

  • 1) 多任务学习
  • 2) 移除一个常见的selection bias (position bias)

对比state-of-art的baseline方法,我们展示了我们提出的框架的改进。我们在Youtube上进行实验。

主要贡献有:

  • 介绍了一种end-to-end的排序系统来进行视频推荐
  • 将ranking问题公式化成一个多目标学习问题,并扩展了Multi-gate Mixture-of-Experts架构来提升在所有objectives上的效果
  • 我们提出使用一个Wide&Deep模型架构来建模和缓和position bias
  • 我们会在一个真实世界的大规模视频推荐系统上评估我们的方法,以及相应的提升

2.相关工作

3.问题描述

本节,我们首先描述了推荐下一次要观看的视频的问题,我们引入了一个two-stage setup。

除了上述提到的使用隐式反馈来构建ranking systems挑战外,对于真实的大规模视频推荐问题,我们需要考虑以下因素:

  • 多模态特征空间(Multimodal feature space)。在一个context-aware个性化推荐系统中,我们需要使用从多模态(例如:视频内容、预览图、音频、标题、描述、用户demographics)来学习候选视频的user utility。从多模态特征空间中为推荐学习表示,对比其它机器学习应用来说是独一无二的挑战。它分为两个难点:
    • 1) 桥接来自low-level的内容特征中的语义gap,以进行内容过滤(content filtering)
    • 2) 为协同过滤学习items的稀疏表示
  • 可扩展性(Scalability)。可扩展性相当重要,因为我们正构建一个数十亿用户和视频的推荐系统。模型必须在训练期间有效训练,在serving期间高效运行。尽管ranking system在每个query会对数百个candidates进行打分,真实世界场景的scoring需要实时完成,因为一些query和context信息不仅仅需要学习数十亿items和users的表示,而且需要在serving时高效运行。

回顾下我们的推荐系统的目标是:在给定当前观看的视频和上下文(context)时,提供一个关于视频的ranked list。为了处理多模态特征空间,对于每个视频,我们会抽取以下特征(比如:视频的meta-data和视频内容信号)来作为它的表示。对于context,我们会使用以下特征(比如:人口统计学user demographics、设备device、时间time、地点location)。

为了处理可扩展性,如[10]描述相似,我们的推荐系统具有两个stages:候选生成、ranking。。。

3.1 候选生成

我们的视频推荐系统会使用多种候选生成算法,每种算法会捕获query video和candidate video间的某一种相似性。例如,一个算法会通过将query video的topics相匹配来生成candidates;另一个算法则会基于该视频和query video一起被观察的频次来检索candiate videos。我们构建了与[10]相似的一个序列模型通过用户历史来生成个性化候选视频。我们也会使用[25]中提到的技术来生成context-aware high recall relevant candiadtes。最后,所有的candidates都会放到一个set中,给ranking system进行打分。

3.2 Ranking

我们的ranking系统会从数百个candidates中生成一个ranked list。不同于candidate generation,它会尝试过滤掉大多数items并只保留相关items,ranking system的目标是提供一个ranked list以便具有最高utility的items可以展示在top前面。因此,我们使用大多数高级机器学习技术常用的NN结构,以便能足够的建模表现力来学习特征关联和utility关系。

4.模型结构

4.1 系统总览

我们的ranking system会从两类用户反馈数据中学习:

  • 1) engagement行为(比如:点击和观看)
  • 2) satisfaction行为(比如:喜欢(likes)和dismissals)

给定每个candidate,ranking system会使用该candidate、query和context的的特征作为输入,学习预测多个user behaviors。

对于问题公式,我们采用l2r的框架。我们会将ranking问题建模成:一个具有多个objectives的分类问题和回归问题的组合。给定一个query、candidate和context,ranking模型会预测用户采用actions(比如:点击、观看、likes和dismissals)的概率

为每个candidate做出预测的方法是point-wise的方法。作为对比,pair-wise或list-wise方法可以在两个或多个candidates的顺序上做出预测。pair-wise或list-wise方法可以被用于潜在提升推荐的多样性(diversity)。然而,我们基于serving的考虑主要使用point-wise ranking。在serving时,point-wise ranking很简单,可以高效地扩展到大量candidates上。作为比较,对于给定的candidates集合,pair-wise或list-wise方法需要对pairs或lists打分多次,以便找到最优的ranked list,限制了它们的可扩展性。

4.2 ranking objectives

我们使用user behaviors作为训练labels。由于用户可以对推荐items具有不同类型的behaviors,我们将我们的ranking system设计成支持多个objectives。每个objective的目标是预测一种类型的与user utility相关的user behavior。为了描述,以下我们将objectives分离成两个类别:engagement objectives和satisfaction objectives。

Engagement objectives会捕获user behaviors(比如:clicks和watches)。我们将这些行为的预测公式化为两种类型的任务:对于像点击这样行为的二元分类任务,以及对于像时长(time spent)相关的行为的回归任务。相似的,对于satisfaction objectives,我们将:与用户满意度相关的行为预测表示成二元分类任务或者回归任务。例如,像点击/like这样的行为可以公式化成一个二元分类任务,而像rating这样的行为被公式化成regression任务。对于二元分类任务,我们会计算cross entropy loss。而对于regression任务,我们会计算squared loss。

一旦多个ranking objectives和它们的问题类型被定下来,我们可以为这些预测任务训练一个multitask ranking模型。对于每个candidate,我们将它们作为多个预测的输入,并使用一个形如加权乘法的组合函数(combination function)来输出一个组合分(combined score)。该权值通过人工调参,以便在user engagements和user satisfactions上达到最佳效果。

4.3 使用MMoE建模任务关系和冲突

多目标的ranking systems常使用一个共享的bottom模型架构。然而,当任务间的关联很低时,这样的hard-parameter sharing技术有时会伤害到多目标学习。为了缓和多目标间的冲突,我们采用并扩展了一个最近发布的模型架构:MMoE(Multi-gate Mixture-of-Experts)【30】。

MMoE是一个soft-parameter sharing模型结构,它的设计是为了建模任务的冲突(conflicts)与关系(relation)。通过在跨多个任务上共享experts,它采用Mixture-of-Experts(MoE)结构到多任务学习中,而对于每个task也具有一个gating network进行训练。MMoE layer的设计是为了捕获任务的不同之处,对比起shared-bottom模型它无需大量模型参数。关键思路是,使用MoE layer来替代共享的ReLU layer,并为每个task添加一个独立的gating network。

对于我们的ranking system,我们提出在一个共享的hidden layer的top上添加experts,如图2b所示。这是因为MoE layer可以帮助学习来自input的模态信息(modularized information)。当在input layer的top上、或lower hidden layers上直接使用它时,它可以更好地建模多模态特征空间。然而,直接在input layer上应用MoE layer将极大增加模型training和serving的开销。这是因为,通常input layer的维度要比hidden layers的要更高

图2 使用MMoE来替换shared-bottom layers

我们关于expert networks的实现,等同于使用ReLU activations的multilayer perceptrons。给定task k、 prediction \(y_k\)、以及最后的hidden layer \(h^k\),对于task k的具有n个experts output的MMoE layer为:\(f^k(x)\),可以用以下的等式表示:

\[y_k = h^k (f^k(x)), \\ where \ \ f^k(x) = \sum\limits_{i=1}^n g_{(i)}^k(x) f_i(x)\]

…(1)

其中:

  • \(x \in R^d\)是一个lower-level shared hidden embedding
  • \(g^k\)是task k的gating network
  • \(g_{(i)}^k(x) \in R^n\)是第i个entry
  • \(f_i(x)\)是第i个expert

gating networks是使用一个softmax layer的关于input的简单线性转换。

\[g^k(x) = softmax(W_{g^k} x)\]

…(2)

其中:

\(W_{g^k} \in R^{n \times d}\)是线性变换的自由参数

与[32]中提到的sparse gating network对比,experts的数目会大些,每个训练样本只利用top experts,我们会使用一个相当小数目的experts。这样的设置是为了鼓励在多个gating networks间共享experts,并高效进行训练

4.4 建模和移除Position和Selection Baises

隐式反馈被广泛用于训练l2r模型。大量隐式反馈从user logs中抽取,从而训练复杂的DNN模型。然而,隐式反馈是有偏的,因为它由已经存在的ranking system所生成。Position Bias以及其它类型的selection biases,在许多不同的ranking问题中被研究和验证[2,23,41]。

在我们的ranking系统中,query是当前被观看过的视频,candidates是相关视频,用户倾向于点击和观看更接近toplist展示的视频,不管它们实际的user utility——根据观看过的视频的相关度以及用户偏好。我们的目标是移除从ranking模型中移除这样的position bias。在我们的训练数据中、或者在模型训练期间,建模和减小selection biases可以产生模型质量增益,打破由selection biases产生的feedback loop。

我们提出的模型结构与Wide&Deep模型结构相似。我们将模型预测分解为两个components:

  • 来自main tower的一个user-utility component
  • 以及来自shallow tower的一个bias component

特别的,我们使用对selection bias有贡献的features来训练了一个shallow tower,比如:position bias的position feature,接着将它添加到main model的最终logit中,如图3所示。

  • 在训练中,所有曝光(impressions)的positions都会被使用,有10%的feature drop-out rate来阻止模型过度依赖于position feature
  • 在serving时,position feature被认为是缺失的(missing)。

为什么我们将position feature和device feature相交叉(cross)的原因是:不同的position biases可以在不同类型的devices上观察到

图3 添加一个shallow side tower来学习selection bias(比如:position bias)

5.实验结果

本节我们描述了我们的ranking system实验,它会在youtube上推荐next watch的视频。使用由YouTube提供的隐式反馈,我们可以训练我们的ranking models,并进行offline和live实验。

Youtube的规模和复杂度是一个完美的测试。它有19亿月活用户。每天会有数千亿的user logs关于推荐结果与用户活动的交互。Youtube的一个核心产品是,提供推荐功能:为给定一个观看过的视频推荐接下来要看的,如图4所示。

图4 在youtube上推荐watch next

5.2.3 Gating Network分布

为了进一步理解MMoE是如何帮助multi-objective optimization的,我们为在每个expert上的每个task在softmax gating network中绘制了累积概率。

5.3 建模和减小Position Bias

使用用户隐式反馈作为训练数据的一个主要挑战是,很难建模在隐式反馈和true user utility间的gap。使用多种类型的隐式信号和多种ranking objectives,在serving时在item推荐中我们具有更多把手(knobs)来tune以捕获从模型预测到user utility的转换。然而,我们仍需要建模和减小在隐式反馈中普遍存在的biases。例如:在用户和当前推荐系统交互中引起的selection biases。

这里,我们使用提出的轻量级模型架构,来评估如何来建模和减小一种类型的selection biases(例如:position bias)。我们的解决方案避免了在随机实验或复杂计算上花费太多开销。

5.3.1 用户隐反馈分析

为了验证在我们训练数据中存在的position bias,我们对不同位置做了CTR分析。图6表明,在相对位置1-9的CTR分布。所图所示,我们看到,随着位置越来越低,CTR也会降得越来越低。在更高位置上的CTR越高,这是因为推荐更相关items和position bias的组合效果。我们提出的方法会采用一个shallow tower,我们展示了该方法可以分离user utility和position bias的学习。

图6 位置1-9的CTR

5.3.2 Baseline方法

为了评估我们提出的模型架构,我们使用以下的baseline方法进行对比。

  • 直接使用position feature做为一个input feature:这种简单方法已经在工业界推荐系统中广泛使用来消除position bias,大多数用于线性l2r rank模型中。
  • 对抗学习(Adversarial learning):受域适应(domain adaptation)和机器学习公平性(machine learning fairness)中Adversarial learning的广泛使用的启发,我们使用一个相似的技术来引入一个辅助任务(auxiliary task),它可以预测在训练数据中的position。随后,在BP阶段,我们不让梯度传递到主模型(main model)中,以确保主模型的预测不依赖于position feature。

5.3.3 真实流量实验结果

表2展示了真实流量实验结果。我们可以看到提出的方法通过建模和消除position biases可以极大提升参与度指标。

5.3.4 学到的position biases

图7展示了每个position学到的position biases。从图中可知,越低的position,学到的bias越小。学到的biases会使用有偏的隐式反馈(biased implicit feedback)来估计倾向评分(propensity scores)。使用足够训练数据通过模型训练运行,可以使我们有效学到减小position biases。

图7 每个position上学到的position bias

5.4 讨论

参考

youtube在2019发布了它的双塔模型《Sampling-Bias-Corrected Neural Modeling for Large Corpus Item Recommendations》:

介绍

在许多服务上(视频推荐、app推荐、在线广告定向),推荐系统帮助用户发现感兴趣内容。在许多情况下,这些系统在一个低延时的条件下,会将数十亿用户与一个相当大的内容语料(数百万到数十亿)相连接。常用的方法是retrieval-and-ranking策略,这是一个two-stage系统。首先,一个可扩展的retrieval模型会从一个大语料中检索出一小部分相关items,接着一个成熟的ranking模型会对这些retrieved items基于一或多个目标(objectives: 比如clicks或user-ratings)进行rerank。在本文中,主要关注retrieval system。

给定一个{user, context, item}三元组,构建一个可扩展的retrieval模型的一个常用方法是:

  • 1) 分别为{user,context}和{item}各自学习query和item representations
  • 2) 在query和item representations间使用一个simple scoring function(比如:dot product)来得到对该query合适的推荐

context通常表示具有动态特性的variables,比如:天时长(time of day),用户所用设备(devices)。representation learning问题通常有以下两个挑战:

  • 1) items的corpus对于工业界规模的app来说相当大
  • 2) 从用户反馈收集得到的训练数据对于某些items相当稀疏

这会造成模型预测对于长尾内容(long-tail content)具有很大variance。对于这种cold-start问题,真实世界系统需要适应数据分布的变化来更好面对新鲜内容(fresh content)

受Netflix prize的启发,MF-based modeling被广泛用在构建retrieval systems中学习query和item的latent factors。在MF框架下,大量推荐研究在学习大规模corpus上解决了许多挑战。常见的思路是,利用query和item的content features。在item id外,content features很难被定义成大量用于描述items的features。例如,一个video的content features可以是从video frames中抽取的视觉features或音频features。MF-based模型通常只能捕获features的二阶交叉,因而,在表示具有许多格式的features collection时具有有限阶(power)。

在最近几年,受deep learning的影响,大量工作采用DNNs来推荐。Deep representations很适合编码在低维embedding space上的复杂的user states和item content features。在本paper中,采用two-tower DNNs来构建retrieval模型。图1提供了two-tower模型构建的图示,左和右分别表示{user, context}和{item}。two-tower DNN从multi-class classification NN(一个MLP模型)泛化而来[19],其中,图1的right tower被简化成一个具有item embeddings的single layer。因而,two-tower模型结构可以建模当labels具有structures或content features的情形。MLP模型通常使用许多来自一个fixed的item语料表中sampled negatives进行训练。作为对比,在使用了deep item tower后,对于计算所有item embeddings来说,由于item content features以及共享的网络参数,在许多negatives上进行抽样并训练通常是无效的。

图片名称

图1 一个2-tower DNN模型,它会学习query和candidate表示

我们考虑batch softmax optimization:其中item probability会通过在一个random batch上的所有items上计算得到。然而,在我们的实验中所示:batch softmax具有sampling bias倾向,在没有任何纠正的情况下,可能会严重限制模型效果。importance sampling和相应的bias reduction在MLP模型[4,5]中有研究。受这些工作的启发,我们提出了使用estimated item frequency的batch softmax来纠正sampling bias。对比于MLP模型,其中output item vocabulary是固定的(stationary),我们会根据vocabualary和分布随着时间变化来target streaming data。我们提出了一种新算法通过gradient descent来概述(sketch)和估计(estimate) item freqency。另外,我们使用bias-corrected modeling,并将它扩展到在youtube推荐上构建个性化retrieval system。我们也引入了一个sequential training strategy,用来吸收streaming data,与indexing和serving组件一起工作。

主要4个contributions:

  • Streaming Frequency Estimation:我们提出了一个新算法,根据vocabulary和分布偏移(distribution shifts)来估计来自data stream的item frequency。我们提供了分析结果来展示该estimation的variance和bias。我们也提供了仿真来演示我们的方法在捕捉数据动态性上的效率
  • Modeling Framework:我们提供了一个通用的建模框架来构建大规模检索系统。特别的,我们针对batch softmax会在cross entropy loss中引入estimated item frequency来减小在in-batch items上的sampling bias
  • Youtube recommendation:我们描述了如何使用modeling framework来为youtube 推荐构建一个大规模的检索系统。我们引入了end-to-end 系统,包括:training、indexing、serving组件
  • offline和Live实现:我们在两个真实数据集上执行offline实验,并演示了samping bias correction的效果。我们也展示了为youtube构建的索引系统,并在真实流量实验上提升了engagement指标。

2.相关工作

2.1 content-aware&Neural Recommenders

对于提升泛化(generalization)和解决cold-start问题来说,使用users和items的content features很关键。一些研究【23】在经典MF框架上采用content features。例如,generalized MF模型(比如:SVDFeatuer和FM),可以被用来采用item content features。这些模型能捕获bi-linear,比如:second-order的特征交叉。在最近几年,DNNs对于提升推荐的accuracy很有效。对比于传统因子分解方法,DNNs由于具有高度非线性,可以很有效地博获复杂的特征交叉。He [21]直接采用CF、NCF架构来建模user-item interactions。在NCF结构中,user和items embeddings被concatenated并被传入一个multi-layer NN来获得最终预测。我们的工作与NCF有两方法区别:

  • 1) 我们利用一个two-tower NN来建模user-item interactions,以便可以在sub-linear时间内实现在大语料items的inference。
  • 2) 学习NCF依赖于point-wise loss(比如:squared或log loss),而我们会引入multi-class softmax loss以及显式的model item frequency。

在其它work中,Deep RNN(比如:LSTM)被用于采用时序信息和推荐的历史事件,例如:[12,14]。除了单独的user和item representations外,另一部分设计NN的工作主要关注于学习rank systems。最近,multi-task learning是主要技术,对于复杂推荐器上优化多目标【27,28】。Cheng[9]引入了一个wide-n-deep framework来对wide linear models和deep NN进行jointly training。

2.2 Extreme classification

在设计用于预测具有大规模输出空间的labels的模型时,softmax是一个常用函数。从语言模型到推荐模型的大量研究,都关注于训练softmax多分类模型。当classes的数目相当大时,大量采用的技术是:抽样classes的一个subset。Bengio[5]表明:一个好的sampling distribution应该与模型的output distribution相适配。为了避免计算sampling distribution的并发症,许多现实模型都采用一个简单分布(比如:unigram或uniform)作为替代。最近,Blanc[7]设计了一个有效的adaptive kernel based的sampling方法。尽管sampled softmax在许多领域很成功,但不能应用在具有content features的label的case中。这种case中的Adaptive sampling仍然是一个开放问题。许多works表明,具有tree-based的label结构(比如:hierarchical softmax),对于构建大规模分类模型很有用,可以极大减小inference time。这些方法通常需要一个预定义的基于特定categorical attributes的tree structure。因此,他们不适用于包含大量input features的情况。

2.3 two-tower模型

构建具有two tower的NN在NLP中最近很流行,比如: 建模句子相似度(sentence similarities),response suggestions,text-based IR等。我们的工作主要有,在大规模推荐系统上构建two-tower模型的有效性验证。对比于许多语言任务,我们的任务在更大corpus size上,这在Youtube这样的场景下很常见。通过真实实验发现,显式建模item frequency对于在该setting中提升retrieval accuracy很重要。然而,该问题并没有很好地解决。

3.模型框架

考虑推荐问题的一个常见设定,我们具有queries和items的一个集合。queries和items通过feature vectors \(\lbrace x_i \rbrace_{i=1}^{N}\)和\(\lbrace y_i \rbrace_{j=1}^M\)表示。这里,\(x_i \in X, y_i \in Y\),是多种features的混合(比如:sparse IDs和dense features),可以在一个非常高维的空间中。这里的目标是:为给定一个query检索一个items的subset。在个性化场景中,我们假设:user和context在\(x_i\)中被完全捕获。注意,我们从有限数目的queries和items开始来解释该情形。我们的模型框架没有这样的假设。

我们的目标是构建具有两个参数化embedding functions的模型:

\[u: X \times R^d \rightarrow R^k, v: Y \times R^d \rightarrow R^k\]

将模型参数\(\theta \in R^d\)、query和candidates的features映射到一个k维的embedding space上。如图1所示,我们关注于的u, v通过两个DNN表示的case。模型的output是两个embeddings的inner product,命名为:

\[s(x,y) = <u(x,\theta), v(y,\theta)>\]

目标是,从一个具有T个样本的训练集中学习模型参数\(\theta\):

\[\mathscr{T} := \lbrace (x_i, y_i, R_i) \rbrace_{i=1}^T\]

其中,\((x_i, y_i)\)表示query \(x_i\)和item \(y_i\)的query,\(r_i \in R\)是每个pair相关的reward

相应的,retrieval问题可以被看成是一个具有continuous reward的multi-class分类问题。在分类任务中,每个label的重要性等价,对于所有postive pairs \(r_i=1\)在recommenders中,\(r_i\)可以被扩展成:对于一个特定candidate捕获到的user engagement的不同程度。例如,在新闻推荐中,\(r_i\)可以是一个用户花费在特定某个文章上的时间。给定一个query x,对于从M个items \(\lbrace y_i \rbrace_{j=1}^M\)选择候选y的概率分布,常用的选择是基于softmax function,例如:

\[P(y|x; \theta) = \frac{e^{s(x,y)}}{\sum_{j \in [M]} e^{s(x,y_j)}}\]

…(1)

接着进一步加入rewards \(r_i\),我们考虑上下面的weighted log-likelihood作为loss function:

\[L_T(\theta) := - \frac{1}{T} \sum\limits_{i \in [T]} r_i \cdot log(P(y_i | x_i; \theta))\]

…(2)

当M非常大时,在计算partition function时很难包括所有的candidate examples,例如:等式(1)中的分母。我们主要关注处理streaming data。因此,与从一个固定corpus中抽样得到负样本(negatives)的case进行训练MLP模型不同,对于从相同batch中的所有queries来说,我们只考虑使用in-batch items[22]作为负样本(negatives)。更确切地说,给定一个关于B pairs \(\lbrace (x_i, y_I, r_i) \rbrace_{i=1}^B\)的mini-batch,对于每个\(i \in [B]\),该batch softmax是:

\[P_B (y_i | x_i; \theta) = \frac{e^{s(x_i,y_i)}}{ \sum\limits_{i \in [B]} e^{s(x_i, y_i)}}\]

…(3)

在我们的目标应用中,in-batch items通常从一个power-law分布中抽样得到。因此,等式(3)在full softmax上会引入了一个大的bias:流行的items通常会过度被当成negatives,因为概率高。受在sampled softmax model[5]中logQ correction的启发,我们将每个logit \(s(x_i, y_i)\)通过下式进行纠正:

\[s^c(x_i, y_i) = s(x_i, y_j) - log(p_j)\]

这里,\(p_j\)表示在一个random batch中item j的sampling概率。

有了该correction,我们有:

\[P_B^c (y_i | x_i; \theta) = \frac{e^{s^c(x_i,y_i)}}{e^{s^c(x_i,y_i)} + \sum_{j \in [B],j \neq i} e^{s^c(x_i,y_i)}}\]

接着将上述term代入到等式(2),产生:

\[L_B(\theta) := -\frac{1}{B} \sum\limits_{i \in [B]} r_i \cdot log(P_B^c(y_i | x_i; \theta))\]

…(4)

它是batch loss function。使用learning rate \(\gamma\)运行SGD会产生如下的参数更新:

\[\theta \leftarrow \theta - \gamma \cdot \nabla_B (\theta)\]

…(5)

注意,\(L_B\)不需要一个关于queries和candidates的固定集合。相应的,等式(5)可以被应用到streaming training data上,它的分布随时间变化。我们提出的方法,详见算法1.

图片名称

算法1

最近邻搜索(NN Search):一旦embedding function u, v被学到,inference包含两个step:

  • 1) 计算query embedding:\(u(x,\theta)\)
  • 2) 在item embeddings(通过embedding function v预计算好)上执行最近邻搜索

另外,我们的模型框架提供了选项,可以在inference时选择任意items。不再计算在所有items上的dot product,低时耗retrieval通常基于一个基于hashing技术高效相似度搜索系统,特别的,高维embeddings的compact representations通过quantization、以及end-to-end learning和coarse和PQ来构建。

归一化(Normalization)和温度(Temperature)

经验上,我们发现,添加embedding normalization,比如:\(u(x,\theta) \leftarrow \frac{u(x,\theta)}{ \| u(x,\theta) \|_2}, u(y,\theta) \leftarrow \frac{v(y,\theta)}{\| v(y,\theta) \|_2}\),可以提升模型的trainability,从而产生更好的retrieval quality

另外,一个Temperature \(\tau\)被添加到每个logit上来对predictions进行削尖(sharpen):

\[s(x,y) = \frac{<u(x,\theta), v(y,\theta)>} {\tau}\]

实际上,\(\tau\)是一个超参数,用于调节最大化检索指标(比如:recall或precision)。

4.Streaming Frequancy估计

在本节中,我们详细介绍在算法1中所使用的streaming frequency estimation。

考虑到关于random batches的一个stream,其中每个batch包含了一个items集合。该问题为:估计在一个batch中每个item y的hitting的概率。一个重要的设计准则是:当存在多个training jobs(例如:workers)时,具有一个完全分布式的估计来支持dstributed training。

在单机或分布式训练时,一个唯一的global step,它表示trainer消费的data batches的数目,与每个sampled batch相关。在一个分布式设定中,global step通常通过parameter servers在多个workers间同步。

5. Youtube的Neural检索系统

我们在Youtube中使用提出的模型框架。该产品会基于在某个用户观看的某个video上生成视频推荐。推荐系统包含两个stages:nomination(或:retrieval)、ranking。在nomination stage,我们具有多个nominators,每个nomiator都会基于一个user和一个seed video生成成百上千的视频推荐。这些videos会按顺序打分,并在下游的一个NN ranking模型中进行rerank。在本节中,我们关注在retrieval stage中一个额外nominator。

5.1 模型总览

图片名称

图2

我们构建的youtube NN模型包含了query和candidates。图2演示了总的模型结构。在任意时间点上,用户正观看的某个video,(例如:seed video),提供了一个关于用户当前兴趣的一个很强信号。因此,我们会利用 关于seed video的features一个大集合以及用户观看历史。candidate tower的构建用来从candidate video features中学习。

training label。视频点击(video clicks)被用于正样本(positive labels)。另外,对于每个click,我们构建了一个reward \(r_i\)来表示关于该video的不同程度的user engagement。另一方面,\(r_i=1\)表示观看了整个视频。reward被用于example weight,如等式(4)所示。

VIdeo Features。video features在categorical和dense features中同时被用到。categorical features的样本包含了:Video Id和Channel Id。对于这两个entities的每个来说,会创建一个embedding layer来将categorical feature映射到一个dense vector上。通常,我们会处理两种categorical features。一些features(例如:Video Id)在每个video上具有一个categorical value,因此,我们具有一个embedding vector来表示它们。另外,一个feature(比如:Video topics)可以是一个关于categorical values的sparse vector,最终的embedding表示在sparse vector中的values的任一个的embeddings的加权求和。为了处理out-of-vocabulary entities,我们会将它们随机分配到一个固定的hash buckets集合中,并为每一个学习一个embedding。Hash buckets对于模型很重要,可以捕获在Youtube中的新实体(new entities),特别是5.2节所使用的sequential training。

User Features。我们使用一个user的观看历史来捕获在seed video外的user兴趣。一个示例是,用户最近观看过的k个video ids的一个sequence。我们将观看历史看成是一个bag of words (BOW),通过video id embeddings的平均来表示它。在query tower中,user和seed video features在input layer进行融合(fuse),接着传入到一个feed forward NN中。

对于相同类型的IDs,embedding可以在相关的features间共享。例如,video id embeddings的相同集合被用于:seed video、candidate video以及用户之前观看过的video。我们也做了不共享embedding的实验,但没有观看大大的模型效果提升。

5.2 Sequential training

我们的模型在tensorflow上实验,使用分布式GD在多个workers和parameter servers上训练。在Youtube中,新的training data每天都会生成,training datasets会每天重新组织。该模型训练会以如下方式使用上sequential结构。trainer会从最老的training examples开始顺序消费数据,直到最近天的训练数据,它会等待下一天的训练数据到达。这种方式下,模型可以赶得上最新的数据分布偏移(shift)。训练数据本质上由trainer以streaming方式消费。我们使用算法2 (或算法3)来估计item frequency。等式(6)的在线更新使得模型可以适应新的frequency分布。

图片名称

算法2

图片名称 算法3

5.3 Indexing和模型serving

在retrieval系统中的index pipeline会为online serving周期性地创建一个tensorflow savemodel。index pipeline会以三个stages构建:candidate example generation、embedding inference、embedding indexing,如图3所示。在第1个stage,会基于特定准则从youtube corpus中选中的videos集合。它们的features被fetched、以及被添加到candidate examples中。在第二个stage,图2的right tower用来计算来自candidate examples的embeddings。在第三个stage,我们会基于tree和quantized hashing技术来训练一个tensorflow-based embedding index model。

图片名称

图3

6.实验

本节中,我们展示了item frequency estimation的模型框架的有效性。

6.1 Frequency估计的仿真

为了评估算法2&3的有效性。我们开始一个仿真研究,我们首先使用每个提出的算法来拟合一个固定的item分布,接着在一个特定step后变更分布。为了更精准,在我们的setting中,我们使用一个关于M items的固定set,每个item根据概率\(q_i \propto i^2\)(其中:\(i \in [M], \sum_i q_i = 1\))进行独立抽样。

。。。略

参考

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]中的正弦函数组合作为回归模型。具体合成数据生成步骤如下:

  1. 给定输入特征维度$d$,生成两个正交单位向量$\mathbf{u}_1, \mathbf{u}_2 \in \mathbb{R}^d$,即满足:
\[\mathbf{u}_1^\top \mathbf{u}_2 = 0, \quad \|\mathbf{u}_1\|_2 = 1, \quad \|\mathbf{u}_2\|_2 = 1\]
  1. 给定尺度常数$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}\)

  2. 随机采样一个输入数据点$\mathbf{x} \in \mathbb{R}^d$,其每个元素服从标准正态分布$N(0,1)$。

  3. 为两个回归任务生成标签$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)$。
  4. 重复步骤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 任务相关性的影响

为了验证在基线多任务模型设置中,任务相关性较低会损害模型质量,我们在合成数据上进行了如下对照实验:

  1. 给定一组任务相关系数列表,为每个相关系数生成对应的合成数据集;
  2. 在严格控制所有模型与训练超参数保持一致的前提下,分别在每个数据集上训练一个共享底层(Shared-Bottom)多任务模型
  3. 独立重复执行步骤1和2数百次,确保每次生成的数据集相互独立,但始终保持任务相关系数列表与超参数设置相同;
  4. 计算每个任务相关系数下模型的平均性能表现。

图片名称

图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在具有不同相关性的合成数据上的平均表现

观察结果总结如下:

  1. 对于所有模型,在相关性较高的数据上的表现都优于在相关性较低的数据上的表现。

  2. MMoE模型在不同相关性数据上的表现差距比OMoE模型和Shared-Bottom模型小得多。这一趋势在我们比较MMoE模型和OMoE模型时尤为明显:在两个任务完全相同的极端情况下,MMoE模型和OMoE模型的表现几乎没有差异;然而当任务相关性降低时,OMoE模型的表现会出现明显的退化,而MMoE模型几乎不受影响。因此,在任务相关性较低的情况下,拥有针对特定任务的门控机制来建模任务差异至关重要。

  3. 在所有场景下,就平均表现而言,两个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],该模型还有潜力实现更好的计算效率。

我们希望这项工作能激励其他研究者进一步探索使用这些方法进行多任务建模。

参考

criteo也开放了它们的dpp方法:《Tensorized Determinantal Point Processes for Recommendation》, 我们来看下:

摘要

DPP在机器学习中的关注度越来越高,因为它可以在组合集合上提供一种优雅的参数化模型。特别的,在DPP中的所需的参数数目只与ground truth(例如:item catalog)的size成平方关系,而items的数目增长是指数式的。最近一些研究表明,DPPs对于商品推荐和(basket completion)任务 来说是很高效的模型,因为他们可以同时在一个集合中解释diversity和quality。我们提出了一种增强的DPP模型:tensorized DPP,它特别适合于basket completion任务。我们利用来自张量分解(tensor factorization)的思想,以便将模型进行定制用在next-item basket completion任务上,其中next item会在该模型的一个额外维度中被捕获。我们在多个真实数据集上评估了该模型,并找出:tensorized DPP在许多settings中,比许多SOTA模型提供了更好的predictive quality。

1.介绍

在averge shooping basket中items数的增加,对于在线零售商来说是一个主要关注点。该问题存在许多处理策略。而本工作主要关注于:算法会生成一个items集合,它们能适合补全用户的当前shopping basket。

Basket analysis和completion是机器学习中非常老的任务。许多年来,关联规则挖掘(association rule mining)是SOTA的。尽管该算法具有不同变种,主要的准则是涉及到:通过统计在过往observations中的共现,来计算购买一个额外商品的条件概率。由于计算开销和健壮性,现代方法更喜欢i2i CF,或者使用LR基于二分类购买得分来预测一个用户是否会构买一个item。

标准CF方法必须被扩展到能正确捕获商品间的diversity。在basket completion中,需要插入一定形式的diversity,因为推荐过于相似的items给用户并不好。实践者经常通过添加constraints到items推荐集合中来缓和该问题。例如,当使用类目信息时,在裤子被添加到basket时可以强制推荐相匹配的鞋子,而如果按天然的共同出售(co-sale) patterns会导致其它裤子的推荐。在这种情况中,diversity推荐的出现不会通过学习算法直接驱动,但可以通过side information和专家知识。Ref【28】提出了一种有效的Bayesian方法来学习类目的权重,当类目已知时。

然而,不依赖额外信息直接学习合适的diversity更令人关注。不使用side information,直接从数据中的diversity的naive learning,会得到一个高的计算开销,因为可能集合的数目会随类目中items数目而指数增长。该issue是no-trivial的,即使当我们只想往已存在集合中添加一个item时,而当我们想添加超过一个item来达到最终推荐set的diversity时会更难。

【9, 10】使用基于DPPs的模型来解决该组合问题。DPPs是一个来自量子物理学的优雅的关于排斥(repulsion)的概率模型,在机器学习上被广泛使用[17]。它允许抽样一个diverse的点集,相似度(similarity)和流行度(popularity)会使用一个称为“kernel”半正定矩阵进行编码。关于marginalization和conditioning DPPs有很多高效算法提供。从实用角度,学习DPP kernel是个挑战,因为相关的likelihood是non-convex的,从items的observed sets中学到它是NP-hard的。

对于basket completion问题,天然地会考虑:那些转化成售买的baskets的sets。在该setting中,DPP通过一个size为\(p \times p\)的kernel matrix进行参数化,其中p是catalog(item目录表)的size。因而,参数的数目会随着p的二次方进行增长,计算复杂度、预测、抽样会随着p的三次方增长。由于学习一个full-rank的DPP是很难的,[10]提出了通过对kernel限制到low rank来对DPP正则化(regularization)。该regularization会在不伤害预测效果下提升generalization,并可以提供更diversity的推荐。在许多settings中,预测质量也会被提升,使得DPP对于建模baskets问题是一个理想的工具。再者,对比起full-rank DPP,low-rank假设也提供了更好的runtime效果

另外,由于DPP的定义,正如在Model部分所描述的,low-rank假设对于kernel来说,意味着任意可能的baskets会比那些概率为0的选中rank要具有更好的items。该方法对于大的baskets来说不可能,一些其它DPP kernel的正则化可能更合适。另外,由于DPP kernel的对称性,可以建模有序(ordered corrections)。然而,这些被添加到shooping basket中的items的order会在basket completion任务中扮演重要角色。

主要贡献:

  • 在kernel上修改了constraints来支持大的baskets;也就是说,对于大于kernel rank的sets来说,我们会阻止返回概率0
  • 我们通过在DPP kernel的行列式上添加一个logistic function,来修改在所有baskets上的概率。我们将训练过程适配成处理这种非线性,并在许多real-world basket数据集上评估了我们的模型
  • 通过使用tensor factorization,我们提出了一种新方式来对在目录中的集合间的kernel进行正则化。该方法也会导致增强预测质量
  • 我们展示了这种新模型,称之为”tensorfized DPP”,允许我们可以捕获ordered basket completion。也就是说,我们可以利用该信息,忽略掉items被添加到basket的顺序,来提升预测质量

另外,我们展示了这些思想的组合来提升预测质量,tensorized DPP建模的效果要好于SOTA模型一大截。

2.相关工作

3.模型

DPPs最初用来建模具有排斥效应(replusive effect)的粒子间的分布。最近,在利用这种排斥行为上的兴趣,已经导致DPP在机器学习界受到大量关注。数学上,离散DPPs是在离散点集上的分布,在我们的case中,点就是items,模型会为观察到的给定items集合分配一个概率。假设I表示一个items集合,L是与DPP相关的kernel matrix(它的entries会在items间对polularity和similarity进行编码)。观察到的set I的概率与主子矩阵(principal submatrix)L的行列式成正比:\(I: P(I) \propto del L_I\)。因而,如果p表示在item catalog中的items数目,DPP是在\(2^p\)上的概率measure(),而它只包含了\(p^2\)的参数。kernel L会对items间的polularities和similarities进行编码,而对角条目\(L_{ii}\)表示item i的流行度,off-diagonal entry \(L_{ij} = L_{ji}\)表示item i和item j间的相似度。行列式从几何角度可以被看成是体积(volume),因此更diverse的sets趋向于具有更大的行列式。例如,选择items i和j的概率可以通过以下计算:

\[P[\lbrace i,j \rbrace] \propto \begin{vmatrix} L_{ii} & L_{ij} \\ L_{ji} & L_{jj} \\ \end{vmatrix} = L_{ii} L_{jj} - L_{ij}^2\]

…(1)

等式(1)中我们可以看到:如果i和j更相似,他们被抽样在一起的可能性越低。entries \(L_{ij}\)因此会决定kernel的排斥行为。例如,如果使用图片描述符来决定相似度,那么DPP会选择那些有区别的图片。另一方面,如果entries \(L_{ij}\)使用之前观察到的sets学到,比如:电商购物篮[10],那么,“similarity” \(L_{ij}\)会低些。由于共同购买的items可能具有某些diversity,DPPs对于建模包含购买items的baskets是一种天然选择。在搜索引擎场景、或者文档归纳应用中,kernel可以使用特征描述述 \(\phi_i \in R^D\)(例如:文本中的tf-idf)、以及一个关于每个item i的相关得分\(q_i \in R^+\),比如:\(L_{ij} = q_i \phi_i^T q_j\)(它会喜欢相关items (\(q_i\)值大),阻止相似items组成的lists)。

3.1 Logistic DPP

我们的目标是,寻找一个最可能一起购买的items集合。我们将该问题看成是一个分类问题,目标是预测:一个items的特定集合会生成一个转化(conversion),即:所有items都将被一起购买,这可以表示成\(Y \in \lbrace 0, 1 \rbrace\)。我们将class label Y建模成一个Bernoulli随机变量,它具有参数\(\phi(I)\),其中\(I\)是items集合,\(\phi\)是如下定义的函数:

\[p(y | I) = \phi(I)^y (1- \phi(I))^{1-y}\]

…(2)

我们使用一个DPP来建模函数\(\phi\)。

我们假设:存在一个隐空间,在该空间内diverse items很可能会被一起购买。与[10]相似,我们假设:在kernel matrix \(L \in R^{p \times p}\)上存在一个low-rank constraint,我们进行如下分解:

\[L = VV^T + D^2\]

…(3)

其中,\(V \in R^{p \times r}\)是一个隐矩阵,其中每个row vector i会编会item i的r个latent factors。D是一个对角阵(diagonal matrix),\(\|V_i \|\),表示每个item的intrinsic quality或popularity。在D上的平方指数确保了,我们总是具有一个合理的半正定kernel。我们接着定义:

\[\phi(I) \propto det(V_{I_{,:}} V_{I_{,:}}^T + D^2) \geq 0\]

注意,没有对角项,r的选择会限制observable set的cardinality,由于\(\mid I \mid > r\)暗示着当\(D \equiv 0\)时\(\phi(I)=0\)。使用该term会确保,任意set的后续概率都是正的,但对于基数(cardinality)高于r的sets,它的cross-effects会更低。我们也看到,具有相似latent vectors的items,对比起具有不同latent vectors的items,被抽到的可能性会更小,由于相似vectors会生成一个具有更小体积(volume)的超平行体(parallelotope)。为了对概率归一化,并鼓励vectors间的分离,我们会在\(\phi\)上使用一个logistic function:

\(\phi(I) = P(y = 1 | I) & \doteq 1 - exp(-w det L_I) \\ & \doteq \delta(w del L_I)\) …(5)

通常,logistic function的形式是:\(1/(1 + exp(-w det L_I))\)。然而,在我们的case中,行列式总是正的,因为L是半正定的,这会导致\(P(y=1 \mid I)\)总是大于0.5 。通过构建,我们的公式允许我们获得一个介于0和1之间的概率。最终,\(w \in R\)是一个scaling参数,可以通过cross-validation被选中,这确保了指数不会爆炸,因于对角参数会近似为1.

Learning。为了学习matrix V,我们确保了历史数据 \(\lbrace I_m, y_m \rbrace_{1 \leq m \leq M}\),其中,\(I_m\)是items集合,\(y_m\)是label set,如果该set购买则为1, 否则为0。该训练数据允许我们通过最大化数据的log似然来学习矩阵V和D。为了这样做,我们首先对所有y写出点击概率:

\[P(y | I) = \sigma(w det L_I)^y (1-\sigma(w det L_I))^{1-y}\]

…(6)

\(f(V,D)\)的log似然接着被写成:

\[f(V,D) = log \prod\limits_{m=1}^m P(y_m | I_m) - \frac{a_0}{2} \sum\limits_{i=1}^{p} a_i ( \| V_i \|^2 + \| D_i \|^2) \\ = \sum\limits_{m=1}^M log P(y_m | I_m) - \frac{a_0}{2} \sum\limits_{i=1}^{p} a_i ( \| V_i \|^2 + \| D_i \|^2)\]

根据[10],\(a_i\)是一个item正则权重,它与item流行度成反比。矩阵V和D可以使用SGA来最大化log似然进行学习。GA的一个step需要计算一个对称矩阵(\(L_i\),其中I是gradient step的相应item set)的行列式,它可以使用 optimized CW-like algorithm算法来达到,复杂度为:\(O(f^3)\)或\(O(f^{2.373})\),其中,f对应于在I中的items数目。用于学习所使用的最优化算法如算法1所示。

图片名称

算法1

3.3 Tensorized DPP

我们现在提出了对之前模型的一个修改版本,它更适合basket completion任务。为了这样做,对于basket completion场景,我们加强logistic DPP,其中我们对概率建模:用户将基于已经出现在shooping basket中的items来购买一个指定额外的item。我们使用一个tensor来表示它,目标是预测用户是否会基于basket来购买一个给定的candidate target item。该tensor的每个slice对应于一个candidate target item。在该setting中,对于在catalog p中的item (减去basket中已经存在的items),会存在越来越多的问题待解决。为每个待推荐的item学习一个kernel,每个item会与其它所有items相独立,在实际上是不可能的,会存在稀疏性问题。每个item只在baskets中的一小部分出现,因而每个kernel只会接受一小部分数据来学习。然而,所有items间并不完全相互独立。为了解决稀疏性问题,受RESCAL分解的启发,我们使用一个low-rank tensor。我们使用一个cubic tensor \(K \in R^{p \times p \times p }\),其中K的每个slice \(\tau\)(标为:\(K_{\tau}\))是candidate item (low-rank) kernel。通过假设:tensor K是low-rank的,我们可以实现在每个item间学到参数的共享,以如下等式所示:

\[K_{\tau} = V R_{\tau}^2 V^T + D^2\]

…(7)

其中,\(V \in R^{p \times r}\)是item latent factors,它对所有candidates items是共用的,\(R_{\tau} \in R^{r \times r}\)是一个candidate item指定的matrix,会建模每个candidate item间的latent components的交叉。为了对candidate items与已经在basket中的items间的自由度进行balance,我们进一步假设:\(R_{\tau}\)是一个对角矩阵。因此,\(R_{\tau}\)的对角向量会建模每个candidate item的latent factors,item的latent factors可以被看成是在每个latent factor上的产品的相关度。正如在matrix D的case,在\(R_{\tau}\)上的平方指数(squared exponent)可以确保我们总是有一个合理的kernel。

图片名称

图1

图1展示了factorization的一个图示。candidate item \(\tau\)的概率与已经在basket中的items set I是相关的:

\[P(y_{\tau} = 1 | I) = \sigma (w det K_{\tau, I} = 1 - exp(-w det K_{\tau,I})\]

…(8)

因此,\(g(V,D,R) \doteq g\)的log似然为:

\[g = \sum\limits_{m=1}^M log P(y_{\tau} | I_m) - \frac{a_0}{2} a_i (\| V_i \|^2 + \| D_i \|^2 + \| R^i \|^2)\]

其中,每个observation m与一个candidate item有关,\(I_m\)是与一个observation相关的basket items的set。由于之前的描述,矩阵V, D,以及\((R_{\tau})_{\tau \in \lbrace 1, \cdots, p\rbrace}\)通过使用SGA最大化log似然学到。正如logistic DPP模型,gradient ascent的一个step需要计算对称矩阵 \(L_I\)的逆和行列式,会产生\(O(f^{2.373})\)的复杂度(I中items数目为f)。算法2描述了该算法。关于最优化算法的细节详见附录。

图片名称

算法2

泛化到高阶交叉。在basket completion应用中,尝试同时推荐多个items挺有意思的。这可以使用一个贪婪方法来完成。也就是说,我们首先使用一个初始产品(initial product)来补充basket,并将augmented basket看成是一个新的basket,接着补充它。一种更直接的方法是,更适合捕获items间的高阶交叉,这可以泛化等式(7)。我们提出了一种高阶版本的模型,将来会对该模型进行效果评估。假设:d是要推荐的items数目,\(\tau = [\tau_1, \cdots, \tau_d] \in [p]^d\)。我们接着可以将kernel \(K_{\tau}\)定义为:

\[K_{\tau} = V \prod\limits_{k=1}^d R_{(d), \tau_d}^2 V^T + D^2\]

…(9)

其中,每个\(R_{(d), \tau_d} \in R^{r \times r}\)是一个对角矩阵。

3.3 预测

如前所述,从一个DPP中抽样可能是一个很难的问题,提出了许多解法[6,12]。尽管,在所有可能sets间抽样最好的set是个NP-hard问题,我们的目标是,寻找最好的item来补全basket。在这样的应用中,可以有效使用greedy方法,特别是我们的模型具有low-rank结构。另外,[10]提出了一种有效的方法来进行basket completion,涉及到对DPP进行conditioning,这在我们的logistic DPP模型有使用。

4.实验

5.实验结果

参考

阿里在paper《Behavior Sequence Transformer for E-commerce Recommendation in Alibaba》中提出了BST模型,我们可以借鉴一下:

1.介绍

2.架构

在rank stage中,我们会将推荐任务建模成CTR预测问题,它的定义如下:给定一个user点击的行为序列 \(S(u) = \lbrace v_1, v_2, \cdots, v_n \rbrace\),我们需要学习一个函数F,来预测u点击target item \(v_t\)的概率(例如:candidate item)。其它Features包括user profile、context、item、以及cross features。

我们会在WDL之上构建BST,总体架构如图1所示。从图1中知,我们可以看到,它遵循流行的embedding & MLP范式,其中,在feed到MLP之前,过去点击的items和相关features会首先嵌入到低维vectors中。BST和WDL的关键区别是:会添加transformer layer,通过捕获底层的序列信号(underlying sequential signals)来为用户点击items学习更好的表示。在以下部分,我们会引入一个bottom-up方式的BST核心组件:embeddding layer、transformer layer、MLP。

图片名称

图1 BST的架构总览。BST会使用用户的行为序列作为输入,包括:target item,以及”Other features”。它首先会将这些input features嵌入成低维vectors。为了更好地捕获在行为序行中的items间关系,会使用transformer layer来为该序列中的每个item学习更深的表示。接着通过将Other features的embeddings和transformer layer的output进行concatenate,使用3-layer MLP来学习hidden features间的交叉,最后使用sigmoid function来生成最终的output。注意,”Positional Features”会被包含在”Sequence Item Features”中。

2.1 Embedding Layer

第一个组件是embedding layer,它会将所有input features嵌入到一个fixed-size的低维vectors中。在我们的场景中,存在许多features,像:user profile features、item features、context features、以及不同features的组合(例如:cross features)。由于本工作聚焦于建模带transformer的行为序列,出于简洁性,我们会将所有这些features表示为“Other features”,并给出表1的一些示例。如图1所示,我们将图1左侧的“Other features”进行concatenate,并将它们嵌入到低维vectors中。对于这些features,我们会创建一个embedding matrix \(W_o \in R^{\mid D \mid \times d_0}\),其中:\(d_0\)是维度size。

图片名称

表1 图1左侧的”Other Features”。我们实际使用更多features,出于简洁,只列了许多有效的特征

另外,我们也会获得在行为序列中每个item的embedding。如图1所示,我们使用两种features类型来表示一个item:“Sequence Item Features”(红色)和“Positional Features”(暗蓝色),其中:“Sequence Item Features”包括:item_id和category_id。其中,一个item通常具有成百上千个features,在一个行为序列中选择所有features来表示该item代价太高。过往工作[15]介绍的,item_id和category_id对于表现来说足够好,在嵌入用户行为序列时,我们选择这两个特征作为sparse features来表示的每个item。”Positional Features”对应于以下的“positinal embedding”。接着,对于每个item,我们会将Sequence Item Features和Positional Features进行concatenate在一起,并创建一个embedding matrix:

\[W_V \in R^{\mid V \mid \times d_V}\]

其中:

  • \(d_V\)是embedding的dimension size
  • \(\mid V \mid\)是items数目

我们使用\(e_i \in R^{d_v}\)来表示在一个给定behavior sequence中的第i个item的embedding。

Positional embedding

在[13]中,作者提出了一个positional embedding来捕获句子中的order信息。同样的,在用户的行为序列中存在order。因而,在它们被投影成一个低维向量前,我们会添加“position”作为在bottom layer中每个item的一个input feature。注意,item \(v_i\)的position value会被计算成:

\[pos(v_i) = t(v_t) - t(v_i)\]

其中:

  • \(t(v_t)\)表示推荐时间(ecommending time)
  • \(t(v_i)\)是当用户点击item \(v_i\)的timestamp

我们会采用该方法,因为在我们的场景中它的效果要好于在[13]中的sin和cos函数

2.2 Transformer layer

在这部分,我们会引入Transformer layer,它会通过捕获在行为序行中其它items的关系,来为每个item学习一个deeper表示。

Self-attention layer

scaled dot-product attention[13]的定义如下:

** Attention(Q,K,V)=softmax(\frac{QK^T}{\sqrt{d}})V **

…(1)

其中:

  • Q表示queries
  • K是keys
  • V是values

在我们的场景中,self-attention操作会将items的embeddings作为input,并通过线性投影将它们转成三个matrices,接着将它们feed到一个attention layer中。根据[13],我们使用multi-head attention:

\[S = MH(E) = Concat(head_1, head_2, \cdots, head_h) W^H \\ head_i = Attention(EW^Q, EW^K, EW^V)\]

…(2)(3)

其中,投影矩阵\(W^Q, W^K, W^V \in R^{d \times d}\),E是所有items的embedding matrics,h是heads的数目.

Point-wise Feed-Forward Network

根据[13],我们会将point-wise Feed-Forward Networks(FFN)来进一步增强模型的非线性(non-linearity),定义如下:

\[F = FFN(S)\]

…(6)

为了避免overfitting,并能层次化学习有意义的features,我们在self-attention和FFN中同时使用dropout和LeakyReLU,接着,self-attention和FFN layers的overall output如下:

\[S' = LayerNom(S + Dropout(MH(S)) \\ F = LayerNomr(S' + Dropout(LeakyReLU(S'W^{(1)} + b^{(1)}) W^{(2)} + b^{(2)}))\]

…(5)(6)

其中,\(W^{(1)}, b^{(1)}, W^{(2)}, b^{(2)}\)是可学习的参数,LayerNomr是标准的normalization layer。

Stacking the self-attention block

在经过第一个self-attention block之后,它会将所有之前的items的embeddings进行聚合,为了进一步建模在item sequences下的复杂关系,我们将self-building blocks和第b个block进行stack,定义如下:

\[s^b = SA(F^{(b-1)}) \\ F^b = FFN(S^b), \forall i \in 1, 2, \cdots, n\]

…(7) (8)

实际上,我们观察到,对比起b=2, 3(见表4),在我们的实验中b=1可以获取更好的效果。出于效率的目的,我们不再尝试更大的b。

2.3 MLP layers和loss function

通过将Other features的embeddings和应用在target item上的transfomer layer的output进行concatenate,我们接着使用三个fully connected layers来进一步学习在dense features间的交叉,它在工作界RS中是标准实现。

为了预测一个用户是否在target item \(v_t\)上有点击,我们会将它建模成一个二分类问题,接着我们使用sigmoid函数作为output unit。为了训练该模型,我们使用cross-entropy loss:

\[L = - \frac{1}{N} \sum\limits_{(x,y) \in D} (y log p(x) + (1-y) log(1-p(x)))\]

…(9)

其中,D表示所有的样本,\(y \in \lbrace 0, 1\rbrace\)表示用户是否点击了某个item,p(x)是在sigmoid unit之后的network的output,表示sample x被点击的预测概率。

3.实验

在本节中,我们会展示实验结果。

3.1 Settings

Dataset

数据集从taobao APP中构造得到。我们会构建一个8天内的基于用户行为的离线数据集。我们使用前7天作为训练数据,后一天作为test data。dataset的统计如表2所示。我们可以看到,dataset相当大与稀疏。

图片名称

表2

Baseline

为了展示BST的效果,我们会使用两个模型进行对比:WDL[2]和DIN[17]。另外,我们创建了一个baseline方法,它会将sequential信息包含到WDL中,表示成WDL(+Seq),它会以平均的方式将过去点击的items的embeddings进行聚合。我们的framework会在WDL之上进行构建,使用Transfomer添加序列建模,而DIN只会使用attention机制捕获在target item与过去点击items间的相似度。

评估指标

对于offline结果,我们使用AUC进行online A/B test,我们会使用CTR和平均RT来评估所有模型。TR是响应时间(response time)的简称,它表示给定一个query生成推荐结果的时间开销,例如:一个用户对taobao的一次请求。我们使用平均RT作为指标来评估在在线生产环境中的不同效率。

Settings

我们的模型使用python2.7+tensorflow 1.4实现,使用”adagrad”作为optimizer。另外,我们会使用表3的模型参数。

图片名称

表3

3.2 结果分析

结果如表4所示。我们可以看到BST对比baseline的优势。特别的,离线实验的AUC提升从0.7734(WDL)和0.7866(DIN)到了0.7894(BST)。当对比WDL和WDL(+Seq)时,我们可以看到将sequential信息以简单平均方式包括其中的效果。这意味着有了self-attention的帮助,BST可以提供强大的能力来捕获在用户行为序列下的sequential signal。注意,从我们的实际经验看,offline AUC的小增益可以导致在online CTR上的大收益。相似的现象也在google的WDL[2]中有报告。

图片名称

表4

另外,除了efficiency,BST的平均RT与WDL和DIN接近,这可以确保在实际大规模RS中部署像Transformer这样的复杂模型的可行性

最后,我们也展示了在2.2节中对self-attention进行stacking的影响。从表4中,我们可以看到b=1可以获得最好的offline AUC。这可能会归因于这样的事实:在用户行为序列中存在顺序依赖(sequential dependency)不像在机器翻译任务中的句子那样复杂,更小数目的blocks就足够获得好的效果。在[7]中有类似的观察。因此,我们选择b=1来在生产环境中部署BST,表4只上报了b=1的online CTR gain。

4.相关工作

在本节,我们简单回顾了在deep learning CTR方法的相关工作。由于WDL的提出【2】,提出了一系列工作来使用deep learning-based方法来提升CTR,比如:DeepFM、XDeepFM、Deep&Cross networks【16】等。然而,所有这些之前的工作主要关注于特征组合(feature combinations)或者neural network的不同结构,忽略了在真实推荐场景中用户行为序列的顺序特性。最近,DIN提出attention机制来处理用户行为序列。我们的模型与DIN的不同之处是,使用Transformer来处理在用户行为序列中每个item的一个更深表示,而DIN只会捕获与之前点击的items与target item间的不同相似性。换句话说,使用transformer的模型更合适捕获序列信号(sequential signals)。在[7,12]中,transformer模型提出以seq-to-seq的方式来解决sequential推荐问题,它们的架构与我们的CTR预测不同。

5.结论

本paper中,我们呈现了使用transfomer到taobao推荐中的技术细节。通过使用捕获sequential关系的强大能力,我们通过大量实验展示了在建模用户行为序列中transfomer的优越性。另外,我们也呈现了taobao在生产环境上的部署细节。

参考