推荐系统论文11月组队学习

TASK6:Controllable Multi-Interest Framework for Recommendation

基于Attention的单一兴趣建模

这里我们将用户的行为序列计作,这里的nnn表示用户行为序列的长度,ddd表示Embedding向量的维度,这里的HHH就代表着用户行为序列中所有Item的Embedding向量,这里我们引入两个可学习参数​,我们知道引入Attention的核心目的是为了学习出某些东西的权重,以此来凸显重要性搞的特征,淡化重要性低的特征,在我们的Comirec-SA中,我们的特征重要性(也就是我们学习出来的Attention Score)是针对序列中每个Item的Attention Score,在有了Attention Score之后就可以对序列中的Item进行加权求和得到序列的单一兴趣表征了,我们下面先来看单一兴趣建模时的Attention Score计算:

 可以看出,我们所得的,这里的aaa就是我们对序列的Attention Score,再将aaa与序列的所有Item的Embedding进行加权求和就可以得到单一兴趣的建模,下面我们将其推广到多兴趣建模上

 基于Attention的多兴趣建模

我们在基于Attention的单一兴趣建模中得到了单一兴趣建模的方法,我们可以把1.1中的w2∈Rdaw_2 \in \mathbb{R}^{d_a}w2​∈Rda​ 扩充至 W2∈Rda×KW_2 \in \mathbb{R}^{d_a \times K}W2​∈Rda​×K,这样的话,我们的Attention Score的计算公式就变成:

多样性控制

这里论文提出了一种多样性策略,即我们希望给用户所推荐的商品的多样性更强一些,那我们该怎么衡量多样性呢,这里作者提出将Item的类别作为衡量多样性的基础,例如,我们可以通过下式来衡量两个Item i,j之间的多样性:

g(i,j)=σ(CATE(i)≠CATE(j))g(i,j)= \sigma(CATE(i) \ne CATE(j))g(i,j)=σ(CATE(i)=CATE(j))

这里的σ\sigmaσ为指示函数,这里就是如果两个item的类别不相同,那么其结果就是1,反之就是0,可以看出如果一个推荐集合中两两Item的多样性得分大的话,那么可以认为这个推荐结果中的Item的类别分布较为分散,也就可以认为推荐结果的多样性较高了,但是这个时候要注意,当推荐结果的多样性较高的时候,往往推荐的精度就会下降,这是一个Trade Off,所以我们需要一个目标来量化我们的推荐结果,这里的目标函数如下:

 可以看出,我们的目标函数中即包含了多样性的指标,还包含了推荐精度的指标,这里通过 λ\lambdaλ 来控制这两部分的占比,λ\lambdaλ越大,可以认为对多样性的需求就越高与此同时,模型的精度可能就会小一点。

TASK5:Controllable Multi-Interest Framework for Recommendation

可控多兴趣推荐框架

这是一个多兴趣召回的框架

摘要:我们将推荐系统形式化为一个顺序推荐问题,旨在预测用户可能与之交互的下一个项目。最近的作品通常从用户的行为序列中给出整体嵌入。然而,统一的用户嵌入不能反映用户在一段时间内的多重兴趣。在本文中,我们提出了一种新的用于顺序推荐的可控多兴趣框架,称为ComiRec。我们的多兴趣模块从用户行为序列中捕获多个兴趣,可用于从大规模项目库中检索候选项目。然后将这些项目输入聚合模块以获得总体建议。聚合模块利用可控因素来平衡推荐准确性和多样性。我们在亚马逊和淘宝这两个真实世界的数据集上进行了顺序推荐的实验。实验结果表明,与最先进的模型1相比,我们的框架实现了显著的改进。我们的框架也已成功部署在离线阿里巴巴分布式云平台上。

我们提出的框架的一个激励性例子。电子商务平台用户Emma对珠宝、手提包和化妆品有多种兴趣。我们的多兴趣提取模块可以从她的点击序列中捕获这三个兴趣。每个兴趣基于兴趣嵌入独立地从大规模项目池中检索项目。聚合模块将来自不同兴趣的项目组合起来,并为Emma输出总的前N个推荐项目。

多兴趣抽取模块总结了2种方法:一个是之前应用到MIND的Capsule Network,一个是Self-Attention
 

顺序推荐模型概述。我们模型的输入是一个用户行为序列,其中包含一个项目ID列表。项目ID被馈送到嵌入层,并被转换为项目嵌入。兴趣嵌入通过多兴趣提取模块生成,然后可用于模型训练和服务。对于模型训练,将选择距离目标嵌入最近的兴趣嵌入来计算采样的软最大损失。对于服务,每个兴趣嵌入将独立地检索前N个最近的项目,然后将其馈送到聚合模块。聚合模块通过平衡推荐准确性和多样性的可控过程生成总体前N项。

