Paddle图神经网络-学习笔记

Paddle图神经网络课程学习笔记

文章目录

  • Paddle图神经网络课程学习笔记
  • 02图游走类模型
    • DeepWalk
    • Node2Vec
    • metapath2vec及其变种
  • 03图神经网络算法(上)
    • 图卷积网络(GCN)
      • 从图像卷积类比到图结构卷积
      • 图卷积网络计算公式:
      • 怎么用多层图网络完成节点分类任务
    • 图注意力网络(GAT)
    • Message Passing
  • 04图神经网络算法(下)
    • 图采样
      • 为什么要图采样?
      • 什么是图采样?
      • GraphSAGE(SAmple&aggreGatE)
      • PinSAGE
    • 邻居聚合
      • 单射
      • 基于单射的Graph Isomorphism Net (GIN)模型
      • 语义场景
  • 05进阶模型
    • ERNIESage
      • 背景:Text Graph
      • ERNIE
      • ERNIESage Node
      • ERNIESage Edge
      • ERNIESage 1-Neighbor
    • UniMP
      • 模型结构
      • ERNIESage 1-Neighbor

课程地址: 图神经网络7日打卡营 - 飞桨AI Studio (baidu.com)

02图游走类模型

DeepWalk

目标:Node embeddings 学习到节点与邻居的关系。得到节点表示,用于下游任务

Word2Vec 应用到 图嵌入领域

节点——>单词

节点序列——>句子

游走方式:Random Walk
本质:可以回头的DFS

Paddle图神经网络-学习笔记_第1张图片

整体架构:

Paddle图神经网络-学习笔记_第2张图片

问题:图是一个复杂的结构,需要考虑更多因素。

Node2Vec

对DeepWalk的改进结合BFS与DFS模式。

Paddle图神经网络-学习笔记_第3张图片

改进:bias random walk

Paddle图神经网络-学习笔记_第4张图片

  • p:控制随机游走以多大的概率back
  • q:控制随机游走偏向DFS还是BFS

Paddle图神经网络-学习笔记_第5张图片

metapath2vec及其变种

异构图如何随机游走?

不考虑节点类型的异构随机游走,缺点:

  • 1.偏向于出现频率高的节点类型;
  • 2.偏向于相对集中的节点(即度数高的节点)

回顾异构图定义:

meta path(元路径):在图中选取的由节点类型构成的组合路径

基于meta path的随机游走

Paddle图神经网络-学习笔记_第6张图片

Paddle图神经网络-学习笔记_第7张图片

随机游走的时候考虑到节点类型

问题:负采样的时候,没有考虑节点类型

metapath++:负采样的时候,考虑节点类型

变种:multi-metapath2Vec++

利用多条元路径

Paddle图神经网络-学习笔记_第8张图片

side info + multi-metapath2vec++

Paddle图神经网络-学习笔记_第9张图片

03图神经网络算法(上)

图卷积网络(GCN)

卷积在规则数据上很好应用,如果是不规则的图呢?

Paddle图神经网络-学习笔记_第10张图片

从图像卷积类比到图结构卷积

图像卷积
将一个像素点周围的像素按照不同的权重叠加起来。

图结构卷积
将一个节点周围的邻居按照不同的权重叠加起来。

Paddle图神经网络-学习笔记_第11张图片

图卷积网络计算公式:

H ( l + 1 ) = σ ( D ~ − 1 2 A ~ D ~ − 1 2 H ( l ) W ( l ) ) H^{(l+1)}=\sigma\left(\tilde{D}^{-\frac{1}{2}} \tilde{A} \tilde{D}^{-\frac{1}{2}} H^{(l)} W^{(l)}\right) H(l+1)=σ(D~21A~D~21H(l)W(l))

Paddle图神经网络-学习笔记_第12张图片

这个公式可以一步步来看

1.边上的源节点,往目标节点发送特征

2.目标节点对收到的特征进行聚合

问题:是否所有的人对自己的评价都是有用的?

Paddle图神经网络-学习笔记_第13张图片

所以:如何衡量邻居的重要性?

:给边加权

怎么用多层图网络完成节点分类任务

Paddle图神经网络-学习笔记_第14张图片

GCN算法全流程:

第一步:节点间进行特征传递

第二步:对每一个节点过一层DNN

重复L次,实现多层图卷积网络

获取的最终表示 H ( L ) H^{(L)} H(L)作为最终节点表示,来分类

Paddle图神经网络-学习笔记_第15张图片

图注意力网络(GAT)

GCN中边的权重:

  • 与节点的度相关
  • 不可学习

GAT中的边权重

  • 权重变成节点间的函数
  • 权重与两个节点相关性有关
  • 可学习

Paddle图神经网络-学习笔记_第16张图片

