前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >推荐系统召回模型之MIND用户多兴趣网络

推荐系统召回模型之MIND用户多兴趣网络

作者头像
1480
发布2020-06-28 17:02:41
2.1K0
发布2020-06-28 17:02:41
举报
文章被收录于专栏:数据分析1480数据分析1480

MIND算法全称为:Multi-Interest Network with Dynamic Routing for Recommendation at Tmall,由阿里的算法团队开发。

1. 概括

工业界的推荐系统通常包括召回阶段和排序阶段。召回阶段我们根据用户的兴趣从海量的商品中去检索出用户(User)感兴趣的候选商品( Item),满足推荐相关性和多样性需求。目前的深度学习模型的套路是将User和Item在同一向量空间中进行Embedding表示,使用User的Embedding表示User的兴趣。然而实际情况是User的兴趣是多种多样的,使用一个Embedding不足以全面的表示User的兴趣信息。

该文的创新点在于:

1. 通过Mulit-Interest Extractor Layer 获取User的多个兴趣向量表达。提出了具有动态路由特点的多兴趣网络,利用Dynamic Routing以自适应地聚合User历史行为到User兴趣表达向量中;

2. 通过Label-Aware Attention 标签感知注意力机制,指导学习User的多兴趣表达Embedding;

2. MIND模型结构

MIND模型的整体结构如下:

图1 MIND网络结构图

输入层:

  • User画像特征;
  • User行为特征,即产生行为(历史点击或购买等)的Item列表和Item属性列表;
  • 正标签,即User真实发生行为(下一次点击或购买等)的 Item ID;

Embedding层:

  • 将ID信息映射成稠密向量,即Embedding;

Pooling层:

  • 将行为序列的Item和Item属性的Embedding表达进行mean, sum或max等池化操作;

Multi-interest Extractor 层:(本文重点)

  • 输入:User行为序列的Embedding Features,即 Pooling层 结果;
  • 输出:Interest Capsules,用户的多兴趣Embedding表达;

H layers:

  • 多个兴趣Embedding分别经过两个全连接层,得到User最终的多个兴趣Embedding表达;

Training服务:

  • 输入层:
    • H layers 结果作为 Label-aware Attention层的Keys和Values(此时Keys=Values);
    • 正标签,即User真实发生行为(下一次点击或购买等)的 Item ID,作为Query;
  • Label-aware Attention层:
    • 对输入的Keys和Query做内积、Softmax等操作作为Keys的权重值w;
    • 使用w与Values做内积,然后对应元素求和,得到一个Embedding,作为User对当前正标签Item的兴趣分布;
  • Sampled Softmax Loss层:
    • 抽取多个负标签,与正标签组成 Sampled 组;
    • 使用 tf.nn.sampled_softmax_loss 函数得到正标签的概率;

Serving服务:

  • 输入层:
    • H layers 结果作为 User 最终的多个兴趣Embedding表达;
    • 全集 Item 的Embedding表达;
  • TopN Recall:
    • 针对User的多兴趣Embedding,根据faiss或annoy在全集 Item 池中检索,获得User兴趣Embedding所感兴趣的候选Item集合;

3. MIND模型理论部分

3.1 MIND模型的问题定义

每个User-Item的实例可以使用三元组 表示,其中 表示User发生行为的Item集合, 表示User的画像特征(例如:性别,年龄等), 表示目标Item的画像特征(例如Id, 类型Id, 品牌Id等)。

MIND模型的主要任务:

(1)学习一个函数可以将User-Item实例映射为User的兴趣Embedding表达集合:

其中: 表示Embedding的向量长度, 表示User的兴趣Embedding个数。

(2)学习Item的Embedding表达:

(3)线上Serving服务检索,获得N个User感兴趣的候选Item池:

3.2 Embedding和Pooling层

MIND模型的输入是:User特征 ,User行为序列特征 ,和label Item 。

  • User Embedding:User Id(例如:年龄,性别等)经过Embedding 后通过Concat 操作后作为用户侧特征输入;
  • Item Embedding:Item Id(例如:Item Id,类型Id,品牌Id等)经过Embedding 后统一经过Pooling 层得到Item侧特征输入;
  • User行为序列特征Embedding:多个Item Embedding&Pooling 后,得到用户行为序列输入 。

3.3 Multi-Interest Extractor Layer

该层主要是采用多个向量来表达 User 不同的兴趣,将 User 的历史行为分组到多个 Interest Capsules 的过程。实现逻辑如下:

输入:

  • User行为序列特征Embedding, ;
  • 迭代次数 ;
  • 兴趣胶囊个数 ;

输出:

  • 兴趣胶囊Embedding,

定义:

(1)动态兴趣个数 ;

(2)低阶行为向量Embedding表达: 代表User的行为向量(同 );

(3)高阶兴趣向量Embedding表达: 代表User的兴趣向量(同 );

(4)行为向量 与兴趣向量 之间的 路由logit:

(5)双线性映射矩阵:

步骤:

(1)计算兴趣Embedding个数 ;

(2)初始化 (使用正态分布初始化);

(3)遍历迭代次数 :

(3.1)对所有的行为路由 ,计算 ;

(3.2)对所有的兴趣路由 ,计算 ,和 ;

(3.3)迭代更新 ;

3.4 Label-aware Attention Layer

通过多兴趣提取器层,对用户行为序列embedding 我们得到多个个兴趣Capsule 表达用户多样的兴趣分布,不同的兴趣Capsule表示用户兴趣的不同偏好。为了评估多个兴趣Capsule对目标Item 相关度及贡献度,我们设计标签意识的Attention 机制来衡量目标Item 选择使用哪个兴趣Capsule,具体表述见 Training服务。表达式:

其中: 是指数。

3.5 Training & Serving

训练的目标是:使用User的Embedding ,正标签 Item Embedding ,和随机抽样负标签 Items Embedding ,使用如下公式进行计算:

损失函数:

ok,MIND的理论部分介绍到此结束,欢迎讨论交流。

参考:

1. Multi-Interest Network with Dynamic Routing forRecommendation at Tmall

2. Dynamic Routing Between Capsules

3. Attention Is All You Need

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据分析1480 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档