当前位置: 首页 > news >正文

图神经网络(篇二)-基础知识

整体框架

图简介

图学习库PGL

维度链接(见下方)
GitHub链接PGL-Github
API文档API文档
配套的Paddle项目实例项目实例:AI Studio,使用指南
配套的视频课程Paddle官网课程链接、B站课程链接
经典的图神经网络课程斯坦福CS224W课程:图神经网络课程
  1. PGL-Github
  2. API文档
  3. 项目实例:AI Studio,使用指南

  4. 视频课程:Paddle官网课程链接、B站课程链接

  5. 斯坦福CS224W课程:图神经网络课程

图游走类算法

总结

图类型模型实现步骤游走概率
同构图DeepWalk随机游走+Skip Gram+负采样=>节点embedding=>下游任务无向图,游走到下一节点的概率是一样的(=1/N(v),N(v)是节点v的邻居节点数量)
同构图Node2vecbias随机游走+Skip Gram+负采样=>节点embedding=>下游任务无向图,游走到下一节点的概率可以是一样/不一样的,可以通过p、q设置决定是BFS/DFS
异构图Metapath2Vecmeta path based随机游走+Skip Gram+负采样=>节点embedding=>下游任务无向图,游走到下一节点的概率可以是一样/不一样的
异构图Metapath2Vec++相比metapath2vec,负采样时考虑了节点类型无向图,游走到下一节点的概率可以是一样/不一样的

异构图游走

  1. 异构图

    1. 相比同构图,考虑了节点类型(T),即G=(V,E)=>G=(V,E,T)

  2. 按照同构图游走的缺点

    1. 偏向于出现频率高的节点类型

    2. 偏向于度数高的节点

  • meta path

  1. 含义:元路径。即选择的路径首先需要保证是有意义的,一般情况下需要专家筛选

  2. 构成元路径的条件

    1. 从当前节点到下一个节点的游走概率是等概率的

    2. 需要是对称的(可以保证继续游走,具有更长的游走长度)

  • Metapath2Vec

  1. 是基于meta path的随机游走

  2. 停止游走的条件

    1. 到达游走长度;

    2. 找不到符合类型的节点

  3. 不足

    1. 随机游走时考虑了节点类型,负采样时没有考虑

  • Metapath2Vec++

  1. 相比Metapath2Vec,负采样时考虑了节点类型

  • multi+Metapath2Vec++

  1. 相比Metapath2Vec++,生成了多种类型的元路径

  • side info+multi+Metapath2Vec++

  1. 相比multi+Metapath2Vec++,节点融合了属性信息

图神经网络算法

对比总结

对比优点
图游走类算法是end-to-end的,更直接地应用于下游的任务
DNN除了结构数据(如CNN、RNN),也适用于非结构数据
CNNGNN的节点的邻居个数是不固定的

模型总结

模型实现边权重说明
图卷积网络(GCN)消息传递:将邻居的特征接收、聚合实现节点表示与节点的度相关,不可学习可以基于多层GCN实现节点分类
图注意力网络(GAT)同上与两节点的相关性相关,是节点间的函数,是可学习的可以构建多头Attention(会增加数据维度、计算量)

Message Passing

说明模型
包含2部分:消息的发送、接收GCN、GAT:都是基于邻居聚合的模型,称为Spatial(空间)GNN

实现

  1. 对于GAT、多头GAT:建议使用GPU实现

  2. 实现代码参考:PGL-Github中的pgl-nn-conv

图采样

采样必要性

分类训练方法-MiniBatchMiniBatch的必要性
传统深度学习单batch为若干样本样本间无依赖,多层样本计算量固定CPU/GPU资源受限,需要借鉴MiniBatch
图神经网络单batch为若干样本样本间无依赖,多层样本计算量爆炸CPU/GPU资源受限,需要借鉴MiniBatch

采样逻辑

子图采样不是随机采样,需要保证可以根据邻居节点聚合得到节点表征

采样算法

GraphSage

  • 实现步骤
  1. 邻居采样
  2. 邻居聚合
  3. 节点预测
  • 邻居采样的优点
  1. 极大减少训练计算量

  2. 可以泛化到新的连接关系。

  • 泛化能力强的原因

由于训练的时候不是根据所有的邻居节点来聚合的,是根据采样节点聚合得到的,所以具有较好的泛化能力,对于新节点也可以进行较好的预测

  • 实现代码

GraphSage实现代码

PinSage

  • 对比GraphSage

采样的时候可以不限制只选取真实的邻居节点

  • 邻居采样方式

通过多次随机游走,按照游走经过的频率选取邻居。根据邻居节点重要性进行聚合,可以快速聚合到多阶的信息

邻居聚合

常见的聚合方式

聚合方式meanmaxsum
聚合能力非单射非单射单射
是否可区分不可区分不可区分可区分

