深度总结 | 多任务学习方法在推荐中的演变

前言

最近归辰在多任务学习(Multi Task Learning, MTL)方面做了一些实质性的工作,就顺手整理了一下,希望大家感兴趣的可以看看,关于细节方面欢迎交流。

以我们自己的大脑为例,通常大脑在工作的时候会学习多种不同的任务,无论你是在看论文时边听音乐,还是在看视频时边吃零食,以及走路时接电话等。这些过程其实我们人脑都能很容易地完成。那么如果对应到机器学习模型中的话,该如何去完成这种多任务式的工作呢?答案是采用同一个网络来同时完成这个多任务工作,那么完成这种工作的过程就可以称为“多任务学习”。

那么机器学习在实际应用中为什么会出现“多任务”的需求呢?因为机器学习的关注点一般在单个特定度量优化的任务上,然而实际情况中比如推荐系统,往往都是一对多,即一个场景对应多个业务目标,如果只倾向于关注其中一个目标而忽略了其它目标则会出现排序结果一直不理想。但多任务学习通过共享目标之间的表征,就可以使我们的模型更好地概括原始每一个目标,即只优化一个损失函数即可借助辅助目标来改善原目标任务模型的目的,需要明确的是这里的损失函数为多个子任务损失函数融合后的。由于可以带来可观收益。因此将多任务学习应用于推荐系统中已成为热门研究方向。

多任务学习网络设计

先简单介绍下如何衡量任务之间相关性,一般可以通过计算目标分布之间的皮尔逊相关系数来量化任务之间相关性,即皮尔逊系数越大,任务相关性越高。前面说到的多任务用同一个网络来进行学习,理论上也是可以用多个不同的网络其实就是拆分为多个单任务学习网络,但是在实际情况中会面临比较大的线上开销和样本稀疏性问题,而这两个问题在业界均有个共识,那就是不能同时很好地解决。除了这两个问题之外,单任务学习还有个很重要的问题,容易陷入局部最优,而多任务学习由于不同任务的局部最优解处于不同位置,通过相互作用可以逃离局部最优。多任务学习可以简称为MTL,其网络设计一般可以分为两种情况:Hard-parameter sharing和Soft-parameter sharing[1],关于它们的详细解读如下。

Hard-parameter sharing

最先开始在业界通用的是Hard-parameter sharing,结构简单,是在很多场景下非常重要的baseline之一。它直接将网络底层的全连接层进行共享,学习一些各任务之间比较通用的信息,这一步相当于encode任务信息,再在上层分割成不同的全连接层学习各任务属于自己的特定信息,这就相当于根据特定任务进行decode。该方法在相关性较高的多任务之间效果会比较好,且任务越多,单任务越不可能过拟合,即泛化能力越强;缺点是当任务之间不相关时底层共享层难以学到各个任务之间比较通用的特征和模式。在业界具体的代表为美团“猜你喜欢”的深度多目标排序模型[2]和知乎推荐页Ranking的实践[3]以及美图在推荐排序的实践[4]。

美团应用实践一

以美团的猜你喜欢应用场景为例,其深度多目标排序模型的演进之路主要是:Multi- task DNN—>引入NFM的Multi-task DNN。先介绍Multi-task DNN,其模型主体结构如下,线上预测时,将Click-output和Pay-output做一个线性融合。在此结构的基础上,结合数据分布特点和业务目标进行了进一步的优化:针对特征缺失普遍存在的情况提出Missing Value Layer,以用更合理的方式拟合线上数据分布;考虑将不同任务的物理意义关联起来,提出KL-divergence Bound,以减轻某单一目标的Noise影响,这可以一定程度上减小前面说到的硬参数共享缺陷的影响。

美团Multi-task DNN

通常在训练样本中难以避免地有部分连续特征存在缺失值,更好地处理缺失值会对训练的收敛和最终效果都有一定帮助。设计了Miss Value Layer来自适应地学习缺失值的权重,其结构如下:

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值