GCN+Gaussian+GAT
GCN+Gaussian的优点:permutation-invariance
GAT的优点:local structure sensitivity
原始CondGEN整体架构
- Encoding:GCN
输入为邻接矩阵(N×N)
输出为嵌入表征(N×D) - 中间部分:判别器不做任何处理。生成器得到全图的嵌入表征(原文为1×D),并随机采样得到N个结点的特征,得到新的N个结点的嵌入(N×D)。
- Decoding:FNN
输入为嵌入表征(N×D)
– 判别器:
用两层Linear+activation和节点嵌入求和得到一个0到1的输出值。
– 生成器:
经过两层Linear+activation和节点嵌入相乘得到生成边的打分
输出为生成边的打分(N×N)
对生成的概率里的前2E个值设为1,其余设为0,即生成E条边。
判别器
输入为adj(N×N),输出为0到1的打分
- encoding阶段1:spectral embedding得到初步嵌入(N×D)
- encoding阶段2:GCN得到permutation-invariant嵌入(N×D’)
- decoding阶段1:两层FNN得到降维嵌入(N×8)
- decoding阶段2:直接对N个结点嵌入求和得到全图表示(1×8),并用Linear+Sigmoid求得图的最终打分
生成器
输入为adj(N×N),输出为打分矩阵(N×N)
- encoding阶段1:同判别器的encoding阶段1和2一致
- encoding阶段2:dropout之后(shape 依旧为N×D’,只不过大约有一半的值为0),通过两层Linear得到mean和logvar(shape均为N×6)
- 采样阶段:均值+随机误差来高斯采样得到生成的N个结点的嵌入表征(N×6)
- decoding阶段1:两层FNN得到降维嵌入(N×8)
- decoding阶段2:X×X.T得到每一个结点的生成打分矩阵(N×N),生成打分最高的前E条边。
原始CondGEN的错误
- 高斯分布的标准差计算有误
- 在生成后的结点已经失去了结点序列的情况下,依旧按照序列来补上attr_vec
改进后CondGEN整体运算
- Encoder: GCN
输入为邻接矩阵(N×N)
输出为嵌入表征(N×D’) - 中间部分:判别器不做任何处理。生成器得到全图的嵌入表征(原文为1×D,这里为K×D,K为高斯分布的个数),并随机采样得到N个结点的特征,得到新的N个结点的嵌入(N×D)。
- Decoder