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

熟悉双塔的人都知道,在用户侧,模型最后往往都生成一个向量去检索,这个向量不足以表达用户的多兴趣,《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. Facebook向量召回双塔模型

    不知道多少人还记得 <做向量召回 All You Need is 双塔>那篇,那篇介绍了国内外各个大厂做召回的用的双塔模型,其中提到一篇<Embeding-based Retriev ...

  3. 涨点利器:推荐系统中对双塔模型的各种改造升级(上)

    双塔各种改造方法概览: 大型推荐系统通常会将整个推荐链路拆分成召回.粗排.精排和重排等多个模块,以达到推荐效果和计算性能之间的平衡. 由于召回模型的候选item通常是海量的全库物品.粗排模型的候选it ...

  4. 一文看懂推荐系统:召回07:双塔模型——正负样本的选择,召回的目的是区分感兴趣和不感兴趣的,精排是区分感兴趣和非常感兴趣的

    一文看懂推荐系统:召回07:双塔模型--正负样本的选择,召回的目的是区分感兴趣和不感兴趣的,精排是区分感兴趣和非常感兴趣的 提示:最近系统性地学习推荐系统的课程.我们以小红书的场景为例,讲工业界的推荐 ...

  5. 负样本的艺术,再读Facebook双塔向量召回算法

    负样本的艺术,再读Facebook双塔向量召回算法 Facebook这篇Embedding召回的论文,之前已经有几篇文章涉及过了,分别是<Embeding-based Retrieval in ...

  6. bgb邻居关系建立模型_知识图谱上的双塔召回:阿里的IntentGC模型

    关注本人的同学可能发现,我最近点评的文章都是关于"GNN在推荐系统应用"方向的.这当然与现如今这个方向非常火有关,但是作为一个合格的炼丹师+调参侠,总要搞清楚一门技术为什么火?这么 ...

  7. 知识图谱上的双塔召回:阿里的IntentGC模型

    关注本人的同学可能发现,我最近点评的文章都是关于"GNN在推荐系统应用"方向的.这当然与现如今这个方向非常火有关,但是作为一个合格的炼丹师+调参侠,总要搞清楚一门技术为什么火?这么 ...

  8. ####好好好#####知识图谱上的双塔召回:阿里的IntentGC模型

    关注本人的同学可能发现,我最近点评的文章都是关于"GNN在推荐系统应用"方向的.这当然与现如今这个方向非常火有关,但是作为一个合格的炼丹师+调参侠,总要搞清楚一门技术为什么火?这么 ...

  9. 召回模型:DSSM双塔模型

    文章目录 DSSM(2013) DNN for Computing Semantic Features Word Hashing Youtube双塔模型(2019) Modeling Framewor ...

最新文章

  1. linux shell ls 列出文件绝对路径
  2. MySQL带关系运算符的查询
  3. 【视频课】一课掌握模型设计核心理论与实战技巧
  4. rest api 示例2_REST API教程– REST Client,REST Service和API调用通过代码示例进行了解释
  5. iOS开发——高级技术本地化与国际化详解
  6. decimal这个数据类型的用法,保证你看懂
  7. 给我的Nokia3100
  8. 2017年全球ETF发展报告
  9. 解决:‘webpack-dev-server‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件
  10. win10 系统和office2016及visio2016专业版下载地址
  11. Logistic模型预测人口增长
  12. 翻译:Tree Energy Loss: Towards Sparsely Annotated Semantic Segmentation
  13. java 重写equals的要点_重写equals 方法的注意事项
  14. ArcGIS 字段值替换
  15. 给世界上色——滤镜底层原理
  16. iphone使用技巧大全
  17. ( )是专用计算机系统,PLC是一种工业控制用的专用计算机,是由( )与软件系统两大部分组成...
  18. Windows 编程常用键盘消息命令
  19. COMTRADE录波数据导入MATLAB分析的方法
  20. 《Densely Connected Convolutional Networks》论文心得

热门文章

  1. html5相关笔记(一)
  2. [每天一道A+B]签到检测程序
  3. ubuntu安装SSH2
  4. 使用AngularJS 进行Hybrid App 开发已经有一年多时间了,这里做一个总结
  5. JavaScript中对象的构造方法
  6. 深度学习算法_爱奇艺深度学习算法实习生面经
  7. selenium threading运行后退出_Selenium的使用
  8. 数字电路是如何搭建的
  9. proe3.0安装教程
  10. hfss13.0安装教程