attention计算方法
α i j = exp ⁡ ( LeakyReLU ⁡ ( a → T [ W h ⃗ i ∥ W h ⃗ j ] ) ) ∑ k ∈ N i exp ⁡ ( LeakyReLU ⁡ ( a → T [ W h ⃗ i ∥ W h ⃗ k ] ) ) \alpha_{i j}=\frac{\exp \left(\operatorname{LeakyReLU}\left(\overrightarrow{\mathbf{a}}^{T}\left[\mathbf{W} \vec{h}_{i} \| \mathbf{W} \vec{h}_{j}\right]\right)\right)}{\sum_{k \in \mathcal{N}_{i}} \exp \left(\operatorname{LeakyReLU}\left(\overrightarrow{\mathbf{a}}^{T}\left[\mathbf{W} \vec{h}_{i} \| \mathbf{W} \vec{h}_{k}\right]\right)\right)} αij=kNiexp(LeakyReLU(a T[Wh iWh k]))exp(LeakyReLU(a T[Wh iWh j]))
特征聚合计算方法
h ⃗ i ′ = σ ( ∑ j ∈ N i α i j W h ⃗ j ) \vec{h}_{i}^{\prime}=\sigma\left(\sum_{j \in \mathcal{N}_{i}} \alpha_{i j} \mathbf{W} \vec{h}_{j}\right) h i=σ jNiαijWh j

Message Passing

GCN、GAT都是基于邻居聚合的模型

称为Spatial(空间)GNN

大部分的Spatial GNN都可以用Message Passing实现

  • 消息的发送
  • 消息的接收

Paddle图神经网络-学习笔记_第17张图片

04图神经网络算法(下)

图采样

为什么要图采样?

数据太多,无法一次性送入计算资源。

借鉴MiniBatch的思想

但是:

传统深度学习

  • 单batch为若干个样本
  • 样本之间无依赖,多层样本计算量固定

图神经网络

  • batch为若干个节点
  • 节点之间相互依赖,多层节点计算量爆炸

什么是图采样?

!子图采样而不是随机采样

Paddle图神经网络-学习笔记_第18张图片

GraphSAGE(SAmple&aggreGatE)

1.邻居采样

Paddle图神经网络-学习笔记_第19张图片

2.邻居聚合

3.节点分类

Paddle图神经网络-学习笔记_第20张图片

邻居采样的优点

Paddle图神经网络-学习笔记_第21张图片

考虑:

采样是只能选取真实的邻居节点吗?

PinSAGE

通过多次随机游走,按游走经过的频率选取邻居。

概念:虚拟邻居

可以更加快速的聚合到多阶的信息

邻居聚合

Paddle图神经网络-学习笔记_第22张图片

单射

评估聚合表达能力的指标单射(一对一映射)

Paddle图神经网络-学习笔记_第23张图片

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

基于单射的Graph Isomorphism Net (GIN)模型

Paddle图神经网络-学习笔记_第24张图片

保证中心节点和邻居节点可区分

语义场景

Paddle图神经网络-学习笔记_第25张图片

05进阶模型

ERNIESage

背景:Text Graph

就是节点与边带有文本的特殊图

Paddle图神经网络-学习笔记_第26张图片

如何对Text Graph建模?

原有的方法:

只关注结构信息:GraphSage

退化成文本理解:ERNIE

但是!

Paddle图神经网络-学习笔记_第27张图片

ERNIE

ERNIE1.0核心思想:知识增强

Paddle图神经网络-学习笔记_第28张图片

ERNIE2.0核心思想:持续学习

Paddle图神经网络-学习笔记_第29张图片

总之:

ERNIE是百度推出的语义理解技术

  1. 世界领先的性能
  2. 广泛的应用前景

• 我们只需黑盒使用即可,像这样:

from models.ernie_model.ernie import ErnieModel
ernie = ErnieModel(src_ids=text_ids...)

ERNIESage Node

ERNIE 作用于Text Graph的Node(节点)上

Paddle图神经网络-学习笔记_第30张图片

ERNIESage Edge

ERNIE聚合Text Graph的Edge(边)上信息

Paddle图神经网络-学习笔记_第31张图片

ERNIESage 1-Neighbor

将中心节点的文本与所有一阶邻居节点文本进行单塔拼接,再利用ERNIE 做消息聚合。

Paddle图神经网络-学习笔记_第32张图片

问题:

  1. 如何确保在输入时邻居不带有顺序?

    针对问题1:独立的位置编码

  2. 如果邻居数量过多,如何建模?

    针对问题2:对邻居进行采样

UniMP

融合标签传递和图神经网络的统一模型

Paddle图神经网络-学习笔记_第33张图片

模型结构

-orrvPkcr-1664194691728)]

ERNIESage 1-Neighbor

将中心节点的文本与所有一阶邻居节点文本进行单塔拼接,再利用ERNIE 做消息聚合。

[外链图片转存中…(img-fNs5LI5H-1664194691729)]

问题:

  1. 如何确保在输入时邻居不带有顺序?

    针对问题1:独立的位置编码

  2. 如果邻居数量过多,如何建模?

    针对问题2:对邻居进行采样

你可能感兴趣的:(深度学习,神经网络,paddle,学习)