推荐搜索炼丹笔记:向量召回 MIND多兴趣双塔模型
熟悉双塔的人都知道,在用户侧,模型最后往往都生成一个向量去检索,这个向量不足以表达用户的多兴趣,《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大改造。
- 共享Sij:这样做其实很容易理解,毕竟低level的胶囊,都是item向量,量纲是统一的。
- bij第一次按高斯分布随机初始化:这样做是因为共享Sij后,如果还把bij初始化为0,那么得到的兴趣向量都是相同的。
- 动态调节兴趣数量: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多兴趣双塔模型相关推荐
- 向量召回 MIND多兴趣双塔模型
作者:十方,公众号:炼丹笔记 熟悉双塔的人都知道,在用户侧,模型最后往往都生成一个向量去检索,这个向量不足以表达用户的多兴趣,<Multi-Interest Network with Dynam ...
- 推荐搜索炼丹笔记:SIM 用户行为序列点击率预估模型
作者:十方,公众号:炼丹笔记 Search-based User Interest Modeling with Lifelong Sequential Behavior Data for Click- ...
- 推荐搜索炼丹笔记:双塔模型在Airbnb搜索排名中的应用
作者:一元,公众号:炼丹笔记 Improving Deep Learning For Airbnb Search(KDD20) 本文是一篇偏实践的文章,不讲太多虚的,什么有效什么无效,您请细品! 将深 ...
- 推荐搜索炼丹笔记:MiNet阿里跨域点击率CTR预估
作者:一元,公众号:炼丹笔记 MiNet: Mixed Interest Network for Cross-Domain Click-Through Rate Prediction(CIKM20) ...
- 推荐算法炼丹笔记:排序模型CTR点击率预估系列
微信公众号:炼丹笔记 CTR点击率预估系列家谱 炼丹之前,先放一张CTR预估系列的家谱,让脉络更加清晰. (一)FiBiNET:结合特征重要性和双线性特征交互进行CTR预估 1.1 背景 本文发表在 ...
- 推荐算法炼丹笔记:CTR点击率预估系列入门手册
CTR点击率预估系列家谱 炼丹之前,先放一张CTR预估系列的家谱,让脉络更加清晰. (一)FiBiNET:结合特征重要性和双线性特征交互进行CTR预估 1.1 背景 本文发表在RecSys 2019 ...
- 推荐算法炼丹笔记:如何让你的推荐系统具有可解释性?
作者:一元, 公众号:炼丹笔记 可解释性和有效性是构建推荐系统的两大关键成份,之前的工作主要关注通过引入辅助信息来获得更好的推荐效果.但这些方法会存在下面的两个问题: 基于神经网络的embedding ...
- 推荐算法炼丹笔记:科学调参在模型优化中的意义
作者:九羽 ,公众号:炼丹笔记 基于Embedding的推荐算法模型一直是近几年研究的热门,在各大国际会议期刊都能看到来自工业界研究与实践的成果.MF(Matrix Factorization)作为传 ...
- 推荐算法炼丹笔记:序列化推荐系统
作者:一元 公众号:炼丹笔记 特约审稿:杰少 背景 序列推荐系统(SRS)不同于传统推荐系统(RSs)包括协同过滤和基于内容的过滤,SRSs试图理解和建模用户的连续行为.用户与物品之间的交互作用以及用 ...
最新文章
- 深度树匹配模型(TDM)
- 阻塞、非阻塞、多路复用、同步、异步、BIO、NIO、AIO 一锅端
- 卷积神经网络资料汇总
- 如何调用DLL (基于Visual C++6.0的DLL编程实现)
- Flesch Reading Ease(模拟)
- 三种平摊分析的方法分别为_干货|电工必须学会的三极管电路分析方法
- dj电商-需求分析-商品模块
- 普通函数的调用和函数指针的回调
- Linux的用户管理
- Party (Standard IO)
- 华三服务器管理口地址_不同型号服务器的默认管理IP及账号密码汇总
- 《产品经理面试攻略》PART 9:HR面试题
- win10桌面右键一直转圈是什么原因
- win定时关机_windows如何设置定时关机?
- [irving] C# Windows Beep 调用声音文件
- Cython简单demo
- NPM js 包管理器介绍
- Available-Python-Tuf
- 工具使用技巧:将图片公式转为Word里的公式
- linux 用户和组详解
热门文章
- 【unity基础系列】1、unity Texture Type设置为Advanced时纹理的格式列表
- hdu2063 二分图(基础题)
- ASP.NET Page执行顺序如:OnPreInit()、OnInit()
- poj 1966(顶点连通度)
- IOS开发之手势—UIGestureRecognizer 共存
- 线性回归csv数据集_数据科学的基石:统计学、机器学习、计算机科学(三)——线性回归...
- 父与子的编程之旅 python 3 pdf_《父与子的编程之旅》嵌套循环例题解析
- VHDL读写txt文件
- Cadence IC CDB-OA工艺库转换方法
- 算法 | 数据结构与算法(代码版)