论文《Multi-Interest Network with Dynamic Routing for Recommendation at Tmall》

摘要

推荐系统分召回匹配和排序两阶段,目前召回的深度学习模型都是将一个用户表示成一个向量,这样没法表示用户的多种自然兴趣,论文中提出的MIND通过胶囊网络设计了一个多兴趣提取网络层以及标签感知注意力来从多个兴趣向量学习到用户向量。由于效果显著,MIND已经部署在天猫移动APP中。

Industrial recommender systems usually consist of the matching stage and the ranking stage, in order to handle the billion-scale of users and items. The matching stage retrieves candidate items relevant to user interests, while the ranking stage sorts candidate items by user interests. Thus, the most critical ability is to model and represent user interests for either stage. Most of the existing deep learning-based models represent one user as a single vector which is insufficient to capture the varying nature of user’s interests. In this paper, we approach this problem from a different view, to represent one user with multiple vectors encoding the different aspects of the user’s interests. We propose the Multi-Interest Network with Dynamic routing (MIND) for dealing with user’s diverse interests in the matching stage. Specifically, we design a multi-interest extractor layer based on capsule routing mechanism, which is applicable for clustering historical behaviors and extracting diverse interests. Furthermore, we develop a technique named label-aware attention to help learn a user representation with multiple vectors. Through extensive experiments on several public benchmarks and one large- scale industrial dataset from Tmall, we demonstrate that MIND can achieve superior performance than state-of-the-art methods for recommendation. Currently, MIND has been deployed for handling major online traffic at the homepage on Mobile Tmall App

简介

天猫在2018年双十一实现GMV2130亿,相比2017增长26.9%。天猫在个性化投入巨大,显著增加了用户体验和商业价值,例如占天猫APP总流量的一半的首页,也已经部署了个性化推荐。天猫推荐分为匹配和排序两阶段,匹配阶段找到用户兴趣相关的数千个候选物料,排序阶段进行精准排序。平均每个用户交互数百个商品,这些商品属于不同的品类,代表了用户不同的兴趣。不同的用户兴趣各不相同,相同的用户也可能对不同的商品感兴趣,能捕捉用户的不同兴趣在天猫非常重要。
在这里插入图片描述
当前推荐系统用不同的方式来表示用户兴趣,协同过滤通过用户历史交互的商品或者隐因子来表示,会遇到稀疏问题和计算量的问题。基于DNN的模型通过低维向量表示用户兴趣,像YouTubeDNN,通过固定长度的向量表示用户兴趣,对于多兴趣建模可能是个瓶颈,因为需要很大维度的向量才能表达天猫用户如此多的兴趣。深度兴趣网络DIN通过注意力机制来捕捉用户的不同兴趣,注意力机制在实际大规模应用中计算量较大,使得仅适用于排序阶段。

聚焦建模用户多兴趣问题,在匹配召回阶段提出动态路由多兴趣网络MIND学习用户的多兴趣表示。设计了一个多兴趣提取层,这个层利用动态路由自适应的将用户历史行为合并为用户表示,动态路由的过程可看做软聚类,每个类表示用户的一个特定的兴趣。对于每个用户,MIND输出多个用户表示向量,代表用户的不同兴趣。

  1. 设计了多兴趣提取层,使用动态路由自适应的合并用户历史行为成用户向量表示。
  2. 设计了标签感知注意力层,利用上面产出的用户多兴趣向量。

相关工作

用户表示:推荐中通常把用户表示成一个向量,有很多CNN、RNN的工作学习用户的向量表示。
胶囊网络:一组神经元组成在一起形成一个“胶囊”,可以理解为向量神经元,每个输入输出都是向量而不是标量,使用动态路由而不是后向传播来更新权重,通过EM算法来优化。胶囊网络的特点使得能够编码关系的局部和整体,有证明表示胶囊网络相比CNN能更好的建模对象的空间关系。

方法

问题定义

