MIND(Multi-Interest Network with Dynamic Routing for Recommendation at Tmall)

目的

      推荐系统中,现有深度学习模型大多是将用户的兴趣表示为一个向量,并不能很准确的反应用户的真实兴趣,如果将其应用到召回阶段,会影响召回的效果,因此考虑将用户的兴趣表示为多个向量,每个向量代表一个兴趣;

整体思路

      1. 为了表示用户的多个兴趣,提出了多兴趣抽取层,该层应用到了胶囊网络结构,通过动态路由聚合用户的历史行为序列,并结合用户属性特征,得到兴趣胶囊,每个胶囊表示一个用户兴趣;
       2. 得到用户多个兴趣后,使用attention机制得到用户的最终表示,在attention中,query是候选item,key、value是用户的多个兴趣表示;
      3. 计算用户表示向量和候选item向量之间的内积,取top N;

实现细节

在这里插入图片描述

符号定义:

       I u I_u Iu:用户行为序列;
       e i e_i ei:用户行为序列中第 i i i个item的embedding表示;
       P u P_u Pu:用户属性信息;
       V u = f u s e r ( I u , P u ) = ( v u 1 , . . . v u k ) V_u=f_{user}(I_u,P_u)=(v_u^1,...v_u^k) Vu=fuser(Iu,Pu)=(vu1,...vuk),表示用户的多个兴趣向量, k k k表示兴趣的个数;
       e t e_t et:候选item的embedding表示(文中也用 e i e_i ei表示,感觉看的有点乱,本文中,我们使用 e t e_t et来表示);

Embedding & Pooling Layer

      这块主要是为了强调对用户类别特征和item类别特征的处理方式:
      用户类别特征:如性别,职业等,将其对应的embedding向量concat起来;
      item类别特征:如品牌id,店铺id等,将其映射到相同维度的embedding向量,然后使用average pooling进行处理;

Multi-Interest Extractor Layer

1.动态路由:

      胶囊网络是一种基于向量的神经元,替代了之前的基于标量的神经元,旨在通过向量表示一个实体的不同特征(感觉有点像多头机制的概念),胶囊的方向表示一个特性,长度表示该特性的概率,对应的,在每个特性表示一个用户兴趣,长度表示该兴趣的重要度。假设有两层胶囊,动态路由的目的是给定低层胶囊网络 c i l ∈ R N l × 1 , i ∈ 1 , . . . , m c_i^l\in\mathbb R^{N_l\times 1}, i\in{1, ...,m} cilRN

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值