专栏首页小小挖掘机RS Meet DL(74)-[天猫]MIND:多兴趣向量召回

RS Meet DL(74)-[天猫]MIND:多兴趣向量召回

本文介绍的论文是:《Multi-Interest Network with Dynamic Routing for Recommendation at Tmall》

关于召回阶段的算法,以youtube DNN为代表的向量化召回方式是目前的主流算法之一,但是目前的大多数算法仅仅将用户的兴趣表示成单个的Embedding,这是不足以表征用户多种多样的兴趣的,同时容易造成头部效应。因此本文提出了MIND,同时生成多个表征用户兴趣的Embedding,来提升召回阶段的效果,一起来学习一下。

1、背景

在天猫的推荐过程中,推荐系统也被拆分为召回和排序阶段。

本文重点关注召回阶段的算法。召回阶段的目标是得到数千个跟用户兴趣紧密相关的商品候选集。在天猫场景下,用户每天都要与成百上千的商品发生交互,用户的兴趣表现得多种多样。如下图所示,不同的用户之间兴趣不相同,同时同一个用户也会表现出多样的兴趣:

因此,对于用户兴趣的建模显得至关重要。目前召回阶段主流的算法是协同过滤和向量化召回。协同过滤面临稀疏性的问题。而向量化召回方法如youtube dnn,将用户的兴趣表示成一个固定长度的向量。

但在天猫场景下,对于用户多样化的兴趣,一个Embedding往往是不够的,除非这个Embedding的长度足够大,具有足够的表征能力。除此之外,只有一个Embedding会造成一定的头部效应,召回的结果往往是比较热门领域的商品(头部问题),对于较为小众领域的商品,召回能力不足。

解决上述问题的方法也很简单,搞多个用户Embedding就好了嘛,而本文要介绍的MIND,正是通过生成多个表征用户兴趣的Embedding,来提升召回阶段的效果,一起来学习一下。(昨天听了俊林老师的讲座,这个方向也是他比较看好的)

2、MIND

2.1 问题概述

召回阶段的目标是对于每个用户u∈U的请求,从亿级的商品池I中,选择成百上千的符合用户兴趣的商品候选集。每条样本可以表示成三元组(Iu,Pu,Fi),其中Iu是用户u历史交互过的商品集合,Pu是用户画像信息,比如年龄和性别,Fi是目标商品的特征,如商品ID、商品品类ID。

那么MIND的核心任务是将用户相关的特征转换成一系列的用户兴趣向量:

而目标商品向量Fi也被转换为一个Embedding:

当得到用户和商品的向量表示之后,通过如下的score公式计算得到topN的商品候选集:

整个MIND的框架如下:

接下来,详细介绍MIND中的各部分。

2.2 Embedding Layer

如上图,MIND的输入中包含三部分,用户的画像信息Pu、用户历史行为Iu和目标商品Fi。每个部分都包含部分的类别特征,类别特征会转换为对应的embedding。对用户画像信息部分来说,不同的embedding最终拼接在一起。而对于用户历史行为Iu中的商品和目标商品Fi来说,商品ID、品牌ID、店铺ID等转换为embedding后会经过avg-pooling layer来得到商品的embedding表示。

2.3 Multi-Interest Extractor Layer

接下来是最为关键的 Multi-Interest Extractor Layer,这里借鉴的是Hiton提出的胶囊网络。有关胶囊网络,下面的图可以帮助你快速理解(图片来源于知乎:https://zhuanlan.zhihu.com/p/68897114):

可以看到,胶囊网络和传统的神经网络较为类似。传统神经网络输入一堆标量,首先对这堆标量进行加权求和,然后通过非线性的激活函数得到一个标量输出。而对胶囊网络来说,这里输入的是一堆向量,首先对这组向量进行仿射变换,然后进行加权求和,随后通过非线性的"squash"方程进行变换,得到另一组向量的输出。

而MIND中的Multi-Interest Extractor Layer,与胶囊网络主要有两个地方不同:

1)在胶囊网络中,每一个输入向量和输出向量之间都有一个单独的仿射矩阵,但是MIND中,仿射矩阵只有一个,所有向量之间共享同一个仿射矩阵。主要原因是用户的行为数量长度不同,使用共享的仿射矩阵不仅可以减少参数,同时还能对应另一处的改变,即不同用户输出向量的个数K是基于他历史行为长度自适应计算的:

上面基于用户历史行为长度自适应计算输出向量个数K'的策略,对于那些交互行为较少的用户来说,可以减少这批用户的存储资源。

2)为了适应第一个改变,胶囊网络中权重的初始化由全部设置为0变为基于正太分布的初始化。

下图是整个Multi-Interest Extractor Layer的过程:

