Progressive Layered Extraction: A Novel Multi-TaskLearning Model for Personalized Recommendations

解决的问题

多任务学习在推荐场景中已经得到了广泛的应用。然而多任务模型常常会受到负迁移的影响而性能变差。为解决这一问题,本文提出了Progressive Layered Extraction (PLE),它将共享组件和每个任务独有的组件分隔开,并引入了一种先进的路由机制来深层的语义抽取分离出来。

跷跷板现象

在多任务学习中负迁移是很常见的现象,这一现象在相关性不强的任务间尤为显著。对于有着复杂关联性的多任务学习,我们还观察到了跷跷板现象:在全部任务中超越单任务模型是非常困难的。我们将会通过腾讯的视频推荐系统来说明这一现象。

视频推荐的MTL排序系统


如上图所示,我们的视频推荐系统在排序阶段有多个目标。在接到线上请求后,排序模型为每一个任务预测一个分数,最终的分数由下面的公式的得到,最终得分top N的视频被推荐给用户。
s c o r e = p V T R w V T R × p V C R w V C R × p S H R w S H R × . . . × p C M R w C M R × f ( v i d e o _ l e n ) score = p_{VTR}^{w_{VTR}} \times p_{VCR}^{w_{VCR}} \times p_{SHR}^{w_{SHR}} \times ... \times p_{CMR}^{w_{CMR}} \times f(video\_len) score=pVTRwVTR×pVCRwVCR×pSHRwSHR×...×pCMRwCMR×f(video_len)
其中 w w w是各个分数的权重, f ( v i d e o _ l e n ) f(video\_len) f(video_len)是一个非线性函数,例如sigmoid或对数函数,权重是通过线上实验确定的超参。
在几个目标中,VCR和VTR是两个重要的指标,VCR(完播率)是一个回归任务,用MSE loss来预测每次播放的进度。VTR(播放率)是一个二分类任务,利用交叉熵损失来预测有效播放,即播放时长超过某个阈值的一次播放行为。

跷跷板现象

为了更好地描述VCR和VTR间的跷跷板现象,我们用一系列模型进行了实验,包括hard parameter sharing,cross-stitch, sluice network和MMOE,此外我们还提出了两个新的结构如下图b和c所示:
下图展示了实验结果,位于右上角的模型的性能更好(VTR的AUC较高同时VCR的MSE较低)。

如前所述,VCR和VTR间的关系是复杂的。它们之间有一定程度的偏序关系,并且不同的样本会显露出不同的关联。因此共享相同静态权重的Cross-stitch和sluice网络不能学到样本间的相关性。MMOE能够在一定程度上学习到样本和任务间的差异,因此比其他的baseline模型表现更好。然而在MMOE模型中,expert被几个任务无差别地共享,因此MMOE无法习得任务间的复杂关系,有可能会给某些任务带来噪声甚至伤害其性能。并且MMOE忽略了不同expert间的交互,这可能会限制模型的性能。
本文提出的PLE模型的目的就是解决跷跷板和负迁移问题。PLE的关键思想如下:首先它显式区分了共享的和任务专用的expert,其次,多层expert和门控机制被引入来学习到更多抽象表示。最后,我们利用了一个新颖的路由机制来为expert间的交互建模,从而在复杂任务之间实现了更加有效的知识迁移。如上图所示,PLE的性能远远优于MMOE和其他baseline。

PLE

在本节我们首先提出了CGC模型,是一个能够显式将共享expert和任务专属expert分开的模型。然后我们将CGC推广到一般PLE,最后我们优化了损失函数。

Customized Gate Control (CGC)


如上图所示,CGC模型底部是一些expert模块,顶部是不同任务的网络。每个expert模块都有多个expert,每个expert模块中的expert个数是模型的超参。在CGC中,共享expert是为了学习任务间共享的模式,而每个任务独有的pattern留给任务独有的expert来学习。
在CGC中,共享expert和任务独有的expert通过一个门控网络来进行选择性融合。如上图所示,我们的门控网络就是一个单层的带有softmax激活函数的前馈网络,前馈网络的输入是expert的输出。
以下是原文中一段误人子弟的公式:
k k k个门控网络的输出可以写成 g k ( x ) = w k ( x ) S k ( x ) g^k(x) = w^k(x)S^k(x) gk(x)=wk(x)Sk(x)其中 x x x是模型输入, w k ( x ) w^k(x) wk(x)是第 k k k个任务的加权函数: w k ( x ) = S o f t m a x ( W g k x ) w^k(x) = Softmax(W^k_gx) wk(x)=Softmax(Wgkx)其中 W g k ∈ R ( m k + m s ) × d W^k_g \in R^{(m_k+m_s)\times d} WgkR(mk+ms)×d m s m_s ms m k m_k mk分别是共享expert和任务 k k k独有的expert, d d d是输入的维度。 S k ( x ) S^k(x) Sk(x)是一个由全部expert输出组成的矩阵。
S k ( x ) = [ E ( k , 1 ) T , E ( k , 2 ) T , . . . , E ( k , m k ) T , E ( s , 1 ) T , E ( s , 2 ) T , . . . , E ( s , m s ) T ] T S^k(x) = [E^T_{(k, 1)}, E^T_{(k, 2)}, ..., E^T_{(k, m_k)}, E^T_{(s, 1)}, E^T_{(s, 2)}, ..., E^T_{(s, m_s)}]^T Sk(x)=[E(k,1)T,E(k,2)T,...,E(k,mk)T,E(s,1)T,E(s,2)T,...,E(s,ms)T]T
结合上图来看,这段公式的意思就是PLE的门控机制跟MMOE并没有什么区别只是每个Gate的输入多了一个或多个task-specific的expert输出。

PLE

CGC将task-specific和共享的组件清晰地分开了。然而在目前多任务学习中越来越“深”的语义表达需要更加清晰地进行区分。为解决这一问题,我们将CGC推广到PLE,如下图所示,PLE利用一个多层的网络来抽取更高层的share-bottom信息。

除每个任务单独的expert有单独的门之外,extraction网络也为共享expert引入了门控网络。因此PLE中不同任务的参数并不是在最底层的CGC中就完全分开,而是在上层逐渐分开。上层extraction网络中,门控网络的输入是下层门控网络输出融合的结果。任务 k k k的第 j j j个extraction网络: g k , j ( x ) = w k , j ( g k , j − 1 ( x ) ) S k , j ( x ) g^{k,j}(x) = w^{k,j}(g^{k,j-1}(x))S^{k,j}(x) gk,j(x)=wk,j(gk,j1(x))Sk,j(x)
即上层单个任务的门控网络输入是下层当前任务的输出, w k , j w^{k,j} wk,j是门控网络的权重矩阵, S k , j ( x ) S^{k,j}(x) Sk,j(x)是下层当前任务的expert和共享expert。而上层共享expert门控网络的输入与某个任务的门控网络有一些区别:上层共享expert门控的输入是下层所有expert。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值