Related Work

「Neural Recommender Systems」: NCF,NFM,DeepFM,xDeepFM,DMF,DCN,CMN等

「Sequential Recommendation」: FPMC,HRM,DIN,SDM等

「Recommendation Diversity 」:推荐系统多样性

「Attention注意力机制」

「Capsule Network」: MIND,CARP

METHODOLOGY

TASK4:Multi-Interest Network with Dynamic Routing for
Recommendation at Tmall

天猫推荐动态路由的多兴趣网络

该论文是阿里巴巴2019年在CIKM上发表的一篇关于多兴趣召回的论文,改论文属于U2I召回的一种,传统的召回方法往往针对User的行为序列只生产单一的向量,但是在用户行为序列中往往蕴含着多种兴趣,生产单一的用户的嵌入向量无法很好的对用户的行为进行建模,所以阿里巴巴提出了对用户的行为序列生产多个向量以表示用户的多个兴趣表征,从而大大的提高了用户的行为表征能力,我们今天阅读学习的这篇论文就是主要来讨论多兴趣建模相关的一篇工作

本文提出的方法解决了天猫主页的个性化推荐(占天猫流量的约50%)中的召回部分。
在天猫的个性化推荐场景中,无论是召回还是排序阶段,最重要的都是为用户兴趣建模。然而建模用户兴趣存在问题:一个用户可能对多种物品感兴趣。
现有的推荐算法采取过多种方法来对用户兴趣建模。基于协同过滤的方法用用户历史行为或隐性因子来表示用户兴趣,这种方法的局限性在于稀疏性和计算困难。深度学习方法通常将用户兴趣表示为一个低维度的embedding,然而这种方法中,embedding的维度可能会成为表达用户各种兴趣的瓶颈。DIN在表示用户兴趣时引入了attention,然而由于计算复杂性,这种方法只能用在排序阶段。
本文提出的MIND模型关注点在于在排序阶段为用户的兴趣多样性建模。我们设计了一个多兴趣抽取层,利用动态路由来将用户的历史聚合为用户的embedding表达。这一动态路由可以看做是一种soft clustering,将用户历史聚合成一些簇。这样对于一个用户,MIND就可以输出多个向量来表达用户的多种兴趣。

MIND概述。MIND将具有用户简档特征的用户行为作为输入,并在推荐的匹配阶段输出用于项目检索的用户表示向量。来自输入层的Id特征通过嵌入层被转换为嵌入,并且每个项的嵌入被池化层进一步平均。用户行为嵌入被馈送到多兴趣提取器层,该层产生兴趣胶囊。通过将兴趣胶囊与用户简档嵌入级联,并通过几个ReLU层对级联的胶囊进行变换,获得用户表示向量。在培训过程中,引入了额外的标签感知注意力层来指导培训过程。在服务时,使用多个用户表示向量通过近似最近邻查找方法来检索项目。

未完待续。。。

TASK3:Session-based Recommendation with Graph Neural Networks

introduction:随着互联网上信息量的快速增长,推荐系统成为帮助用户缓解信息过载问题并在许多Web应用程序(例如搜索、电子商务和媒体流网站)中选择有趣信息的基础。大多数现有的推荐系统假设用户简档和过去的活动被不断地记录。然而,在许多服务中,用户标识可能是未知的,并且只有正在进行的会话期间的用户行为历史是可用的。因此,在一个会话中对有限行为进行建模并相应地生成推荐是非常重要的。相反,依赖于充分的用户项目交互的传统推荐方法在这种情况下产生准确结果方面存在问题。由于其高度实用价值,人们对这一问题的研究兴趣日益增加,并提出了许多基于会话的建议。

