作者 | Chilia

哥伦比亚大学 nlp搜索推荐

整理 | NewBeeNLP

一. 为什么要用多任务学习?

  1. 「方便」。在推荐任务中,往往不仅要预测用户的engagement(例如CTR),还要预测用户satisfaction(例如评分、CVR、观看时长)。如果用多个模型预测多个目标,参数量会很大,而且在线上也不好维护。因此需要使用一个模型来预测多个目标,这点对工业界来说十分友好。

  2. 多任务学习不仅方便,还可能「效果更好」。针对很多数据集比较「稀疏」的任务,比如短视频转发,大部分人看了一个短视频是不会进行转发这个操作的,这么稀疏的行为,模型是很难学好的(过拟合问题严重),那我们把预测用户是否转发这个稀疏的事情和用户是否点击观看这个经常发生事情放在一起学,通过参数共享,一定程度上会缓解模型的过拟合,提高了模型的泛化能力。这其实是regularization和transfer learning。也可以理解为,其他任务的预测loss对于"转发"事件预测来说是辅助loss。从另一个角度来看,对于数据很少的新任务,这样也解决了「冷启动问题」

二. 多任务学习模型

2.1 Baseline -- Shared-Bottom Model

2.1.1 硬参数共享

不同任务间共用底部的隐层。这种结构由于全部的参数共享可以减少过拟合的风险(原因如上所述),但是效果上受到任务差异(optimization conflicts caused by task differences)和数据分布差异带来的影响。

2.1.2 软参数共享

与硬参数共享相对的是软参数共享:每个任务都有特定的模型、参数,参数不共享;但对模型间的参数,使用「距离正则化约束」,保障参数空间的相似。

两个任务的参数完全不共用,但是对不同任务的参数增加L2范数的限制(L2-Constrained):

2个任务的参数完全不共用,但是在损失函数中加入正则项。α是两个任务的相似度,α越大,两个任务参数越趋近于一致。

和shared-bottom结构相比,这样的模型对增加了「针对任务的特定参数(task-specific parameters)」,在「任务差异很大」的情况下效果比较好。缺点就是模型增加了参数量(如果要训练k个目标,就增加k倍),所以需要更大的数据量来训练模型,而且模型更复杂并不利于在真实生产环境中实际部署使用。

2.2 MMoE

论文 Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts 中提出了一个Multi-gate Mixture-of-Experts(MMoE)的多任务学习结构。

Shared-bottom, OMoE, MMoE

文章提出的模型MMoE目的就是相对于shared-bottom结构不明显增加模型参数的要求下捕捉任务的不同。其核心思想是将shared-bottom网络中的函数 f 替换成 MoE 层,如上图c所示,形式化表达为:

其中门控网络

输入就是input feature,输出是所有experts上的权重。其实这个门控很像attention,针对不同的任务分配给experts以不同的权重。

一方面,因为gating networks通常是轻量级的,而且expert network是所有任务共用,所以相对上文提到的软参数共享方法有「参数量」上的优势;

另一方面,相对于所有任务公用一个gate的方法One-gate MoE model(OMOE),这里MMoE中每个任务使用不同的gating networks,从而学习到不同的组合experts的权重,因此模型考虑到了捕捉到任务的「相关性和区别」。因此在模型的效果上优于上文提到的硬参数共享的方法。实际上,如果任务相关度很低,则OMoE的效果相对于MMoE明显下降,说明MMoE中的multi-gate的结构对于「任务差异带来的冲突」有一定的缓解作用。

MMoE在Youtube推荐场景下的实践

论文:Recommending What Video to Watch Next: A Multitask Ranking System,这篇主要是在商业推荐上用了MMoE,以及提出了shallow tower解决position bias的方法。

文中的优化目标大体分为两类,

  • 一类是「engagement」目标,包括点击、观看时长、完播率等,表示用户的参与度;

  • 第二类是「satisfaction」目标,例如评分或差评,表示用户的满意度。

这其中既有分类任务(e.g. clicked)也有回归任务(e.g. 观看时长、评分)。从文中实验来看,总共包括7个任务,这些任务或者是递进/依赖的关系,例如只有观看之后才会打分;或者是冲突的关系,点了之后发现不喜欢。MMoE比较适合这种多个任务之间联系不紧密、甚至冲突的场景。

完整的模型结构如下图所示。模型对每一个目标都做预估,分类问题就用cross entropy loss学习,回归问题可就是square loss。最后用融合公式来平衡用户交互和满意度指标(将目标预估结果做加权平均)取得最佳效果。这个权重需要人工手动来调整。

2.3  SNR(Sub-Network-Routing)

出自论文 SNR: Sub-Network Routing for Flexible Parameter Sharing in Multi-Task Learning。

