【图表示学习算法系列】二:NGCF-图结构上协同过滤(1)

0.摘要

现有的一些算法存在的缺点是没有对隐藏在用户(user)和样本(item)直接的交互信息进行学习编码,没有将其融入到嵌入向量的学习过程。文章中将这种交互信息称为collaborative signal(而这个东西可以理解为用户-样本交互图的拓扑结构,在GCN和GraphSAGE等算法中都是有所体现的)。
本文的将用户-样本的交互信息加入到嵌入表达的学习过程中,可以将用户-样本之间的交互信息看做一个二分图。提出一个新的推荐系统框架NGCF(Neural Graph Collaborative Filtering),通过在图结构上传播嵌入表达对拓扑结构进行学习,有效的对高阶连接信息进行建模。该算法在3个公开数据集上测试,比HOPRecCMN算法有很好的提升。

1.介绍

在这里插入图片描述
协同过滤(CF)通过假设行为相似的用户会对物品表现出相似的偏好来解决个性化推荐问题。为了实现这个假设,一种常见的方法是对用户和项进行参数化,从而重建历史交互信息,并根据参数预测用户偏好。
一般来说,在可学习的CF模型中有两个关键的部分,第一个是嵌入表达,也就是将用户和样本都进行向量化表示,第二个就是交互信息建模。例如,矩阵分解(MF)将用户/样本的ID直接嵌入到嵌入向量中,并通过内积运算对用户-样本交互进行建模。协同深度学习对MF算法进行拓展,从样本的边信息中提取更深层的表达信息。神经协同过滤模型用非线性神经网络代替了MF算法中用于计算交互信息的内积过程。
本文通过利用用户-样本之间的高阶连接信息(如上图所示)来对交互信息进行编码。如图中右图所示,比如u1-i2-u2,用户1和2都连接到i2,从而得到了相同的偏好信息,进一步可以看出u1对i4和i5具有偏好,而这就是通过高阶连接进行信息传递。

2.方法

在这里插入图片描述
如上图所示,NGCF算法有三个组成部分:
(1)Embeddings用于用户和样本嵌入的初始化过程;
(2)Embedding Propagation Layers通过利用高阶连接信息来细化嵌入向量(相当于学习不同跳数距离的连接信息)
(3)Prediction Layer将传播层的细化的多个嵌入向量进行聚合,并得到这一对用户-样本的关联分数( the affinity score)。

2.1 嵌入层Embedding Layer

将用户u和样本i通过一个d维的向量进行表示,把所有的用户样本的向量拼在一起得到一个参数矩阵,可以看做是一个嵌入向量的查找表,如下:
在这里插入图片描述
此处的查找表只是一个初始化值,然后通过之后的网络结构进行一个端到端的学习过程。在传统的推荐模型如MF算法和神经协同过滤算法中,用户样本的ID嵌入被直接输入一个交互层(或操作符)来获得预测分数。而本算法在Graph进行Embedding的传播,从而可以将协同信息(图结构)记录在Embedding中。

2.2 嵌入传播层

利用CNN的信息传递机制进行构建,从而捕获图结构中的CF信号,并且对初始化后的用户样本的嵌入向量进行调节。首先给出单层传播过程的设计方案,然后推广到多层连续的层结构中。

2.2.1 一阶传播