候选集 I I I用户集合 U U U,元组 ( I u , P u , F u ) (I_u,P_u,F_u) (Iu,Pu,Fu),其中 I u I_u Iu表示用户 u u u交互的物料集合, P u P_u Pu表示用户的画像(用户年龄、性别), F u F_u Fu表示目标物料的特征(如品类ID、ItemID),MIND的核心任务就是学习一个映射函数 f u s e r f_{user} fuser,将这些特征映射成用户表示,
V u = f u s e r ( I u , P u )         ( 1 ) V_u = f_{user}(I_u,P_u) \ \ \ \ \ \ \ (1) Vu=fuser(Iu,Pu)       (1)
其中 V u = ( v ⃗ u 1 , . . . , v ⃗ u K ) ∈ R d × K V_u=(\vec {v}_u^1, ..., \vec {v}_u^K) \in R^{d\times K} Vu=(v u1,...,v uK)Rd×K表示用户的 K K K d d d维向量表示, K = 1 K=1 K=1即变成了YouTubeDNN。目标物料 i i i的表示如下
e ⃗ i = f i t e m ( F i )         ( 2 ) \vec {e}_i = f_{item}(F_i) \ \ \ \ \ \ \ (2) e i=fitem(Fi)       (2)
其中 e ⃗ i ∈ R d × 1 \vec {e}_i \in R^{d\times1} e iRd×1
因此topN推荐通过如下计算
f s c o r e ( V u , e ⃗ i ) = m a x 1 ≤ k ≤ K e ⃗ i T v ⃗ u k         ( 3 ) f_{score}(V_u,\vec {e}_i) = \underset {1\leq k\leq K} {max} \vec {e}_i^T \vec {v}_u^k \ \ \ \ \ \ \ (3) fscore(Vu,e i)=1kKmaxe iTv uk       (3)

Embedding & Pooling层

用户画像 P u P_u Pu,交互的物料集合 I u I_u Iu,目标物料的特征 F u F_u Fu都有很多ID类特征,数据高维稀疏,利用embedding技术映射成低维向量,减少学习参数。

  • 用户画像 P u P_u Pu特征,(年龄、性别等)是将其Embedding的向量进行拼接,组成用户属性向量 p ⃗ u \vec p_u p u
  • 目标物料通常包含其他分类特征id(品牌id、店铺id等) ,这些特征有利于物品的冷启动问题,需要将所有的分类特征的Embedding向量进行平均池化,得到目标物料向量 e ⃗ i \vec {e}_i e i
  • 对于用户行为 I u I_u Iu,由物品的Embedding向量组成用户行为Embedding列表 E u = { e ⃗ j , j ∈ I u } E_u = \{ \vec {e}_j,j \in I_u \} Eu={e j,jIu}
    在这里插入图片描述
多兴趣提取层

将用户兴趣表示成一个向量,相当于把用户的所有兴趣信息混合在一起,匹配召回阶段就会不精确。为学习用户的多兴趣,使用聚类过程将用户行为划分到几个类中,一个类中的物料是紧密相关,代表用户特定的一个兴趣。

动态路由