MMoE主要针对多个共享的expert 网络的输出进行attention组合(也就是门控)。SNR 在这种模块化的基础上,使用编码变量(coding variables)控制子网络之间的连接,实现多任务模型中不同程度的参数共享。

SNR 的提出主要解决级间的参数共享问题,达到最佳组合的网络结构。简言之,SNR和MMoE的不同之处就是,MMoE拿多个子网络的输出做加权直接输入到了每个任务各自的tower中;而SNR对不同子网络的输出进行组合又输入到了下一层子网络,形成子网络的组合。

SNR设计了两种类型的连接方式:SNR-Trans 和 SNR-Aver来学习子网络的组合,最终得到特定多任务场景的最优网络结构。

图(b)(c)有两层子网络,分别是底层的DNN routing部分(3个sub-networks)和顶层的多任务tower部分(2个sub-networks)。

  • 「SNR−Trans模型:」 将共享层划分为子网络,子网络之间的连接(虚线)为变换矩阵W乘以标量编码z:

其中, 代表low-level输出; 代表high-level输入; 代表 low-level到 high-level的权重矩阵, 代表 low-level到 high-level的连接性(二元变量,0 or 1)。

和 是我们要学习的参数。假设 服从 Bernoulli 分布,用0/1来控制网络的连接与断开。但是 是不可微的,把 做一个变换,变换成一个平滑的函数:

  • 「SNR−Aver模型:」 将共享层划分为子网络,子网络之间的连接(虚线)为加权平均。

2.4  PLE(Progressive Layered Extraction)

RecSys2020最佳长论文 Progressive Layered Extraction (PLE): A Novel Multi-Task Learning (MTL) Model for Personalized Recommendations.

文章首先提出多任务学习中不可避免的两个缺点:

  • 「Negative Transfer.」 针对相关性较差的多任务来说,使用hard parameter sharing这种方式通常会出现negative transfer的现象,原因就是因为任务之间相关性较低或者说存在冲突的话,会导致模型无法有效进行参数的学习,学的不伦不类。

  • 「跷跷板现象」。对于一些任务相关性比较复杂的场景,通常会出现跷跷板现象,即提升一部分任务的同时,会牺牲其他任务的效果。

为了解决“跷跷板”现象,文章针对多任务之间的共享机制和单任务的特定网络结构进行了重新的设计,提出了PLE模型。

2.4.1 CGC (custom gate control)

首先,只考虑一层的抽取网络,就是CGC。

从图中的网络结构可以看出,CGC的底层网络主要包括「shared experts」「task-specific experts」构成,每一个expert module都由「多个expert子网络」组成。每个子任务tower的输入是对task-specific和shared两部分的expert vector进行加权求和。

CGC网络的好处是既「包含了task-specific网络独有的个性化信息,也包含了shared 网络具有的更加泛化的信息」,文章指出虽然MMoE模型在理论上可以得到同样的解,但是在实际训练过程中很难收敛到这种情况。

2.4.2 PLE

PLE就是上述CGC网络的多层叠加,以获得更加丰富的表征能力。具体网络结构如下图所示:

注意,在底层的Extraction网络中,除了各个task-specifict的门控网络外,还有一个share部分的门控网络,这部分门控网络的输入「包含了所有input」,而各个task-specific的门控网络的输入是task-specific和share两部分。

下一篇将介绍多任务学习的目标loss设计和优化改进、一些辅助loss的设计、以及多目标排序的代码实践。

一起交流

想和你一起学习进步!『NewBeeNLP』目前已经建立了多个不同方向交流群(机器学习 / 深度学习 / 自然语言处理 / 搜索推荐 / 图网络 / 面试交流 / 等),名额有限,赶紧添加下方微信加入一起讨论交流吧!(注意一定o要备注信息才能通过)

本文参考资料

[1]

腾讯PCG RecSys2020最佳长论文——视频推荐场景下多任务PLE模型详解: https://zhuanlan.zhihu.com/p/272708728

[2]

Recommender:推荐系统中的多任务学习与多目标排序工程实践(上): https://zhuanlan.zhihu.com/p/422925553

END -

EMNLP杰出论文 | 当注意力遇到RNN,五倍以上训练加速!

2021-12-15

一篇就够!数据增强方法综述

2021-12-08

KDD2021 | 华为AutoDis:连续特征的Embedding学习框架

2021-12-01

Github 15K!亿级向量相似度检索库Faiss 原理+应用

2021-11-25

