专栏首页机器学习与推荐算法深度学习技术在社会化推荐场景中的总结

深度学习技术在社会化推荐场景中的总结

前言

不知道大家有没有感觉,在日常生活中用到推荐一词的时候经常是用在社交场景中的。到一个地方旅游让朋友推荐一下旅游景点,学习某一项技术的时候让朋友推荐一些有什么书可以看。在众多推荐系统的方向中,我觉得社会化推荐这一分支更加符合现实生活中的情况。而自从深度学习技术在计算机视觉、自然语言处理中大放异彩,许多研究者也将深度学习技术运用到了社会化推荐领域中。

本文主要围绕将深度学习技术应用到社会化推荐场景的主题进行阐述,先介绍了一些在社会化推荐系统中所常用的一些数据集,接着总结了几篇关于深度学习技术应用到社会化推荐的文章。值得注意的是 ,本文所选的论文都是在Github中有开源实现的,可以让读者有进一步的理解。

社会化推荐中常用的数据集

社会化推荐与传统的推荐任务不同,所需要的数据集不光需要用户与项目的评分信息,还需要用户与用户间的社会关系信息。常用的数据集如下:

1. FilmTrust

下载地址: 

https://github.com/guoguibing/librec/tree/3.0.0/data/filmtrust

该数据集是2011年6月从FilmTrust网站上抓取的一个小型数据集。包含用户对电影的评分信息和用户间的社交信息。数据量较小,只有35497条评分数据。1853条社交数据。

2. Epinions

下载地址: 

http://www.trustlet.org/epinions.html

该数据集规模较大,包含用户对电影的评分信息和用户间的社交信息。该数据集有两个版本,其中一个版本还包括了用户间的不信任关系信息。

3. CiaoDVD

下载地址: 

https://www.librec.net/datasets.html

该数据集包含了用户对他们购买过的项目的评分和用户间的社交连接。

4. Delicious

下载地址: 

https://grouplens.org/datasets/hetrec-2011/

此数据集包含来自Delicious社交书签系统的用户间的社交网络,书签和标签信息。

5. Yelp

下载地址: 

https://www.yelp.com/dataset

该数据集规模较大,需要手动提取相关信息。

0 前深度学习时代——社会化推荐的进化之路

Recommender systems with social regularization, WSDM, 2011.

在没有使用深度学习技术之前,早期的社会化推荐基于一个假设:一个用户的行为偏好与他的朋友应该是相似的,同时行为偏好相似的人更倾向于建立联系。2011年Hao Ma等人[1]提出的SoReg方法,使用了社交正则化项为学术研究提供了一个新的方向。

在[1]中提出了两个模型,分别为基于平均的正则化(Average-based Regularization)和基于个体的正则化(Individual-based Regularization )。

基于平均的正则化的函数如下:

该函数假设每个用户的喜好都接近用户朋友的平均喜好。该函数具体包含三个部分,第一部分为基本的矩阵分解模型,第二部分为社交约束项,第三部分为正则化项,用来缓解模型的过拟合问题。

这里我们具体对第二部分的社交约束项进行介绍,

,

分别是用户i,用户f的用户向量。

是用户i的朋友集合。Sim(i,f)是用户i与用户f的相似度函数,在论文中使用了空间相似度(VSS)和皮尔森相关系数(PCC)用来定义用户之间的相似性。这种约束形式使用了用户间的相似度区别对待了所有的朋友,通过除以用户朋友的相似度之和计算出用户朋友的平均喜好。

基于个体的正则化函数如下:

该函数也具有三个部分,第一部分和第三部分与基于平均的正则化模型相同,不同的是社交约束项。基于平均的正则化模型对有着不同喜好朋友的用户不敏感。因此基于个体的正则化模型将用户和他的每个朋友单独施加限制: 。更多关于社会化推荐文章总结请移步社会化推荐浅谈

1 使用深度学习技术挖掘社交网络数据

Collaborative User Network Embedding for Social Recommender Systems, SDM, 2017.

该论文认为直接使用明确的社交连接可能会存在问题:1)获取可靠的社交联系很困难,只有一小部分用户会明确表示自己信任的朋友; 2) "冷启动"用户在评分和社交上都很"冷";3) 用户可以与不同喜好的人建立社交联系,直接使用明确的社交连接可能会误导推荐。因此,该论文中提出从用户对商品的反馈(如评分或购买)中提取隐含的社交信息,设计了CUNE方法,为每个用户确定出top-k语义好友。再将top-k语义好友的信息加入到MF和BPR中,提出了CUNE-MF和CUNE-BPR。

CUNE方法可以看成是DeepWalk[3]的扩展,具体的计算过程如下图所示:

第一步,使用one-mode映射方法从用户-项目网络中得到协同用户网络。其中,用户-项目网络表示用户-项目反馈,通过使用两组节点(即用户和项目)进行连接,边

