作者:十方,公众号:炼丹笔记

熟悉双塔的人都知道,在用户侧,模型最后往往都生成一个向量去检索,这个向量不足以表达用户的多兴趣,《Multi-Interest Network with Dynamic Routing for Recommendation at Tmall》这篇就提出了一个label-aware attention把用户表达为多个兴趣。

左图展示了天猫给上亿用户个性化的推荐,右图展示了商品丰富的品类,我们肯定不希望最近买了个iphone12,打开天猫,一整面的手机配件商品推荐,多兴趣的目标,也是增加推荐的多样性。天猫上亿的用户,每个人都要每天浏览上百的商品,这些商品不同的类目,就反应了用户不同的兴趣。废话不多说,下面直入论文主题。

问题定义

多兴趣的目标,就是为每个用户从上亿规模的商品集合I中找到候选集,该候选集一般有几千个商品,都和该用户当前的兴趣相关。历史数据就尤为重要了,当前兴趣和历史行为强相关。每个样本都能表达为一个三元组(Iu, Pu, Fi),Iu表示历史上,和用户交互过的商品。Pu就是用户的基础特征(年龄性别啥的),Fi就是商品的特征了(itemid, 类目id)。

这篇论文的模型,目标就是把每个用户历史交互特征和基本特征映射成多个向量:

然后把商品映射成向量:

最后ANN召回Top N:

MIND模型

上图就是整个MIND模型,看似很复杂,其实没那么复杂,我们拆解下。

从这张图我们看到,有N个与用户交互过的item,每个item有3个特征,分别是ItemID、Category ID、Brand ID。embeding后进入Pooling Layer。这里增加Category ID和Brand ID有利于冷启动,当新的item出现,这些ID通过pooling层,还是有不错的泛化性。

other features就是用户特征了,直接embeding后concat在一起,不赘述。重要的当属多兴趣提取层了,如下图。

大家看到个熟悉的字眼,兴趣胶囊。没错,又是胶囊网络。先回归一下动态路由算法。假若有两层胶囊。

  • 低level的m个胶囊:
  • 高level的n个胶囊:

每个胶囊就是个向量,高level的胶囊是由低level的胶囊聚合而成,其实就是简单的线性加权,权重是模型自动学到的,计算权重的方式如下:

有了权重就可以线性加权了:

加权完后,就应该有激活函数了,胶囊网络中用的激活函数都是squash,因为胶囊向量的方向表示特征,长度表示概率。最后高level的胶囊计算如下:

在MIND中,高level向量就是兴趣向量,低level向量就是交互的item过pooling后的向量。这里要注意的是,在传统胶囊网络bij第一次计算是要初始化为0的,但是在MIND中却不行,因为该论文对胶囊网络做了3大改造。

  1. 共享Sij:这样做其实很容易理解,毕竟低level的胶囊,都是item向量,量纲是统一的。
  2. bij第一次按高斯分布随机初始化:这样做是因为共享Sij后,如果还把bij初始化为0,那么得到的兴趣向量都是相同的。
  3. 动态调节兴趣数量:Ku′ =max(1,min(K,log2(|Iu|))).

下面是动态路由算法的详细过程:

所以该层就是通过动态路由算法将N个item生成的N个embedding映射成k个兴趣embedding。

最后是Label-aware Attention层,该层做的事很简单,把target item的embedding作为Q,兴趣向量作为K和V,做attention操作,变成一个向量,如下:

p是我们可以调节的一个参数,p是0,最终向量就是兴趣向量的平均。如果p>1,那最终向量偏向于和target向量最接近的向量。p无穷大,就相当于选择和target向量最相关的兴趣向量作为最终向量。论文实验发现,调大p,收敛较快。

训练&在线

有了最终兴趣向量,和target向量,损失函数如下:

就是softmax计算概率,然后用logloss做梯度下降。在线服务的时候,每个兴趣向量,都用来做召回,取最相关的top N个。需要注意的一点是,在用户与item不断交互的过程中,兴趣向量是在不断改变的。实验就不详细说了,想了解调参和算法比较的去看下原文。

结语

多兴趣看似不是双塔,其实本质上还是双塔,只是用户侧向量映射成了多个。召回场景下双塔的使用是最频繁的,十方也在尝试些其他召回方式,如TDM,DR等,大家在工作学习中有什么实践经验,欢迎留言或者进群交流!

参考论文

1、Multi-Interest Network with Dynamic Routing for Recommendation at Tmall

更多干货,请关注炼丹笔记

小学生才做选择题,"塔"们,我全要!多兴趣召回!

