GE/GNN

CNN到GCN

CNN的优势

  • CNN是用一个kernel在image(图)的feature map上进行convolution 从layer i获得layeri+1,实现特征提取 kernel多数情况下随机初始化,并通过反向传播优化

CNN的不足

  • 然而对于Graph图中每个点的邻居数量是不同的所以无法定义kernel,使用CNN 。因此提出了GCN
  • spectral domain GCN的目标也是通过convolution 从layeri获得layeri+1。

图表示学习

起因

直接在图这种非结构的,数量不定(可能数目非常多),属性复杂的 图 上进行机器学习/深度学习是很困难的,而如果能处理为向量将非常的方便

矩阵分解

因为从某种程度上图中的各节点关系可以视为稀疏的矩阵,那么基于矩阵分解的方法就可以得到低维的向量。

随机游走

  • 原理
    是一个随机过程,可以看作一个马尔可夫模型,指给定一个图和一个出发点,随机地选择一个邻居结点,移动到邻居结点上,然后把当前结点作为出发点,重复以上过程,
  • 过程
    1、根据随机选出的结点可以构成一个序列,作为在图上的Random Walk过程,这个序列可以作为word2vec(用周围词预测中间词CBOW)的输入(用neighbor update node)
    2、游走后得出一个概率分布,刻画了图中每一个顶点被访问到的概率。用这个概率分布作为下一次游走的输入并反复迭代这一过程。当满足一定前提条件时,这个概率分布会趋于收敛。收敛后,即可以得到一个平稳的每一个顶点被访问到的概率分布。

GNN

用一个点的neighbor feature update这个点 (实现aggregation 聚合)通过神经网络来聚合每个节点及其周围节点的信息基对节点进行embedding。

DeepWalk和Node2vec方法的原理呢就是,先在图上通过设定初始节点,和路径长度进行随机游走生成序列,获得节点序列(两种方法随机游走的策略不同)。再将节点序列看作一个句子使用Word2vec 由于目标是给定节点预测关联节点,所以使用Skip-gram的方法学习节点的表示。
LINE方法呢我们使用的是二阶相似度算法,原理 具有相同邻居的节点之间更有可能相似。主要基于概率的原理。将根据节点表示计算的出两个节点相连的概率,与实际两个节点相连的概率作比较。并设计损失函数,使用梯度下降法进行更新

  • 1、Deepwalk
    通过随机游走对图进行采样生成序列(32-64个序列),这样对于每个节点就有一个window为x(20)的context 。接下来可以使用w2v生成向量,预测节点的邻居节点。使用skipgram因为其不会过分关注顺序信息更关注局部
    representation-size 100/200/300
    Random walk:
    number-walks 80
    walk-length 10
    Skipgram:
    window-size 5
  • 2、LINE
    a)适合任意类型的网络,有向图/无向图/带权图
    b)目标函数同时考虑了局部特征和全局特征。一阶/二阶相似度
    c)提出一种边采样的算法,解决 SGD 效率问题。

    P2需要在所有节点里面做归一化(分母求和),所以使用了负采样
    让采样到某条边的概率正比于边权重
    Negative sampling K=5,
    representation-size 100/200/300
    window-size = 10,
  • 3、Node2vec
    提出了一种有偏的随机游走:
    结合深度优先游走和广度优先游走:设置 p和 q规定权重,控制 DFS 和 BFS 的程度
    BFS 倾向于在初始节点的周围游走,可以反映出一个节点的邻居的微观特性,捕获结构等效性
    DFS一般会跑的离初始节点越来越远,可以反映一个节点邻居的宏观特性,基于同质性推断社区等连接模式

    P:控制重复访问之前顶点的概率
    如果 p > max ( q , 1 ) ,那么采样会尽量不往回走,对应上图的情况,就是下一个节点 不太可能是上一个访问的节点t。
    如果 p < max ( q , 1 ) ,那么采样会更倾向于返回上一个节点,这样就会一直在起始点周围某些节点来回转来转去。
    Q:控制未访问的节点是向外还是向内 的该率
    如果 q > 1 ,那么游走会倾向于在起始点周围的节点之间跑,更容易反映出一个节点的 BFS 特性。
    如果 q < 1 ,那么游走会倾向于往远处跑,更容易反映出 DFS 特性。
    参数:图G、表示向量维度d=100/200/300、每个节点生成的游走个数r,游走长度l,上下文的窗口长度k,以及p、q.
    walk_length = 10
    num_walks = 80
    p = 0.25
    q = 4

GCN


是一个多层的图卷积神经网络,每一个卷积层处理一阶邻域信息,通过叠加若干卷积层实现多阶邻域的信息传递。

输入:n个节点的特征组成一个N×D维的矩阵X,然后n节点之间的关系形成、N×N维的矩阵A,也称为邻接矩阵(adjacency
matrix)。X和A便是我们模型的输入
通过卷积层提取图的特征更新X(2-3层)

  • 反向传播:最后针对节点的标签或节点之间的关系设计损失函数 (即使不进行反向传播就可以媲美DEEPWALK和LINE)

CNN到GCN

  • CNN的优势
    CNN是用一个kernel在image(图)的feature map上进行convolution 从layer i获得layeri+1,实现特征提取 kernel多数情况下随机初始化,并通过反向传播优化
  • 不足
    然而对于Graph图中每个点的邻居数量是不同的所以无法定义kernel,使用CNN 。因此提出了GCN
    spectral domain GCN的目标也是通过convolution 从layeri获得layeri+1。

GAT

引入自注意力(self-attention)机制,每个节点的隐藏状态通过注意其邻居节点来计算。可以为每个邻居分配不同的注意力得分,识别出更重要的邻居。
k层最后一层

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值