假设有2层胶囊,低水平胶囊和高水平胶囊。动态路由的目标是使用迭代的方式在给定低水平胶囊的值情况下计算高水平胶囊的值。在每个迭代中,给定低水平胶囊 i ∈ { 1 , 2 , . . , m } i \in \{ 1, 2, .., m\} i{1,2,..,m},对应的向量 c ⃗ i l ∈ R N l × 1 , i ∈ { 1 , 2 , . . . , m } \vec {c}_i^l \in R^{N_l\times1},i \in \{1,2,...,m\} c ilRNl×1,i{1,2,...,m},高水平胶囊 j ∈ { 1 , 2 , . . , n } j \in \{ 1, 2, .., n\} j{1,2,..,n},以及对应的向量 c ⃗ j h ∈ R N h × 1 , j ∈ { 1 , 2 , . . . , n } \vec {c}_j^h \in R^{N_h\times1},j \in \{1,2,...,n\} c jhRNh×1,j{1,2,...,n} N h N_h Nh N l N_l Nl分表表示高低胶囊的向量元数目,则低水平胶囊 i i i和高水平胶囊 j j j之间的路由对数 b i j b_{ij} bij由下式计算
b i j = c ⃗ j h S i j c ⃗ i l         ( 4 ) b_{ij} =\vec {c}_j^h S_{ij} \vec {c}_i^l \ \ \ \ \ \ \ (4) bij=c jhSijc il       (4)
其中 S i j ∈ R N h × N l S_{ij} \in R^{N_h\times N_l} SijRNh×Nl是需要学习的双线性映射。
计算路由对数后,高水平胶囊 j j j的候选向量由所有的低水平胶囊的加权和
z ⃗ j h = ∑ i = 1 m w i j S i j c ⃗ i l         ( 5 ) \vec {z}_j^h = \sum_{i=1}^m w_{ij} S_{ij} \vec {c}_i^l \ \ \ \ \ \ \ (5) z jh=i=1mwijSijc il       (5)
低水平胶囊 i i i和高水平胶囊 j j j连接的权重根据路由的softmax计算
w i j = e x p ( b i j ) ∑ i = 1 K e x p ( b i k )         ( 6 ) w_{ij} = \frac {exp(b_{ij})} {\sum_{i=1}^Kexp(b_{ik})} \ \ \ \ \ \ \ (6) wij=i=1Kexp(bik)exp(bij)       (6)
然后使用一个非线性的激活函数得到高水平胶囊的输出向量
c ⃗ j h = s q u a s h ( z ⃗ j h ) = ∣ ∣ z ⃗ j h ∣ ∣ 2 1 + ∣ ∣ z ⃗ j h ∣ ∣ 2 z ⃗ j h ∣ ∣ z ⃗ j h ∣ ∣ 2         ( 7 ) \vec c_j^h = squash(\vec z_j^h) = \frac {\vert \vert \vec z_j^h \vert \vert ^2} {1 + \vert \vert \vec z_j^h \vert \vert ^2} \frac {\vec z_j^h} {\vert \vert \vec z_j^h \vert \vert ^2} \ \ \ \ \ \ \ (7) c jh=squash(z jh)=1+z jh2z jh2z jh2z jh       (7)
b i j b_{ij} bij初始化为0,路由过程通常执行3次,收敛后,高水平胶囊 c ⃗ j h \vec c_j^h c jh作为下一层的输出。

B2I动态路由

胶囊网络可以看做向量神经元结构,能够表示一个实体的不同属性。每个特定的胶囊代表实体的一个属性,胶囊的长度表示实体存在的概率。对应到多兴趣提取层,就是用户多个兴趣的向量表示和兴趣是否存在。但是原始的路由是针对图像的,所以论文提出B2I路由来合并用户行为,学习用户多兴趣的向量表示。

共享双线性矩阵

在每个低水平胶囊和高水平胶囊之间,论文使用固定的双线性矩阵,而不是原始每个双线性矩阵都不同。基于2点考虑,一个是用户的行为数目从几十个到几千个不等,使用固定的双线性矩阵是可以推广的,另一个是希望胶囊网络将用户的多个兴趣映射到同一个向量空间里面去。因此路由计算更新如下:
b i j = u ⃗ j T S e ⃗ i , i ∈ I u , i ∈ { 1 , 2 , . . . , K }         ( 8 ) b_{ij} = \vec u_j^TS \vec e_i, i \in I_u,i \in \{1,2,...,K\} \ \ \ \ \ \ \ (8) bij=u jTSe i,iIu,i{1,2,...,K}       (8)
u ⃗ j ∈ R d \vec u_j \in R^d u jRd表示兴趣胶囊 j j j的向量表示, e ⃗ i ∈ R d \vec e_i \in R^d e iRd表示用户交互的物料 i i i,双线性矩阵 S ∈ R d × d S \in R^{d\times d} SRd×d在每个交互行为胶囊和兴趣胶囊之间共享。

随机初始化路由对数

因为使用了共享矩阵,如果还是将路由对数初始化为0,那么每一步迭代多个兴趣向量会一直完全相同。因此像K-Means一样,论文从高斯分布 N ( 0 , σ 2 ) N(0, \sigma^2) N(0,σ2)采样一个随机矩阵来初始化每个兴趣胶囊的路由对数。

动态兴趣数量

