文章目录
本文首发于公众号:code路漫漫,欢迎关注
Motivation
社交信息在推荐系统中常以社交关系图存在,其中的结点是用户,边表示用户之间的联系,两个结点有边直接相连表示这两个用户是好友。
在推荐系统中存在着两种图:
- 社交网络图 user-user,包含用户和用户之间的社交信息
- 用户物品交互图 user-item,包含用户和物品之间的交互信息
社交关系图中包含着用户的社交信息,结合社交网络的推荐常用做法就是把社交网络信息整合到用户和物品的 latent factor learning 中。在推荐系统中引入社交信息存在着几个挑战:
- 怎么整合两种图的信息
- 怎么捕捉用户对物品的交互和偏好
- 怎么区分社交关系的影响,不同的好友应该具有不同的影响力
Contribution
论文的几个贡献:
- 提出了 GraphRec 框架,把社交信息引入到推荐中
- 提出了在 user-item graph 上捕捉用户物品交互和用户偏好的方法
- 提出了考虑不同社交关系影响的方法
- 做了对比试验展示 GraphRec 的有效性
Solution
GraphRec 框架由三个模块组成:
- User Modeling,学习 user latent factor
- Item Modeling,学习 item latent factor
- Rating Prediction,进行评分预测
上面图的右下角是三个 embedding,User Modeling 和 Item Modeling 都利用了其中的一些embedding进行学习,下面介绍每个模块
User Modeling
为了更好的学习到 user latent factor,论文提出了两个 aggregation 方法对已有的信息整合
- item aggregation,学习 item-space user latent factor
- user aggregation,学习 social-space user latent factor
然后对两个 aggregation 的结果进行整合即可得到最终的 user latent factor
1 item aggregation
简单概括一下:
首先是 item aggregation,它结合 item embedding 和 opinion embedding (opinion 是用户对交互物品的评分)得到 interaction representation,然后把 interaction representation 和 user embedding 结合起来得到结果
更详细的表述:
公式符号的定义:
公式1里面利用了两个组件,一个是 opinion-aware interactoin representation,另一个是 Aggreitems 聚合函数
opinion-aware interactoin representation 的定义方法如下:
这里直接用了一个 2 层的 MLP 来接收 item embedding 和 opinion embedding,MLP 的输出就是上文要求的 representation。
至于聚合函数,这里使用了注意力机制去计算每个邻居的影响,而不是使用 mean-pooling 对所有邻居做同等的处理
至此我们的 item aggregation 就完成了,总结一下,一个是由 2 layer MLP 得到的 interaction representation,另一个是注意力机制得到的聚合函数,两个组合成公式1,然和得到 item-space user latent factor
2 social aggregation
从特定的user出发,聚合它邻居节点的item-space embedding,由此得到 social-space embedding,逻辑和计算方法同 item aggregation
也使用了注意力机制去得到结果
3 Learning User Latent Factor
这里就是把前两个学习到的 latent factor 直接拼接起来作为最终的结果
最后整个 User Modeling 的模块图
Item Modeling
和 User Modeling 一样,都是为了更好的得到 item representation,这里只有一个 user aggregation
User Aggregation
使用和物品交互过的用户来建模物品,具体表现是通过 user embedding 和 opinion embedding 来得到 opinion-aware interaction user representation
然后利用这个 fjt 去进一步计算 item latent factor
同样的使用注意力机制改进权重计算
至此我们得到了 user 和 item 的 latent factor,然后接下来就是组合了
论文这里直接将两个 latent factor 进行拼接,然后用 MLP 去预测得分,也是最后的 Rating Prediction 模块的组成
Evaluation
这里是实验部分
数据集是 Ciao 和 Epinions
评价指标是 MAE 和 RMSE
baseline 的话直接看实验结果吧
可以看到论文显示 GraphRec 是最优的,证明社交信息的引入有助于提高模型的性能
作者对进行了消融实验:
GraphRec-SN:去掉社交信息
GraphRec-Opinion:去掉 opinion embedding
实现显示 GraphRec-SN 效果不如 GraphRec,而去掉 opinion embedding 会使得性能很糟糕
然后对注意力机制的有效性进行了研究,这里划分了五个机制
还是原来的最好
然后对 embedding size 进行了研究
代码:
代码这一块网上争议比较大,包括官方的代码都没能复现出论文的效果
这里有作者开源的代码
https://github.com/wenqifan03/GraphRec-WWW19
还有几个第三方实现的代码
https://github.com/Wang-Shuo/GraphRec_PyTorch
https://github.com/lcwy220/Social-Recommendation
Summarization
一篇将社会信息引入推荐系统的文章,论文中涉及到的 embedding:
user embedding
opinion embedding
item embedding
然后把这些 embedding 聚合,得到更好的 represention,从而得到改进最后的预测结果