红帽白皮书新鲜出炉!点击获取,让你的云战略更胜一筹! 了解详情
写点什么

Multi-task 多任务模型在推荐算法中应用

  • 2019-11-29
  • 本文字数:2371 字

    阅读完需:约 8 分钟

Multi-task多任务模型在推荐算法中应用

1.阿里 ESMM:Entire Space Multi-Task Model: An Effective Approach for Estimating Post-Click Conversion Rate


CVR 是指从点击到购买的转化,传统的 CVR 预估会存在两个问题:样本选择偏差和稀疏数据。



样本选择偏差是指模型用用户点击的样本来训练,但是预测却是用的整个样本空间。数据稀疏问题是指用户点击到购买的样本太少。因此阿里提出了 ESMM 模型来解决上述两个问题:主要借鉴多任务学习的思路,引入两个辅助的学习任务,分别用来拟合 pCTR 和 pCTCVR。



ESMM 模型由两个子网络组成,左边的子网络用来拟合 pCVR,右边的子网络用来拟合 pCTR,同时,两个子网络的输出相乘之后可以得到 pCTCVR。因此,该网络结构共有三个子任务,分别用于输出 pCTR、pCVR 和 pCTCVR。假设用 x 表示 feature(即 impression),y 表示点击,z 表示转化,那么根据 pCTCVR = pCTR * pCVR,可以得到:



则 pCVR 的计算为:



由上面的式子可知,pCVR 可通过 pCTR 和 pCTCVR 推导出来,那么我们只需要关注 pCTR 和 pCTCVR 两个任务即可,并且 pCTR 和 pCTCVR 都可以从整个样本空间进行训练?为什么呢,因为对于 pCTR 来说可将有点击行为的曝光事件作为正样本,没有点击行为的曝光事件作为负样本,对于 PCTCVR 来说,将同时有点击行为和购买行为的曝光事件作为正样本,其他作为负样本。模型的 loss 函数:



另外两个子网络的 embedding 层是共享的,由于 CTR 任务的训练样本量要远超过 CVR 任务的训练样本量,ESMM 模型中 embedding 层共享的机制能够使得 CVR 子任务也能够从只有展现没有点击的样本中学习,从而能够极缓解训练数据稀疏性问题。


  1. 阿里 DUPN:Perceive Your Users in Depth: Learning Universal User Representations from Multiple E-commerce Tasks


多任务学习的优势:可共享一部分网络结构,比如多个任务共享一份 embedding 参数。学习的用户、商品向量表示可方便迁移到其它任务中。本文提出了一种多任务模型 DUPN:



模型分为行为序列层、Embedding 层、LSTM 层、Attention 层、下游多任务层。


  • 行为序列层:输入用户的行为序列 x = {x1,x2,…,xN},其中每个行为都有两部分组成,分别是 item 和 property 项。item 包括商品 id 和一些 side-information 比如店铺 id、brand 等(好多场景下都要带 side-information,这样更容易学习出商品的 embedding 表示)。property 项表示此次行为的属性,比如场景(搜索、推荐等场景)时间、类型(点击、购买、加购等)。

  • Embedding 层,主要多 item 和 property 的特征做处理。

  • LSTM 层:得到每一个行为的 Embedding 表示之后,首先通过一个 LSTM 层,把序列信息考虑进来。

  • Attention 层:区分不同用户行为的重要程度,经过 attention 层得到 128 维向量,拼接上 128 维的用户向量,最终得到一个 256 维向量作为用户的表达。

  • 下游多任务层:CTR、L2R(Learning to Rank)、用户达人偏好 FIFP、用户购买力度量 PPP 等。

  • 另外,文中也提到了两点多任务模型的使用技巧:

  • 天级更新模型:随着时间和用户兴趣的变化,ID 特征的 Embedding 需要不断更新,但每次都全量训练模型的话,需要耗费很长的时间。通常的做法是每天使用前一天的数据做增量学习,这样一方面能使训练时间大幅下降;另一方面可以让模型更贴近近期数据。

  • 模型拆分:由于 CTR 任务是 point-wise 的,如果有 1w 个物品的话,需要计算 1w 次结果,如果每次都调用整个模型的话,其耗费是十分巨大的。其实 user Reprentation 只需要计算一次就好。因此我们会将模型进行一个拆解,使得红色部分只计算一次,而蓝色部分可以反复调用红色部分的结果进行多次计算。


  1. 美团“猜你喜欢”深度学习排序模型


根据业务目标,将点击率和下单率拆分出来,形成两个独立的训练目标,分别建立各自的 Loss Function,作为对模型训练的监督和指导。DNN 网络的前几层作为共享层,点击任务和下单任务共享其表达,并在 BP 阶段根据两个任务算出的梯度共同进行参数更新。网络在最后一个全连接层进行拆分,单独学习对应 Loss 的参数,从而更好地专注于拟合各自 Label 的分布。



