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

  • 论文概况
  • Abstract
  • Introduction
  • Preliminaries & SOTA Method Introduction
  • Model Introduction
    • Embedding Layer
    • Fusion Layer
    • Layer-wise Influence Diffusion Layer
    • Prediction Layer
    • 模型训练

论文概况

论文《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} Raj表示user a a a 对item j j j 的评分。推荐系统的任务就是将矩阵 R 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 a 关注着另一个用户user b b b,那么 b b b 对item的偏好将传播到 a a a 上,并对 a a a 的偏好进行影响。

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

Preliminaries & SOTA Method Introduction

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

Model Introduction


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

Embedding Layer

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

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

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

Fusion Layer

对于用户 a a a,fusion layer将free embedding p a p_a pa 和feature embedding x a x_a xa作为输入,输出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}]) ha0=g(W0×[xa,pa])
v i = σ ( F × [ q i , y i ] ) \boldsymbol{v_i}=\sigma(\boldsymbol{F}\times[\boldsymbol{q_i}, \boldsymbol{y_i}]) vi=σ(F×[qi,yi])

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

Layer-wise Influence Diffusion Layer

对于layer k k k,将 k − 1 k-1 k1层的输出作为输入,完成当前层的social diffusion process之后输出更新的user embedding。更新后的用户表示向量输出到 k + 1 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) hsak+1=Pool(hbkbSa)
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}]) hak+1=s(k+1)(Wk×[hsak+1,hak])

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

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

Prediction Layer

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

User向量表示中,借鉴SVD++算法,将用户的历史喜好加入其中。这样用户 u a u_a ua的向量表示由两项组成,第一项捕获了社交网络中循环传播结构用户喜好的相互影响,第二项捕获了用户的历史喜好,减轻了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} ua=hak+iRaRavi

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

这里使用向量 u u u 和向量 v v v 做内积运算,和矩阵的UV分解道理是一样的,通过 U ⋅ V U \cdot V UV完成对矩阵 R R R 的估计,通过梯度下降完成 U U UV 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 θminL(R,R^)=a=1M(i,j)Daσ(r^air^aj)+λ∣∣Θ12
其中, Θ = [ Θ 1 , Θ 2 ] \Theta=[\Theta_1, \Theta_2] Θ=[Θ1,Θ2]
Θ 1 = [ P , Q ] \Theta_1=[P, Q] Θ1=[P,Q],
Θ 2 = [ F , [ W k ] k = 0 K ] \Theta_2=[F, [W^k]_{k=0}^{K}] Θ2=[F,[Wk]k=0K]

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

D a D_a Da同BPR算法中一样,用于表示用户a的喜欢与不喜欢item对集合,通过 σ ( r ^ a i − r ^ a j ) \sigma(\hat r_{ai} - \hat r_{aj}) σ(r^air^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} ↩︎

