LightGCN是NGCF的改良,小博对于NGCF在之前的文章中有简明介绍,如想阅读可点击链接。
代码链接:https://github.com/kuandeng/LightGCN
https://github.com/gusye1234/pytorch- light- gcn
LightGCN核心要点
LightGCN也是使用GCN来辅助协同过滤,但是其只保留了GCN中的邻居聚合部分。
验证猜想
LightGCN的作者在NGCF的基础上认为其使用的方法中,其特征转换部分的转换矩阵和作为超参来进行训练以及其非线性激活函数的使用对于协同过滤没有什么益处。在GCN中使用这两部分是因为其每一个节点都有丰富的语义特征作为输入,但是在用户项目交互图中,每一个节点仅代表一个ID,没有什么别的作用。所以作者将其去掉来验证猜想。
如上图所示(来自论文原文), NGCF-f代表除去了线性转换矩阵 and .
NGCF-n,代表除去了非线性激活函数 .
NGCF-fn代表将其二者都去掉
从结果来看去掉这两部分对于NGCF来说负担更小甚至还可以提高模型能力,因此来验证作者所述的有效性。
LightGCN方法详解
LightGCN结构如上图所示(来自原文)。
1 Light Graph Convolution (LGC)
对比于之前的NGCF的聚合公式
LightGCN则直接省去了非线性激活函数和特征转换矩阵,其聚合公式为
值得注意的是,在其提出的聚合公式中,仅聚合了邻居传来的信息而非NGCF不仅聚合了邻居传来的信息还聚合了自己本身的信息(具体解释在下一小部分给出)
3.1.2 Layer Combination and Model Prediction
在LightGCN中,只需给定每个节点的特征,而后便得:
通过上述所介绍公式,在传播中便可以通过聚合得到每一层每一个节点的特征而无需线性变换和非线性激活函数的作用,
对于各个层直接特征的聚合,作者直接使用如下公式:
即对于每个节点,其每一层的特征编码都配了一个超参α,其可以作为一个超参在训练中获得最优取值。但是值得注意的是,作者声明因为其实践中直接将其定位1/(1+K)便可得到好的效果,所以其便将α都设为1/(1+K)。而对不同层的特征编码加权求和和NGCF中在传播时加入自己的自连接信息有异曲同工之妙,所以在LightGCN的传播过程中舍去了自连接部分。
对于模型的预测则还是使用点积来预测,具体如下所示:
至此LightGCN本质上已经结束,后续会介绍一下模型的矩阵形式。
3.1.3 Matrix Form.
此部分介绍模型的矩阵表示形式。
我们可以得到用户-商品交互矩阵如下:
其中T为嵌入维度大小,本模型提出的LGC等式如下:
则最后的用于预测的嵌入矩阵为:
其中