NGCF调参——拉普拉斯矩阵

最近在跑NGCF模型(Xiang Wang, Xiangnan He, Meng Wang, Fuli Feng, and Tat-Seng Chua. 2019. Neural graph collaborative filtering. In SIGIR. 165–174.),发现作者给的代码中,有如下注释

* `adj_type`
  * It specifies the type of laplacian matrix where each entry defines the decay factor between two connected nodes.
  * Here we provide four options:
    * `ngcf` (by default), where each decay factor between two connected nodes is set as 1(out degree of the node), while each node is also assigned with 1 for self-connections. Usage: `--adj_type ngcf`.
    * `plain`, where each decay factor between two connected nodes is set as 1. No self-connections are considered. Usage: `--adj_type plain`.
    * `norm`, where each decay factor bewteen two connected nodes is set as 1/(out degree of the node + self-conncetion). Usage: `--adj_type norm`.
    * `gcmc`, where each decay factor between two connected nodes is set as 1/(out degree of the node). No self-connections are considered. Usage: `--adj_type gcmc`.

那么,此处提到的 laplacian matrix 是什么,对模型有什么用呢?作者提供的选项之间有什么区别呢?整理如下。

1. 数学计算原理

参照这篇博文,作者从简到繁,整理得超赞!

2. 用途

参考博文,拉普拉斯矩阵是一种图的矩阵表示。

笔者理解为:使用拉普拉斯矩阵表示图,以实现对图的计算。

3. 回到NGCF

阅读完上述资料,我们知道:

给定一个有n个顶点的图G,它的拉普拉斯矩阵定义为:
L=D-A
其中D为图的度矩阵,A为图的邻接矩阵。

那NGCF中,“它指定拉普拉斯矩阵的类型,其中每个条目定义两个相连节点之间的衰减因子”应当如何理解呢?

  • ngcf,其中两个连接的节点之间的每个衰减因子均设置为1(节点的出度),而每个节点的自连接也分配为1。
  • plain,其中两个连接的节点之间的每个衰减因子设置为1。不考虑自连接。
  • norm,其中两个连接的节点之间的每个衰减因子都设置为1 /(节点的出度+自连接)。
  • gcmc,其中两个连接的节点之间的每个衰减因子设置为1 /(节点的出度),不考虑自连接。

此处需要理解 衰减因子。需要引入一个相似的概念——拉普拉斯变换。

4. 拉普拉斯变换

参考博文

傅里叶变换是将函数分解到频率不同、幅值恒为1的单位圆上;拉普拉斯变换是将函数分解到频率幅值都在变化的圆上。

二者的主要区别在于:傅里叶变换要求绝对可积,拉普拉斯变换把不满足绝对的可积的函数乘以一个快速衰减的函数,这样在趋于无穷时原函数也衰减到零了,从而满足绝对可积。

引入衰减因子 ,实现函数的衰减,从而达到可积。

5.结论

回到原问题,笔者认为,NGCF所说的衰减因子,其实并没有拉普拉斯变换那么复杂,它更多的是值如何定义图的表示。如NGCF两个连接的节点之间的每个衰减因子均设置为1,而每个节点的自连接也分配为1,只是在说明两个点之间的关系如何量化。

猜你喜欢

转载自blog.csdn.net/MaoziYa/article/details/114888270