表示用户i对项目j进行了反馈(例如评分或购买)。接着通过one-mode映射方法构建一个只有用户的网络,如果两个用户都对至少一个项目有反馈那么则将这两个用户连接起来,构成协同用户网络。边的权值表示他们共同反馈的项目数量。

第二步,则进行偏置随机游走产生用户节点序列。游走中的第i个节点表示为

,通过两种方法从其前置节点

的邻居中选择它: (1) 如果

的所有邻居已经被访问(在前一步被选择),那么就随机选择一个邻居,(2) 否则(存在一些

的邻居没有被访问),选择一个

的未访问的邻居,通过

,这里

是节点v和x之间的边权值,S是正则化因子,

(

是v的未访问邻居的集合)。

第三步,将第二步产生的节点序列输入到SkipGram模型中,得到每个用户的低维嵌入表示。最终通过计算每两个用户的嵌入表示的余弦相似度,提取出top-k语义好友。产生语义好友之后就可以将其加入到MF和BPR中,函数如下:

CUNE-MF:

CUNE-BPR:

CUNE-MF与SoReg在github中有开源实现:

https://github.com/hongleizhang/RSAlgorithms

2 使用图神经网络进行社会化推荐

Graph Neural Networks for Social Recommendation, WWW, 2019.

近年来,图神经网络(GNNs)在学习图数据方面表现出了强大的能力,它可以很好地将节点信息和拓扑结构结合起来。在社会化推荐中,数据可以表示为用户-用户的社交图和用户-项目反馈图(如图2所述),因此Wenqi Fan等人提出GraphRec利用图神经网络来学习用户和项目的隐因子(latent factors)[4]。

提出的模型结构下图所示,由3个部分组成:用户建模,项目建模和评分预测。第一个部分是用户建模,用来学习用户的隐因子向量,作者引入社交聚合和项目聚合来分别处理用户-用户社交图和用户-项目反馈图,通过结合项目空间和社交空间的信息来获得用户隐因子。第二个部分是项目建模,引入了用户聚合将用户对项目的意见用于项目建模,来学习项目隐因子。第三个部分为评分预测,通过将用户建模产生的用户隐因子与项目建模产生的项目隐因子结合起来输入到MLP中进行评分预测。最后使用RMSprop作为优化器进行训练,使用dropout缓解过拟合。

img

Github上有GraphRec的两个代码实现版本(Pytorch实现),地址如下:

作者开源:

https://github.com/wenqifan03/GraphRec-WWW19

用户开源:

https://github.com/Wang-Shuo/GraphRec_PyTorch

3 注意力机制在社会化推荐中的应用

Social Attentional Memory Network: Modeling Aspect- and Friend-level Differences in Recommendation, WSDM, 2019.

用户与朋友的喜好不可能完全相同,在多数情况下只有部分匹配;另外,朋友的影响强度可能是不同的,不是所有朋友都可以平等的影响用户。因此Chong chen等人提出了SAMN( Social Attentional Memory Network)[5],将注意力机制运用到了社会化推荐中。

SAMN基于隐式反馈和社交网络进行推荐。SAMN的架构如下图所示,主要包含两个模块:基于注意力的记忆模块和朋友层面的注意力组件。基于注意力的记忆模块用来解决用户与朋友喜好的差异,朋友层面的注意力组件用来选择信息丰富的朋友,解决朋友的影响强度差异。

开源地址:

https://github.com/chenchongthu/SAMN

4 通过动态图注意力网络进行基于会话的社交推荐

Session-based Social Recommendation via Dynamic Graph Attention Networks, WSDM, 2019.

该论文作者认为用户的兴趣是动态的并且受到朋友的影响,不同的主题可能会依赖不同的朋友。因此Weiping Song等人提出DGRec[5],通过动态图注意力网络进行基于会话的社交推荐。DGRec使用了循环神经网络(RNN)对用户的动态行为进行建模,并使用图注意力神经网络对上下文相关的社交影响进行建模。

DGRec由四个模块组成(如下图所示)。首先使用了RNN建模用户在当前会话中的动作,捕获用户动态变化的兴趣。接着使用短期兴趣和长期兴趣为朋友的兴趣建模,短期兴趣根据最近消费的物品的序列放入RNN中得到一个向量表示,朋友的长期兴趣用一个固定向量表示,代表朋友的平均兴趣,之后朋友的兴趣就是短期兴趣向量和长期兴趣向量的拼接。然后将用户和朋友放到社交网络图中,图中的节点用得到的兴趣向量表示,边代表社交联系,再通过图注意力网络来获取朋友对用户的动态影响,得到的向量和用户向量拼接得到最后的用户向量,最后使用softmax来得到一个可能的物品的概率分布进行推荐。