通过Multi-Interest Extractor Layer,得到了多个用户向量表示。接下来,每个向量与用户画像embedding进行拼接,经过两层全连接层(激活函数为Relu)得到多个用户兴趣向量表示。每个兴趣向量表征用户某一方面的兴趣。

2.4 Label-aware Attention Layer

在上一步得到用户兴趣向量之后,由于不同用户的兴趣向量个数不同,通过Label-aware Attention Layer对这些向量进行加权(只应用于训练阶段),类似DIN中的做法:

而计算公式为:

上图中的Q相当于目标商品的embedding,K和V都是用户的兴趣向量。值得注意的一点是,在softmax的时候,对得到的attention score,通过指数函数进行了一定的缩放。当p接近0时(这里应该是假设了向量的内积大于1吧),对softmax是一种平滑作用,使得各attention score大小相近,当p>1且不断增加时,对softmax起到的是一种sharpen作用,attention score最大那个兴趣向量,在sofamax之后对应的权重越来越大,此时更类似于一种hard attention,即直接选择attention score最大的那个向量。实验表明hard attention收敛速度更快。

2.5 Training & Serving

在训练阶段,使用经过Label-aware Attention Layer得到的用户向量和目标商品embedding,计算用户u和商品i交互的概率(这里和youtube DNN相似,后文中说也进行了采样):

而目标函数(而非损失函数)为:

而在线上应用阶段,只需要计算用户的多个兴趣向量,然后每个兴趣向量通过最近邻方法(如局部敏感哈希LSH)来得到最相似的候选商品集合。同时,当用户产生了一个新的交互行为,MIND也是可以实时响应得到用户新的兴趣向量的。

3、实验结果

接下来看下实验结果。

对于离线实验,文中使用MIND和BASE模型(如youtube DNN)等进行了对比,结果如下:

而在线上实验时,为了进行对比,不同的召回模型都使用同样的排序模型作为下游,并比较了一周内不同实验组的CTR:

可以看到,无论是线上还是线下实验,MIND都取得了不错的效果。

4、总结

目前召回阶段,有几个值得不错的方向,比如MIND中的用户兴趣多Embedding拆分和基于Graph的召回,大伙不妨可以尝试一下。

本文分享自微信公众号 - 小小挖掘机(wAIsjwj),作者:石晓文

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-12-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 万字长文解读电商搜索——如何让你买得又快又好

    一个产品的搜索功能,是用户快速触达所需信息的通道,起到了引导用户走向的重要作用;优秀的产品必然有成熟、体验良好的搜索功能。

    石晓文
  • 线性代数的本质-课程笔记(上)

    00 - “线性代数的本质”系列预览:https://www.bilibili.com/video/av5977466?from=search&seid=213...

    石晓文
  • 万字长文|线性代数的本质课程笔记完整合集!

    线性代数中最基础,最根源的组成部分是向量,那么什么是向量呢?从不同学生的视角看,有以下三种观点:

    石晓文
  • 产品容错性设计原则

    随着互联网的飞速发展,越来越多产品尤其是2C类产品更加注重用户体验,其中错误对用户体验的影响是灾难性的,在此我总结出一些容错性设计原则供大家参考和探讨。 ? 一...

    前朝楚水
  • 深入理解向量进行矩阵变换的本质

    向量的理解 上图表述的是平面上一点,在以i和j为基的坐标系里的几何表示,这个点可以看作(x,y)也可以看作是向量ox与向量oy的和。

    坑吭吭
  • 老司机说数据分析中用户画像该这样分析

    有同学问:陈老师,我领导让我做用户画像分析,可是我做了一大堆数据,却被批:也没分析什么东西啊?该咋办?今天系统解答一下。

    叫我龙总
  • 数据分析应学习逻辑思维及分析方法

    逻辑归纳,需要拥有良好的逻辑思维,并结合领域知识形成该领域的分析方法。而领域方法,进一步归纳则能够成为通用了方法论。

    腾讯大讲堂
  • 数据分析面试-业务分析篇

    同比: 与历史同时期比较,就是与不同年份(月份)的同一时期作比较,例如2005年7月份与2004年7月份相比,叫同比。

    朱小五
  • 浅谈微博精准推荐——用户行为挖掘与相似用户挖掘

    在微博中,用户可以通过“关注”行为成为另一个用户的粉丝,“关注”行为是有向的。通过“关注”一个用户后,我们可以在我们的feed流中看到对方的信息。在微博中,通过...

    博文视点Broadview
  • 用户画像,该怎么分析?

    有同学问:陈老师,我领导让我做用户画像分析,可是我做了一大堆数据,却被批:也没分析什么东西啊?该咋办?今天系统解答一下。

    接地气的陈老师

扫码关注云+社区

领取腾讯云代金券