首先,如果在一个会话中没有足够的用户行为,这些方法很难估计用户表示。通常,这些RNN方法的隐藏向量被视为用户表示,从而可以基于这些表示生成推荐,例如,NARM的全局推荐者。然而,在基于会话的推荐系统中,会话大多是匿名的且数量众多,会话点击中涉及的用户行为通常受到限制。因此,很难准确地估计来自每个会话的每个用户的表示。其次,先前的工作表明,项目转换的模式很重要,可以作为基于会话的推荐中的局部因素(Li et al.2017a;Liu et al.2018),但这些方法总是模拟连续项目之间的单向转换,忽略了上下文之间的转换,即会话中的其他项目。因此,这些方法往往忽略了远距离项目之间的复杂转换。为了克服上述局限性,为了简洁起见,我们提出了一种基于会话的图形神经网络推荐的新方法SR-GNN,以探索项目之间的丰富过渡并生成项目的准确潜在向量。图形神经网络(GNN)设计用于生成图形的表示。最近,它已被广泛用于自然语言处理和计算机视觉应用的图形结构依赖性建模,例如脚本事件预测(Li,Ding和Liu 2018)、情境识别(Li等人,2017b)和图像分类(Marino,Salakhutdinov和Gupta 2017)。对于基于会话的推荐,我们首先从历史会话序列构建有向图。基于会话图,GNN能够捕获项目的转换并相应地生成准确的项目嵌入向量,这是传统的序列方法难以揭示的,如基于MC和基于RNN的方法。基于准确的项目嵌入向量,所提出的SR-GNN构造了更可靠的会话表示,并且可以推断出下一个点击项目。图1说明了所提出的SRGNN方法的工作流程。首先,所有会话序列都被建模为有向会话图,其中每个会话序列都可以被视为子图。然后,依次进行每个会话图,并通过门控图神经网络获得每个图中涉及的所有节点的潜在向量。之后,我们将每个会话表示为该会话中用户的全局偏好和当前兴趣的组合,其中这些全局和本地会话嵌入向量都由节点的潜在向量组成。最后,对于每个会话,我们预测每个项目下次单击的概率。在真实世界代表性数据集上进行的大量实验证明了所提出的方法在艺术状态下的有效性。这项工作的主要贡献总结如下:

  • 我们将分离的会话序列建模为图形结构化数据,并使用图形神经网络捕捉复杂的项目转换。据我们所知,它为基于会话的推荐场景中的建模提供了一种新颖的视角。
  • 为了生成基于会话的推荐,我们不依赖用户表示,而是使用会话嵌入,这可以仅基于每个会话中涉及的项目的潜在向量来获得。
  • 在真实世界数据集上进行的大量实验表明,SR-GNN明显优于最先进的方法

基于会话的推荐旨在仅基于用户当前的连续会话数据来预测用户下一步将单击哪个项目,而无需访问长期偏好配置文件。在这里,我们给出这个问题的公式如下。在基于会话的推荐中,让V={v1,v2,…,vm}表示由所有会话中涉及的所有唯一项组成的集合。匿名会话序列s可以由按时间戳排序的列表s=[vs,1,vs,2,…,vs,n]表示,其中vs,i∈ V表示会话s内用户的点击项目。基于会话的推荐的目标是预测下一次点击,即会话s的序列标签vs,n+1。排名前K的项目将成为推荐的候选项目。

 提出的SR-GNN方法的工作流程。我们将所有会话序列建模为会话图。然后,逐个处理每个会话图,并通过门控图神经网络获得生成的节点向量。之后,使用注意力网将每个会话表示为该会话的全局偏好和当前兴趣的组合。最后,我们预测每个会话中出现下一个单击项目的概率。

SR-GNN框架主要由四个部分构成。第一部分是构图。出现在一个会话中的item根据点击的先后顺序被构建成有向图,然后将所有的session序列建模到一起形成item图。这个有向图体现了item的先后顺序关系。第二部分是item向量表示。所有的item都是有唯一标识的,它们在session有向图中是能够彼此区别的。然后使用GGNN对每个item进行Embedding,然后得到每个item的向量表示。但是在一个序列中,一个item可能重复出现多次,为此论文作者提出了一种新的矩阵构造方式来解决这个问题。第三个部分是session向量表示。Session向量可以作为当前会话序列中所有item的偏好或者兴趣,可以理解为一种商品的类别。作者通过两个线性层分别得到session的局部表示和全局表示,然后通过一个线性变换将局部表示和全局表示整合到一起,形成session的表示。第四个部分是预测模块,它使用交叉熵损失函数训练模型,对向量进行softmax操作,得到预测结果。

  •  每一个session序列中的item都根据它点击时间被建模成有向图,其中每个节点表示一个item,每条边表示用户的点击行为。这样,出现在不同session中的item都可以被建模成有向图。当然,正如前面所讲,在一个有向图中,同一个节点(item)是可能重复出现的。为此,作者提出了一种新的矩阵构造方式来解决这个问题,如下代码所示:
  • 在实际实现中,我使用邻接矩阵进行图的存储,为每个图都构建一个出度矩阵、入度矩阵,并为了便于输入到神经网络,对度值进行了归一化处理,如下是对 v1->v2->v3->v2->v4序列的邻接矩阵存储形式,左边矩阵表示出度,右边矩阵表示入度,同时构建出度矩阵和入度矩阵的原因是为了让模型可以学到 丰富的双向关系,而不是简单的单向转移关系。

