论文《A Neural Influence Diffusion Model for Social Recommendation》阅读

论文概况

论文《A Neural Influence Diffusion Model for Social Recommendation》提出了一个社会推荐算法diffNet,发表在了SIGIR 2019上,SIGIR是信息检索的顶会,rank情况是CCF A类的会议。

这方面论文本人以前没有接触过,所以下文的介绍中对一些概念和算法进行了更通俗的解释而不是盲目的翻译。下面我通过四个部分对该论文进行介绍:摘要部分、介绍部分、文章模型的参考内容以及部分对比模型的介绍以及文章提出的diffNet模型的介绍。

论文地址:paper
数据集地址:dataset
代码地址:source code

Abstract

推荐系统本质上是一个矩阵补全算法。对于输入的评分矩阵R,横轴表示user,纵轴表示item,矩阵 R a j R_{aj} 表示user a a 对item j j 的评分。推荐系统的任务就是将矩阵 R R 中空缺的部分进行填充,填充的部分选TOP-k进行推荐。针对这一目的,通过使用UV分解,SVD分解等方法产生了各种各样的算法。但是这些问题不可避免地存在着数据稀疏(data sparsity)和冷启动(cold start)问题,为解决这些问题,引入了社会推荐系统的思想。以往的社会推荐系统中往往只考虑静态的社会网络关系中user对user的影响,在本文中作者提出了一种user对user迭代影响的模型,通过GCN对这一问题进行了解决。

本文使用Flickr和Yelp数据集进行了实验,Flickr是一个图片评论的社交网站,Yelp是一个类似于大众点评的网站,因此后续对这两个数据集的处理,一个使用了NLP的一些方法,另一个使用的是CV方面的方法。本文对这两个数据集进行了实验,性能提升13%以上。

Introduction

推荐系统在不同网站上都有着比较重要的作用。以往的介绍中往往将示例集中在购物网站,以至于到了实验部分看不明白。在这里,我们先声明,推荐算法的实体集合分为两部分,user和item。user表示用户,item不仅表示物品。item不止表示商品,在不同的数据集上代表的物体不同,例如在社交网站中代表的是一片文章,在图片网站中可能是一幅图片,不一而足。

在不同的推荐算法中,核心都是如何表示user和item的表示(也就是embedding)。通过对user和item的表示进行比较,从而可以对相似的user或者相似的item进行推荐。在所有这些算法中,协同过滤算法Collaborative Filtering(CF)是比较流行的一种算法。CF算法本质上是对user和item的互动关系进行分析,从而分析出user和item之间的偏好关系并完成推荐。在CF算法中,隐因子模型Latent Factor Model(LFM)获得了大家的青睐。另外因子分解机Factorization Machine(FM)算法认为user和item之间存在着特征关联,通过对矩阵R使用user隐因子向量和item隐因子向量相乘的方式进行分解。然而这些算法并没有较好地解决数据稀疏性问题。如果对数据极其系数的user-item rating matrix进行计算,很容易过拟合,从而使获得的推荐效果不好。

因为数据稀疏性问题,社会推荐算法应运而生。社会推荐算法主要是通过对user-user的关系进行分析,将关系比较亲近的user之间的偏好关系进行传播,从而加强了推荐算法的性能并解决了数据稀疏性问题。社会推荐算法主要思想是用户和其粉丝之间存在着偏好的转移。一个用户user a a 关注着另一个用户user b b ,那么 b b 对item的偏好将传播到 a a 上,并对 a a 的偏好进行影响。

然而社会推荐算法都是静态地对社会关系进行分析,(1)本文提出的diffNet网络对社会网络中用户之间的关系进行迭代计算,将用户的偏好影响力进行了K轮传播,最终形成了用户之间互相影响的偏好传播。同时(2)本文借鉴SVD++算法,将用户喜欢的item向量作为辅助向量加入到了用户的向量表示中;(3)本文将user和item使用NLP和CV的一些方法提取特征并加入到user和item的向量表示中。通过上述方法,本文的推荐结果达到了一个较好的水平。

Preliminaries & SOTA Method Introduction

待添加,后续请参看本人的其他文章中。

Model Introduction

diffNet
(图片来源 1,侵权删除)

Embedding Layer

user隐因子矩阵 P P P R D M P\in\mathbb{R}^{D*M} )和item隐因子矩阵 Q Q Q R D N Q\in\mathbb{R}^{D*N} ),作为free embedding。使用随机值进行初始化。

User特征矩阵 X X 和item特征矩阵 Y Y ,作为feature embedding。初始化通过下述方法进行:

Yelp(文字评论) Flickr(图像评论)
Item-Feature word2vec向量 VGG16最后一层(4096维向量)
User-Feature user所有评论向量的期望值 用户所有喜欢的图像向量的期望值

Fusion Layer