单射可以保证对聚合后的结果可区分

基于单射的GIN模型

使用sum作为聚合方式,保证单射。GIN的用途:用在图分类

  • 改动点

增加了自连边,并且对自连边加权

  • 自连边加权的必要性

  1. 保证中心节点、邻居节点是可区分的

  2. 也可以聚合邻居信息

自研模型(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 NodeERNIE作用于Text Graph的节点上利用ERNIE获取节点表示聚合邻居特征:ERNIE(Node1)+ERNIE(Node2)+ERNIE(Node3) Send、Recv将当前节点、聚合后的邻居特征concat,更新节点特征
ERNIESage EdgeERNIE作用于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

其中,

  1. label embedding:将节点标签映射到和节点特征一样的维度

  2. label propagation:将节点标签、节点特征相加

  3. 对于mask的节点,将Ye置为0即可

模型效果

相比只考虑单独节点的DNN、考虑节点关系的GNN,UniMP带来了较大的效果提升

结尾

亲爱的读者朋友:感谢您在繁忙中驻足阅读本期内容!您的到来是对我们最大的支持❤️

正如古语所言:"当局者迷,旁观者清"。您独到的见解与客观评价,恰似一盏明灯💡,能帮助我们照亮内容盲区,让未来的创作更加贴近您的需求。

若此文给您带来启发或收获,不妨通过以下方式为彼此搭建一座桥梁: ✨ 点击右上角【点赞】图标,让好内容被更多人看见 ✨ 滑动屏幕【收藏】本篇,便于随时查阅回味 ✨ 在评论区留下您的真知灼见,让我们共同碰撞思维的火花

我始终秉持匠心精神,以键盘为犁铧深耕知识沃土💻,用每一次敲击传递专业价值,不断优化内容呈现形式,力求为您打造沉浸式的阅读盛宴📚。

有任何疑问或建议?评论区就是我们的连心桥!您的每一条留言我都将认真研读,并在24小时内回复解答📝。

愿我们携手同行,在知识的雨林中茁壮成长🌳,共享思想绽放的甘甜果实。下期相遇时,期待看到您智慧的评论与闪亮的点赞身影✨!

万分感谢🙏🙏您的点赞👍👍、收藏⭐🌟、评论💬🗯️、关注❤️💚~


 自我介绍:一线互联网大厂资深算法研发(工作6年+),4年以上招聘面试官经验(一二面面试官,面试候选人400+),深谙岗位专业知识、技能雷达图,已累计辅导15+求职者顺利入职大中型互联网公司。熟练掌握大模型、NLP、搜索、推荐、数据挖掘算法和优化,提供面试辅导、专业知识入门到进阶辅导等定制化需求等服务,助力您顺利完成学习和求职之旅(有需要者可私信联系)

友友们,自己的知乎账号为“快乐星球”,定期更新技术文章,敬请关注!  

http://www.lryc.cn/news/578637.html

相关文章:

  • 板凳-------Mysql cookbook学习 (十一--------1)
  • Conda 虚拟环境克隆与 PyCharm 配置教程
  • 【算法 day13】LeetCode 110.平衡二叉树 | 257. 二叉树的所有路径| 404.左叶子之和 |222.完全二叉树的节点个数
  • Python实例题:基于 Python 的简单爬虫与数据可视化
  • 【仿muduo库实现并发服务器】eventloop模块
  • nanoGPT复现——bench.py和sample.py
  • 【MobaXterm、Vim】使用合集1
  • 【科研绘图系列】基于R语言的复杂热图绘制教程:环境因素与染色体效应的可视化
  • 用lines_gauss的width属性提取缺陷
  • Prompt生成指南
  • Unity-ComputeShader
  • UE5.6 官方文档笔记 [1]——虚幻编辑器界面
  • C#.Net筑基-优雅LINQ的查询艺术
  • 6.2 实现文档加载和切分和简易向量数据库的功能
  • 图像处理专业书籍以及网络资源总结
  • beego打包发布到Centos系统及国产麒麟系统完整教程
  • 前端第二节(Vue)
  • 微信小程序实现table表格
  • 微信小程序21~30
  • CppCon 2018 学习:EFFECTIVE REPLACEMENT OF DYNAMIC POLYMORPHISM WITH std::variant
  • Linux->进程控制(精讲)
  • 《P5522 [yLOI2019] 棠梨煎雪》
  • 如何分析大语言模型(LLM)的内部表征来评估文本的“诚实性”
  • 在 Docker 容器中使用内网穿透
  • 大语言模型推理系统综述
  • NLP——RNN变体LSTM和GRU
  • 关于vue2使用elform的rules校验
  • 深度学习进阶:自然语言处理的推荐点评
  • (LeetCode 面试经典 150 题) 42. 接雨水 (单调栈)
  • Gartner《Choosing Event Brokers to Support Event-DrivenArchitecture》心得