分享嘉宾:卡本 阿里 高级算法专家

文章整理:刘金鑫

内容来源:DataFunTalk

出品平台:DataFun

导读: 推荐导购场景在电商中是重要的满足用户"逛"和"买"的场景,本次分享我们聚焦深度学习在阿里 B2B 电商 ( 1688 ) 推荐系统中的应用,其中包括商品推荐中召回 ( 多兴趣 Deep Match ),排序 ( 自研 DMR ) 的相关工作,以及在新兴的互动内容场景 ( 直播、短视频 ) 中通过异构网络来解决异构信息的精准匹配问题。

本文分享大纲如下:

  • 发展历史
  • 商品召回:Deep Match
  • 商品排序:DIN-DIEN, DMR
  • 内容推荐:直播排序

▌发展历史

下图是 1688 推荐系统这三年发展的一个的 roadmap:

1. 2017 年

从 17 年开始,我们才更加的专注于个性化的分发,不管是搜索还是推荐。如果是做推荐的同学们也知道,一开始,我们要做召回、排序、业务的定制以及类似的一些工作。所以我们在 17 年的时候,主要是借助阿里之前淘系的基建,比如 SWING & E-TREC 这些 I2I 的方法,这其实就是协同过滤的升级版本,然后去进行一个基本的召回方式,以及用 LR 到 GBDT 去做一个最初始的 CTR 预估。然后到年底的时候,我们从 LR 到 GBDT 转换到了 W&DL,因为当时,大概是 16 年吧,谷歌的 W&DL 的论文出来后,然后 17 年在阿里有一个比较大的场景的一些实践。可能有些针对业务定制的是我们的 Unbalance I2I,这个 I2I 的意思呢,是我们总有一些业务是一个小的商品池,它是一个比较特定的它不是一个全域可推荐的范围,当我们进行一个大的商品触发的时候,就是定向的往这个小的商品池里触发。

2. 2018 年

18 年深度学习在业界越来越火了,所以我们顺着这个潮流,在排序当中是走到了 DIN 和 DIEN,这两个工作是阿里妈妈北京的团队做的在广告上的一个 CTR 的模型的排序,以及顺着 YouTube 的 Deep Match 的工作我们也做了我们这边的 Deep Match,以及一些机制的构建,补足了之前我们只有 CTR 模型没有 CVR 模型的一个短板,一些更“标题党”的商品会往下落。

3. 2019 年

在最近的一年,我们在召回上去进行了一个多兴趣点的 Deep Match 的尝试,在粗排上从 GBDT 走到了双塔,以及在排序当中,之前是借鉴公司以及业界的一些先进的经验,我们在这边有了一些自己的更多的一些创新的工作,比如说在 CTR 中有一些 DMR,等一下会详细的讲到(AAAI 2020),还有就是在 CVR 模型当中走到了 ESMM+MMOE 这样子的模型。最近特别火的就是直播了,以及直播这种内容化的一些推荐。

▌商品召回

大家都知道,一开始做召回的话主要就是协同过滤类的方法,例如比较经典的 I2I 召回和 U2I 召回,1688 使用过的是 Deep Match U2I 召回。

1. I2I 召回

  • 采用了 SWING/E-TREC 等启发式方法,效果好,普适性高
  • 因为有 I2I 的关系,用户要是有新的行为马上能进行一个触发,可以进行一个实时的召回
  • 有解释性的保障

2. U2I 召回

  • 采用了优化的方法,通常比启发式方法靠谱
  • 主要是由 User ID 来进行一个 embedding 的生成,新的行为进来后比较难进行实时更新(实时效率低可以进行弥补)
  • 可解释性也比较差(并没有办法解决)

3. Deep Match U2I 召回

16 年 YouTube 提出的 Deep Match 的方法主要是解决了之前召回效率低的问题,因为这种方法是把用户的历史序列以及他对应的 user profile 进行一个 embedding 之后,然后通过 MLP 得到一个用户的表征,这个表征由于是实时生成,用户的足迹在不断的往里面加,那么这个效率是比较高的。Deep Match 模型可以更多的用到一些商品侧的自身的一些行为、类目、属性的信息,从而能更好的构建模型。但是它的可解释性较差,另外召回是 bad case 还是惊喜是一个各花入各眼的过程,需要线上的 ABtest 给出答案。

在 YouTube Deep Match 的基础上,我们基于序列上下文的 Attention,构建用户表征,即通过时间衰减/行为类别/停留时间等信息对用户序列进行建模,模型的结构图如上所示。

经过线上测试 uv 点击率 +0.92%,人均点击次数 +9.81%,发现性曝光占比 +8.04%。

Practical Lessons:

  • 因为是一个 match 的过程,所以我们选择了随机负采样作为负样本
  • Position Embedding 很有效,用户行为的远近是比较重要的
  • Item Feature Sequence 能有效增加信息量

迭代方向:

  • 用户多兴趣点提取
  • 双塔结构,利用 target 的 side information 辅助

▌商品排序

1. DIN

17 年的时候,我们演进到了 WDL 的过程,然后 18 年的时候因为阿里妈妈在 KDD18 的时候发表了 DIN 的那篇 paper,同时也在公司内部做了一些介绍,我们就顺着这个潮流从 WDL 走到了纯的用户向量表征再接 MLP 的范式。

DIN 是显性的用户表征学习,对 Behavior 和 Candidate 引入了 Attention 使得用户表征随着候选的不同而发生变化。DIN 结构如上图所示。

线上效果 ( baseline: WDL ):

  • CUN:CTR +5% ,CVR +11%
  • 1688: CTR +4% , CVR + 1%

