推荐算法炼丹笔记:阿里序列化推荐算法ComiRec
作者:十方
公众号:炼丹笔记
Controllable Multi-Interest Framework for Recommendation
1.ComiRec与众不同之处
该论文是阿里在2020年发表在KDD的论文,解决的是序列化推荐的问题,用user以往的行为序列去推荐user接下来最感兴趣的item。这篇论文,认为之前很多序列化推荐方法都最终产生一个user emb去item emb空间中检索出最相关的item,而user在一段时间内,是有多种兴趣的,应该要映射到多个emb去检索。
如上图所示,Emma点击了3大类的item,分别是首饰,包包,化妆品,推荐的时候也应该推荐这3大类的商品。
2.问题定义
3.多兴趣序列推荐框架
当有了用户行为序列后,获得多兴趣向量的方法有很多,论文主要介绍了两种,一个是动态路由方法(ComiRec-DR),另一个是self-attention(ComiRec-SA)方法。
如上图所示,模型的输入就是用户行为序列(和用户有交互的itemID seq)。ItemID seq输入到Embedding Layer里,然后再输入到Multi-Interest Extraction模块中,获得多个兴趣向量,最后取离样本label(single Item ID)最近的兴趣向量计算softmax损失。Serving阶段,每个兴趣向量召回Top-N Items,然后输入到Agrregation Module,最终平衡准确性和多样性召回Top-N的items。
4.动态路由方法
提到动态路由算法,不得不提到胶囊网络。我们知道,每个神经元的输出多半是个概率,或者是激活的程度,是一个标量,那么有没有可能一个神经元包含其他属性呢,从而达到提升网络表达能力的效果。胶囊网络就是如此,可以用向量来代替单个神经元的标量。一个胶囊就是一个向量,表示特定类型实体的各个参数。输入为较为低层次的胶囊:
其中,n表示胶囊的个数,k表示每个胶囊内向量的维数,对应到ComiRec-DR中,n表示序列的长度,k表示每个item emb的维数。
这一步大家可以理解为,item空间和兴趣空间建立联系。然后做预测向量的加权求和:
由算法进行学习的。最终胶囊网路的输出,也不是用传统的Relu这样的激活函数,而是用的非线性函数squashing,为了确保短向量可以被压缩至接近0的长度,长向量压缩至接近1的长度,并且保证方向不变,看下squashing长啥样:
各位聪明的读者已经发现,我们指定最终层j的数量(最终胶囊的数量),即为最终兴趣的个数。这样论文就完美的把Comi和胶囊网络完美结合了,最后通过动态路由算法学习参数即可。下图是动态路由算法的伪代码:
5.Self-Attentive方法
这个方法相对于动态路由方法,就特别容易理解了。用了self-attention的机制,给定一个矩阵H(d * n),n表示用户序列的长度,d表示每个item的纬度,我们用下式计算attention值:
W1是da* d的矩阵,W2是da * k的矩阵,我们知道最终A是n * k的矩阵,最后通过attention矩阵聚合用户序列,计算出Vu:
Vu是d * k的矩阵,表示k个兴趣,每个兴趣是d维向量。
6.模型训练
模型训练通过找到和目标item (ei)最接近的兴趣向量(vu),然后用softmax计算出目标item的概率,最后累加logloss。因为负例数量庞大,论文提到进行采样处理。
7.Aggregation Module
在获得多个兴趣向量后,每个向量都能ANN检索出top-N个item,怎么聚合这些item呢?一个思路就是按点积排序后取top,这是提升推荐系统准确率很有效的方法,但是考虑到多样性,就出现了下式:
公式比较简单,同时考虑了user和item的关系,还有item和item直接的关系。user和item关系越强,f越大,item直接关系越少,g函数越大,所以我们要最大化Q,就可以平衡准确率和多样性。
8.结论
看实验结果,我们看到在亚马逊和淘宝数据集上,ComiRec都效果优于很多算法,同时我们还看到在淘宝数据上,多样性确实提高了,十方目前也在探索该算法在广告推荐领域的应用,欢迎大家加入炼丹笔记一起交流学习。
http://weixin.qq.com/r/XSjP1zrEzGezrX60931P (二维码自动识别)
推荐算法炼丹笔记:阿里序列化推荐算法ComiRec相关推荐
- 推荐算法炼丹笔记:序列化推荐算法Bert4Rec
作者:一元 公众号:炼丹笔记 之前和海归博士朋友聊天,他说,这篇文章是他所有的复现算法中,处理序列最好的算法之一.原本以为Bert只常见于NLP中,本文我们一起详细地阅读学习一下如何使用Bert来做推 ...
- 推荐算法炼丹笔记:序列化推荐算法SASRec
作者:一元 ,公众号:炼丹笔记 背景 本文介绍一篇较早使用Self-Attention进行序列化推荐的文章,也是目前大多数序列化推荐算法非常重要的Baseline,最典型的场景可以参见标题,该篇文章的 ...
- 推荐算法炼丹笔记:序列化推荐系统
作者:一元 公众号:炼丹笔记 特约审稿:杰少 背景 序列推荐系统(SRS)不同于传统推荐系统(RSs)包括协同过滤和基于内容的过滤,SRSs试图理解和建模用户的连续行为.用户与物品之间的交互作用以及用 ...
- 推荐算法炼丹笔记:推荐系统采样评估指标及线上线下一致性问题
本文对于推荐系统中的采样评估指标进行了讨论,内容略多, 还有一些数学推导, 有兴趣的可以去阅读文末给出的原始论文链接, 此处直接列出核心观点: 在评估推荐算法的效果时,能不采样就不采样! 除了AUC, ...
- 推荐算法炼丹笔记:如何让你的推荐系统具有可解释性?
作者:一元, 公众号:炼丹笔记 可解释性和有效性是构建推荐系统的两大关键成份,之前的工作主要关注通过引入辅助信息来获得更好的推荐效果.但这些方法会存在下面的两个问题: 基于神经网络的embedding ...
- 推荐算法炼丹笔记:科学调参在模型优化中的意义
作者:九羽 ,公众号:炼丹笔记 基于Embedding的推荐算法模型一直是近几年研究的热门,在各大国际会议期刊都能看到来自工业界研究与实践的成果.MF(Matrix Factorization)作为传 ...
- 推荐算法炼丹笔记:排序模型CTR点击率预估系列
微信公众号:炼丹笔记 CTR点击率预估系列家谱 炼丹之前,先放一张CTR预估系列的家谱,让脉络更加清晰. (一)FiBiNET:结合特征重要性和双线性特征交互进行CTR预估 1.1 背景 本文发表在 ...
- 推荐算法炼丹笔记:CTR点击率预估系列入门手册
CTR点击率预估系列家谱 炼丹之前,先放一张CTR预估系列的家谱,让脉络更加清晰. (一)FiBiNET:结合特征重要性和双线性特征交互进行CTR预估 1.1 背景 本文发表在RecSys 2019 ...
- 推荐算法炼丹笔记:阿里序列化推荐算法MRIF
MRIF: Multi-resolution Interest Fusion for Recommendation(SIGIR2020) 作者:一元,公众号:炼丹笔记 背景 本文分享阿里的最新的工作, ...
最新文章
- arm linux嵌入式网络控制系统,基于ARMLinux的嵌入式网络控制系统的研究与设计
- python 整数输出 d f_pythn print格式化输出---------%s 和 % d 都是什么意思?
- axure插件怎么用_CAD插件不会用怎么行?CAD插件大全合集,超实用绘图软件,高效...
- Java数组与容器类分析资料--数组、List和Set、Map-asp.net关注
- 什么时候不需要回表?
- Android加载自定义字体出错,盘点Android使用自定义字体遇到的坑
- 用python计算ph_用于水和水蒸汽物性计算的Python模块——iapws
- android horizontalscrollview属性,Android中HorizontalScrollView使用方法详解
- Dart语言详解(一)——详细介绍
- 网络期刊(个人使用)
- 【C++】endl的作用
- matlab 图片合成视频
- 房间类游戏后台框架(三)—大厅服务器
- 条码公司的互联网业务调查分析及展望
- ColorMatrix 5*5颜色矩阵
- DELL 1520 笔记本拆机
- Spring Cloud Alibaba 整合Nacos实战
- 键入网址再按下回车,后面究竟发生了什么?
- python下载电影天堂视频教程_python爬虫实现下载电影天堂电影
- Nessus快速上手-扫描任务
热门文章
- 实现Runnable接口的好处
- search Paths $(SRCROOT)和$(PROJECT_DIR)区别
- iOS编程——经过UUID和KeyChain来代替Mac地址实现iOS设备的唯一标示(OC版)
- 微信公众开发api接口
- 苹果 App Store 申请和管理相关知识
- php抓取页面400错误
- java 爬虫 百度新闻_基于HttpClient实现网络爬虫~以百度新闻为例
- MYSQL数据库VALUES_MySQL数据库“十宗罪”(十大经典错误案例)
- 考研本校与外校如何选择?
- 2021-08-30 centos连接WiFi方法