Advertisement

【推荐算法论文阅读】LightGCN: Simplifying and Powering Graph Convolution Network for Recommendation

阅读量:

这篇文章是基于NGCF提出的改进,NGCF相关的工作参考【推荐算法论文阅读】Neural Graph Collaborative Filtering

一、背景

通过严格的对照实验(在相同的数据集和评估指标上),我们得出结论,从 GCN 继承的两个操作——特征转换和非线性激活——对 NGCF 的有效性没有任何贡献。 更令人惊讶的是,删除它们会显着提高准确性。 这反映了在图神经网络中添加对目标任务无用的操作的问题,这不仅没有带来任何好处,反而降低了模型的有效性。 受这些实证发现的启发,我们提出了一个名为 LightGCN 的新模型,其中包括 GCN 中最重要的组件——邻域聚合——用于协同过滤。 具体来说,在将每个用户(项目)与 ID 嵌入相关联后,我们在用户-项目交互图上传播嵌入以改进它们。 然后,我们将在不同传播层学习的嵌入与加权和相结合,以获得用于预测的最终嵌入。

二、NGCF简介

在初始步骤中,每个用户和项目都与一个 ID 相关联嵌入。 设e_u 表示用户 u 的 ID 嵌入,e_i 表示项目 i 的 ID 嵌入。 然后 NGCF 利用用户项目交互图将嵌入传播为:
请添加图片描述
Nu 表示与用户 u 交互的项目集,Ni 表示与项目 i 交互的用户集。

然后连接这些 L + 1 个嵌入以获得最终的用户嵌入和项目嵌入,使用内积生成预测分数。

NGCF 很大程度上遵循标准 GCN,包括使用非线性激活函数 σ(·) 和特征变换矩阵 W1 和 W2。 然而,我们认为这两个操作对于协同过滤没有那么有用。 在半监督节点分类中,每个节点都具有丰富的语义特征作为输入,例如论文的标题和抽象词。 因此执行多层非线性变换有利于特征学习。 然而,在协同过滤中,用户-项目交互图的每个节点只有一个 ID 作为输入,没有具体的语义。 在这种情况下,执行多个非线性变换将无助于学习更好的特征; 更糟糕的是,它可能会增加训练的难度。

三、LightGCN模型结构

LightGCN将邻居的特征聚合为目标节点的新表示。 这种邻域聚合可以抽象为:
\mathbf{e}_{u}^{(k+1)}=\mathrm{AGG}\left(\mathbf{e}_{u}^{(k)},\left\{\mathbf{e}_{i}^{(k)}: i \in \mathcal{N}_{u}\right\}\right)
AGG 是一个聚合函数——图卷积的核心——它考虑了目标节点及其相邻节点的第 k 层表示。

3.1 Light Graph Convolution (LGC)

在 LightGCN 中,我们采用了简单的加权和聚合器,放弃了使用特征变换和非线性激活。 LightGCN 中的图卷积操作(又名传播规则 )定义为:
\begin{array}{l} \mathbf{e}_{u}^{(k+1)}=\sum_{i \in \mathcal{N}_{u}} \frac{1}{\sqrt{\left|\mathcal{N}_{u}\right|} \sqrt{\left|\mathcal{N}_{i}\right|}} \mathbf{e}_{i}^{(k)} \\ \mathbf{e}_{i}^{(k+1)}=\sum_{u \in \mathcal{N}_{i}} \frac{1}{\sqrt{\left|\mathcal{N}_{i}\right|} \sqrt{\left|\mathcal{N}_{u}\right|}} \mathbf{e}_{u}^{(k)} \end{array}

对称归一化项\frac{1}{\sqrt{\left|\mathcal{N}_{u}\right|} \sqrt{\left|\mathcal{N}_{i}\right|}}遵循标准 GCN 的设计,可以避免嵌入的规模随着图卷积操作的增加而增加。

值得注意的是,在 LGC 中,我们只聚合连接的邻居,而不集成目标节点本身(即自连接)。 这与大多数现有的图卷积操作不同,后者通常聚合扩展的邻居并需要专门处理自连接。 将在后面的内容中介绍的层组合操作基本上捕获了与自连接相同的效果。 因此,LGC 中不需要包含自连接。

3.2 Layer Combination and Model Prediction

在 LightGCN 中,唯一可训练的模型参数是第 0 层的嵌入,即所有用户的 e^{(0)}_u 和所有项目的 e^{(0)}_I,可以通过上面的式子中定义的 LGC 计算更高层的嵌入。 在 K 层 LGC 之后,我们进一步组合在每一层获得的嵌入,以形成用户(一个项目)的最终表示:
\mathbf{e}_{u}=\sum_{k=0}^{K} \alpha_{k} \mathbf{e}_{u}^{(k)} ; \quad \mathbf{e}_{i}=\sum_{k=0}^{K} \alpha_{k} \mathbf{e}_{i}^{(k)}
在我们的实验中,我们发现将 α_k 统一设置为 1/(K + 1) 通常会导致良好的性能.

我们执行层组合以获得最终表示的原因有三个

  1. 随着层数的增加,嵌入将被过度平滑。 因此,简单地使用最后一层是有问题的。
  2. 不同层的嵌入捕获不同的语义。 例如,第一层对具有交互的用户和项目强制平滑,第二层平滑在交互项目(用户)上重叠的用户(项目),更高层捕获更高阶的相似度。 因此,将它们结合起来将使表示更加全面。
  3. 将不同层的嵌入用加权和相结合,可以捕捉到图卷积与自连接的效果,这是 GCN 中的一个重要技巧。

模型预测被定义为用户和项目最终表示的内积,用作生成推荐的排名分数:
\hat{y}_{u i}=\mathbf{e}_{u}^{T} \mathbf{e}_{i}

3.3 矩阵形式

设用户-项目交互矩阵为 R ∈ R^{M×N},其中 M 和 N 分别表示用户和项目的数量,如果 u 与项目 i 交互,则每个条目 R_{ui} 为 1,否则为 0。然后我们得到用户项目图的邻接矩阵为:
\mathbf{A}=\left(\begin{array}{cc} \mathbf{0} & \mathbf{R} \\ \mathbf{R}^{T} & \mathbf{0} \end{array}\right)

设第 0 层嵌入矩阵为 E^{(0)} ∈ R^{(M+N)*T} ,其中 T是嵌入大小。 那么我们可以得到LGC的矩阵等价形式为:
\mathbf{E}^{(k+1)}=\left(\mathbf{D}^{-\frac{1}{2}} \mathbf{A} \mathbf{D}^{-\frac{1}{2}}\right) \mathbf{E}^{(k)}

其中D是一个(M+N)×(M+N)的对角矩阵,其中每个条目Dii表示邻接矩阵A(也称为度矩阵)的第i行向量中非零条目的数量。 最后,我们得到用于模型预测的最终嵌入矩阵为:
请添加图片描述

3.4 loss函数

我们采用贝叶斯个性化排名(BPR)损失,这是一种成对损失,鼓励观察到的条目的预测高于其未观察到的对应条目:
L_{B P R}=-\sum_{u=1}^{M} \sum_{i \in \mathcal{N}_{u}} \sum_{j \notin \mathcal{N}_{u}} \ln \sigma\left(\hat{y}_{u i}-\hat{y}_{u j}\right)+\lambda\left\|\mathbf{E}^{(0)}\right\|^{2}

全部评论 (0)

还没有任何评论哟~