TASK2:SESSION-BASED RECOMMENDATIONS WITH RECURRENT NEURAL NETWORKS

introduction:在机器学习和推荐系统社区中,基于会话的推荐是一个相对未被重视的问题。许多电子商务推荐系统(尤其是小型零售商的推荐系统)以及大多数新闻和媒体网站通常不会跟踪长时间访问其网站的用户的用户id。虽然cookie和浏览器指纹可以提供一定程度的用户识别能力,但这些技术往往不够可靠,而且会引发隐私问题。即使跟踪是可能的,许多用户在较小的电子商务网站上只有一到两个会话,并且在某些领域(例如分类网站),用户的行为通常表现出基于会话的特征。因此,应独立处理同一用户的后续会话。因此,为电子商务部署的大多数基于会话的推荐系统都基于相对简单的方法,这些方法不使用用户简档,例如项目到项目的相似性、共现性或转移概率。虽然有效,但这些方法通常只考虑用户的最后一次点击或选择,而忽略了过去点击的信息。推荐系统中最常用的方法是因子模型(Koren等人,2009;Weimer等人,2007;Hidasi&Tikk,2012)和邻域方法(Sarwar等人,2001;Koren,2008)。因子模型通过将稀疏的用户-项目交互矩阵分解为一组d维向量来工作,每个向量对应于数据集中的每个项目和用户。然后,将推荐问题视为矩阵完成/重建问题,然后使用潜在因素向量通过例如取相应用户项潜在因素的点积来填充缺失条目。由于缺乏,因子模型很难应用于基于会话的推荐

会话:是在一个事件(例如,事务)中或在某一时间段内收集或使用的一组项(例如,指任何对象,例如,产品、歌曲或电影),或在一个时间段(例如,一小时)内发生的一组动作或事件(例如,听一首歌)。                                                                                                                              例如,在一个事务中购买的一组项目和用户在一小时内收听的歌曲列表都可以被视为会话。此外,用户在一小时内连续单击的网页也可以被视为会话。

GRU

GRU也是也可处理序列数据的一种模型,是(RNN)循环神经网络的一种,同时呢它也是LSTM的一种变体,然后为什么要学习它,是因为我们了解了LSTM后发现他有很多可以精简改进的地方,例如说它复杂的模型结构,因此GRU就诞生了。相比较LSTM内部结构进行了简化,同时准确率也得到了提升。

提升训练的策略

ESSION-PARALLEL MINI-BATCHES(会话并行小批量)

  在序列问题中,RNN如果使用batch进行加速的话,就必然统一其长度,常见的策略是按照长度排序,长度相似时padding会相对比较少。另一个策略是对长序列进行截断或者剪裁成相对比较短的序列。然而这两种策略对于session推荐任务并不合适,因为由于长尾分布,长的序列和短的序列之间差异极大。                                                                                                                                作者这里用的策略是将不同的Session给拼接了起来,在同一个序列中如果遇到下一次Session时,会将GRU中的向量参数给重新初始化掉,因为这边GRU是对Step进行预测,所以在序列中间直接初始化掉问题也不大,这样还可以提升数据的利用率,会比简单PADDING的方式更加的合适。

输出采样

作者提出一个假设,未交互的项目更有可能代表用户不喜欢

未交互的项目常见解释是用户不知道该项目的存在,因此没有交互。然而,用户确实知道该项目并选择不进行交互的可能性很小,因为她不喜欢该项目。项目越受欢迎,用户就越有可能知道它,因此缺失事件更有可能表示不喜欢。 

GRU4Rec是一个多分类的模型,最后softmax的时候需要计算所有的item,这样处理速度会非常慢,论文中进行了负采样,负样本没有全局随机挑选,而是选取了在同batch中不同的session的item。为什么这样处理呢?第一个好处是减少计算量,能加速训练,第二个就是我们默认batch中的item流行度会比全局随机挑选好点,这样用户更有可能看过但是没有去点击,说明用户不喜欢,更能刻画用户喜好。

排名损失(RANKING LOSS)

推荐系统的核心是项目的基于相关性的排名。排序学习的模型通常分为单点法(Pointwise Approach)、配对法(Pairwise Approach)和列表法(Listwise Approach)三大类, 

