- 论文 : https://arxiv.org/pdf/1904.10322.pdf
- 代码 : https://github.com/PeiJieSun/diffnet/
- 来源 : SIGIR2019
摘要
传统的CF 通过 user-item 二部图学习user和item的嵌入表示。
但是在社交推荐中数据的稀疏性,通过利用用户的邻居来弥补数据稀疏而更好的学习user的嵌入表示
本文的出发点是 由于当前的社交网络都是利用用过本地邻居来开发静态模型,没有模拟全球社交网络中的递归扩散,从而导致推荐效果不佳。
而本文是对于每个用户,扩散过程从融合相关特征的初始嵌入和捕获潜在行为
偏好的免费用户潜在向量开始。
提出的模型的关键思想是,我们设计一种分层影响传播结构,以模拟随着社会扩散过程的继续,
用户的潜在嵌入如何演变。
论文主要贡献:
本文提出了一个具有分层影响传播结构的扩散模型来模拟社会推荐中的递归动态社会扩散。此外,
DiffNet有一个融合层,这样每个用户和每个项目都可以表示为包含协作和特征内容信息的嵌入。
问题的定义
在社会推荐中有两个实体:
用户集合U (|U | = M) , 项集合V (|V | = N) 。用户项的交互表示出用户的喜好。
由于隐式反馈(例如,看电影、购买物品、听歌曲)更为常见,我们还考虑了具有隐式反馈的推荐场景。
表示用户隐式反馈的打分矩阵,rai表示用户a对项目i有交互。
社交网络被视为 用户用户 图,其中U表示用户集合,S表示
用户间的连接。如果用户a信任用户b则sba = 1 否则为0。如果是社交网络是无向图,那么
用户a信任用户b 和用户b信任用户a是一样的 即sba = 1 ^ sab=1。
那么对于a信任的所有用户b的集合表示为 Sa=[b|sba=1]
除此之外,用户a还和属性值相连表示为Xa,其中用户属性矩阵.
同样的项目i有属性向量yi 来自于项目属性矩阵 .
于是,社会推荐问题可以定义为:
给定一个评分矩阵R,一个社交网络S,以及用户和项目的关联实值特征矩阵X和Y。
目标就是预测用户对项目的偏好: 其中
表示预测用户对项目的喜好。
之前的做法
** 经典的嵌入模型**:
-
将用户和项目都嵌入到一个较小的潜在空间中,这样,每个用户对未知项目的
预测偏好就变成了相应用户和项目嵌入之间的内部产品:
-
SVD++和 1 中的区别在于对于用户的嵌入不分加入了用户a对所有交互过的item的信息,更好的捕获用户a的兴趣
其中e Ra = [j : ra j = 1] 是用户a的隐式反馈,yi是项目信息的低维向量。
由于项目和用户都有属性,将各自属性也编码进去可以更好建模嵌入模型,更好的预测用户对项目的兴趣。
其中第一项使用特征工程捕获偏差项,第二项对用户和项目之间的第二级交互进行建模。 不同的基于嵌入的模型的嵌入矩阵公式和优化函数各不相同
例如BPR中对隐式反馈的成对优化函数 效果很不错。在BPR中,对于嵌入矩阵U和V初始化是满足高斯分布,然后再优化函数中加入L2正则化进行不断学习嵌入矩阵。
其中i是用户a交互过的item,j是未交互item,也就是说j是负样本。
社交推荐模型:
由于用户的兴趣和其用户的连接会收到影响,由于嵌入模型在推荐中的广泛使用,大部分模型都是在理在嵌入模型上的。这些社会嵌入模型可以归纳为以下两类:基于社会正则化的方法[16,17,24]和基于用户行为增强的方法[7,8]。具体来说,基于社会规则化的方法假设连接用户会在社会影响扩散下表现出类似的嵌入。
除了上述的优化函数,在整体优化函数中加入社会调节项:
其中D是对角矩阵,daa = ∑ sbb
一些研究人员认为,社交网络提供了有价值的信息,增强了每个用户的行为,缓解了数据稀疏问题,而不是社会规则化术语。
TrustSVD就是这样一个模型,它显示了最先进的性能[7,8]。由于研究人员已经很好地认识到,每个用户都表现出类似的偏好作为他们的社会联系,用户的社会邻居对物品的隐性反馈可以被视为该用户的辅助反馈,建模过程为:
其中Sa就是用户a信任的用户集合,其考虑的就是加入其信任用户的嵌入,嵌入到用户a自己的嵌入向量中。
问题: 尽管将社交网络用于社交推荐的性能有所提高,但我们注意到,几乎所有当前的社交推荐模型都利用观察到的社交联系(每个用户的社交邻居)进行推荐,同时使用一个静态流程。
然而,社会影响不是一个静态的过程,而是一个递归的过程,随着时间的推移,每个用户都会受到社会关系的影响。每一次,用户都需要在之前的偏好与社交邻居的影响之间进行平衡,形成更新的潜在兴趣。每一次,用户都需要在之前的偏好与社交邻居的影响之间进行平衡,形成更新的潜在兴趣。然后,随着当前用户兴趣的演变,社会邻居的影响也在变化。这个过程在社交网络中是递归扩散的。
因此,目前的解决方案忽略了社会推荐的迭代社会扩散过程。
更糟糕的是,当用户特性可用时,需要重新设计这些社会推荐模型,以利用特性数据在用户之间建立更好的相关性模型。
模型介绍
下图是DiffNet的总体结构
模型的输入是用户项目交互对 <a , i> ,输入是用户a对项目i的打分 rai。DiffNet包含4个部分:the embedding layer、the fusion layer、 the layer-wise influence diffusion layers、 the prediction layer
具体地,
通过获取相关输入,嵌入层输出用户和项目的免费嵌入。
对于每个用户(项目),融合层通过融合用户(一项)的免费嵌入和相关功能来生成混合用户(项目)嵌入。
然后将融合的用户嵌入发送到影响扩散层。 影响扩散层采用分层结构构建,以建模社交网络中的递归社交扩散过程
这是DiffNet的关键思想。 在影响扩散过程达到稳定之后,输出层将生成用户-项目对的最终预测偏好。
Embedding Layer
和是用户和项的嵌入矩阵,用来捕获用户和项的协同隐式表示。其中用户a和项目i是one-hot向量,通过嵌入矩阵得到低维的嵌入向量pa和qi
Fusion Layer
输入是用户a的初始嵌入向量和属性向量Xa,输出是,从不同类型的输入数据捕获用户的初始兴趣。具体的说就是一个一层的全连接:
其中W0是转换矩阵 g(x)是非线性激活函数。为了方便标记,我们省略了全连通神经网络中的偏置项。其中通过设置W0来对不同维度的转换成统一维度。
对item同理,其中qi是初始嵌入,yi是项目的属性。
Influence Diffusion Layers
通过将每个用户a的融合h 0 a的输出从融合层馈送到影响扩散部分,影响扩散层可以模拟社交网络S中用户潜在偏好扩散的动态。影响扩散部分类似于社交网络中信息的扩散,每一层k将用户从前一层的嵌入作为输入,输出用户在当前社会扩散过程完成后更新的嵌入 ,将更新后的用户嵌入发送到第k + 1层进行下一个扩散过程 。
具体的说 更新包括两部分:从用户a信任的用户的第层嵌入表示,通过信息聚合得到。其中h^(k+1)_(Sa)是用户a信任的所有用户的影响。
其中Pool函数为平均池化,它对所有可信用户的隐藏嵌入在第k层执行一个平均操作。Pool也可以是最大池化,目的是为了选出所有信任用户在第k层的隐藏嵌入中最大元素,形成。
然后,第a个更新的嵌入是她在第k层的潜在嵌入和来自她信任的用户的影响扩散嵌入聚合的组合。
由于不知道每个用户如何平衡这两部分,我们使用了一个非线性神经网络来处理两部分的连接
其中s(k+1)是非线性转换函数。
影响传播有K层,对于每个用户a,影响传播层从开始传播,通过影响传播层得到输出。然后前一层的输出作为下一层的输出,通过k层,最终得到用户a经过K层影响传播后得到的隐层嵌入向量 。
在影响传播层中只对 用户的隐层向量进行传播,而没有加入项的隐层向量。是因为项的向量比较稳定,不会在社交网络中发生传播。
Prediction Layer:
给出用户a经过k层影响传播层的向量,和每个项 i的融合向量 Vi。预测出用户a对项目i 的喜爱程度。
可以看出ua包括两部分,一个是通过社交网络传播的结果,捕获的是社交网络中的消息。另一部分是类似于SVD++的想法,对用户的历史反馈进行平均,解决了数据稀疏的问题。所以说ua能更好的表现用户a,然后将ua和项目i的融合层的输出进行内积得到用户a对项目i的打分。
模型训练
由于我们关注用户的隐式反馈,类似于BPR[32]中广泛使用的基于排名的损失函数,我们还设计了一个基于成对排名的损失函数进行优化:
其中Θ = [Θ1, Θ2], Θ1 = [P, Q],, λ是控制P,Q嵌入矩阵复杂度的一个参数。Da={(i, j) |i ∈ Ra ∧j ∈ V − Ra },表示a的正反馈集。
讨论
1. 负责度:
空间复杂度:
模型参数有两部分,其中用户和项目的初始嵌入矩阵的空间复杂度和传统的BPR和FM是相同的,和用户,项的数量成线性增长。第二部分参数是信息融合层和信息传播层,由于可以实现参数共享,因此参数远小于用户和项的个数。因此空间复杂度和传统的模型是相似的。时间复杂度:
由于本文的成对损失函数是针对隐式反馈设计的,类似于BPR,因此和BPR进行比较。最主要的时间复杂度来源于信息传播层,O(M K L).其中M是用户的个数,K是层数,L是每个用户的平均邻居。因此本模型的时间复杂度是在BPR的时间复杂度的基础上加上O(M K L)。实验表明 K=2的时候效果是最好的,同时L远小于M,所以DiffNet是可以应用于大型的社交网络。
2. 模型概括:
用户和项的特征矩阵 X和Y 以及社交网络S
融合层,讲用户和项的初始嵌入和特征进行融合
分层扩散层利用社会网络结构来模拟用户的潜在偏好如何受到递归社会扩散过程的动态影响。
-
DiffNet模型可以在不同的数据类型中进行应用
- 当没有用户和项的特征时,可以去掉融合层。对应的Vi = qi, 用户的第0层
初始向量ho = pa。 - 或者只存在用户特征 或只存在项的特征的时候,也可以使用。
- 当没有用户和项的特征时,可以去掉融合层。对应的Vi = qi, 用户的第0层
本文最重要的idea是社交网络的分层扩散,如果是没有社交网络,那么社会传播层就不存在,= 。
3. 比较基于图卷积的模型:
本文中的分层扩散层的想法和GCN相似。GCN通过在图结构中聚合信息或信息传播的方式生成节点嵌入,其中节点的向量表示是聚合了邻居节点的特征。
由于GCN的成功,很多模型尝试将GCN引入到推荐当中。通过将这些模型转移到推荐场景中,主要的组件是如何构造一个图并进一步利用推荐属性的唯一性。其中最相关的是GC-MC以及PinSage.
GC-MC:该模型是第一个将图卷积直接应用到推荐当中的。该模型将用户和项的交互转化成 user-item二部图。然后将用户交互过的项的嵌入向量进行聚合。相似的项的嵌入向量是聚合和项相关联的user的嵌入向量。但是其只是对直接相连的信息进行聚合,没有考虑到多层,也就是二跳连接。
PinSage:该模型是用于在大型推荐系统中的项目推荐。从用户的行为中 构建item-item关联图。PinSage可以结合项目相关图和节点特性来生成项目嵌入。
其中最主要的贡献是如何设计高效的采样技术来加速训练。
实验
1. 数据集
Yelp是一个基于位置的在线社交网站。用户与其他人交朋友,并通过
评论和评分的形式。 由于丰富的评论与用户和项目相关联,我们使用流行的gensim工具3来学习每个单词在Word2vec模型中的嵌入[25]。然后,我们通过平均所有学习到的用户(项目)的词向量来获得每个用户(项目)的特征向量。
Flickr是一个基于在线图片的社交分享平台。用户关注其他用户,并将他们对图片的偏好分享给他们的社交关注者。用户通过upvote行为来表达他们的偏好。出于研究目的,我们从这个平台抓取了一个大的数据集。对于每个图像,我们在数据集上都有一个该图像的ground truth分类。我们将图像发送到VGG16卷积神经网络,并将VGG16中最后一个连接层的4096维表示作为图像[33]的特征表示。对于每个用户,她的特征表示是她在训练数据中喜欢的图像特征表示的平均值。
在数据预处理步骤中,对于这两个数据集,我们过滤掉了评分记录少于2条和社交链接少于2条的用户,并删除了评分次数少于2次的条目。
我们随机抽取10%的数据进行测试。在剩下的90%数据中,为了调优参数,我们从训练数据中选择10%作为验证集,预处理后数据的详细统计如表1所示。
2.baseline 和 metrics
本文的baseline包括经典的基于两两的推荐模型BPR [32],功能增强的潜在因子模型FM [30],最新的社会推荐模型TrustSVD [7]。 ,一种上下文感知的社交推荐模型ContextMF,它利用与我们建议的推荐模型相同的输入[17]。 此外,我们还将我们提出的模型与基于两个图卷积的推荐模型进行了比较:GC-MC [37]和PinSage [42]。
本文的metrics使用了两个广泛采用的基于排名的度量:命中率(HR)和标准化折现累积收益(NDCG)[35]。具体地说,HR度量用户在测试数据中所喜欢的项目的数量,这些数据已经成功地预测在前n个排名列表中。NDCG会考虑物品的命中位置,如果命中位置在顶部,NDCG会给出更高的分数。对于这两个指标,值越大,性能越好。由于未评级的条目太多,为了降低计算成本,我们对每个用户每次随机抽取1000个未评级的条目,并将它们与用户在排序过程中喜欢的正面条目结合起来。