GNN学习 GNN Model
GNN学习 GNN Model
这部分主要讲如何使用图神经网络GNN来进行节点嵌入
我们首先会想到,将邻接矩阵和特征合并到一起应用到深度神经网络上,问题在于:
- 需要O(|V|)的参数
- 不适用于不同大小的图
- 对节点顺序敏感
我们可以将卷积神经网络泛化到图上,并应用的节点特征数据
但是图没有固定的滑动窗口,并且图的节点顺序不固定
但是我们可以模仿图片结构,聚合节点的邻居信息
Graph Convolutional Network
通过邻居节点定义计算图,传播并且转换信息,最后计算出节点表示
主要想法:通过聚合邻居来生成节点嵌入
我们可以通过节点邻居定义计算图
深度模型
深度模型可以有很多层,并且可以有任意的深度
- 节点在每一层都有不同的表示向量
- 第0层的节点u的嵌入是节点最开始的特征
- 第k层是节点通过聚合k层所形成的表示向量
每一层节点嵌入都是邻居上一层节点的嵌入再加上它自己
聚合策略(aggregation strategies)
不同邻居信息聚合方法的差别就是在于如何跨层聚合邻居节点信息
聚合方法必须是与顺序无关的
基础方法:从邻居中获取信息求平均,再应用神经网络
深度encoder
解释
h表示embedding,上标表示神经网络层数,下标表示哪个节点
W,B都表示一个矩阵
前面的这个累加的表示前一层邻居节点的平均,N(v)表示v的邻居节点集合
表示一个非线性的层,比如ReLU
是最终节点的embedding
我们最终训练的时候需要训练B和W
W是邻居聚合的权重矩阵
B是转换节点自身隐藏向量的权重矩阵
embedding的矩阵形式
A是邻接矩阵,其中
D是对角矩阵
所以:
最终形式如下:
其中
训练
定义损失函数
有监督训练:
回归问题可以用L2 Loss,比如均方误差
分类问题可以用交叉熵损失函数
无监督训练:
相似的节点有相似的embedding
当节点u和v相似时
CE就是cross entropy
DEC就是decoder,比如内积
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端