这里有两个技巧可借鉴下:


  • Missing Value Layer:缺失的特征可根据对应特征的分布去自适应的学习出一个合理的取值。

  • KL-divergence Bound:通过物理意义将有关系的 Label 关联起来,比如 p(点击) * p(转化) = p(下单)。加入一个 KL 散度的 Bound,使得预测出来的 p(点击) * p(转化)更接近于 p(下单)。但由于 KL 散度是非对称的,即 KL(p||q) != KL(q||p),因此真正使用的时候,优化的是 KL(p||q) + KL(q||p)。


  1. Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts



  • 模型(a)最为常见,两个任务直接共享模型的 bottom 部分,只在最后处理时做区分,图(a)中使用了 Tower A 和 Tower B,然后分别接损失函数。

  • 模型(b)是常见的多任务学习模型。将 input 分别输入给三个 Expert,但三个 Expert 并不共享参数。同时将 input 输出给 Gate,Gate 输出每个 Expert 被选择的概率,然后将三个 Expert 的输出加权求和,输出给 Tower。有点 attention 的感觉

  • 模型©是作者新提出的方法,对于不同的任务,模型的权重选择是不同的,所以作者为每个任务都配备一个 Gate 模型。对于不同的任务,特定的 Gate k 的输出表示不同的 Expert 被选择的概率,将多个 Expert 加权求和,得到[公式],并输出给特定的 Tower 模型,用于最终的输出。

  • 其中 g(x)表示 gate 门的输出,为多层感知机模型,简单的线性变换加 softmax 层。


参考文献:


https://arxiv.org/pdf/1804.07931.pdf


https://www.jianshu.com/p/35f00299c059


https://arxiv.org/pdf/1805.10727.pdf


https://www.jianshu.com/p/aba30d1726ae


https://tech.meituan.com/2018/03/29/recommend-dnn.html


https://zhuanlan.zhihu.com/p/70


本文转载自 Alex-zhai 知乎账号。


原文链接:


https://zhuanlan.zhihu.com/p/78762586


2019-11-29 08:00848

评论

发布
暂无评论
发现更多内容

数据擘画资产全景 AI诊断故障真因

用友BIP

2023年最新美团、字节、阿里、腾讯 Java 面经,已拿 offer(附面经分享)

采菊东篱下

Java 面试

DTALK直播预约 | 数据资产管理:金融机构数据价值释放的必经之路

袋鼠云数栈

数据资产管理

微服务架构中的链路超时分析

做梦都在改BUG

Java 架构 微服务

〖产品思维训练白宝书 - 认知篇①〗- 产品思维能够为我们带来多大的价值?

哈哥撩编程

产品经理 产品思维

GitHub开源几分钟被下架!神作《Spring Boot实战项目》竟昙花一现

做梦都在改BUG

Java 微服务 Spring Boot 框架

ElasticSearch 拼音搜索自定义扩展插件(长拼音序列)

alexgaoyh

中文分词 分词 Elastic Search 自定义插件

Hologres技术揭秘:JSON半结构化数据的极致分析性能

阿里技术

json 半结构化数据

TiDB Operator常见问题和解决步骤(二)

TiDB 社区干货传送门

故障排查/诊断

基于TiDB+Flink实现的滑动窗口实时累计指标算法

TiDB 社区干货传送门

应用适配 HTAP 场景实践 大数据场景实践 实时数仓场景实践 OLTP 场景实践

数据丢失不用怕,火山引擎DataLeap 提供排查解决方案

字节跳动数据平台

大数据 数据治理 数据研发 企业号 3 月 PK 榜

GitHub开源2小时Star破10万,阿里Java高并发集合手册终是被公开

做梦都在改BUG

Java 高并发 集合框架

软件测试/测试开发丨移动端App自动化之App控件定位

测试人

软件测试 自动化测试 测试开发

集群3副本丢失2副本-unsafe-recover

TiDB 社区干货传送门

实践案例 管理与运维 6.x 实践

TiDB × 阿里云试用体验(随迟但到)

TiDB 社区干货传送门

版本测评

基于TiDB Binlog架构的主备集群部署及数据同步操作手册

TiDB 社区干货传送门

管理与运维

2023年广州堡垒机采购选哪家好?咨询电话多少?

行云管家

等保 堡垒机 等级保护 广州

软件测试/测试开发丨利用 pytest 玩转数据驱动测试框架

测试人

软件测试 自动化测试 测试开发 pytest

都想成为架构师,那架构师需要掌握哪些知识体系呢?

做梦都在改BUG

龙蜥 Node.js/WebAssembly SIG 重磅发布 Node.js/Noslate 性能优化白皮书

OpenAnolis小助手

node.js Web 白皮书 龙蜥社区 sig

和细胞一样优雅的 TiDB Region 设计

TiDB 社区干货传送门

TiDB 底层架构

熹微~~~基于Vue开发的昏暗风格的响应式网页!

京茶吉鹿

前端 项目 vue cli

审计录像是什么意思?堡垒机有审计录像功能吗?

行云管家

堡垒机 审计 审计日志 审计录像

飞针测试的流程有哪些?华秋一文告诉你

华秋电子

HummerRisk 使用教程: 多云检测

HummerCloud

云安全

火山引擎A/B测试产品——DataTester 私有化架构分享

字节跳动数据平台

私有化部署 ab测试 A/B 测试 企业号 3 月 PK 榜

TiDB Operator常见问题和解决步骤(一)

TiDB 社区干货传送门

实践案例 集群管理 管理与运维 故障排查/诊断

bytebase让你爱上tidb的开源审核神器。

TiDB 社区干货传送门

6.x 实践

用友BIP智能财务,助力企业构建世界一流预算管理体系

用友BIP

全面预算

利用自动化平台可以做的那亿点事 |得物技术

得物技术

自动化

TiDB 数据库大版本升级-基于TiCDC异机升级

TiDB 社区干货传送门

迁移 版本升级

Multi-task多任务模型在推荐算法中应用_文化 & 方法_Alex-zhai_InfoQ精选文章