开源地址:

https://github.com/DeepGraphLearning/RecommenderSystems/tree/master/socialRec

总结与个人观点

深度学习在社会化推荐中的应用也可谓是大放异彩,图神经网络与注意力机制在社会化推荐的应用给研究者开辟了一个新的方向,但是目前深度学习在社会化推荐领域的研究远不如点击率预估那样火热。我觉得可能存在以下几个方面的问题:

  1. 社交数据跟用户对物品的反馈数据一样还是存在稀疏性的问题,甚至比反馈数据更加稀疏,因为很多用户不愿意共享自己的社交信息,几个常用的数据集中的社交数据也非常稀疏。
  2. 深度学习是个好用的工具但并不是一把万能钥匙。由于深度学习具有黑盒的性质,使得人们无法理解其中的原理,深度学习研究者都自称自己是调参侠。知乎上有关于调参经验的总结:深度学习 “炼丹” 技巧总结

因此,当需要给出确切解释的时候,深度学习并不是首选项。

以上提及的论文只是深度学习在社会化推荐中的冰山一角,更多相关的研究成果也欢迎大家进行分享,大家共同进步。另外也希望各位大佬能发扬开源的精神,能找到论文和代码都具备的项目实属不易。最后,本人也只是一名在读水硕,若有错误,欢迎指正,互相学习。

参考文献

[1] Ma et al. Recommender systems with social regularization. WSDM, 2011.

[2]Chawla et al. Collaborative User Network Embedding for Social Recommender Systems. SDM, 2017.

[3]B. Perozzi et al. Deepwalk: Online learning of social representations. KDD, 2014.

[4] Fan et al. Graph Neural Networks for Social Recommendation. WWW, 2019.

[5] Chen et al. Social Attentional Memory Network: Modeling Aspect- and Friend-Level Differences in Recommendation. WSDM, 2019.

[6] Song et al. Session-based Social Recommendation via Dynamic Graph Attention Networks. WSDM, 2019.

[7] [社会化推荐浅谈]https://zhuanlan.zhihu.com/p/38413102

[8] [基于动态注意力机制图神经网络的会话社交推荐系统阅读笔记]https://zhuanlan.zhihu.com/p/73637262

本文分享自微信公众号 - 机器学习与推荐算法(ML_RSer),作者:小应同学

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-08-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 基于图卷积的价格感知推荐

    Paper:Price-aware Recommendation with Graph Convolutional Networks

    张小磊
  • 利用对抗技术来权衡推荐精度与用户隐私

    任何需要做两方权衡并且最终寻求一种平衡的问题其实都可以转化为对抗学习的范式,比如图像生成任务中既要保证生成图片的质量又要确保判别器的识别精度;推荐任务中既要保证...

    张小磊
  • 社会化推荐浅谈

    不知道大家有没有这样的感觉,本人一直觉得社交网络这个东西是一个很有意思的玩意儿,起初觉得它有意思也可能是由于这个可爱的名词-Social Network,也可能...

    张小磊
  • 七大交互心理学

    作为 UI 设计师如果每天想着如何单纯的提高自己的视觉能力,那么看待任何问题都只能是视觉问题。这样的话在工作中我们很难去说服别人接受自己的设计提案,因为我们无法...

    Shawn.W
  • 面向NLP的AI产品方法论——如何通过数据分析迭代优化

    语音/对话式交互是一件非常有挑战性的设计,极少有业务能一蹴而就。笔者所在的公司,过往开发了十几个多轮语音交互技能,平均算下来,首个BOT上线后,差不多得有半年时...

    半吊子全栈工匠
  • linux-用户-用户组

    Linux 是一个多用户、多任务的操作系统,具有很好的稳定性与安全性,在幕后保障Linux 系统安全的则是一系列复杂的配置工作。

    suwanbin
  • 2018年交互设计旅程中的7个设计趋势

    以下内容由Mockplus(摹客)团队翻译整理,仅供学习交流,Mockplus是更快更简单的原型设计工具。

    奔跑的小鹿
  • 2018年交互设计旅程中的7个设计趋势

    以下内容由Mockplus团队翻译整理,仅供学习交流,Mockplus是更快更简单的原型设计工具。

    用户1372273
  • Linux系列教程(十五)——Linux用户和用户组管理之用户管理命令

      上篇博客我们介绍了用户管理的相关配置文件,包括用户信息文件/etc/passwd,用户密码文件/etc/shadow;然后介绍了用户组信息文件/etc/gr...

    IT可乐
  • 数据分析面试-业务分析篇

    同比: 与历史同时期比较,就是与不同年份(月份)的同一时期作比较,例如2005年7月份与2004年7月份相比,叫同比。

    朱小五

扫码关注云+社区

领取腾讯云代金券