1. 2020_KDD_ComiRec
论文综述:主要是应用于召回,是序列化推荐的解决方案。提出一个新的序列化推荐模块-ComiRec
解决问题:
- 聚焦匹配问题,提升召回的性能,也就是候选物的精度
- 解决推荐系统多样性的长尾问题
- 提出序列化推荐的问题,预测用户下一个可能交互的商品。主要是由于相邻用户行为之间存在相关性
主要方法:
- 模型分为多元兴趣模块和聚合模块,其中多元兴趣模块从用户行为序列中捕捉多种兴趣,在获取集合中获取候选集,然后将候选集输入到聚合模块获取top-k。其中聚合模块利用可控因素来平衡推荐的准确性和多样性
- 首先通过用户历史行为序列计算出用户的embedding,然后基于embedding检索用户的候选物品集合。然后利用快速K近邻(KNN)算法从大规模物品池中为每个用户生成最接近的物品集。
- 多元兴趣提取:动态路由法(ComiRec-DR)和自注意力机制法(ComiRec-SA)。
- 动态路由:将用户行为序列的物品embedding列表看着是最初的胶囊,多元用户兴趣看作是兴趣胶囊
- 自注意机制:通过用户行为序列学习到的自注意力机制的向量a,由于序列存在位置关系,可以添加位置矩阵,然后得到自注意机制A,最终得到矩阵HA
- 为了控制多样性聚合的时候添加了控制因子,可以调控数据平衡
模型结构:
最终成果:
- 于mind网络结构对比,都是使用记忆网络从长序列中捕获用户兴趣,都是针对多兴趣。不同处是本文用多兴趣提取模块提取用户多兴趣。用Behavior-to-Interest(B2I)去自适应用户的行为聚合用户表示向量
参考:
2. Embedding-based Retrieval in Facebook Search (EBR)
模型结构:
模型是经典的双塔结构。loss采用的是pairwise hinge loss,即同一个用户与正文章的匹配度要比用户与负文章的匹配度高于一定的阈值。离线评估的方式采用的取top_K召回结果与用户实际点击做交集,然后计算precision/recall
创新方法:
- 负样本构造:随机构造easy_negative 和抽样构造hard_negative
- easy_negative中的采样,不是对整个样本库的等概率抽样,当热门物料作为正样本时,采用降采样,减少对正样本的绑架,导致热门物料过于集中;当热门物料为负样本时,要适当过采样,抵消热门物料对正样本的绑架,并且也要保证负样本中有机会出现冷门物料
- hard_negative:这里采用的方法是让模型自己学习获取不是那么相似的样本,这里采用的是上一版本中召回位置在101~500上的物料(排名靠前为正样本,排名靠后太随机)。上一版本作用在哪个候选集上,文中提出online和offline两个版本。online是一个batch中所有user与所有正样本的交叉,offline是拿上一版的模型过一下历史数据。还有一种是人工寻找hard negative
- Easy:hard = 100:1
- 模型融合,就是用不同难度的negative训练不同难度的模型,再做多模型的融合。
- 并行融合:不同样本训练多个模型,对样本分别打分,然后做加权求和,线上召回时将权重乘在user embedding或item embedding一侧,然后将各个模型产出的embedding拼接起来
- 串行融合:候选物料先经过easy model的初筛,再经过hard model的二次筛选,剩余结果再交给下游,更复杂的粗排或是精排。
- 整体链路优化。新的召回算法,往往不受ranker的待见。ranker是在已有召回算法筛选过的数据的基础上训练出来的,<user,doc>之间的匹配模式,只有符合某个老召回描述的匹配模式,才能得到ranker的青睐,才有机会曝光给用户,才能排在容易被用户点击的好位置。
- 将各路召回的打分作为特征,加入到训练ranker的过程中。但是,这改变不了新召回是少数派的现实,新召回的打分作为特征在训练样本中的占比有限,发挥的作为也可能有限
- 将召回结果交人工审核,发现bad case,增强下一版本的训练样本。这就是一种人工寻找hard negative的方式,不太现实。
注解:
- Faiss全称是Facebook AI Similarity Search,它是核心是索引的概念、封装一组向量、并且选择是否进行预处理,帮忙高效检索。主要有暴力检索L2距离、精确搜索,倒排索引。
3. G-Rec
- 网络结构
- 起源于Convolutional Sequence Embedding Recommendation Model。其思想是在时间和潜在空间中将一组最近的物品序列嵌入到一张“图像”中,并利用卷积滤波器来学习作为图像的局部特征的序列模式,这种方法为提取长期兴趣和序列模式提供了一种统一而又简洁的网络结构。包含两个卷积操作:水平卷积和垂直卷积,水平卷积主要捕获相邻物品的交互关系垂直军阿基主要是捕获用户对每个维度embedding的加权和
- 之后2019年腾讯看点提出NextItNet
- 主要解决上述的三个问题:
(1)max-pooling操作并不能分辨出某个重要特征是出现一次还是多次,而且忽视了位置信息,不利于长序列的学习;
(2)Caser中只有一层卷积的浅层网络结构不利于建模长程依赖及复杂关系。因此提出使用空洞卷积替代普通卷积,在不增加参数量的情况下增加感受域(receptive filed)大小;
(3)使用残差连接解决堆叠多层卷积核带来的梯度消失问题,进而移除池化层
- 空洞卷积结构
-
下图中的(a)和(b)是NextItNet用到的两种空洞残差模块,都是由normalization层、激活层(ReLU)、卷积层和短路连接组成。(a)类模块中包含3个卷积核:一个1*3的空洞卷积和2个常规卷积。(b)类模块中只有两个空洞卷积核。为了避免信息泄露,NextItNet对1维空洞卷积使用dropout-mask防止模型看到未来的item信息,即将序列中预测位置之后的物品项padding掉。
-
GRec 是2020年腾讯看点团队的进一步迭代。然用户行为是有序发生的,但其中的顺序依赖关系可能并不是很明确,也不一定要将用户会话建模为严格的序列,因此预测目标后面的未来数据也可以用于学习用户兴趣,而当前序列数据建模的两种常用方式,数据扩充和自回归训练都没有利用未来数据。利用未来数据的一个极大风险就是数据泄露,腾讯的作者们提出基于填空的编码-解码器框架(GRec),解决了数据泄露问题。具体做法是,将用户会话序列中的一部分项通过其他符号(如“_”)隐藏掉,输入编码器学习到各个位置的表示,解码器以额外的Embedding并根据这些表示对隐藏掉的物品项做预测。
-
结果对比
4. 浅度阅读召回列表
- 无序行为的匹配:MLP方法、Auto-Encoder方法和Attention方法。
- YoutubeDNN:将多行为通过embedding编码的方式,通过平均池化统计结果。但是不能很好的统计交叉结果
- MV-DNN:DSSM的衍生,2016年微软提出。主要特性是一个领域相似的特征则在另一个维度内也相似。该论文在数据降维上面做了很大的工作:top特征、k-mean聚类、LSH、缩减训练样本
- DeepMF:2017年提出,基于用户对物品的评分矩阵
- Auto-rec :演进过程:auto-rec=>CDAE=>Mult-VAE(Netflix)。2015年提出,基于用户或者item的评分函数,感觉item的评分函数会更好点,应为数量相对更稳定一点。CDAE是auto-rec的改进版本,主要增加了用户信息和随机噪声。Netflix2018年提出,使用多项式似然变分自编码器
- attention方法: FISM=>NAIS。其中NAIS网络用attention表示每一个item的权重,每一个item用两个embedding表示,分别表示目标物品和交互物品
- ACF算法:有两层注意力得分,一个是用户对推荐商品的注意力,还有一个是用户对推荐产品部分的注意力得分
- 有序行为的匹配:需要考虑用户历史行为的时间顺序
RNN相关方法:
- GRU4Rec:16年提出,利用GRU对用户的历史行为进行建模,以用户历史的点击作为一个输入序列,输入可以是当前物品的item也可以是截止该位置之前的所有物品的加权和,使用的有BRP损失和top1损失函数。该方法使用用户的历史点击作为输入,会存在误操作的噪声,17年添加了注意力消除这个影响
-
Latent Cross: 2018年youtube结合情景场景和时序信息。
CNN的方法:
-
Caser18年在电商场景中使用,对序列数据建模,看着一张二维图像,
- NextItNet19年腾讯提出,主要是基于上一个版本更改为空洞卷积的方式,增大了感受野的大小
- GRec:20年腾讯基于上一个版本的迭代,使用填空的方式处理可能存在超越的数据
-
PerterRec:2020腾讯看点
Attention的方法:
-
NARM:通过两个GRU学习用户行为序列的全局和局部信息
- SASRec 2018年基于transformer的方法提出
- AttRec:18年基于自注意力机制使用
- SHAN:2018年浙大基于用户建模的长短期时间
- STAMP:2018年基于自注意力机制
- 多模态表示学习
- DeepCoNN:基于用户评论表示学习
- NARRE:对评价加权学习
- CARP:基于胶囊网络,结合用户评论做召回
- MMGCN 19年小视频推荐
- 我的微信小程序
- 这是我的微信小程序扫一扫
-
- 我的微信公众号
- 我的微信公众号扫一扫
-
评论