如果每个节点的特征数量不同,如何表示和使用图卷积网络 (GCN) 的特征矩阵?

人工智能 机器学习 深度学习 卷积神经网络 几何深度学习
2021-10-18 19:40:28

我有一个关于图卷积神经网络的特征表示的问题。

就我而言,所有节点都有不同数量的特征,现在,我真的不明白我应该如何处理这些约束。我不能仅仅减少特征数量或添加无意义的特征,以使每个节点上的特征数量相同——因为它会给网络增加很多额外的噪音。

有没有办法解决这个问题?我应该如何构建特征矩阵?

如果您有任何解决此问题的论文的链接,我将不胜感激。

2个回答

我能想到的最简单的方法是用 0 填充每个不存在的功能。你说你会给网络增加太多噪音,但我没有看到问题(如果我错了,请纠正我)。例如,我们有两个节点,第一个节点只有 2 个特征,而第三个节点缺失,第二个节点的所有特征 X=[[1,2,0], [3,4,5]]。现在我们可以将节点投影到隐藏表示(很常见)。我将使用 W=[[1], [1], [1]] 的权重矩阵。XW 的输出将是 [[3], [12]]。现在让我们向第二个节点 X=[[1,2,0, 0], [3,4,5,6]] 添加一个新特征并应用相同的变换 W=[[1], [1], [ 1], [1]] 输出将是 [[3], [18]] 你可以看到第一个节点不受缺失特征数量的影响。

如果您不想使用投影,则可以实现此目的的另一种方法是使用蒙版。例如,给出上面相同的示例,我们可以创建一个掩码 M=[[1,1,0], [1,1,1]],其中每个条目表示特定节点中是否存在特定特征。现在通常将 GCN 层定义为 H=f(AHW),其中 A 是邻接矩阵。我们可以将传播规则更改为 H=f(AH*MW),其中 * 是逐点乘法。像这样,如果一个节点缺少一个特性,它就不能从具有该特性的其他节点“访问”信息。

我的直接建议是将缺失值填零,但我记得下面的评论建议使用更复杂的方法:

Karim: 如何处理不同大小的特征向量?

Nabila: 这是我实际上正在解决的问题。我已经看到您可以为每种类型的节点功能创建单独的网络,然后对它们进行排序——因此分别训练它们,并将它们投影到相同的大小。

或者您可以进行串联,这样您就不必担心这一点,但在某些时候,它们都需要具有相同的大小才能在最后进行分类。