每个用户的兴趣数目可能不一样,因此对应的胶囊数目也是不一样的,论文提出一个对于不同用户自适应的 K K K值来表示。这样也能节省计算和存储资源,计算如下
K u ′ = m a x ( 1 , m i n ( K , log ⁡ 2 ( ∣ I u ∣ ) ) )         ( 9 ) K_u^{'} = max(1, min(K, \log_2(\vert I_u \vert))) \ \ \ \ \ \ \ (9) Ku=max(1,min(K,log2(Iu)))       (9)

标签感知注意力层

通过多兴趣提取层后,从用户行为embedding得到了兴趣胶囊,不同的兴趣胶囊表示了用户的不同兴趣,这些兴趣胶囊就可以评估用户在物料上面的偏好。论文基于标量点乘的注意力设计了标签感知注意力层,使目标物料选择使用哪一个兴趣胶囊。计算目标物料embedding和兴趣胶囊的匹配程度,具体就是求兴趣胶囊的加权和,作为目标物料上的用户embedding。
v ⃗ u = A t t e n t i o n ( e ⃗ i , V u , V u ) = V u s o f t m a x ( p o w ( V u T e ⃗ i , p ) ) \vec v_u = Attention(\vec e_i, V_u, V_u) = V_usoftmax(pow(V_u^T \vec e_i,p)) v u=Attention(e i,Vu,Vu)=Vusoftmax(pow(VuTe i,p))
p o w pow pow表示元素级操作, p p p是来改变注意力分布的超参,值接近0表示对各个兴趣胶囊的注意力相同,值越大越趋向于选择注意力最大的胶囊而忽略注意力小的胶囊,极端情况下,值趋向无穷大的时候,会选择注意力最大的那个兴趣胶囊,实验发现 p p p值取较大收敛的快。
在这里插入图片描述

训练 & 在线服务

当用户向量 v ⃗ u \vec v_u v u和物料向量 e ⃗ i \vec e_i e i准备好后,计算用户 u u u与目标物料 i i i交互的概率如下
P ( i ∣ u ) = P ( e ⃗ i ∣ v ⃗ u ) = e x p ( v ⃗ u T e ⃗ i ) ∑ j ∈ I e x p ( v ⃗ u T e ⃗ j )         ( 10 ) P(i \vert u) = P(\vec e_i \vert \vec v_u) = \frac {exp(\vec v_u^T \vec e_i)} {\sum_{j \in I}exp(\vec v_u^T \vec e_j)} \ \ \ \ \ \ \ (10) P(iu)=P(e iv u)=jIexp(v uTe j)exp(v uTe i)       (10)
因此MIND训练的目标函数如下
∑ ( u , i ) ∈ D log ⁡ P ( i ∣ u )         ( 11 ) \sum_{(u,i) \in D} \log P(i \vert u) \ \ \ \ \ \ \ (11) (u,i)DlogP(iu)       (11)
因为候选集商品有十亿量级,因此式子(10)计算不可行,也进行了采样来计算。
除标签感知注意力层外的其他MIND网络结构,可以看做是用户表示的映射函数 f u s e r f_{user} fuser,为每个用户产生多个兴趣向量,这些兴趣向量被用来检索topN的候选物料。当用户的行为发生变化时,对应的兴趣向量也会发生变化,因此MIND可以用在实时推荐中。

和现存方法的联系

YouTubeDNN使用一个向量表示用户兴趣,MIND使用多个兴趣来表示,当MIND里面的 K = 1 K=1 K=1时,MIND退化为YouTubeDNN,因此MIND是YouTubeDNN的推广。

DIN也是捕捉用户的不同兴趣,和MIND一样,但是实现目标的方式不一样,DIN使用了物料级别的注意力机制,而MIND采用动态路由算法产生兴趣胶囊并在兴趣级别上面考虑多样性,而且DIN更关注排序阶段,MIND解耦了用户表示以及用户和物料的交互,因此更适用于大规模物料匹配的召回阶段。

实验

离线实验
数据集及实验准备

两个数据集(Table 1),一个是Amazon Books,一个是TMallData,前者是广泛使用的电商推荐数据集,后者是从随机抽取了200万天猫用户在10天的行为数据,且这些用户至少曝光了10次物料,
在这里插入图片描述
将用户下一次的点击作为预测目标,随机划分训练集和测试集,比例19:1,对每个用户,随机选择的有交互的物料作为目标物料,在目标物料之前交互的物料作为用户行为历史。HitRate作为评估指标
H i t R a t e @ N = ∑ ( u , i ) ∈ D t e s t I ( t a r g e t   i t e m   o c c u r s   i n   t o p   N ) ∣ D t e s t ∣         ( 12 ) HitRate@N = \frac {\sum_{(u,i) \in D_{test}} I(target \ item \ occurs \ in \ top \ N)} {\vert D_{test} \vert} \ \ \ \ \ \ \ (12) HitRate@N=Dtest(u,i)DtestI(target item occurs in top N)       (12)
最佳的超参数维度 d d d和兴趣个数 K K K在数据集中通过多种参数组找出。

对比的几个方法

WALS:Weighted Alternating Least Squares,经典的矩阵分解方法,将用户与其交互的物料分解为用户隐向量和物料隐向量。

YouTube DNN

MaxMF:该方法引入了一种高度可伸缩的学习非线性潜在因子分解的方法来建模多个用户的兴趣。

实验结果

深度学习效果比非深度学习要好,多个兴趣表示比单个兴趣要好。
在这里插入图片描述

超参分析

在多兴趣提取层和标签感知注意力层做超参实验

路由初始化。兴趣提取层的路由初始化和K-means较像,因为路由对数是根据高斯分布 N ( 0 , σ 2 ) N(0,\sigma^2) N(0,σ2)初始化的,考虑到不同的 σ \sigma σ可能会导致效果不同,通过 σ ∈ { 0.1 , 1 , 5 } \sigma \in \{ 0.1, 1, 5 \} σ{0.1,1,5}

标签感知的注意力层的pow值。 p = 0 p=0 p=0相比其他要差很多, p = 0 p=0 p=0表示每个兴趣的注意力是一样的,关注度相同。 p p p越大,与目标物料相似度高的兴趣受到的关注度越大。

在这里插入图片描述

在线实验

在线实验以ICF和YouTube DNN作为base,以及MIND不同的K值作为实验。
实验结论就是最优的用户兴趣数目为5~7,揭示了用户平均的兴趣多样度,另外,动态兴趣数量没有带来CTR增益,但是能减少计算及存储资源。
在这里插入图片描述

个例分析

从天猫活跃用户里面随机抽取了2个用户(上面为用户C,下面为用户D),用户C交互了4类物料(耳机、零食、包包、衣服)每个商品在一个兴趣胶囊上面的连接系数最大,形成了相应的兴趣。用户D仅仅交互了衣服,因此从这些行为中分解出了3个细粒度的兴趣(毛衣、大衣、羽绒服)。对于这个结果(Figure 5),可以确认每类用户兴趣都聚类在了一起并形成兴趣表示向量。
在这里插入图片描述

物料分布

根据每个兴趣点和兴趣点的相似度,将每个兴趣点召回的物料分布可视化展示出来(Figure 6)。还是上面提到的用户C,上面4个轴展示了基于MIND的兴趣点召回的物料分布,最下面的一个轴表示基于YouTubeDNN召回的物料分布。根据与兴趣点的相似度,这些物料通过max-min归一化,兴趣度被缩放在0~1之间,分布在轴上。在特定兴趣度范围内的物料合成一个圆圈,圆圈的大小表示具有相应相似度的物料数目。随机抽取的候选物料结果也是如此,基于MIND召回的物料和兴趣点强相关,基于YouTubeDNN召回的物料和用户的行为相似度较低。
在这里插入图片描述

系统部署

天猫推荐架构如下,当用户登录天猫APP时,天猫个性化平台收到推荐请求,检索查找用户最近交互行为,将用户历史交互结果发给兴趣提取器处理。兴趣提取器将用户历史行为处理成多个兴趣表示向量。然后召回引擎根据用户兴趣表示向量查找最相似的物料表示向量,不同兴趣触发的物料合并在一起作为候选物料并按照相似度进行排序。用户兴趣提取器和召回引擎要在15毫秒内从十亿量级的物料候选池中选出数千个相关物料。基于系统耗时和物料候选池大小的考量,排序模块会对召回top1000的物料进行排序打分。用户兴趣提取和排序打分都是在模型训练平台训练的,使用了100个GPU,耗时8小时。受益于模型训练平台的卓越性能,模型每天更新,保证新发布的物料能计算和得到曝光。
在这里插入图片描述

总结

提出MIND来学习用户的多兴趣表示,设计了多兴趣提取层,使用动态路由提取多个兴趣,还有标签感知注意力层。MIND在离线和在线取得显著效果。未来计划一是增加更多的用户序列信息(如行为时间),二是参考K-means的初始化来优化动态路由的初始化,更好的表达用户。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值