『失踪人口回归,坚持输出是一件很难,但坚持了就很有意义的事儿』
零、写在前面
这是一篇关于社会化推荐的分享,欢迎大家批评指正。
不知道大家有没有这样的感觉,本人一直觉得社交网络这个东西是一个很有意思的玩意儿,起初觉得它有意思也可能是由于这个可爱的名词-Social Network,也可能是被五颜六色的社交网络示意图所吸引,总之并没有什么高大上的名词来解释我对于它的喜爱。也正是由于这种莫名的好感,基于社交网络的推荐系统也成了我后来硕士阶段研究的课题。随着后续学习与研究的深入,逐渐了解到了社交网络中包含的有意思的结论以及所蕴含的强大知识,也更加确定了自己对于这一领域的喜欢。
推荐系统研究的是两个对象(人与物)以及两者之间联系的学科。更具体地说,就是需要科学的建模用户画像、物品画像,以及如何设计高效的匹配算法(函数)来为特定的用户挑选出合适的物品,因此也可以形象的理解为“两点一线”,“两点”即为用户和物品,“一线”为连接用户和物品之间关系的函数。传统的推荐系统不得不从骨感的用户-物品交互数据中学到这“两点一线“,因此在学习的过程中不得不面临数据稀疏和冷启动的问题。
社交网络分析研究的是人与人之间相互作用、相互连接以及相互影响的理论。作为传统并骨感的数据的有效补充,社交网络可以丰富从骨感数据中学到的用户画像,以及增强用户与物品之间关系的函数,从侧面丰富了”两点一线“。因此结合社交网络的推荐可以理解为通过利用社交网络分析技术来更好的理解人与人之间的行为、关系等机理以此来更好的为合适的人找到合适的物品。
一、首先,我们介绍利用有趣的社交网络分析结论来结合到传统推荐中,以此来更好的建模用户画像以及用户-物品连接函数。
- 同质性和社会影响
大多数前期的社会化推荐论文都是基于此理论(同质性和社会影响,Homophily and Social Influence),相互连接的用户更趋向于有相似的行为偏好,同时行为偏好相似的人更倾向于建立连接。反映在推荐模型中的含义即为约束用户的特征向量应该尽可能的与其朋友的特征向量在向量空间当中距离相近。
比如,Jamali等人发明的SocialMF[1]算法,目的在于约束用户的行为特征应该与用户所连接的社交邻居的平均偏好尽可能的相近,具体函数如下所示。
其中,该函数具体包含三部分,第一部分为基本的矩阵分解模型,目的在于学习用户的评分偏好;第二部分为社交约束项,目的在于对用户向量进行约束,使得该用户的特征向量与朋友的社交向量的平均尽可能的相近;第三部分为正则项,用来缓解模型的过拟合问题。
此外,Hao Ma等人认为用户所关注的好友的爱好存在多样性的假设,提出了SoReg[2]方法,不再强制要求用户必须与全体朋友的偏好一致,而是约束用户与各自的好友存在不同的社交影响,具体的函数如下所示。
其中,第一和第三部分与SocialMF方法一致,不同的是第二部分社交约束项。由之前的约束用户的向量与关注朋友向量的平均向量相近改进为约束用户的向量与每一个关注朋友的向量相近,同时考虑了用户与每个朋友之间的社交相似性,相似性度量为两个用户的共同打分程度。通过改进,使得算法不仅仅考虑用户的社交连接,还将评分偏好纳入到了社交相似性度量上,起到了细粒度的社交影响对于推荐的提升。
以上两种模型可以看作是在矩阵分解的基础模型上,通过增加社交约束项来学习用户的向量表示。除了上述方式来融合社交信息外,还可以通过同享表示的方式来利用社交信息。HaoMa等人提出的SoRec[3]算法可以看作基于特征共享的社交推荐算法,具体的公式如下所示。
其中,用户低维特征向量通过同时分解评分矩阵和社交关系矩阵来进行学习,使得学到的用户特征向量可以兼顾用户的评分习惯和社交特性。
随后,另一种共享表示学习的方法TrustSVD[4]被提出,不仅用户的显式评分数据与社交关系应该被建模外,用户的隐式行为数据以及社交关系同样也应该被考虑到,因此在SVD 模型的基础上引入了隐式社交信息,具体公式如下所示。
其中,第一项为评分矩阵分解,旨在拟合用户的评分习惯同时学得隐式行为信息;第二项为信任矩阵分解,旨在拟合用户的信任关系;第三项为正则项,用来避免模型出现过拟合问题。为了同时捕捉用户的显式和隐式的评分以及社交信息,关键在于第一项,其中用户对于项目的具体评分预测公式如下所示。
通过将用户的隐式反馈信息以及用户的隐式社交信息考虑到模型中,使得用户的特征表示不仅仅依靠用户评分特征向量,还依靠用户的隐式反馈信息以及用户的隐式朋友信息,致使用户的特征表示更符合实际应用场景。
- 小世界理论
小世界理论,又名六度分隔理论(Six Degrees of Separation),意思是你和任何一个陌生人之间所间隔的人不会超过五个,也就是说,最多通过五个人你就能够认识世界上任何一个陌生人。
比如,Jamali等人提出了TrustWalker[5]算法,一个结合了基于信任方法和协同过滤方法的随机游走模型。其中,在随机游走的过程中应用了六度分隔理论。
通过用户所连接的社交网络进行随机询问,询问的深度不超过六度分隔理论中的理论数值。另外,不仅只考虑特定用户的目标项目评分,还把目标项目的相似项目考虑其中(基于项目的协同过滤思想)。随着随机游走轮数的增加,使用相似项目评分的概率也逐渐增加。
- 无标度网络
现实世界中的网络,只有少数的节点往往拥有大量的连接,而大部分节点却存在很少连接。一般将网络中的节点度分布符合幂律分布的复杂网络称为无标度网络(Scale-free Network)。这也很符合实际情况,大佬往往是极少的,更多的是平凡普通人。
目前大火的网络嵌入技术比如Deepwalk[6],node2vec[7]等模型之所以有效,是因为在社交网络中随机游走产生的序列通过统计结点的分布发现,用户结点的分布与词的分布都满足幂律分布(Power Law)。因此很巧妙的将自然语言处理中的词嵌入技术迁移到社交网络分析中的结点嵌入任务中。可以很自然的将随机游走序列(Sequence)类比为自然语言中的句子(Sentence),社交网络中的用户结点(Node)类比为语料库中的词语(Word),然后将其输入到word2vec模型中,以此产生低维、连续、稠密的用户结点的嵌入表示。
其中,将Embedding技术应用于社会化推荐场景中的方法之一为CUNE[8],其具体的算法公式与SoReg类似,都是基于社交正则项来约束基本的矩阵分解模型,详细的公式表示如下。
值得注意的是,其中语义社交正则项中的社交朋友是通过网络嵌入技术计算得到的,具体的计算步骤如下图所示。
首先通过one-mode映射方法从UI网络中得到用户协同网络CU,然后在CU网络中进行改进的随机游走产生用户结点序列,最后输入到SkipGram模型中,得到每个用户的低维嵌入表示。最终通过低维嵌入向量来计算用户与用户的相似度,得到最终的Top-k语义朋友集合。
对于图嵌入技术的扩展工作近年来逐渐增多,以及利用图嵌入技术来提高社会化推荐性能的技术近年来也异常火热,由于篇幅有限,在此不一一列举,希望大家能够一直保持着学习前沿技术的心。
- 强弱关系
社交网络中的连接关系并不是完全一样的,存在强弱关系(Strong and Weak ties)一说。关于人际关系强弱的解释,强连接表示拥有频繁交互的亲密朋友,而弱连接表示存在连接但交互行为极少的熟人。比如下图的一个社交网络,强连接倾向于在一个相对稠密的子图中出现,像(u,v,w)和(x,y,z)。相反,弱连接倾向于充当"桥梁"的角色来连接不同的子图,像(u,x)这样。
基于社交网络中强弱联系的理论,Xin等人提出了TBPR[9]模型。该模型在BPR的基础上细分了对于物品的排序分类,由原来的[用户产生行为的项目集合>用户未产生行为的项目集合]扩充为[用户产生行为的项目集合>强弱连接用户同时产生过行为的项目集合>只有强连接用户产生行为的项目集合>只有所连接用户产生行为的项目集合>用户未产生行为的项目集合],具体的损失函数如下所示。
二、然后,我们从另一个角度总结几种利用不同类型的社交信息来结合到推荐中的场景,以此来充分的挖掘用户社交属性来提升推荐体验。
- 显式社交信息vs隐式社交信息
以往的文献通过实验表明,社交信息对于改进传统的推荐算法是非常有效的。但是,现实世界中,并非所有的推荐系统中都存在显式的社交朋友关系。2013年的文章[10]明确了显式和隐式社交的定义,同时给出了对于两种社交信息的有效性验证。
如图所示,将用户存在的真实的社交朋友信息称为显式的社交信息,将从评分信息中学到的相似行为的用户集合称为隐式的社交信息。通过实验表明,在系统缺乏显式的社交信息时,通过评分信息生成的隐式社交信息对于推荐系统的性能提升有所帮助;另外,也验证了显式社交信息的有效性要比隐式社交信息的有效性要强的观点。
- 信任社交信息vs敌对社交信息
通过细分社交网络中连接信息的类型,可以细粒度的建模用户偏好模型,进而得到更加准确的用户特征表示。09年Hao Ma等人将该信息应用到推荐中的评分预测任务当中[11],更具体的是结合到矩阵分解模型里,公式如下所示。
该函数第一项为基本的矩阵分解,第二项为约束用户的特征表示与朋友的特征表示相近。另外,对于敌对信息,与上式相反,通过增加约束项,使得用户的特征表示在向量空间中尽可能的与敌对关系较远,具体函数见下式。
另外,17年人们将以上两种信息应用到了推荐系统的Top-N推荐任务中[12]。该模型在BPR的基础上细分了对于物品的排序分类,由原来的[用户产生行为的项目集合>用户未产生行为的项目集合]扩充为[用户产生行为的项目集合>用户同时产生过行为的项目集合>用户未产生行为的项目集合>用户敌对关系产生过行为的项目集合]。
三、最后,我们从深度学习技术的角度来介绍几种经典的网络结构与社交推荐相结合的场景,以此来更细粒度的建模用户的特征表示,最终达到提升推荐精度的目的。
- 多层感知机(MLP)
社会化推荐系统,其通过结合用户的社交关系来缓解用户对项目的评价数据的稀疏性问题,近年来被证实可以显著提高推荐性能。这些基于社交的推荐系统,许多都是将用户之间社交特征的线性地结合在一起。然而,这些方法缺乏从社会关系中捕获复杂和内在的非线性特征的能力。基于此,提出了DeepSoR[13]模型。
该框架提出了一种基于深度神经网络的模型,从社会关系中学习每个用户的非线性特征,简单来说就是将社交网络关系输入到当前经典的图嵌入模型node2vec中,然后得到社交用户的低维表示,并将其集成到概率矩阵分解中进行评价预测。实验结果表明,该方法优于目前最先进的社会化推荐系统。该文章为AAAI18的短文,感觉描述的不是很详细,也希望能与大家进行交流学习。
- 循环神经网络(RNN)
众所周知,近年来深度学习技术被广泛的应用于社会化推荐系统中,用来提升推荐系统的用户体验。但大部分的社会化推荐方法他们只使用了直接邻居的信息,较远距离的邻居其实也可以提供有用的信息。同时,大多数模型对邻居的信息一视同仁。此外,大多数模型没有显示的捕捉邻居的意见信息到社交推荐场景中。基于此,提出了以下深度神经网络模型DSCF[14],用以捕捉带有不同观点的社交信息。
该深度社交推荐框架包含4层,分别是随机游走层,嵌入层,序列学习层和输出层。其中,随机游走层没有采用一般的随机游走策略,而是考虑不同项目对于用户序列的影响,用来生成项目感知的社交用户游走序列(item-aware social sequences);嵌入层用来建模用户-项目的交互信息,因为通过随机游走从用户邻居中获取了用户-项目的交互行为信息,所以在此学习用户对于项目的行为偏好;在序列学习层通过双向的LSTM(RNN)来学习项目感知的社交用户的低维嵌入表示;最后在输出层进行评分预测,进行有监督的训练。
- 图卷积网络(GCN)
众所周知,近年来图神经网络(GNNs)被证明具有强大的图数据学习能力,能够将节点信息与拓扑结构有机结合。由于社交推荐系统中的数据可以表示为用户-用户社交图和用户-项目图,因此GNNs的这些优点为社交推荐提供了巨大的发展潜力,所以提出了以下深度社交推荐框架GraphRec[15],用来从丰富的社交信息中学得充分的特征表示。
该框架主要包括三个组件:用户建模组件、项目建模组件和评分预测组件。其中用户建模组件包括项目聚合和社交聚合两部分,因为对于一个用户其暴露于两个域中,即评分域和社交域,因此从两个域中可以学到更具表现力的特征表示。项目建模组件则与评分域中用户建模部分相似,只不过由原来的用户产生过行为的项目集合改为该项目被产生过行为的用户集合而已;最后为评分预测部分,通过将用户建模组件产生的用户特征向量与项目建模组件产生的项目特征向量进行串联输入到MLP中,最后进行有监督训练。
- 对抗生成网络(GAN)
近年来,由于社交网络对我们日常生活的影响越来越大,因此社交推荐技术得到了飞速的发展。大多数现有的社会推荐方法统一了评分域和社交域的用户表示。然而,由于用户在两个领域的行为和交互方式不同,使得它们的表示具有异构性,因此可能会限制用户在各个领域的表示学习。此外,传统的推荐系统大多不能有效地优化这些目标,因为它们在优化过程中使用了负抽样技术,无法对训练提供足够的信息指导。为了解决上述挑战,提出了一个新的深度对抗社会推荐框架DASO[16]。
该框架所用数据包含两个域,即评分域和社交域。模型包括三个组件,即评分域中的对抗学习(Item domain adversarial learning)、社交域中的对抗学习(social domain adversarial learning )以及循环用户建模组件(cyclic user modeling )。其中,项目域对抗学习是采用对抗学习的方式来动态生成“困难”、信息量大的负样本来指导用户和项目的表示学习。生成器用于为每个用户“采样”(推荐)项目,并输出用户-项目对作为虚假样本;另一个是鉴别器,它将从真实的用户-项目交互对中区分生成的用户-项目对样本;社交域中的对抗学习与上述类似,也包括生成器和鉴别器,不同的是,其是从真实的用户-用户连接对中区分生成的"假"社交关系;循环用户建模组件旨在建模两种域中用户和项目的特征表示的联系。
四、写在最后
当然深度学习并不像媒体所吹嘘的那样,是所有应用任务的万能钥匙,同样有其限制条件与适用的场景。
首先,在数据量偏小的情况下,并不适合应用深度学习。由于其参数空间巨大,微小的数据喂给深度学习,并不足以填报它的肚子,致使很容易造成结果的过拟合状态。
其次,当数据不存在局部相关特性时,首选也不是深度学习。深度学习之所以能在计算机视觉以及自然语言处理领域大放异彩,有很大原因是图像和文本数据都具有局部相关性。比如图像中,相邻的点组成边,相连的边组成轮廓,可谓一个像素不能表达足够的信息,但一堆像素就能表示这是人脸还是狗头;语言中由单词组成句子,相邻的单词间存在相近的表达,同时单词间的次序一旦被打乱,那么整体所表达的信息也同时被打乱了。这些具有局部相关特性的数据,配合以特定的网络结构可以提取出其中的局部相关特性,同时配合深度架构达到层次特征的提取,从而达到令人满意的效果。而对于不具有局部相关特性的数据,没法用特定的网络拓扑来捕捉它们的信息,在深度学习中就只能用MLP来完成模型的训练,而通常MLP的效果通常要弱于GDBT , RF等传统集成树模型。
再者,不同的数据形式需要设计特定的网络结构,不存在通用的深度学习架构。图像数据被表示为二维矩阵的形式(当然三通道的图像被表示为三维矩阵),为了获取图像的局部特征,人们基于平移不变性设计出了参数共享的卷积神经网络(CNN),利用滑动窗口可以很好的捕捉局部特征,并且缩小了参数空间;文本数据被表示为序列的形式,人们基于分布式假设设计出了带滑动窗口的词嵌入技术(Word2vec),使得学到的词向量具有推理的作用;对于带有时间序列的数据,人们设计出了循环神经网络(RNN),使得参数可以受上一时刻的影响;对于图结构的数据,最近人们又设计出了图卷积神经网络(GCN)来更好的获取图结构上的特征;对于没有特殊形式的数据,深度学习不见得能更胜一筹,当人工特征工程做到一定程度后,传统模型是可以超越深度学习的。
另外,在需要给出较强业务理解的时候,不适合应用深度学习。因为深度学习的黑盒性质,使得结果要么惊人的好,要么吓人的差,使得人们不理解其中的原理,难以指导工程师进一步调整方案。另外即使通过调参达到了模型上线的标准,工程师也不敢轻易尝试,毕竟用户需要的是合理的解释,工程师需要的是稳定的性能和知根知底的算法。
以上对于社交推荐的总结只是自己浅显的一些认知,如有纰漏,欢迎大家批评指正。另外,以上提及的论文也只是推荐领域的沧海一粟,更多有意思的研究成果也欢迎大家进行分享,达到共同学习、共同促进的目的。
参考文献
[1].Jamali et al. A Matrix Factorization Technique with Trust Propagation for Recommendation in Social Networks. RecSys, 2010.
[2].Ma et al. Recommender systems with social regularization. WSDM, 2011.
[3].Ma et al. Sorec: social recommendation using probabilistic matrix factorization. CIKM, 2008.
[4].Guo et al. TrustSVD: Collaborative Filtering with Both the Explicit and Implicit Influence of User Trust and of Item Ratings. AAAI, 2015.
[5].Jamali et al. Trustwalker: a random walk model for combining trust-based and item-based recommendation. KDD, 2009.
[6].Perozzi et al. DeepWalk: online learning of social representations. KDD, 2014.
[7].Grover et al. node2vec: Scalable Feature Learning for Networks. KDD, 2016.
[8].Zhang et al. Collaborative User Network Embedding for Social Recommender Systems. SDM, 2017.
[9].Wang et al. Social recommendation with strong and weak ties. CIKM, 2016.
[10].Ma Hao. An experimental study on implicit social recommendation. SIGIR, 2013.
[11].Ma et al. Learning to recommend with trust and distrust relationships. RecSys, 2009.
[12].Rafailidis et al. Learning to Rank with Trust and Distrust in Recommender Systems. RecSys, 2017.
[13].Wenqi et al. Deep Modeling of Social Relations for Recommendation. AAAI, 2018.
[14].Wenqi et al. Deep Social Collaborative Filtering. RecSys, 2019.
[15].Wenqi et al. Graph Neural Networks for Social Recommendation. WWW, 2019.
[16].Wenqi et al. Deep Adversarial Social Recommendation. IJCAI, 2019.