关于 Attention:

  • Concat( keys, querys, keys * querys, keys - querys) + Relu + MLP
  • 运算量 = 400 候选 * 50 sequence + 400 MLP
  • 线上 DIN 在 400 个候选 RTP 打分的响应时间是 15ms

DIN 没有考虑的信息:

用户长期兴趣偏好 ( 广告区别于推荐 ) 词袋模型, 序列不敏感(对最近的行为无额外偏好)没利用 raw feature

2. LSRMM

基于 DIN 存在的一些问题,,我们做了一些改进,提出了 LSRMM ( Long Short-Range Mixture Model ),该模型能够去抽取一个长期的用户偏好。这个兴趣偏好不是整个 end to end 学出来的,而是直接通过离线的方式统计出用户在各个时间是否都对于一个特定的类别的东西有一个偏好。比如说像我喜欢羽毛球,那在候选中会额外的出现羽毛球。

LSRMM 特点:

  • 长期兴趣偏好:长期兴趣提取后,缩减候选,形成单独序列
  • 行为时序信息利用:近期(session)短序列截取,形成单独序列
  • 利用 raw feature 信息: GBDT Embedding 处理统计类 raw feature

线上效果:

CUN CTR +1.57%,CVR +3.32% ( baseline:DIN )

3. DIEN

当我们知道 DIN 和 DIEN 的时候,这两篇 paper 都引出来了,但是为什么我们没有直接上 DIEN 而是用了 DIN 呢,主要原因就在于 DIEN 在用户表征里有两层 GRU 的结构,用 GRU 跑起来是一个串行的结构,它不能并行。我们预估起来它这个耗时是比较厉害的,存在一定的上线的工程风险,所以我们在这边就是先上的 DIN 再上的 DIEN。

模型演化过程:

① GRU + Attention + GRU

② GRU + Attention + ATGRU

③ GRU + Attention + ATGRU + Auxiliary Loss

Practical Lessons—rt 降低之路 ( 1000 个 item 打分时长 )

这是我们做的一些优化以改进 DIEN 的效率,原版 DIEN ( 350ms ):

① user feature 只传一次节省通信开销 ( 340ms )

② 第一层 RNN 只跑一次 ( 250ms )

③ Embedding size 降至 32 ( 140ms ),( 这个会影响效果 )

④ 简化 attention 后 ( 140ms )

⑤ 分 batch 并发请求 rtp ( 100ms 以内 )

各种方法 benchmark 结果比较:

4. DMR:Deep Match to Rank

DMR 是我们最新发表在 AAAI2020 上的论文 ( oral ),在 Ranking 中融合了 Matching 的思想,建模 u2i 相关性。DIN 和 DIEN 都是聚焦用户兴趣的建模,而 DMR 又往前走了一步,对 u2i 相关性进行建模,这个相关性可以直接衡量用户对商品的偏好程度,从而提升模型的效果。这个 u2i 相关性是无法通过统计的方法得到的,因为通常不会给用户推荐重复的商品;也无法从召回得到,因为通过是有多路召回,每路召回的相关性不能相互比较。

DMR 提供了一个统一的任意 u2i 相关性的建模方法。DMR 中采用两个子网络建模 u2i 相关性,其中 User-to-Item Network 直接通过 user 和 item 的向量内积建模 u2i 相关性,并用一个辅助的 deepmatch 任务联合训练,促使更大的内积表征更强的相关性,从而提升效果。Item-to-item 网络采用间接的方式建模 u2i 相关性,类似于 DIN 的网络,我们先做一个 target attention,这个 attention 权重可以理解成 i2i 权重,再将权重求和得到第二种 u2i 相关性。DMR 提供了一个 u2i 相关性建模的范式,可以很方便的加入到其他深度模型中。

DMR 的实验:

线上效果 ( DMR vs DIN ):

① uv-ctr 相对提升 1.23%

② 人均点击次数相对提升 9.13%

③ pv-ctr 相对提升 3.61%

④ L-O 转化相对提升 1.81%

▌内容推荐

1688 团队从 2019 年开始大规模的去做直播业务,最近直播有多火呢,连法院拍卖这个事情都开始上直播了。

1. 1688 直播推荐的业务背景

  • 电商内容化重要 ⽅向, 提升 ⽤户时长与粘性
  • B 类采购批发,小商家为主, 主要类目为 ⼥装/童装/配饰/⾷品等
  • 转化率 ⾼,目前频道 ⻚ UV 转化率 17%, 全导购场景第 ⼀
  • 核 ⼼考察指标为买家数(转化率) , 同时关注点击与 ⽤户时 ⻓

2. 直播在 1688 上面临的一些特色的问题

第一个呢是只用排序就行了的场景,因为每一个时段同场次在线的直播数还不过 1000,不过 1000 的话那未必有一个召回的诉求,给 1000 个打个分我们的模型性能还是罩得住的,所以我们对召回诉求就不强。

第二个,直播是一个多目标学习的过程,在哪里建模也都是一个多目标的过程,比如既要点击率又要在观看时间长,又要转化率高,还有些粉丝亲密度的问题。

还有个问题是,直播这个东西,本来我们是推商品的,这边又开始推直播了,我们就想直播和商品之间是一个什么样的关系,是不是一个商品很不错,它对应的一个老板做直播就很不错,其实答案是否定的。就是商品和商家的直播之间还是不一样的,有很多商家日常商品经营做的好的,未必就是直播做的好的。所以在这里它是一个内容的异构网络。

接下来我们讲介绍整体的算法迭代流程。

3. 直播排序迭代 V1: 特征工程 + 机器学习

业务初期选择了特征 ⼯程 + 机器学习 LR/GBDT,核心在于实时数据、实时交叉特征打点 ⽇志的建设,在