浅谈 多任务学习 在推荐系统中的应用相关推荐

  1. 自己动手写一个推荐系统,推荐系统小结,推荐系统:总体介绍、推荐算法、性能比较, 漫谈“推荐系统”, 浅谈矩阵分解在推荐系统中的应用...

    自己动手写一个推荐系统 废话: 最近朋友在学习推荐系统相关,说是实现完整的推荐系统,于是我们三不之一会有一些讨论和推导,想想索性整理出来. 在文中主要以工程中做推荐系统的流程着手,穿插一些经验之谈,并 ...

  2. 2021年浅谈多任务学习

    作者 | 多多笔记 来源 |AI部落联盟 头图 | 下载于视觉中国 写此文的动机: 最近接触到的几个大厂推荐系统排序模型都无一例外的在使用多任务学习,比如腾讯PCG在推荐系统顶会RecSys 2020 ...

  3. 浅谈矩阵分解在推荐系统中的应用

    为了方便介绍,假设推荐系统中有用户集合有6个用户,即U={u1,u2,u3,u4,u5,u6},项目(物品)集合有7个项目,即V={v1,v2,v3,v4,v5,v6,v7},用户对项目的评分结合为R ...

  4. 【技术博客】浅谈多任务与联邦学习

    多任务中一直很难避免数据隐私泄露的问题,引入联邦学习机制可以有效地避免隐私问题并且带来膜性能的提升.Federated Learning for Vision-and-Language Groundi ...

  5. 嵌入式AI —— 6. 为糖葫芦加糖,浅谈深度学习中的数据增广

    没有读过本系列前几期文章的朋友,需要先回顾下已发表的文章: 开篇大吉 集成AI模块到系统中 模型的部署 CMSIS-NN介绍 从穿糖葫芦到织深度神经网络 又和大家见面了,上次本程序猿介绍了CMSIS- ...

  6. 浅谈工作/学习中找bug的思路_0_调试、try-catch以及打印报错信息和百度的方法、No default constructor for entity: com.gyf.bos.mod

    浅谈工作/学习中找bug的思路_0 文章目录 浅谈工作/学习中找bug的思路_0 调试.try-catch-以及打印报错信息和百度的方法 前言 描述 解决思路1 -- 检查移植的代码,细枝末节也不要忽 ...

  7. 计算机基础中怎么评价,浅谈职校计算机基础教学中的教学评价

    浅谈职校计算机基础教学中的教学评价 在我们具体实施任务驱动法的教学过程中,教学评价是非常重要的环节.教学评价是计算机课 (本文共2页) 阅读全文>> 随着时代的发展,人们对高等教育发展的关 ...

  8. 浅谈如何学习深度学习(经验之谈,仅供参考)

    浅谈如何学习深度学习 方向 书籍 视频 方向 首先,要选择一个感兴趣的方向,或者说是将深度学习与自己的专业.学校的优势学科相结合. 计算机视觉(数字图像处理.图像分类.目标检测.图像语义分割.目标跟踪 ...

  9. 化学实验中计算机技术的应用,浅谈计算机在基础化学实验中的应用

    <浅谈计算机在基础化学实验中的应用.doc>由会员分享,可免费在线阅读全文,更多与<浅谈计算机在基础化学实验中的应用>相关文档资源请在帮帮文库(www.woc88.com)数亿 ...

最新文章

  1. 度量学习:ArcFace算法和工程应用总结
  2. html工具类,一些小工具
  3. 【必看】如何向女朋友解释TCP的三次握手和四次挥手
  4. sealos包管理使用
  5. ipsec ip替换_[windows]利用IPSec对指定的ip进行访问限制
  6. 系统延时任务及定时任务
  7. 3. 逻辑漏洞之支付漏洞
  8. 如何成功清理重建CloudStack环境
  9. convert for mysql_DBConvert for MySQL PostgreSQL下载|DBConvert for MySQL PostgreSQL官方下载-太平洋下载中心...
  10. AngularJS表单验证,手动验证或自动验证
  11. 探访蔚来合肥工厂:是ES8与ES6生产基地 能年产10万台
  12. NVIDIA H264解码是硬件电路还是CUDA
  13. 分享几篇有关DO-178和GJB5000对比的论文
  14. APP 接口拦截与参数破解
  15. 网站中网页最优色彩搭配方案学习--Java免费学习网
  16. Sun Dec 31 19:00:00 CST 1899格式的字符串转Date
  17. python小玩意——抠图换背景
  18. python 内置函数、匿名函数
  19. 群晖+picgo搭建私有图床
  20. JUnit和mockito

热门文章

  1. SAP License:财务帐与后勤不一致情况
  2. SAP License:SAP系统与ERP系统的区别是什么?
  3. SAP License:SAP自学SAP常见的问题二
  4. SAP License:SAP概念辨识
  5. 吴裕雄--天生自然 PHP开发学习:MySQL 插入数据
  6. 在IIS中给某一个网站添加binding的坑
  7. jquery 左右移动 以及使用layer.js弹出框呈现在页面上
  8. 使用std::function 把类成员函数指针转换为普通函数指针
  9. Linq学习之路(07) - 使用Linq进行参数化编程step by step
  10. Django信号量实现用户密码修改