zoukankan      html  css  js  c++  java
  • 图卷积

    原文:http://tkipf.github.io/graph-convolutional-networks/

    多层图卷积网络 (GCN) with first-order filters.

     

    GCNs Part I: Definitions

    给定一个网络结构G=(V,E),

      1. N个节点,每个节点有D维信号或特征,即节点输入信号为N*D维矩阵, 记作X

      2. 图结构表示,邻接矩阵A

      3. 放入到图卷积网络中,得到输出Z,其中ZN*F矩阵, F代表每个节点输出的特征维度

    至于这个多层图卷积网络可以写成:

    H(l+1)=f(H(l),A)

    其中H(0)=X, H(L)=Z, 所以关键就是f(·,·)该怎么选取,以及内部参数的优化

    GCNs Part II: A simple example

     假设f(·,·)选取如下:

    f(H(l),A)=σ(AH(l)W(l))

    σ()为非线性函数(i.e., ReLU).

    需要注意的是:

      1. 在和矩阵A相乘的时候,把邻居的信号进行了相加处理,但并没有加上自己的信号,所以我们需要强行加上自环.

      2. 网络的规模,受到尺度影响,需要归一化操作. 最简单的就是使得归一化的A的行和为1,i.e., D1A, 也就是对邻居信号做了平均. 但实际操作中,经常采用一个对称化的归一化操作,i.e.,  D1/2AD1/2

    结合上面两条小trick,图卷积层可以表示为:

    其中节点度构成的对角矩阵

    GCNs Part III: Embedding the karate club network

     

    Karate club graph, colors denote communities obtained via modularity-based clustering (Brandes et al., 2008)

    下面为如何用GCN来分析这个空手道俱乐部图(Karate club graph)

       1. 采用3GCN,随机初始化权重

      2. 输入X=I, 因为我们这里没有节点特征.

    然后我们就可以进行前向传播了,通过这3层传播,我们就可以得到每个节点对应的输出。如下图(此时,还没训练!):

    CN embedding (with random weights) for nodes in the karate club network.

    PS: DeepWalk(Perozzi et al., KDD 2014) 能够非监督的学到相似的嵌入结果

     

  • 相关阅读:
    Uva12657 Boxes in a Line
    Uva11988 Broken Keyboard (a.k.a. Beiju Text)
    Uva442 Matrix Chain Multiplication
    Uva514 Rails
    一些计划
    Java基础知识强化07:打印出空心菱形
    Java基础知识强化06:使用BigDecimal计算阶乘1+1/2!+1/3!+……
    Java基础知识强化05:不借助第三个变量实现两个变量互换
    Java基础知识强化04:判断101~200之间有多少素数
    Android(java)学习笔记144:网络图片浏览器的实现(ANR)
  • 原文地址:https://www.cnblogs.com/skykill/p/9286273.html
Copyright © 2011-2022 走看看