机器学习—图神经网络

  • V:点
  • E:边
  • U:图

图的邻接矩阵

  • 表示领居之间的关系

  • 文本数据也可做图形式

    • Graphs - are - all around - us
  • 传统模型需要特征固定的大小输入,GNN数据不用固定

    • 如分子结构等
  • 任务分类

    • Graph级别:任务可以自己设计,例如这个分子有没有环路,这个分子是啥
    • Node和Edge级别:预测这个点是谁?这个边在做什么动作等
  • 一般邻接矩阵不是N*N的。

信息传递

  • 每个点的特征更新时,既要考虑自身,也要考虑邻居

  • 聚合操作可以当做全连接层
    在这里插入图片描述

  • 结合邻居与自身信息: m i ^ = G ( W j ⋅ x j : j ∈ N i ) \hat{m_i}=G({W_j·x_j:j∈N_i}) mi^=G(Wjxj:jNi)

    • W j W_j Wj是点 x j x_j xj的一个权重参数,可学习参数,表示与邻居的关系
  • 汇总: h i = σ ( W 1 ⋅ h i + ∑ j ∈ N i W 2 ⋅ h j ) h_i=\sigma(W_1·h_i+\sum_{j∈N_i}W_2·h_j) hi=σ(W1hi+jNiW2hj)

    • ∑ j ∈ N i W 2 ⋅ h j \sum_{j∈N_i}W_2·h_j jNiW2hj:表示每一个邻居的信息。
    • W 1 ⋅ h i W_1·h_i W1hi:自身的信息。
    • σ \sigma σ:激活函数。
    • 特征每次的更新,由自身与其邻居所决定。
  • 更新方式有很多,上述为求和,也有:

    • M e a n = ∑ j ∈ N i W j ⋅ x j ∣ N i ∣ Mean=\frac{\sum_{j∈N_i}W_j·x_j}{|N_i|} Mean=NijNiWjxj

    • M a x = m a x j ∈ N i ( { W j ⋅ x j } ) Max=\underset {j∈N_i}{max}(\{W_j·x_j\}) Max=jNimax({Wjxj})

    • M i n = m i n j ∈ N i ( { W j ⋅ x j } ) Min=\underset {j∈N_i}{min}(\{W_j·x_j\}) Min=jNimin({Wjxj})

多层GNN

  • GNN可以有多层,其本质就是更新各部分特征
  • 其中输入是特征,输出也是特征,邻接矩阵也不会变的

在这里插入图片描述

GCN图卷积

  • 通常交给GCN两个东西:1. 各节点输入特征;2. 网络结构图(邻接矩阵)

  • Semi-supervised learning

    • 不需要全部标签
    • 用少量标签也能训练
    • 计算损失时只用有标签的
  • GCN的基本思想

    • 计算橙色节点的特征,平均其邻居特征(包括自身)后传入神经网络

  • 网络层数

    • GCN也可以多层,每一层输入的还是节点特征
    • 然后将当前特征与网络结构图传入下层继续不断的计算
    • 最后输出的是每个点对应的向量
    • 不需要做太多层,图中的关系不会太庞大

    在这里插入图片描述

  • 图基本组成

    • Adjacency matrix A:邻接矩阵,表示图中节点的关系
    • Degree matrix D:节点的度
    • Feature vector X:特征向量,权重值
  • 特征计算方法

    • 邻接矩阵与特征矩阵相乘,表示聚合邻居信息

在这里插入图片描述

  • 计算时需要考虑自身, A ^ = A + λ I N \hat{A}=A+λI_N A^=A+λIN,加上一个对角矩阵

  • 对度矩阵进行 D ^ − 1 \hat{D}^{-1} D^1 ,即取倒数,就相当于平均的感觉

在这里插入图片描述

  • 然后公式就变为: D ^ − 1 ( A ^ X ) \hat{D}^{-1}(\hat{A}X) D^1(A^X) ,也可以为 ( D ^ − 1 A ^ ) X (\hat{D}^{-1}\hat{A})X (D^1A^)X
  • 因为是对角矩阵,相当于对每一行做归一化,即 1/2 * 只乘第一行

在这里插入图片描述

  • 同样的,左乘之后对行做归一化,右乘对列做归一化
    • 公式: D ^ − 1 A ^ D ^ − 1 X \hat{D}^{-1}\hat{A}\hat{D}^{-1}X D^1A^D^1X

在这里插入图片描述

  • 但相当于做了两次归一化,我们需要改一下为: D ^ − 1 / 2 A ^ D ^ − 1 、 2 X \hat{D}^{-1/2}\hat{A}\hat{D}^{-1、2}X D^1/2A^D^12X ,即开一个根号

在这里插入图片描述

  • 18
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值