核心思想是学习一个函数映射 f ,通过该映射图中的节点 可以聚合它自己的特征 与它的邻居特征 (j∈N())来生成节点 的新表示.
输出的嵌入向量之间的距离就可以表示原图节点间的距离与向量
图神经网络的层数其实是指计算图延伸的距离
如上图所示,就是一个两层的神经网络。
每个点都有一个这样的一个计算图,算得上一个样本
值得一提的是,所有的白色盒子与黑色盒子共享一套权重,也就是每层计算图共享一个模型
值得一提的是,此时提到的图神经网络是最基础的形式,其中的节点也指的是属性特征(尚未涉及到)
接下来用数学形式来表示:
上标k表示第k层的计算图
这是最关键的部分,我认为。
A是邻接矩阵,表示的是计算图k-1层级对应的嵌入向量
此时, 方框中内容对应下面的部分
但显然存在一个问题,就是这是一种极其粗糙强行求平均的方法。换句话说,每个邻居节点的权重是相同的,但其实并不合理,应该根据邻居节点的邻居数量来决定权重大小
既考虑了自己的度,又考虑了对方的度
但这样依旧存在问题——
和原先相比,矩阵乘后幅值肯定会变小,为了避免这种情况的发生
下一个问题,作用在节点A上的节点竟然都只是邻居节点,居然不包含自己!!!天大的笑话!
修改邻接矩阵:对角线全为1
核心部分!!!
考虑到本身节点对自己的贡献可能与其他邻居节点对自己的贡献有差别,因此使用另个权重。