• 图神经网络入门基础


    什么是图

    要想解释图的概念,就要从著名的七桥问题开始:一个人如何不重复,不遗漏地走完七座桥,并最终回到起点。大数学家欧拉在回答七桥问题时,开创了图论。

     

    b7780c039e88500aa91580a027c1a831.png

    由上图可见,图(Graph)是由节点(Vertices/Nodes)和边(Edges)构成的。

    G=(V,E)

    图的分类:

     

    ae80e8c2d8be4cf1ee015ea2f3fa4913.png

    同构图与异构图的举例:

     

    6c4943f2ff0c57fca14c0f6214c583ae.png

    左侧的同构图中,只有一种节点类型,右侧的异构图中则有多种节点类型,且节点之间存在多种边关系。

    图的度和邻居:

     

    e5352fa4da3cfb781caf983fcc7a0002.png

    对于无向图而言,度就是与之相连的节点个数,邻居就是与之相连的节点集合;对于有向图而言,因为有了方向的限制,度分为出度和入度,邻居分为前继邻居和后继邻居。

    图的表示:

    邻接矩阵

     

    0fc507e6de51d5bc84c193bc09619287.png

    邻接表

     

    c7461c0077c9afc8ee0aba79a124edb8.png

    结构特征,边特征,节点特征:

    深度学习是基于特征的,同样,图学习也是基于特征的,一张图除了具有结构特征,还具有边特征,和点特征。图学习的本质就是挖掘这些特征。

     

    4f83013a0d1d8abca439f5556b909771.png

    例如,对于下面这张图而言,图的节点是用户和文章,用户节点可以有性别,年龄,职业等特征;文章节点可以有类别,词向量等特征。边可以有点击频率和阅读时长等特征,图学习可以充分利用这些特征信息。

     

    132930c7c133b84f0e3ceb325cc2033c.png

    图的应用

    图是一种描述复杂事物的语言,那图有什么实际的应用呢?在我们的实际生活中存在很多复杂的事物,这些事物都可以通过图来表示。

     

    5a6d901ee82d1dee5ffa17c6157db45c.png

    例如通过各种社交App所形成的各种社交网络,社交网络中的人就可以抽象成图的节点,人与人之间的关系可以抽象成节点之间的边。

     

    2ed9aea8343e81ddfafc13607158d983.png

    我们每天都会冲浪的互联网也是一个图,每个网页就是图的节点,网页与网页之间的超链接关系就构成了图的边。

     

    7626d6b7b112fa735249877901707782.png

    我们目前使用的各种购物App都有推荐功能,这种推荐系统背后其实也是一张图。

    节点:用户和商品,

    边:用户与商品之间的购买,点击等关系。

     

    4dd20dbf427155fe6b228928096716ac.png

    学过化学的人都知道,化学分子是由单个或者多个原子构成的,所以,每个化学分子也可以抽象成一张图,

    节点:原子,

    边:原子之间的相互作用力,也称为化学键。

    什么是图学习

    前面已经讲了什么是图,以及图在实际生活中的应用,接下来看一下什么是图学习。

    在以往的深度学习中,使用的训练数据有语音,文本,和图像,他们一般都是结构性数据,有整齐规则的数据结构,例如,文本是一维的文字排列,语音是一维音频信号排列,图像是二维像素排列。

    然而,在现实生活中还存在大量不规则的数据,很难直接进行建模。

     

    7af98d0d3905dca10aa9930b818c1799.png

     

    ace69ce1fb647511b6e22802b94ee0aa.png

    针对上面这些错综复杂的数据,传统的深度学习模型很难处理,因此出现了图学习,图学习也属于深度学习的范畴,但他们专门针对这种复杂的图数据结构。

    一般的深度学习:善于发现有规则数据中潜在的模式,但很难处理不规则数据。

     

    5feae608b06b4f41250915bc575c751e.png

    图学习:可以很方便地处理不规则数据(图),充分利用图结构信息。

     

    7d4d392508f02ac148db6d904a0f161f.png

    图学习的应用

    深度学习可以用来对一张图片进行分类,对图像中的目标进行识别和分割,对语音进行翻译,对商品进行有效推荐,对于给定下面这张图,图学习可以用来做什么?

     

    6f3d8cb75c03197dd34fc46b2203c8ba.png

    先说结论,图学习对于上述图结构可以进行三类任务。

     

    e10f7f62064d04f88bbdc88043bfe08f.png

    第一类就是节点级别的任务,图学习模型可以给出某一个节点的属性或者类别。

     

    12b483f083a314a1b0241fe02e99e82f.png

    第二类就是边级别的任务,图学习模型可以预测边的权值或者边是否存在。

     

    3055103afe4956e7a37c9de75b215f0b.png

    第三类就是图级别的任务,可以通过图学习模型预测整张图的类别,或者比较两张图的相似性。

    下面我们分别举一些实际应用的例子:

    节点级别任务-金融诈骗检测:

     

    3dc7ccd69847fda97770aa8f59df66f3.png

    图中的节点是用户和商家,用户和商家都有各自的特征,除了特征还有与他人的交互,也就是边关系,传统的方法是通过用户和商家的特征来训练一个分类网络,通过图学习,我们不仅可以学习到节点的特征,还可以学习到节点之间的交互关系,以及图结构的关系,以此来进行分类,从而找到金融诈骗分子。

     

    604f72f5635d2b1a61920802ccd19dff.png

    节点级别任务-目标检测:

    目标检测是自动驾驶领域中一个非常重要的任务,以往基于视觉模型的图像分割以及基于点云的分割占主导地位,除了传统深度学习模型,图模型也可以从3D点云中进行目标检测。

     

    6ba51a552a9af2cb9e2d4ba40d14771e.png

    首先需要把点云构造成图结构,点云中的点可以构造成图节点,那如何构造边呢?我们可以计算点与点之间的距离,设定一个距离阈值,如果点与点之间的距离小于这个阈值就假设点与点之间存在边,否则就不存在边。

    图构建完成后就可以把图输入到图学习模型中,模型预测每个点所属的目标对象,以及3D边界框。

     

    31db5f13aae11da474796d2845463892.png

    边级别的任务-推荐系统:

    前面已经说过,推荐系统可以表示成图,那么,推荐过程本质上就是边预测的过程。

     

    d379b9ec3f927754a45bb7c0e1f72362.png

    推荐系统除了可以使用图模型外,还可以通过线性代数,概率与统计,深度神经网络来完成,感兴趣的同学可以看一下我之前的文章。

    线性代数本质(续七):线性代数在推荐系统中的应用

    在新闻推荐中,假设已经有了用户历史点击数据,要预测用户B的点击行为,这就是一个边预测的任务。

     

    fdb015bc9f8824c1547032bb5432d25f.png

    通过用户历史点击数据构造图,将图输入到图学习模型中,得到用户/内容的向量空间,利用向量空间进行后续任务。

    图级别的任务-气味识别:

    假设我们现在有两种花,需要通过鼻子闻气味的方式进行种类的识别,如果鼻子搞不定,那我们就可以通过图学习来完成。

     

    620b6ba7726b681ebaa536eca6371a09.png

    这是如何做到的?花可以在空气中释放分子,根据化学知识,不同分子就代表不同的气味,可以将分子建模成图数据结构,就可以将问题转换成对图的分类问题。

     

    0a6f2f2fd55b68e068a71304857f1ade.png

     

    fefe96542b3cc86bf163ba5284d3f1ca.png

    上面只列出了图学习应用的一部分,实际应用可不止这些。

     

    c66bdc050fb9afa0abb0744eda864b06.png

    图学习是如何做的

    在以往的视觉任务中,首先通过卷积神经网络提取特征,然后将特征输入到全连接层进行分类,或者全卷积网络实现目标i检测和图像分割,那么,图学习模型是如何实现图节点,边,以及整个图的分类任务的呢?

    图游走算法:

     

    e62ca84a08219f6d987fd71b9c3a37a1.png

    首先设定游走的最大长度,然后随机选择一点,沿着边随机游走,这样就会生成多个节点序列,接下来针对这些序列进行图表示学习,然后进行接下来的操作。

    图神经网络:

    图神经网络算法一般通过消息传递进行实现,消息传递就是把邻居节点的信息发送到自身,将这些信息聚合起来,然后根据聚合信息来更新自身的表示。

     

    c3502b465204c63a64d1a6453539d867.png

    除了上述两种方法,还有其他图学习算法,后续文章我们会详细介绍,这里先给大家列出一个知识脑图。

     

    cb0e181ed7f053649575d545a8479aae.png

    相比其他深度学习模型,图学习还是比较难的,为了简化学习难度,给大家介绍一个强大的图学习框架:PGL(Paddle Graph Learning)

     

    1d575afec5bf5f6247886ec717782d3e.png

     

  • 相关阅读:
    MySQL更新锁表超时 Lock wait timeout exceeded
    haddop shuffle最详细的解释
    小样本数据集 (Few-shot Learning)
    手撕Vuex-模块化共享数据下
    Spring Boot 中利用 ThreadPoolTaskExecutor 批量插入百万级数据实测!
    【第2次JavaWeb上机练习】
    基于信息检索和深度学习结合的单元测试用例断言自动生成
    记一次 .NET 某企业 ERP网站系统 崩溃分析
    # 粒子滤波 PF——三维匀速运动CV目标跟踪(粒子滤波VS扩展卡尔曼滤波)
    [计算机毕业设计]基于SM9的密钥交换方案的实现与应用
  • 原文地址:https://blog.csdn.net/qq_39312146/article/details/134478948