今天学习的是 KDD18 的一篇论文《Graph Convolutional Matrix Completion》,作者是阿姆斯特大学的同学,Thomas N. Kipf 大佬是二作。
前面我们介绍了 Kipf 大佬利用变分自编码器(VGAE)来完成链接预测问题,链接预测问题放在矩阵中可以被认为是矩阵补全。这篇论文在 VGAE 的基础上提出了 GCMC 模型,设计了一个可微的基于消息传递的图自编码框架进行矩阵补全(matrix completion),同时考虑边信息和网络结构,并分析了边信息在推荐系统冷启动的影响。
先简单介绍下二部图(bipartite graph)。
二部图是一种特殊的图结构,所有的顶点可以被分割为两个互不相交的子集(U,V),并且每条边 所关联的顶点 分别属于这两个不同的顶点集合 。
二部图的应用非常广泛,比如说电影推荐这样的交互数据则可以用一个二部图来表示(user-movie),图的边则是用户对电影的评分,此时的矩阵补全就是预测用户的观看后的评分。
作者在这篇论文中提出的 GCMC 框架是一种对矩阵进行补全的图自编码框架,其利用 user 和 item 的交互信息生成 user 和 item 之间的隐特征,并通过双线性解码器来重建 user 和 item 之间的链接。
这篇论文的主要贡献主要有两点:
下图为 GCMC 的基本流程,在二部图的矩阵补全任务转换成比链接预测问题,并使用端到端的图自编码器进行建模:
首先来看编码器。
本文针对推荐任务提出了图卷积编码器,其能够有效的利用卷积操作的权值共享。图数据的局部卷积操作只考虑节点的直接邻居,因此可以应用于图数据中的所有位置。
我们也知道,局部图卷积可以看作是一种消息传递,节点的特征值沿着边进行传递和转换。作者设计了一种基于评分等级的转换,从 item j 到 user i 的信息传递被定义为:
其中, 为正则化常数,可以为左正则化 也可以为对称正则化 。 表示 user i 的邻居集合; 为基于边类型(评分等级)的参数矩阵; 表示 item j 的特征向量。
从 user 到 item 的消息传递也可以采用类似的方式,这个过程称为图卷积层。
在消息传递完成之后,每一个节点都会对消息进行累积操作:
其中, 为聚合运算,如 stack、sum 等; 为激活函数。
对 进行转换便能得到 user 的 Embedding:
其中,W 为参数矩阵。
计算 item 的 Embedding 方法类似,并共享参数矩阵,这个过程称为稠密层。
在实验过程中,堆叠图卷积层并不能提高效果,但是在卷积层后连一个稠密层效果会好很多。
再来看下解码器。
作者提出了一个双线性解码器(bilinear decode),把用户对物品的评分等级视为多类。 表示为 user 和 item 之间重构的评分矩阵。解码器可以通过对可能的评分等级进行双线性运算,然后用 softmax 函数生成一个概率分布:
其中, 是一个可训练的参数共享矩阵(后面进行介绍),H 为节点的隐特征的维度。
预测的评分等级的计算方式为:
然后看一下模型训练。
「考虑 Loss Function」
使用交叉熵损失函数:
其中, 为指示函数, 是为 1,否则为 0; 用来表示链接是否存在,其作用类似 mask;
「考虑 Mini-batch」
「考虑 Node Dropout」
「考虑 weight sharing」
其中, 为基础矩阵,评分越高, 包含的 数量越多。作者称之为序数权值共享(ordinal weight sharing)。
解码器中的权重矩阵 就是采用一组基于基础参数矩阵的线形组合的参数共享矩阵:
其中, 表示基权重矩阵 的数量; 为可学习的系数。
为避免过拟合,同时减少参数的数量,基权重矩阵的数量要小于评分级别的数量。
考虑建模时的除了节点表征外的辅助信息(side info),以 user 节点为例:
其中, 和 为可训练的权重矩阵; 为一个 bias, 为节点 i 的辅助信息。
item 节点同理,把 u 改成 v 即可。
简单看一下实验。
先看下数据集:
然后是不同模型在 ML-100K 上的表现,评分标准为 RMSE:
数据集大一点的情况下:
效果不满意再试一下其他数据集:
效果满意了,我们再分析下冷启动:
总结:GCMC 利用基于消息传递的图卷积网络将节点特征编码为隐特征,并利用双线形解码器预测未知边的不同评分值的概率评分,并取其期望作为边的预测评分。
推荐阅读
斯坦福大学NLP组Python深度学习自然语言处理工具Stanza试用
太赞了!Springer面向公众开放电子书籍,附65本数学、编程、机器学习、深度学习、数据挖掘、数据科学等书籍链接及打包下载
数学之美中盛赞的 Michael Collins 教授,他的NLP课程要不要收藏?
模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法
关于AINLP
AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。