Progressive Layered Extraction (PLE): A Novel Multi-Task Learning (MTL) Model for Personalized Recommendations (Recsys20)
背景
DeepMTL不可避免的问题
做深度多任务学习(DeepMTL)不可避免的都会碰到下面的几个问题:
- 不同任务的loss设计问题(辅助loss设计);
- 不同任务之间特征层的共享问题(如何避免负迁移);
- 不同任务之间的loss权重设计(有些任务是MSE,有些是二分类)等;
- 模型优化,不同任务如何优化;(不同任务不同梯度设计等)
- 什么样的任务使用MTL任务是最好的, 能带来较大的帮助?(理论暂无)
- 其他
如何做到MTL任务能帮助我们多个任务提升?本篇文章在多任务loss固定的情况下很好地缓解了第二个问题,并且给所有的任务带来了不错的提升。
推荐系统中的MTL问题
而在推荐系统中,多任务模型已经使用很久,包括大家熟知电商领域的CTR/CVR Cotrain的模型等。在短视频推荐等问题中, 用户的满意程度很难衡量,我们需要从用户的点击,是否看完视频, 分享,喜欢,评论等角度来刻画,所以多任务学习在推荐领域已经成为主流的方法。但是在使用MTL建模时,在我们调整模型的时候经常会碰到下面的现象:
- 跷跷板现象:某一个任务的指标上升,但是另外一个任务的指标会下降;
那么是否可以通过利用不同任务的信息共享做到多个任务的指标同时上升呢?
相关工作
多任务学习模型
Hard Parameter Sharing
这是最常用的方案,但是这么做有一个非常大的问题,就是所有的任务都需要经过同一个模块, 因为参数在任务间直接共享,可能会因为任务冲突而导致负迁移;
Cross-stitch & sluice network(fig f & fig g)
为了防止任务的冲突, Cross-stitch网络和sluice网络建议学习线性组合的权重,以便有选择性的融合来自不同任务的表示。这么做可以较好地缓解Hard Parameter Sharing带来的问题,然而,这些模型中所有样本的表示都与相同的静态权重相结合,并且没有解决跷跷板现象。
门机制
- MOE首先提出对底部的一些experts进行共享并且通过gating的网络将experts进行组合;
- MMOE对MOE进行了拓展,MMOE对每个任务使用不同的门来获得MTL中不同的融合权重;
- MRAN使用multi-head self-attention来学习不同特征集合的不同表示子空间。
上面的这些模型都用到了多个任务之间的共享信息,但是却没有一个特定任务的概念。
CGC(Customized Gate Control)
CGC网络和PLE模块将共同的任务和特定的任务参数明显的分开以避免复杂的任务参数共享带来的冲突。
尽管MMOE在理论上有可能收敛到我们的网络设计中,但是网络设计的先验知识非常重要,在实际应用中很难发现收敛路径。Liu等人在注意网络中,特定任务的注意网络会有选择地融合共享特征,但不同的任务在融合前仍然共享相同的表征。以往的研究都没有解决表示学习和路由的联合优化问题,特别是在不可分割的联合方式下。本文首次尝试在联合学习和routing的框架上提出一种新的渐进分离方案。
推荐系统中的MTL案例
ESMM
采用Hard Parameter Sharing机制,并对CTR和CTCVR两个辅助任务进行Cotrain,以此来提升模型对于CVR的预估;
Hadash
Hadash等人提出用多任务的框架来学习ranking任务和rating任务。
Youtube Vedio推荐系统,MMOE
采用了类似MMOE的方案通过gating机制对不同专家进行组合, MMOE的方式可以较好地捕捉任务之间的差异并且对目标进行优化.
推荐中MTL方案的跷跷板现象
此处我们以视频推荐中的MTL ranking系统为例,
我们最终排序的目标为:
其中,VCR = View Completion Ration, VTR = View Through Rate。每个表示每个预测分数的相对重要性,是sigmoid等非线性函数 。这些参数一般都是通过线上的实验搜索来确定的。
此处我们对VCR预测采用MSE损失, 对VTR采用binary分类的loss。因为二者之间的复杂关系,我们经常可以看到跷跷板现象。
MTL中的跷跷板现象
从上面的实验结果中,我们可以发现:
- Hard parameter sharing和cross-stitch网络在VTR中遭到了非常严重的负迁移;
- Asymmetric Sharing和Sluice Network上在VTR上表现很好,但在VCR上下降很大;
- MMOE在VTR上取得了不错的效果,VCR下降了一点点;
- 几乎所有的方案(除了PLE)都出现了跷跷板的现象;
PLE(PROGRESSIVE LAYERED EXTRACTION)模型
CGC
CGC(Customized Gate Control):将共享和 任务独立的任务experts进行建模。
每个专家都会对应多个子网络,具体地,CGC中的共享专家负责学习共享模式,而特定任务的模式则由特定任务的专家提取。每个塔网络会同时吸收共享专家和自身任务专家的知识,这意味着共享专家的参数受所有任务的影响,而任务特定专家的参数只受相应特定任务的影响。
在CGC中,共享专家和特定任务专家从国一个gating网络组合, 任务网络的输出:
其中,为输入的表示, 是计算任务的权重向量,
其中, , 和是共享专家的个数以及任务的特定专家的个数。为输入表示的维度。是由多个选择向量组成的选择矩阵。
最终模型对于任务的预测为:
- ,
其中表示任务k的tower网络; 与MMOE相比,CGC删除了任务的塔式网络和其他任务的特定专家之间的连接, 使不同任务的专家专注于学习不同的知识。结合门控网络根据输入动态融合表示的优点,CGC实现了任务间更灵活的平衡,更好地处理任务冲突和样本相关关系。
PLE
CGC将特定的任务和共享部分明显的分开。但是,学习需要在深层的MTL中逐渐形成越来越深的语义表征,而对于中间表征是否应该加以处理,通常并不十分清楚。为了处理该问题,此处使用PLE来泛化CGC。
其中, 是任务的加权函数, 为输入, 为任务在第个抽取网络的选择矩阵。
注意:PLE中共享模块的选定矩阵与任务特定模块略有不同,因为它由该层的所有共享专家和任务特定专家组成。
在计算完所有的gating网络和专家之后,任务的输出为:
MTL联合Loss优化
我们的损失函数为:
1. 任务的损失
其中是任务的损失, ,表示样本是否在任务的样本空间中。
2. MTL模型的性能受到loss权重的影响
实践中,我们发现:每个任务在不同的训练阶段有不同的重要性,所以我们将loss的权重设置为动态的, 我们先设定一个初始的损失权重,然后在每步之后更新loss的权重,
其中表示训练的epoch, 和表示模型的超参数。
实验
PLE的实验效果
1. 在腾讯数据集上的效果:
- PLE在多个任务上都取得了非常大的提升;
- 在加入另外的任务之后,PLE也都在多个任务上获得了提升;
2. 在公开数据集上的效果
- 在所有开源的数据集上, PLE也都取得了非常好的效果;
3. 专家使用分析
- 我们发现CGC和PLE的专家的权重和MMOE以及ML-MMOE呈现出了非常大的差异。这说明设计良好的
- PLE的效果比CGC的效果要好也说明了,共享深层次的语义可以带来帮助;
- PLE模型共享专家和独有专家的权重相差更大,说明针对不同的任务,能够有效利用共享Expert和独有Expert的信息,这也解释了为什么其能够达到比MMoE更好的训练结果
小结
本文提出了一个全新的MTL模型:PLE(Progressive Layered Extraction), 它将任务共享和特定任务参数明显的分开,并且采用progressive routing的策略避免负迁移。线下和线上的实验也都展示了非常好的效果;
如果文章能加入一些Costomized Gate Control处的分析可能会更好,是否比直接concate等其他方式的效果要更好等。
参考文献
- Neural Multi-Task Recommendation from Multi-Behavior Data:http://staff.ustc.edu.cn/~hexn/papers/icde19-multi-behavior-rec.pdf
- 多任务学习:Progressive Layered Extraction (PLE): A Novel Multi-Task Learning (MTL) Model for Personalized:https://blog.csdn.net/u012852385/article/details/109068196
我是二品炼丹师一元,目前跟着大哥们学习CTR炼丹已经快四个月了,有兴趣的欢迎关注我们的公众号