基于图的推荐算法(4): Graph Convolutional
前言
- 发表在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
为了预测二部交互图中的链路,文中构建了一个双线性解码器,并将每个等级作为一个单独的类。
解码器通过双线性操作,然后应用softmax最大激活函数,生成可能的评分级别:
其中是对应第r个评分级别的参数矩阵,最终的预测评分可以通过预测评分期望计算得到:4. 模型训练
只根据用户已经观察到的交互项。
其他训练细节:
-
mini-batching 只从用户和项目对的集合中抽取固定数量的贡献。是一种有效的正则化方法,又减少了训练模型所需的内存。通过实验验证了在调整正则化参数的同时,使用小批量和全批量训练可以得到 MovieLens-1M 数据集的可比结果。
-
Node dropout 对节点向量进行dropout,为了使该模型能够很好地推广到未被观测的评级,它通过随机丢弃一个特定节点的所有传出消息的降噪设置进行训练。初步实验发现节点丢失比消息丢失更有效地进行正则化。message dropout对于单个发出的消息被独立地删除,使嵌入对于单个边的存在或不存在更加强大。相比之下,节点丢失也会使得嵌入更加独立于特定用户或项目的影响。
-
weight sharing 并非所有用户和项目对于每个评级级别都有相同数量的评级。在图形卷积层中,这导致的某些列被优化的频率明显低于其他列。因此,对于不同的 r,矩阵之间某种形式的权重共享是可取的,以减轻这种优化问题。
将这种类型的权重共享称为序数权重分担,因为更高的评级包含了越来越多的权重矩阵。
作为双线性解码器正则化的一种有效手段,我们采用一组线性组合矩阵的形式来进行权重共享,与上面的形式基本相同通过累加来进行权重共享,如下所示,为了避免引入过多参数,要小于评级数量:
此外文中还考虑了辅助信息的使用:
实验结果
小结
这篇工作基于图神经网络的思想,将推荐任务转换为评分预测任务,并针对具体任务设计了auto-encoder进行端到端的特征提取和评分预测;与前面介绍的三篇工作有着较大差异,后续也有相似研究开展。
END
本人简书所有文章均为原创,欢迎转载,请注明文章出处 。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问本人简书主页查看最新信息https://www.jianshu.com/u/40d14973d97c