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

本篇主要介绍了用户多兴趣向量的提取在召回上的应用。我们主要关注多兴趣 embedding 的抽取过程,其中的主要采用了胶囊网络(Capsule Network)的思想。

1. 模型架构

初看模型架构还是非常复杂,这里我们主要关注输入和输出。
MIND 的核心即是找到一个映射关系:
V_u = f_{user}(I_u, P_u)
其中,V_u = (\overrightarrow{v}_u^1,\cdots, \overrightarrow{v}_u^K) \in R^{d \times K}d 为 embedding 的维度,K 为兴趣向量的个数。I_u 为用户 u 的历史行为序列,P_u 为用户 u 的 profile 特征(比如性别、年龄)。

此外,对于目标 item i 我们可以通过一个 embedding 映射得到其向量表示:
\overrightarrow{e}_i = f_{item}(F_i)
其中,F_i 表示 item 的features (比如 item_id、category_id)。

得到了用户向量和物品向量,就可以计算最终得分:
f_{score} (v_u,\overrightarrow{e}_i) = \underset{1\leq k\leq K}{max}\overrightarrow{e}_i^T\overrightarrow{v}_u^k
然后通过得分进行召回。

2. Multi-Interest Extractor Layer

用户多兴趣向量的提取步骤如下:


1.每个用户的兴趣数量都是动态调整的:
K_u' = max(1, min(K, log_2(|I_u|)))

w_{i,j} = \frac{exp\,b_{ij}}{\sum_{k=1}^{m}exp\,b_{ik}}

\overrightarrow{z}_j = \sum_{i\in I_u}w_{ij}S\overrightarrow{e}_i
其中,S\in R^{d \times d},它是 behavior capsules 和 interest capsules 之间的一个线性映射矩阵。

\overrightarrow{u}_j = squash(\overrightarrow{z}_j) = \frac{||\overrightarrow{z}_j||^2}{1+||\overrightarrow{z}_j||^2}\frac{\overrightarrow{z}_j}{||\overrightarrow{z}_j||}

3. Label-aware Attention Layer

经过 multi-interest extractor layer 提取出的多个兴趣怎么融合呢?当然是 attention 了。
\overrightarrow{v}_u = Attention(\overrightarrow{e}_i,V_u, V_u) = V_u\,softmax(pow(v_u^T\overrightarrow{e}_i,p))
其中,query 即为 label 向量,keys 和 values 向量均为 interest capsules 向量,p 为可训练的参数。

4. Objective function

L= \sum_{(u,i)\in D}log\,Pr(i|u)
其中,D 为用户行为集合,Pr(i|u) 的计算如下
Pr(i|u) = Pr(\overrightarrow{e}_i|\overrightarrow{v}_u) = \frac{exp(\overrightarrow{v}_u^T\overrightarrow{e}_i)}{\sum_{j\in I}exp(\overrightarrow{v}_u^T\overrightarrow{e}_j)}
因为物品集合 I 非常庞大,实际应用中采用了 sampled softmax 技术。

  1. 参考文献
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容