VGAE浅入

1.数学定义

  • 图网络: [公式] , 其中节点的数量 [公式] 。对于当前的图网络他的邻接矩阵是 [公式] 。某一个节点的特征用 [公式] 表示, 矩阵[公式] 是整个图网络的节点特征的矩阵表示。
  • 随机的潜在变量:某一个随机潜在变量用 [公式] 表示,矩阵 [公式]表示图网络的所有节点被编码之后的潜在变量。

2. 方法

2.1推断模型(其实我觉得叫做编码模型更加合适)

1)首先用图卷积网络求出每个节点的高斯分布的均值和方差:

[公式]

[公式]

其中[公式] ,其是一个两层的网络, [公式] 是归一化的邻接矩阵。

2)根据所求得的节点特征编码的均值和方差,我们可以得到推断模型:

[公式] (个人理解,之所以用乘积连接各个不同的分布,旨在求得N个独立的变量的联合分布)

这样每一个节点都有一个具有特定均值和方差的高斯分布去表示。

2.2生成模型

[公式] , 且 [公式] (这里有个问题,当 [公式] 时候 [公式] 是什么呢?)

2.3目标函数

[公式]

最大化这个variational lower bound目标函数, 从而优化GCN的层参数 [公式][公式]

注:目标函数中的期望项只包括了标签为1的node,而标签为0的node是不予考虑的。在代码里是这样的操作的(见代码解读部分):在计算交叉熵损失的时候,给标签为1的正样本很高的权重,从而让其主导训练的过程。


代码解读:https://github.com/tkipf/gae

1.GAE

img

2.VGAE

img