博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MuchGCN:Multi-Channel Graph Convolutional Networks
阅读量:4226 次
发布时间:2019-05-26

本文共 4579 字,大约阅读时间需要 15 分钟。

这篇文章在的基础上引入了多通道(Multi-channel)的概念,提出了multi channel graph convolutional networks (MuchGCN),通过inter-channel和intra-channel两种方式聚合通道上的信息。

本文被IJCAI2020接收,在写这篇博客时我看的是2019年12月挂到arXiv上的版本,整体感觉有点粗糙,被会议接收的论文可能是作者更新过的版本。地址:

Motivation

在DiffPool模型中,每一层池化后只有一个粗粒度的图生成,这样会造成一定的信息损失,例如在社交网络中,一个节点可能有多重身份,按照不同的身份进行聚类会得到不同的结果。所以在池化的过程中,需要生成多个图来保持原图上节点具有多重身份的特点。

Preliminaries

Graph Neural Networks

GNN模型可以用下式来表示: H k = σ ( ( H k − 1 + A H k − 1 ) W k ) ∈ R n × d H_{k}=\sigma\left(\left(H_{k-1}+A H_{k-1}\right) W_{k}\right) \in \mathbb{R}^{n \times d} Hk=σ((Hk1+AHk1)Wk)Rn×d H k H_k Hk k k k次卷积后图上节点的embedding matrix, W k ∈ R d × d W_{k} \in \mathbb{R}^{d \times d} WkRd×d是线性变换矩阵。在经过 K K K此卷积后,得到 Z = GNN ⁡ ( A , X ) ∈ R n × d Z=\operatorname{GNN}(A, X) \in \mathbb{R}^{n \times d} Z=GNN(A,X)Rn×d

Differentiable Pooling

这里用的公式和DiffPool论文里的一样,可以参考我之前写过的DiffPool的论文笔记:

Multi-Graph Learning

在每一层的池化过程中,为了获得不同的池化结果,需要考虑不同的 A i A^i Ai来生成不同的 Z i Z^i Zi Z i = G N N ( A i , X ) Z^i=GNN(A^i, X) Zi=GNN(Ai,X),论文中提到 Considering graph instance i, a specific adjacency matrix A i A^i Ai is formulated to consider one class of the node characteristics and correlations.

Multi-channel Graph Convolutional Networks

在这里插入图片描述

Definition

definition 1: layer

A layer is composed of operations of graph convolutions and feature learning

l l l表示层号,如上图所示,每一层的输入是若干个图,例如第1层的输入是两个图 [ { X 1 , A 1 } , { X 2 , A 2 } ] \left[\left\{X^{1}, A^{1}\right\},\left\{X^{2}, A^{2}\right\}\right] [{

X1,A1},{
X2,A2}
],层的输出是学到的节点的embedding,例如第一层的输出是 [ Z ( 1 , 1 ) , ⋯   , Z ( 1 , 4 ) ] \left[Z^{(1,1)}, \cdots, Z^{(1,4)}\right] [Z(1,1),,Z(1,4)]

definition 2: channel

Given a specific layer, a channel represents the input graph denoted by G i = ( X i , A i ) G^i={(X^i, A^i)} Gi=(Xi,Ai), where i denotes the channel index.

例如上图中第0层只有一个channel: [ G 0 = ( X 0 , A 0 ) ] [G^0={(X^0, A^0)}] [G0=(X0,A0)],第1层有两个channel: [ G 1 = ( X 1 , A 1 ) , G 2 = ( X 2 , A 2 ) ] [G^1={(X^1, A^1)},G^2={(X^2, A^2)} ] [G1=(X1,A1),G2=(X2,A2)]

Method

Single-channel Learning Process

在第 l l l i i i个channel里的第 k k k步消息传递可用下式来表示: H k i = σ ( [ H k − 1 i + A i ⋅ H k − 1 i ] ⋅ W k ( l ) ) H_{k}^{i}=\sigma\left(\left[H_{k-1}^{i}+A^{i} \cdot H_{k-1}^{i}\right] \cdot W_{k}^{(l)}\right) Hki=σ([Hk1i+AiHk1i]Wk(l))通过将每一步的 H k H_{k} Hk拼接起来得到 H i = [ X i , H k i ] , k = 1 , ⋅ ⋅ ⋅ , K \mathcal{H}^{i}=\left[X^{i}, H_{k}^{i}\right],k=1,\cdot \cdot \cdot, K Hi=[Xi,Hki],k=1,,K。使用第 l l l层的第 j j j个卷积核 θ ( l , j ) ∈ R 1 × ( K + 1 ) \theta^{(l, j)} \in \mathbb{R}^{1 \times(K+1)} θ(l,j)R1×(K+1) H i \mathcal{H}^{i} Hi进行卷积操作: Z ( l , j ) = ϕ ( sum ⁡ ( H i ⊙ θ ( l , j ) ) + b ) ∈ R n l × d Z^{(l, j)}=\phi\left(\operatorname{sum}\left(\mathcal{H}^{i} \odot \theta^{(l, j)}\right)+b\right) \in \mathbb{R}^{n_{l} \times d} Z(l,j)=ϕ(sum(Hiθ(l,j))+b)Rnl×d得到第 l l l层上的第 j j j个embedding matrix。