逐点排名(Pointwise)方法是通过近似为回归问题解决排序问题,将每个查询-文档对的相关性得分作为实数分数或者序数分数,训练排序模型。预测时候对于指定输入,给出查询-文档对的相关性得分。                                                                                                        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​  成对排名(Pairwise)方法是通过近似为分类问题解决排序问题,输入的单条样本为标签-文档对。对于一次查询的多个结果文档,组合任意两个文档形成文档对作为输入样本。即学习一个二分类器,对输入的一对文档对AB(Pairwise的由来),根据A相关性是否比B好,二分类器给出分类标签1或0。对所有文档对进行分类,就可以得到一组偏序关系,从而构造文档全集的排序关系。
列表排序(Listwise方法)是直接优化排序列表,输入为单条样本为一个文档排列。通过构造合适的度量函数衡量当前文档排序和最优排序差值,优化度量函数得到排序模型。   

TASK1:Neural Collaborative Filtering

神经网络协同过滤

PRELIMINARIES

 用深度学习模型重新审视矩阵分解模型

deep crossing模型的介绍中提到,embedding层主要作用是将稀疏向量转换成稠密向量。最终的Scoring层就是将用户隐向量和物品隐向量进行内积操作后得到相似度,相似度 就是对评分的预测,

        在实际使用矩阵分解来训练和评估模型的过程中,往往会发现模型处于欠拟合的状态。

 内积的局限性例子,p4和p1最接近,然后是p3,最后是p2;但是p4和p1靠近之后,会改变p2、p3对于p4的相似性,距离与真正相似性不符合。解决这个问题的一个方法就是增大隐表示的维度,但是会破坏模型的泛化性(个人认为就是造成过拟合),本文通过使用DNN来学习交互函数来解决这个限制。

NeuralCF 用“多层神经网络+输出层”的结构替代了矩阵分解模型中简单的内积操作。这样做的收益是直观的,一是让用户向量和物品向量做更充分的交叉,得到更多有价值的特征组合信息:二是引入更多的非线性特征让模型的表达能力更强 

 原始的矩阵分解使用“内积”的方式让用户和物品向量进行交互,为了进一步让向量在各维度上进行充分交叉,可以通过“元素积”( element-wise product,长度相同的两个向量的对应维相乘得到另一向量)的方式进行互操作,再通过逻辑回归等输出层拟合最终预测目标。NeuralCF 中利用神经网络拟合互操作函数的做法是广义的互操作形式。在介绍 PNN模型、Deep&Cross 模型的章节中,还会介绍更多可行的互操作形式。

再进一步,可以把通过不同互操作网络得到的特征向量拼接起来,交由输出层进行目标拟合。

paddle学习

负采样概念

负采样,顾名思义,就是从一堆负样本中采样出一部分负样本,用于模型的训练。之所以不采用所有的负样本,主要是为了降低模型的训练复杂度。在负采样过程中,有几个问题需要重点考虑:(1)这么多负样本中,到底需要采出哪一部分负样本呢,需要采出多少才合适呢?换句话说就是,如何保证负样本的质量?(2)还有考虑采样效率问题,比如需要采出多大数量的负样本?

在推荐系统中,用户喜欢的物品我们认为是正样本,用户不喜欢物品我们认为是负样本。而一般情况下,我们很难收集到负样本,且正样本占整个样本集又很少,所以为了更好地训练模型,我们需要进行负采样,而且从中采出一部分负例来协助模型的学习,提高模型的性能。需要注意的是,在推荐系统中,还有一个概念叫伪负样本。我们一般假设与用户交互过的物品属于正样本,未交互过的都是负样本。但是这个假设还是比较强的,用户未购买过的物品并不一定是不喜欢的,也有可能是因为用户没看到,或者是用户在未来会发生交互。这类样本我们称为伪负样本。因此,就有对应的问题需要考虑,如何避免、减少这些伪负样本的影响呢

Hitrate

召回率recall,也称为真阳率、命中率(hit rate)
反映分类器或者模型正确预测正样本全度的能力,增加将正样本预测为正样本,即正样本被预测为正样本占总的正样本的比例。值越大,性能performance越好

NDCG

NDCG的全称是:Normalized Discounted Cumulative Gain(归一化折损累计增益)

Discounted Cumulative Gain: 考虑排序顺序的因素,使得排名靠前的item增益更高,对排名靠后的item进行折损。

IDCG=最好排列的DCG

所以NDGC使用DCG/IDCG来表示,这样的话,NDCG就是一个相对值,那么不同query之间就可以通过NDCG值进行比较评估。

猜你喜欢

转载自blog.csdn.net/z_modi/article/details/127894975