对于用户 a a ,fusion layer将free embedding p a p_a 和feature embedding x a x_a 作为输入,输出fusion embedding。Fusion embedding对user的特征及喜好进行了融合,具体通过下列方式:
h a 0 = g ( W 0 × [ x a , p a ] ) \boldsymbol{h_a^0}=g(\boldsymbol{W^0}\times[\boldsymbol{x_a}, \boldsymbol{p_a}])
v i = σ ( F × [ q i , y i ] ) \boldsymbol{v_i}=\sigma(\boldsymbol{F}\times[\boldsymbol{q_i}, \boldsymbol{y_i}])

上式中, W 0 W^0 是转化矩阵, g ( x ) g(x) 是非线性函数。通过上述方法,将user和item的特征向量以及free embedding(也就是用于表示user和item喜好的向量,通过梯度下降进行更新)进行了fusion。

Layer-wise Influence Diffusion Layer

对于layer k k ,将 k 1 k-1 层的输出作为输入,完成当前层的social diffusion process之后输出更新的user embedding。更新后的用户表示向量输出到 k + 1 k+1 层作为输入,继续进行后续的循环操作,直到传播过程收敛为止。

社会网络中影响力通过图结构进行传播,因此使用图卷积神经网络Graph Convolutional Neural(GCN)模型进行优化。具体地,如下式所示:
h s a k + 1 = P o o l ( h b k b S a ) \boldsymbol{h}_{s_a}^{k+1}=Pool(\boldsymbol{h}_b^k|b\in S_a)
h a k + 1 = s ( k + 1 ) ( W k × [ h s a k + 1 , h a k ] ) \boldsymbol{h}_{a}^{k+1}=s^{(k+1)}(\boldsymbol{W}^k\times [\boldsymbol{h}_{s_a}^{k+1}, \boldsymbol{h}_{a}^{k}])

user在每次迭代的embedding由两部分,一部分是输入的embedding,另一部分是其他用户embedding的池化操作。

由于社会网络中影响力传播过程是复杂且无法预知的,因此无法对这两部分确定具体系数,使用非线性方程进行映射。 s k ( x ) s^k(x) 表示非线性转换函数。

Prediction Layer

循环传播达到最大深度K之后,循环传播部分结束。

User向量表示中,借鉴SVD++算法,将用户的历史喜好加入其中。这样用户 u a u_a 的向量表示由两项组成,第一项捕获了社交网络中循环传播结构用户喜好的相互影响,第二项捕获了用户的历史喜好,减轻了data sparsity问题。具体的,如下式所示:

u a = h a k + i R a v i R a u_a=h_a^k + \sum\limits_{i \in R_a}\frac{v_i}{R_a}

r ^ a i = v i T u a \hat r_{ai}=v_i^Tu_a

这里使用向量 u u 和向量 v v 做内积运算,和矩阵的UV分解道理是一样的,通过 U V U \cdot V 完成对矩阵 R R 的估计,通过梯度下降完成 U U V V 的更新,从而补全矩阵空缺部分。

模型训练

损失函数如下:
min θ L ( R , R ^ ) = a = 1 M ( i , j ) D a σ ( r ^ a i r ^ a j ) + λ Θ 1 2 \min\limits_\theta \mathcal{L}(R, \hat R)=\sum\limits_{a=1}^M\sum\limits_{(i,j)\in D_a}\sigma(\hat r_{ai} - \hat r_{aj}) + \lambda ||\Theta_1||^2
其中, Θ = [ Θ 1 , Θ 2 ] \Theta=[\Theta_1, \Theta_2]
Θ 1 = [ P , Q ] \Theta_1=[P, Q] ,
Θ 2 = [ F , [ W k ] k = 0 K ] \Theta_2=[F, [W^k]_{k=0}^{K}]

上式中, λ \lambda 是正则化系数,用于控制user矩阵和item矩阵的复杂性。

D a D_a 同BPR算法中一样,用于表示用户a的喜欢与不喜欢item对集合,通过 σ ( r ^ a i r ^ a j ) \sigma(\hat r_{ai} - \hat r_{aj}) 的方式,对隐式反馈进行排序,即user表示过反馈的优先级要高于未进行反馈的item。







如果您觉得我的文章对您有所帮助,欢迎扫码进行赞赏 ^ _ ^

如果你看到了这篇文章的最后,并且觉得有帮助的话,麻烦点个赞,谢谢了!也欢迎和我进行讨论!


  1. @inproceedings{DiffNet2019. title={A Neural Influence Diffusion Model for Social Recommendation}, author={Le Wu, Peijie Sun, Yanjie Fu, Richang Hong, Xiting Wang and Meng Wang}, conference={42nd International ACM SIGIR Conference on Research and Development in Information Retrieval}, year={2019} ↩︎

原创文章 8 获赞 16 访问量 8207

猜你喜欢

转载自blog.csdn.net/xingzhe123456789000/article/details/103671661