基于图的推荐算法(4):|基于图的推荐算法(4): Graph Convolutional Matrix Completion
前言
- 发表在KDD2018的基于GNN思想进行协同过滤的算法
原文链接 -
作者来自提出GCN的团队
文章图片
针对用户-物品交互二部图,文中从链路预测的角度考虑了推荐系统的矩阵填充问题。
基于图结构化数据深度学习的最新进展,我们提出了一种在二部图上可微消息传递的图自动编码框架(Graph Auto-encoder)。
模型方法
本质上就是将推荐任务视为一个图中节点间预测链接的任务(Link Prediction),预测交互矩阵中未知项。
以往的基于图的推荐系统方法通常采用多级流水线,包括图特征提取模型和链接预测模型,分别进行训练。然而,最近的研究结果表明,通过使用端到端学习技术对图形结构化数据进行建模,特别是使用图自动编码器进行非监督式学习和链接预测,结果往往可以得到显著改善。
文章图片
在接下来的部分,我们将介绍一种用于矩阵完成任务的图形自动编码器的具体变体。
1. Graph Auto-encoder 回顾 Graph Auto-encoder是在无向图上的一种用于非监督学习和链接预测的端到端模型:,输入 的特征矩阵X和图的邻接矩阵A ,输出新闻的节点特征嵌入矩阵
对于推荐算法中的二部图,编码器可以定义为:
文章图片
其中 是邻接矩阵,记录其中评分值都为r的节点邻接情况。
因此可以将针对二部图的编码器定义为:
文章图片
我们可以训练这个自动编码器,通过最小化重构误差。
2. Graph convolutional encoder 文中提出了一种特殊的编码器模型,它能够有效地利用图中各位置之间的权重分配,并为每个边类型(或等级类型) 分配独立的处理通道。
权重分配的形式是受到最近一类卷积神经网络的启发,这类网络直接对图结构化数据进行操作。
图形卷积层执行局部操作,只考虑节点的直接邻居,因此同样的转换应用于图中的所有位置。
这种局部图卷积可以视为一种信息传递(Message Passing),节点特征可以通过边进行传递,文中为每个评分级别设计了一个特定的转换方式,从物品j到用户i的边信息表示如下:
文章图片
其中 为正则化常量:
文章图片
则是边参数矩阵, 即物品节点的特征向量。
在信息传递后,通过累计操作(accumulate)如加和、拼接等操作,将当前节点所有邻接不同评分级别的节点信息进行聚合:
文章图片
最终节点表征如下:
文章图片
对于用户和物品节点采用不同卷积参数,共用最后的全连接参数;在实践中,仅使用单层卷积和单层全连接的组合构成模型。
3. Bilinear decoder 【基于图的推荐算法(4):|基于图的推荐算法(4): Graph Convolutional Matrix Completion】为了预测二部交互图中的链路,文中构建了一个双线性解码器,并将每个等级作为一个单独的类。
解码器通过双线性操作,然后应用softmax最大激活函数,生成可能的评分级别:
文章图片
其中 是对应第r个评分级别的参数矩阵,最终的预测评分可以通过预测评分期望计算得到:
文章图片
4. 模型训练
文章图片
文章图片
只根据用户已经观察到的交互项。
其他训练细节:
- mini-batching 只从用户和项目对的集合中抽取固定数量的贡献。是一种有效的正则化方法,又减少了训练模型所需的内存。通过实验验证了在调整正则化参数的同时,使用小批量和全批量训练可以得到 MovieLens-1M 数据集的可比结果。
- Node dropout 对节点向量进行dropout,为了使该模型能够很好地推广到未被观测的评级,它通过随机丢弃一个特定节点的所有传出消息的降噪设置进行训练。初步实验发现节点丢失比消息丢失更有效地进行正则化。message dropout对于单个发出的消息被独立地删除,使嵌入对于单个边的存在或不存在更加强大。相比之下,节点丢失也会使得嵌入更加独立于特定用户或项目的影响。
- weight sharing 并非所有用户和项目对于每个评级级别都有相同数量的评级。在图形卷积层中,这导致的某些列被优化的频率明显低于其他列。因此,对于不同的 r,矩阵之间某种形式的权重共享是可取的,以减轻这种优化问题。
文章图片
将这种类型的权重共享称为序数权重分担,因为更高的评级包含了越来越多的权重矩阵。
文章图片
此外文中还考虑了辅助信息的使用:
文章图片
实验结果
文章图片
文章图片
文章图片
文章图片
小结
这篇工作基于图神经网络的思想,将推荐任务转换为评分预测任务,并针对具体任务设计了auto-encoder进行端到端的特征提取和评分预测;与前面介绍的三篇工作有着较大差异,后续也有相似研究开展。
END 本人所有文章均为原创,欢迎转载,请注明文章出处 。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问本人主页查看最新信息https://www.jianshu.com/u/40d14973d97c
推荐阅读
- 热闹中的孤独
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 宽容谁
- 放屁有这三个特征的,请注意啦!这说明你的身体毒素太多
- 一个人的旅行,三亚
- 第6.2章(设置属性)
- 布丽吉特,人生绝对的赢家
- 慢慢的美丽
- 尽力
- 一个小故事,我的思考。