直观上看,被交互的样本(item)直接表现出来用户的偏好信息,类似的,与一个样本进行交互的用户(也就是与一个item有连接的user)可以看做是该样本的属性值,从而用于度量两个样本之间的协作相似度。在此基础上进行用户和项之间的嵌入传播,主要有以下两个操作过程:
(1)信息构造(Message construction
对于图中一个存在连接的用户-样本节点对(u,i),定义从i到u的信息为(从样本到用户的方向传递):
在这里插入图片描述
其中m是一个表示信息的嵌入向量(message embedding),f()是一个信息编码函数,输入为这个节点对中的用户u和样本i的嵌入向量,以及相关系数p,相关系数p用于控制在边(u,i)上传播时的衰减因子。本文中函数f()为:
在这里插入图片描述
其中W1W2为可训练的权重矩阵,矩阵维度为d'*dd'为转换后的维度,与传统GCN不同的是,此处仅仅考虑嵌入向量ei的贡献,并添加eieu之间的交互信息,添加方式为两个嵌入向量的哈达玛积(Hadamard product,文中描述的是逐元素乘积element-wise product)。这使得信息依赖于ei和eu之间的密切程度,比如在相似的样本之间传递更多的信息。根据GCN原理,将相关系数p设置为图的拉普拉斯范数:
在这里插入图片描述
其中两个N分别表示用户u和样本i的一阶邻居数量。从表示学习的角度看,该系数表示样本对用户偏好程度的贡献量;从信息传递角度看,该系数可以看做是一个衰减系数,受到节点连接的边长度的影响。
(2)信息聚合(message aggregation
通过对用户u的邻居节点传播来信息进行聚合,来调节u的嵌入表达。聚合函数如下:
在这里插入图片描述
等式左边表示用户u在第一次嵌入传播层结束后得到的嵌入向量,为了保证获取到用户u的原始特征,在对邻居信息聚合的过程中,增加自环,其自环信息为:
在这里插入图片描述
W1与前文中所述的W1为同一参数矩阵。同理,样本i的嵌入向量的推理方式与上述类似。

2.2.2 高阶传播

通过堆叠多层嵌入传播层来利用更高阶的连接信息,这种高阶的连接信息对于评估用户和样本之间的联系至关重要。通过堆叠l层嵌入传播层,用户(或者样本)就会接收到自身l-阶的邻居的信息。因此当在第l层时,传播形式可以推广为:
在这里插入图片描述
其中各个字母为:
在这里插入图片描述
如下图所示,展示了一个最初节点的嵌入向量是如何传播到高阶邻居中的。
在这里插入图片描述
传播过程的矩阵形式
上述过程只是针对单个节点进行算法上的描述,为了能够对一批节点进行计算,给出了逐层的传播规则:
在这里插入图片描述
等式左边为所有用户节点和样本节点在第l层得到嵌入向量(此时为一个矩阵形式),其中I为单位矩阵,L为拉普拉斯矩阵,定义为:
在这里插入图片描述
其中R是一个交互矩阵,A是一个邻接矩阵,D矩阵为对角矩阵,具体取值见论文。同时更新用户和样本的节点信息可以进行高效的计算,并且不进行在GCN在大规模图中采用的节点采样策略。

2.3 模型预测

经过L层传播之后,得到了用户u的多个嵌入表达,定义为:
在这里插入图片描述
将所有的嵌入表达进行连接:
在这里插入图片描述
其中||表示拼接运算。通过调节L的值,就可以控制图中信息的传播范围。除了拼接方式,还可以通过其他聚合方式,比如加权平均,最大池化,LSTM等。选择拼接方式的原因是该方式比较简单,并且没有额外的参数加入,并且最近的工作中证明了其有效性。
最后通过内积运算得到用户对目标item的偏好:
在这里插入图片描述

2.4 优化

为了模型参数的学习,利用pairwise BPR损失进行优化,该损失方式考虑了观测到的交互和未观测到的交互的顺序,被观测的交互对用户偏好影响更大,优化目标如下:
在这里插入图片描述
其中O为数据集合,每一个数据都是一个三元组,(u,i)表示已经观测的到交互,(u,j)表示未观测到的交互(相当于常用的正负样本混合形式)。ln右边的为sigmoid函数,最右侧的一项为L2正则化项,防止过拟合,采用mini-batch+adam优化器进行参数训练,每一个batch从O中进行随机采样。

2.4.1 模型大小

虽然NGCF算法每一层都有一个嵌入矩阵,但是每一层只引入了两个权重矩阵,与最精简基于嵌入的推荐系统模型–MF算法相比,本算法只引入参数:
在这里插入图片描述
其中L一般取值小于5。具体数值分析略(论文中举了一个具体数据集算了一下)。

2.4.2信息和节点Dropout

为了解决过拟合问题,常常采用Dropout策略,在GCN的工作基础上,本文提出两种Dropout策略,分别为message dropoutnode dropout。第一种随机舍弃传送出的信息,如下图公式,按照概率p1随机丢弃公式中计算出的信息,不会汇聚给用户的嵌入向量。也就是只有部分信息会用于给当前节点进行嵌入向量的调节。
在这里插入图片描述
第二种,随机冻结一些特定节点,使其不进行信息的向外传播,对于第l层而言,随机丢弃拉普拉斯矩阵中的(M+N)p2个节点,其中p2为Dropout率。需要注意的是,只在训练时启用Dropout。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章