今天介绍的是腾讯提出的一种新的多任务学习个性化推荐模型,该论文荣获了RecSys2020最佳长论文奖,一起来学习下!
1、背景
多任务学习通过在一个模型中同时学习多个不同的目标,如CTR和CVR,最近被越来越多的应用到线上的推荐系统中。
当不同的学习任务之间较为相关时,多任务学习可以通过任务之间的信息共享,来提升学习的效率。但通常情况下,任务之间的相关性并不强,有时候甚至是有冲突的,此时应用多任务学习可能带来负迁移(negative transfer)现象,也就是说,相关性不强的任务之间的信息共享,会影响网络的表现。
此前已经有部分研究来减轻负迁移现象,如谷歌提出的MMoE模型。该模型会在第二节进行一定的回顾。但通过实验发现,多任务学习中往往还存在seesaw phenomenon(本文中暂且翻译为跷跷板现象,如有不当,欢迎指正),也就是说,多任务学习相对于多个单任务学习的模型,往往能够提升一部分任务的效果,同时牺牲另外部分任务的效果。即使通过MMoE这种方式减轻负迁移现象,跷跷板现象仍然是广泛存在的。
论文提出了Progressive Layered Extraction (简称PLE),来解决多任务学习的跷跷板现象。本文会在后面对PLE进行详细介绍。
本文的后续首先将介绍一下多任务学习的一些常见的架构,然后重点介绍论文提出的PLE,最后简单介绍一下实验结果部分。
2、多任务学习介绍
这一部分主要是根据论文中给出的总结图进行介绍。论文中将MTL模型分为了Single-Level MTL Models和Multi-Level MTL Models。因此我们也按照此进行介绍。
2.1 Single-Level MTL Models
Single-Level MTL Models主要包含以下几种形式:
1)Hard Parameter Sharing:这也是最为常见的MTL模型,不同的任务底层的模块是共享的,然后共享层的输出分别输入到不同任务的独有模块中,得到各自的输出。当两个任务相关性较高时,用这种结构往往可以取得不错的效果,但任务相关性不高时,会存在负迁移现象,导致效果不理想。
2)Asymmetry Sharing(不对称共享):可以看到,这种结构的MTL,不同任务的底层模块有各自对应的输出,但其中部分任务的输出会被其他任务所使用,而部分任务则使用自己独有的输出。哪部分任务使用其他任务的输出,则需要人为指定。
3)Customized Sharing(自定义共享):可以看到,这种结构的MTL,不同任务的底层模块不仅有各自独立的输出,还有共享的输出。2和3这两种结构同样是论文提出的,但不会过多的介绍。
4)MMoE:这种结构的MTL之前的文章中也都介绍过了,相信大家也比较熟悉。底层包含多个Expert,然后基于门控机制,不同任务会对不同Expert的输出进行过滤。
5)CGC:这是本文提出的结构,后文会进行详细的介绍,此处省略。
2.2 Multi-Level MTL Models
Multi-Level MTL Models主要包含以下几种形式:
1)Cross-Stitch Network(“十字绣”网络):出自论文《Cross-stitch Networks for Multi-task Learning》,上图中可能表示的不太清楚,可以参考下图:
从上面的公式中可以看出,当aBA或者aAB值为0时,说明两者没有共享的特征,相反的,当两者的值越大,说明共享部分越大。
2)Sluice Network(水闸网络):名字都比较有意思,哈哈。这个结构出自论文《Sluice networks: Learning what to share between loosely related tasks》,模型结构比较复杂,本文不做详述,感兴趣的同学可以阅读原文
3)ML-MMoE:这是MMoE的多级结构,不再赘述
4)PLE:CGC的进阶版本,同样是本文提出的结构,后文会进行详细的介绍,此处省略。
好了,简单回顾了一些多任务学习的网络结构,接下来进入本文的重点了,准备好了么!
3、PROGRESSIVE LAYERED EXTRACTION介绍
3.1 seesaw phenomenon
我们先来看一下MTL中的seesaw phenomenon(跷跷板现象),论文主要基于腾讯视频推荐中的多任务学习为例进行介绍,其视频推荐架构如下图:
这里主要关注VCR和VTR两个任务。VCR任务可理解为视频完成度,假设10min的视频,观看了5min,则VCR=0.5。这是回归问题,并以MSE作为评估指标。VTR表示此次观看是否是一次有效观看,即观看时长是否在给定的阈值之上,这是二分类问题(如果没有观看,样本Label为0),并以AUC为评估指标。
两个任务之间的关系比较复杂。 首先,VTR的标签是播放动作和VCR的耦合结果,因为只有观看时间超过阈值的播放动作才被视为有效观看。 其次,播放动作的分布更加复杂,在存在WIFI时,部分场景有自动播放机制,这些样本就有较高的平均播放概率,而没有自动播放且需要人为显式点击的场景下,视频的平均播放概率则较低。
论文对比了上述所有结构的MTL在腾讯视频VCR和VTR两个任务上相对单任务模型的离线训练结果:
可以看到,几乎所有的网络结构都是在一个任务上表现优于单任务模型,而在另一个任务上表现差于单任务模型,这就是所谓的跷跷板现象。MMoE尽管有了一定的改进,在VTR上取得了不错的收益,但在VCR上的收益接近于0。MMoE模型存在以下两方面的缺点,首先,MMoE中所有的Expert是被所有任务所共享的,这可能无法捕捉到任务之间更复杂的关系,从而给部分任务带来一定的噪声;其次,不同的Expert之间也没有交互,联合优化的效果有所折扣。
针对以上两点,本文提出了PLE结构,在两个任务上都取得了相对单任务模型不错的收益,有效解决了跷跷板现象。
3.2 Customized Gate Control
Customized Gate Control(以下简称CGC)可以看作是PLE的简单版本,本文先对其进行介绍,其结构如下图所示:
CGC可以看作是Customized Sharing和MMoE的结合版本。每个任务有共享的Expert和独有的Expert。对任务A来说,将Experts A里面的多个Expert的输出以及Experts Shared里面的多个Expert的输出,通过类似于MMoE的门控机制之后输入到任务A的上层网络中,计算公式如下:
其中,gk(x)是下层模块的输出,wk(x)是第k个任务针对不同Expert输出的权重,Sk(x)则是第k个任务所用到的Expert的输出,例如对于任务A,使用Experts A和Experts Shared里面的多个Expert的输出。
3.3 Progressive Layered Extraction
在CGC的基础上,Progressive Layered Extraction(以下简称PLE)考虑了不同的Expert之间的交互,可以看作是Customized Sharing和ML-MMOE的结合版本,其结构图如下:
在下层模块,增加了多层Extraction Network,在每一层,共享Expert不断吸收各自独有的Experts之间的信息,而任务独有的Expert则从共享Expert中吸收有用的信息。每一层的计算过程与CGC类似,这里就不再赘述。接下来介绍训练时的几点优化。
3.4 MTL训练优化
传统的MTL的损失是各任务损失的加权和:
而在腾讯视频场景下,不同任务的样本空间是不一样的,比如计算视频的完成度,必须有视频点击行为才可以。不同任务的样本空间如下图所示:
解决样本空间不一致的问题,前面我们介绍过ESMM的方式。而本文则是在Loss上进行一定的优化,不同的任务仍使用其各自样本空间中的样本:
其中δki取值为0或1,表示第i个样本是否属于第k个任务的样本空间。
其次是不同任务之间权重的优化。关于MTL的权重设置,最常见的是人工设置,这需要不断的尝试来探索最优的权重组合,另一种则是阿里提出的通过帕累托最优来计算优化不同任务的权重。本文也是人工设置权重的方式,不过在不同的训练轮次,权重会进行改变。在每一轮,权重的计算如下:
上式中所有的参数均为人工设定的超参数。
4、实验结果
最后简单看一下实验结果。首先是离线的训练结果,表中的收益均是相较于单任务学习模型的:
接下来是线上A/B实验的结果:
可以看到,无论是离线训练还是线上A/B,PLE均取得了最佳的效果。
接下来,论文比较了在任务之间相关系数不同的情况下,Hard Parameter Sharing、MMoE和PLE的结果:
可以看到,无论任务之间的相关程度如何,PLE均取得了最优的效果。
最后,论文对比了MMoE和PLE不同Expert的输出均值,来比较不同模型的Expert利用率(expert utilization)。为方便比较,将MMoE的Expert设置为3个,而PLE&CGC中,每个任务独有的Expert为1个,共享的为1个。这样不同模型都是有三个Expert。结果如下:
可以看到,无论是MMoE还是ML-MMoE,不同任务在三个Expert上的权重都是接近的,这其实更接近于一种Hard Parameter Sharing的方式,但对于CGC&PLE来说,不同任务在共享Expert上的权重是有较大差异的,其针对不同的任务,能够有效利用共享Expert和独有Expert的信息,这也解释了为什么其能够达到比MMoE更好的训练结果。
参考文献
1、https://zhuanlan.zhihu.com/p/52566508
2、《Progressive Layered Extraction (PLE): A Novel Multi-Task Learning (MTL) Model for Personalized Recommendations》
3、https://www.jianshu.com/p/ab7216e95fa9
好了,本文的介绍就到这里了,可以学习的地方还是比较多的,不仅能够对不同的MTL结构进行一个简单的梳理,同时学习到最新的MTL学习框架,感兴趣的同学一定要阅读下原文,吸收其精华!