整体框架
图简介
图学习库PGL
维度 | 链接(见下方) |
---|---|
GitHub链接 | PGL-Github |
API文档 | API文档 |
配套的Paddle项目实例 | 项目实例:AI Studio,使用指南 |
配套的视频课程 | Paddle官网课程链接、B站课程链接 |
经典的图神经网络课程 | 斯坦福CS224W课程:图神经网络课程 |
- PGL-Github
- API文档
视频课程:Paddle官网课程链接、B站课程链接
斯坦福CS224W课程:图神经网络课程
图游走类算法
总结
图类型 | 模型 | 实现步骤 | 游走概率 |
---|---|---|---|
同构图 | DeepWalk | 随机游走+Skip Gram+负采样=>节点embedding=>下游任务 | 无向图,游走到下一节点的概率是一样的(=1/N(v),N(v)是节点v的邻居节点数量) |
同构图 | Node2vec | bias随机游走+Skip Gram+负采样=>节点embedding=>下游任务 | 无向图,游走到下一节点的概率可以是一样/不一样的,可以通过p、q设置决定是BFS/DFS |
异构图 | Metapath2Vec | meta path based随机游走+Skip Gram+负采样=>节点embedding=>下游任务 | 无向图,游走到下一节点的概率可以是一样/不一样的 |
异构图 | Metapath2Vec++ | 相比metapath2vec,负采样时考虑了节点类型 | 无向图,游走到下一节点的概率可以是一样/不一样的 |
异构图游走
异构图
相比同构图,考虑了节点类型(T),即G=(V,E)=>G=(V,E,T)
按照同构图游走的缺点
偏向于出现频率高的节点类型
偏向于度数高的节点
meta path
含义:元路径。即选择的路径首先需要保证是有意义的,一般情况下需要专家筛选
构成元路径的条件
从当前节点到下一个节点的游走概率是等概率的
需要是对称的(可以保证继续游走,具有更长的游走长度)
Metapath2Vec
是基于meta path的随机游走
停止游走的条件
到达游走长度;
找不到符合类型的节点
不足
随机游走时考虑了节点类型,负采样时没有考虑
Metapath2Vec++
相比Metapath2Vec,负采样时考虑了节点类型
multi+Metapath2Vec++
相比Metapath2Vec++,生成了多种类型的元路径
side info+multi+Metapath2Vec++
相比multi+Metapath2Vec++,节点融合了属性信息
图神经网络算法
对比总结
对比 | 优点 |
图游走类算法 | 是end-to-end的,更直接地应用于下游的任务 |
DNN | 除了结构数据(如CNN、RNN),也适用于非结构数据 |
CNN | GNN的节点的邻居个数是不固定的 |
模型总结
模型 | 实现 | 边权重 | 说明 |
图卷积网络(GCN) | 消息传递:将邻居的特征接收、聚合实现节点表示 | 与节点的度相关,不可学习 | 可以基于多层GCN实现节点分类 |
图注意力网络(GAT) | 同上 | 与两节点的相关性相关,是节点间的函数,是可学习的 | 可以构建多头Attention(会增加数据维度、计算量) |
Message Passing
说明 | 模型 |
包含2部分:消息的发送、接收 | GCN、GAT:都是基于邻居聚合的模型,称为Spatial(空间)GNN |
实现
对于GAT、多头GAT:建议使用GPU实现
实现代码参考:PGL-Github中的pgl-nn-conv
图采样
采样必要性
分类 | 训练方法-MiniBatch | MiniBatch的必要性 |
---|---|---|
传统深度学习 | 单batch为若干样本样本间无依赖,多层样本计算量固定 | CPU/GPU资源受限,需要借鉴MiniBatch |
图神经网络 | 单batch为若干样本样本间无依赖,多层样本计算量爆炸 | CPU/GPU资源受限,需要借鉴MiniBatch |
采样逻辑
子图采样不是随机采样,需要保证可以根据邻居节点聚合得到节点表征
采样算法
GraphSage
- 实现步骤
- 邻居采样
- 邻居聚合
- 节点预测
- 邻居采样的优点
极大减少训练计算量
可以泛化到新的连接关系。
泛化能力强的原因
由于训练的时候不是根据所有的邻居节点来聚合的,是根据采样节点聚合得到的,所以具有较好的泛化能力,对于新节点也可以进行较好的预测
实现代码
PinSage
对比GraphSage
采样的时候可以不限制只选取真实的邻居节点
邻居采样方式
通过多次随机游走,按照游走经过的频率选取邻居。根据邻居节点重要性进行聚合,可以快速聚合到多阶的信息
邻居聚合
常见的聚合方式
聚合方式 | mean | max | sum |
聚合能力 | 非单射 | 非单射 | 单射 |
是否可区分 | 不可区分 | 不可区分 | 可区分 |
单射可以保证对聚合后的结果可区分
基于单射的GIN模型
使用sum作为聚合方式,保证单射。GIN的用途:用在图分类
改动点
增加了自连边,并且对自连边加权
自连边加权的必要性
保证中心节点、邻居节点是可区分的
也可以聚合邻居信息
自研模型(PGL)
ERNIESage
简介
适用于Text Graph(节点、边都带有文本的特殊图),是邻居聚合的模型。ERNIESage融合了ERNIE、GraphSage,对Text Graph进行建模
对比总结
模型 |
优点 |
ERNIE(百度推出的语义理解技术,结构是多层的Transformer) |
ERNIE1.0相比bertbert是Token掩码,学习难度相比ernie没有特别大;ernie增加了知识,需要对知识进行学习ERNIE2.0相比1.0,考虑了“持续学习”(通过下游任务进行持续学习) |
GraphSage |
关注图的结构信息 |
ERNIESage |
融合两者的优点,实现图语义理解技术 |
模型详解
根据ERNIE作用于Text Graph的不同方面(节点、边、邻居),将ERNIESage划分为ERNIESage Node、ERNIESage Edge、ERNIESage 1-Neighbor
模型 | 模型结构 | 实现步骤 |
ERNIESage Node | ERNIE作用于Text Graph的节点上 | 利用ERNIE获取节点表示聚合邻居特征:ERNIE(Node1)+ERNIE(Node2)+ERNIE(Node3) Send、Recv将当前节点、聚合后的邻居特征concat,更新节点特征 |
ERNIESage Edge | ERNIE作用于Text Graph的边上;相比ERNIESage Node,由于进行了特征交互,相当于“单塔”结构,比前者的双塔要好 | 利用ERNIE获取节点表示中心节点、邻居节点一同作为ERNIE输入,计算交互特征聚合邻居特征:ERNIE(Node1+Node-center)+ERNIE(Node2+Node-center)+ERNIE(Node3+Node-center) Send、Recv |
ERNIESage 1-Neighbor | 采用独立的位置编码,保证输入时邻居不带有顺序;对于过多数量的邻居,对邻居进行采样 | 将中心节点、所有一阶邻居节点的文本进行单塔拼接利用ERNIE进行消息聚合 |
UniMP
简介
融合标签传递、图神经网络的模型,解决“半监督节点分类”问题。适用于“数据之间存在关联”,如社交网络场景
模型详解
解决标签泄漏
借鉴“Mask language model”,进行“masked label prediction”。用已有的标签、图结构预测mask的结果
模型结构
使用GraphTransformer代替GAT、GCN
其中,
label embedding:将节点标签映射到和节点特征一样的维度
label propagation:将节点标签、节点特征相加
对于mask的节点,将Ye置为0即可
模型效果
相比只考虑单独节点的DNN、考虑节点关系的GNN,UniMP带来了较大的效果提升
结尾
亲爱的读者朋友:感谢您在繁忙中驻足阅读本期内容!您的到来是对我们最大的支持❤️
正如古语所言:"当局者迷,旁观者清"。您独到的见解与客观评价,恰似一盏明灯💡,能帮助我们照亮内容盲区,让未来的创作更加贴近您的需求。
若此文给您带来启发或收获,不妨通过以下方式为彼此搭建一座桥梁: ✨ 点击右上角【点赞】图标,让好内容被更多人看见 ✨ 滑动屏幕【收藏】本篇,便于随时查阅回味 ✨ 在评论区留下您的真知灼见,让我们共同碰撞思维的火花
我始终秉持匠心精神,以键盘为犁铧深耕知识沃土💻,用每一次敲击传递专业价值,不断优化内容呈现形式,力求为您打造沉浸式的阅读盛宴📚。
有任何疑问或建议?评论区就是我们的连心桥!您的每一条留言我都将认真研读,并在24小时内回复解答📝。
愿我们携手同行,在知识的雨林中茁壮成长🌳,共享思想绽放的甘甜果实。下期相遇时,期待看到您智慧的评论与闪亮的点赞身影✨!
万分感谢🙏🙏您的点赞👍👍、收藏⭐🌟、评论💬🗯️、关注❤️💚~
自我介绍:一线互联网大厂资深算法研发(工作6年+),4年以上招聘面试官经验(一二面面试官,面试候选人400+),深谙岗位专业知识、技能雷达图,已累计辅导15+求职者顺利入职大中型互联网公司。熟练掌握大模型、NLP、搜索、推荐、数据挖掘算法和优化,提供面试辅导、专业知识入门到进阶辅导等定制化需求等服务,助力您顺利完成学习和求职之旅(有需要者可私信联系)
友友们,自己的知乎账号为“快乐星球”,定期更新技术文章,敬请关注!