《The Graph Neural Network Model 》
GNN模型
1. GNN用来解决什么问题
对于图领域问题,假设存在函数 τ \tau τ,输入图结构 G G G和其中的一个节点 n n n,输出是一个实值向量:
τ ( G , n ) ∈ R m \tau(G,n) \in R^{m} τ(G,n)∈Rm
图相关的问题主要可以分为两种类型:
-
专注于图的应用(graph-focused):函数 τ \tau τ和具体的节点无关,即 τ ( G ) \tau(G) τ(G),训练时,在一个图的数据集中进行分类或回归,例如下图中,一个分子结构可以表示成 G G G,我们关注的问题是该分子结构对人体是否有害,因此不需要关心它具体的节点,因此采用 τ ( G ) \tau(G) τ(G);
-
专注于节点的应用(node-focused): τ \tau τ函数依赖于具体的节点 n n n,即 τ ( G , n ) \tau(G,n) τ(G,n) ,如下例子:我们的任务是判断某个点是否在城堡上,因此我们需要关注它的具体节点,即 τ ( G , n ) \tau(G,n) τ(G,n):
2. 图结构的定义
GNN模型基于信息传播机制,每一个节点通过相互交换信息来更新自己的节点状态,直到达到某一个稳定值,GNN的输出就是在每个节点处,根据当前节点状态分别计算输出。
- 一个图G表示为 G = ( N , E ) G = (N, E) G=(N,E),其中 N N N是节点集合, E E E是边的集合,例如上图中: N = [ n 1 , n 2 , n 3 , n 4 ] , E = [ e ( 1 , 2 ) , e ( 2 , 3 ) , e ( 1 , 4 ) , e ( 4 , 3 ) ] N = [n1, n2, n3, n4], E = [e(1,2), e(2,3), e(1,4), e(4,3)] N=[n1,n2,n3,n4],E=[e(1,2),e(2,3),e(1,4),e(4,3)];
- n e [ n ] ne[n] ne[n]表示节点n的邻居节点的集合, n e [ n 1 ] = [ n 2 , n 4 ] ne[n1] = [n2, n4] ne[n1]=[n2,n4];
- c o [ n ] co[n] co[n]表示以节点n为顶点的所有边的集合, c o [ n 1 ] = [ e ( 1 , 2 ) , e ( 1 , 4 ) ] co[n1] = [e(1,2), e(1,4)] co[n1]=[e(1,2),e(1,4)];
- l n l_{n} ln表示节点n的特征向量,维度是 l N l_{N} lN;
- l ( n 1 , n 2 ) l_{(n1, n2)} l(n1,n2)表示边e(1, 2)的特征向量,维度是 l E l_{E} lE;
- x n x_{n} xn表示节点n的状态向量。
3. 模型提出
在node-focused应用中,有以下定义:
- L L