论文《A Neural Influence Diffusion Model for Social Recommendation》阅读相关推荐

  1. 《基于卷积神经网络的深度迁移学习,用于燃气轮机燃烧室的故障检测》论文阅读

    目录 突出 抽象 引言 1.1动机 1.2文献综述获得的结论 1.3贡献 1.4组织 2方法 2.1燃汽轮机组故障知识共享 2.2迁移学习 2.3 基于卷积神经网络的深度迁移学习 2.4用于燃气轮机燃 ...

  2. 基于卷积神经网络和投票机制的三维模型分类与检索 2019 论文笔记

    作者:白静 计算机辅助设计与图形学学报 1.解决的问题 由于三维模型投影得到的视图是由不同视点得到,具有相对独立性,这种像素级的融合运算并没有直接的物理或者几何意义,更有可能造成图像有益信息淹没和混淆 ...

  3. TextCNN——基于卷积神经网络的文本分类学习

    1.CNN基础内容 CNN的全称是Convolutional Neural Network,是一种前馈神经网络.由一个或多个卷积层.池化层以及顶部的全连接层组成,在图像处理领域表现出色. 本文主要学习 ...

  4. 读懂深度迁移学习,看这文就够了 | 赠书

    百度前首席科学家.斯坦福大学副教授吴恩达(Andrew Ng)曾经说过:迁移学习将是继监督学习之后的下一个促使机器学习成功商业化的驱动力. 本文选自<深度学习500问:AI工程师面试宝典> ...

  5. 一种基于卷积神经网络的图像去雾研究-含matlab代码

    目录 一.绪论 二.去雾卷积网络 2.1 特征提取 2.2 多尺度映射 2.3 局部均值 2.4 非线性回归 三.实验与分析 四.Matlab代码获取 一.绪论 雾是一种常见的大气现象,空气中悬浮的水 ...

  6. 机械臂论文笔记(一)【基于卷积神经网络的二指机械手 抓取姿态生成研究 】

    基于卷积神经网络的二指机械手 抓取姿态生成研究 论文下载 摘要 第1章 绪论 1.1 抓取生成国内外研究现状 1.1.1已知物体抓取生成 1.1.2相似物体抓取生成 1.1.3 未知物体抓取生成 1. ...

  7. 毕业设计 - 基于卷积神经网络的乳腺癌分类 深度学习 医学图像

    文章目录 1 前言 2 前言 3 数据集 3.1 良性样本 3.2 病变样本 4 开发环境 5 代码实现 5.1 实现流程 5.2 部分代码实现 5.2.1 导入库 5.2.2 图像加载 5.2.3 ...

  8. 基于卷积神经网络与迁移学习的油茶病害图像识别

    基于卷积神经网络与迁移学习的油茶病害图像识别 1.研究思路 利用深度卷积神经网络强大的特征学习和特征表达能力来自动学习油茶病害特征,并借助迁移学习方法将AlexNet模型在ImageNet图像数据集上 ...

  9. Python深度学习实例--基于卷积神经网络的小型数据处理(猫狗分类)

    Python深度学习实例--基于卷积神经网络的小型数据处理(猫狗分类) 1.卷积神经网络 1.1卷积神经网络简介 1.2卷积运算 1.3 深度学习与小数据问题的相关性 2.下载数据 2.1下载原始数据 ...

  10. 基于卷积神经网络实现图片风格的迁移 1

    卷积神经网络详解 一.实验介绍 1.1 实验内容 Prisma 是最近很火的一款APP,它能够将一张普通的图像转换成各种艺术风格的图像.本课程基于卷积神经网络,使用Caffe框架,探讨图片风格迁移背后 ...

最新文章

  1. linux系统 大分区,linux大硬盘怎么分区
  2. New Video Game Controlled By Kissing
  3. vue 定义全局弹框_VUE路由拦截:Vue自定义全局弹窗组件
  4. [转载]深入探索.NET框架内部了解CLR如何创建运行时对象
  5. 请交一个关于域的问题
  6. Linux的find grep
  7. 一个游戏美术写给策划的快速入门
  8. Python 案例001 (有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数)...
  9. CF 1103B Game with modulo
  10. webstorm激活+汉化教程
  11. 核心系统100%上云!全球最大流量洪峰,阿里云扛住了
  12. python 唯一元素_检查所有元素在Python中是否唯一
  13. 打印更无缝:微软改善Win11中通用打印体验
  14. 选择排序java从小到大代码_java中选择排序与归并排序的内容,详细解析
  15. 仿真软件测试基尔霍夫定律,基尔霍夫定律实验报告范文
  16. SQL Server 百度网盘免费下载
  17. 抖音初始权重快速提升3大攻略,新人必看丨国仁网络资讯
  18. OpenFileDialog/SaveFileDialog 中 Filter用法?
  19. 计算机二级Office计算机基础知识选择题
  20. ubuntu18.04 安装Pangolin

热门文章

  1. 3月末全球域名商域名解析量23强:爱名网跌至第十七
  2. SAS 时间区间函数 INTNX 和 INTCK
  3. 10月ins点赞Top 10: Kylie霸榜再次袭来~,Selena发新单暗指比伯,海狸反击
  4. Elasticsearch映射和分析
  5. instsrv.exe srvany.exe用法
  6. python加密解密图形界面_Python笔记-GUI界面设计(tkinter)
  7. 微信小程序授权手机号解析错误
  8. Code128一维码(解码)
  9. 讲一下PMP证书含金量具体体现在哪
  10. 如何为Excel批量加前缀或后缀?