如上图,在得到了第 0 0 0层的 Z 0 , 1 Z^{0,1} Z0,1 Z 0 , 2 Z^{0,2} Z0,2后,按照DiffPool的方法可以得到 S 0 , 1 S^{0,1} S0,1 S 0 , 2 S^{0,2} S0,2,进而得到第1层的两个channel [ G 1 = ( X 1 , A 1 ) , G 2 = ( X 2 , A 2 ) ] [G^1={(X^1, A^1)},G^2={(X^2, A^2)} ] [G1=(X1,A1),G2=(X2,A2)],同时,还能得到 G 1 G^1 G1 G 2 G^2 G2之间的inter-channel adjacency matrix A 1 , 2 = S ( 0 , 1 ) T A 0 S ( 0 , 2 ) ∈ R n 1 × n 1 A^{1,2}=S^{(0,1)^{T}} A^{0} S^{(0,2)} \in \mathbb{R}^{n_{1} \times n_{1}} A1,2=S(0,1)TA0S(0,2)Rn1×n1

Multi-channel Learning Process

当一层有多个channel时,不仅要聚合每个channel内部的信息,还要channel之间聚合信息 H k i , c = σ ( [ H k − 1 i , c + A i , c ⋅ H k − 1 c ] ⋅ W k ( l ) ) H_{k}^{i, c}=\sigma\left(\left[H_{k-1}^{i, c}+A^{i, c} \cdot H_{k-1}^{c}\right] \cdot W_{k}^{(l)}\right) Hki,c=σ([Hk1i,c+Ai,cHk1c]Wk(l)) H k i , c H_{k}^{i, c} Hki,c是第 i i i个channel在与第 c c c个channel进行 k k k步聚合后的embedding matrix。 A i , c A^{i,c} Ai,c的定义在上一小节中已给出。

和single-channel类似,通过将每一步的 H H H拼接起来得到 H i = [ X i , H k i , H k i , c ] \mathcal{H}^{i}=\left[X^{i}, H_{k}^{i}, H_{k}^{i, c}\right] Hi=[Xi,Hki,Hki,c],然后在 H i \mathcal{H}^{i} Hi θ ( l , j ) \theta^{(l, j)} θ(l,j)进行卷积操作得到 Z Z Z。这里有一点我没有看懂,不知道 H k i , c H_{k}^{i, c} Hki,c是不是包括了该层上channeli其他所有channel做信息传递的结果。

Multi-channel Graph Convolutional Net-works

在第 l l l层上对所有的 Z ( l , j ) Z^{(l, j)} Z(l,j)做池化得到一个该层的向量表示 Y ( l ) = ∑ j = 1 C l T l (  GlobalPool  ( Z ( l , j ) ) ) ∈ R d × 1 Y^{(l)}=\sum_{j=1}^{C_{l} T_{l}}\left(\text { GlobalPool }\left(Z^{(l, j)}\right)\right) \in \mathbb{R}^{d \times 1} Y(l)=j=1ClTl( GlobalPool (Z(l,j)))Rd×1 C l C_l Cl是第 l l l层的channel个数,且 T l ≜ C l + 1 C l T_{l} \triangleq \frac{C_{l+1}}{C_{l}} TlClCl+1

把所有的 Y ( l ) Y^{(l)} Y(l)拼接起来得到整张图最终的表示 Y = ⊕ l Y ( l ) ∈ R d ⋅ L × 1 Y=\oplus_{l} Y^{(l)} \in \mathbb{R}^{d \cdot L \times 1} Y=lY(l)RdL×1

转载地址:http://otdqi.baihongyu.com/

你可能感兴趣的文章
Oracle 18c 单实例安装手册 详细截图版
查看>>
Oracle Linux 6.1 + Oracle 11.2.0.1 RAC + RAW 安装文档
查看>>
Oracle 11g 新特性 -- Online Patching (Hot Patching 热补丁)说明
查看>>
Oracle 11g 新特性 -- ASM 增强 说明
查看>>
Oracle 11g 新特性 -- Database Replay (重演) 说明
查看>>
Oracle 11g 新特性 -- 自动诊断资料档案库(ADR) 说明
查看>>
CSDN博客之星 投票说明
查看>>
Oracle wallet 配置 说明
查看>>
Oracle smon_scn_time 表 说明
查看>>
VBox fdisk 不显示 添加的硬盘 解决方法
查看>>
Secure CRT 自动记录日志 配置 小记
查看>>
RMAN RAC 到 单实例 duplicate 自动分配通道 触发 ORA-19505 错误
查看>>
mysql 随机分页的优化
查看>>
DB2快速创建测试库
查看>>
SD卡驱动分析--基于高通平台
查看>>
[图文] Seata AT 模式分布式事务源码分析
查看>>
pm 源码分析
查看>>
kmsg_dump
查看>>
Getting a Result from an Activity
查看>>
Java多态性理解
查看>>