推荐搜索炼丹笔记:向量召回 MIND多兴趣双塔模型相关推荐

  1. 向量召回 MIND多兴趣双塔模型

    作者:十方,公众号:炼丹笔记 熟悉双塔的人都知道,在用户侧,模型最后往往都生成一个向量去检索,这个向量不足以表达用户的多兴趣,<Multi-Interest Network with Dynam ...

  2. 推荐搜索炼丹笔记:SIM 用户行为序列点击率预估模型

    作者:十方,公众号:炼丹笔记 Search-based User Interest Modeling with Lifelong Sequential Behavior Data for Click- ...

  3. 推荐搜索炼丹笔记:双塔模型在Airbnb搜索排名中的应用

    作者:一元,公众号:炼丹笔记 Improving Deep Learning For Airbnb Search(KDD20) 本文是一篇偏实践的文章,不讲太多虚的,什么有效什么无效,您请细品! 将深 ...

  4. 推荐搜索炼丹笔记:MiNet阿里跨域点击率CTR预估

    作者:一元,公众号:炼丹笔记 MiNet: Mixed Interest Network for Cross-Domain Click-Through Rate Prediction(CIKM20) ...

  5. 推荐算法炼丹笔记:排序模型CTR点击率预估系列

    微信公众号:炼丹笔记 ​CTR点击率预估系列家谱 炼丹之前,先放一张CTR预估系列的家谱,让脉络更加清晰. (一)FiBiNET:结合特征重要性和双线性特征交互进行CTR预估 1.1 背景 本文发表在 ...

  6. 推荐算法炼丹笔记:CTR点击率预估系列入门手册

    ​CTR点击率预估系列家谱 炼丹之前,先放一张CTR预估系列的家谱,让脉络更加清晰. (一)FiBiNET:结合特征重要性和双线性特征交互进行CTR预估 1.1 背景 本文发表在RecSys 2019 ...

  7. 推荐算法炼丹笔记:如何让你的推荐系统具有可解释性?

    作者:一元, 公众号:炼丹笔记 可解释性和有效性是构建推荐系统的两大关键成份,之前的工作主要关注通过引入辅助信息来获得更好的推荐效果.但这些方法会存在下面的两个问题: 基于神经网络的embedding ...

  8. 推荐算法炼丹笔记:科学调参在模型优化中的意义

    作者:九羽 ,公众号:炼丹笔记 基于Embedding的推荐算法模型一直是近几年研究的热门,在各大国际会议期刊都能看到来自工业界研究与实践的成果.MF(Matrix Factorization)作为传 ...

  9. 推荐算法炼丹笔记:序列化推荐系统

    作者:一元 公众号:炼丹笔记 特约审稿:杰少 背景 序列推荐系统(SRS)不同于传统推荐系统(RSs)包括协同过滤和基于内容的过滤,SRSs试图理解和建模用户的连续行为.用户与物品之间的交互作用以及用 ...

最新文章

  1. 深度树匹配模型(TDM)
  2. 阻塞、非阻塞、多路复用、同步、异步、BIO、NIO、AIO 一锅端
  3. 卷积神经网络资料汇总
  4. 如何调用DLL (基于Visual C++6.0的DLL编程实现)
  5. Flesch Reading Ease(模拟)
  6. 三种平摊分析的方法分别为_干货|电工必须学会的三极管电路分析方法
  7. dj电商-需求分析-商品模块
  8. 普通函数的调用和函数指针的回调
  9. Linux的用户管理
  10. Party (Standard IO)
  11. 华三服务器管理口地址_不同型号服务器的默认管理IP及账号密码汇总
  12. 《产品经理面试攻略》PART 9:HR面试题
  13. win10桌面右键一直转圈是什么原因
  14. win定时关机_windows如何设置定时关机?
  15. [irving] C# Windows Beep 调用声音文件
  16. Cython简单demo
  17. NPM js 包管理器介绍
  18. Available-Python-Tuf
  19. 工具使用技巧:将图片公式转为Word里的公式
  20. linux 用户和组详解

热门文章

  1. 【unity基础系列】1、unity Texture Type设置为Advanced时纹理的格式列表
  2. hdu2063 二分图(基础题)
  3. ASP.NET Page执行顺序如:OnPreInit()、OnInit()
  4. poj 1966(顶点连通度)
  5. IOS开发之手势—UIGestureRecognizer 共存
  6. 线性回归csv数据集_数据科学的基石:统计学、机器学习、计算机科学(三)——线性回归...
  7. 父与子的编程之旅 python 3 pdf_《父与子的编程之旅》嵌套循环例题解析
  8. VHDL读写txt文件
  9. Cadence IC CDB-OA工艺库转换方法
  10. 算法 | 数据结构与算法(代码版)