加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

图卷积网络到底怎么做,这是一份极简的Numpy实现

发布时间:2019-02-23 09:18:07 所属栏目:建站 来源:机器之心编译
导读:因为图布局很是伟大且信息量很大,因此对付图的呆板进修是一项难题的使命。本文先容了怎样行使图卷积收集(GCN)对图举办深度进修,GCN 是一种可直接浸染于图并操作其布局信息的强盛神经收集。 本文将先容 GCN,并行使代码示例声名信息是怎样通过 GCN 的潜匿
副问题[/!--empirenews.page--]

因为图布局很是伟大且信息量很大,因此对付图的呆板进修是一项难题的使命。本文先容了怎样行使图卷积收集(GCN)对图举办深度进修,GCN 是一种可直接浸染于图并操作其布局信息的强盛神经收集。

本文将先容 GCN,并行使代码示例声名信息是怎样通过 GCN 的潜匿层撒播的。读者将看到 GCN 怎样聚合来自前一层的信息,以及这种机制怎样天生图中节点的有效特性表征。

作甚图卷积收集?

GCN 是一类很是强盛的用于图数据的神经收集架构。究竟上,它很是强盛,纵然是随机初始化的两层 GCN 也可以天生图收集中节点的有效特性表征。下图展示了这种两层 GCN 天生的每个节点的二维表征。请留意,纵然没有颠末任何实习,这些二维表征也可以或许生涯图中节点的相对相近性。

图卷积收集

更情势化地说,图卷积收集(GCN)是一个对图数据举办操纵的神经收集。给定图 G = (V, E),GCN 的输入为:

  • 一个输入维度为 N × F⁰ 的特性矩阵 X,个中 N 是图收集中的节点数而 F⁰ 是每个节点的输入特性数。
  • 一个图布局的维度为 N × N 的矩阵表征,譬喻图 G 的连接矩阵 A。[1]

因此,GCN 中的潜匿层可以写作 Hⁱ = f(Hⁱ⁻¹, A))。个中,H⁰ = X,f 是一种撒播法则 [1]。每一个潜匿层 Hⁱ 都对应一个维度为 N × Fⁱ 的特性矩阵,该矩阵中的每一行都是某个节点的特性表征。在每一层中,GCN 会行使撒播法则 f 将这些信息聚合起来,从而形成下一层的特性。这样一来,在每个持续的层中特性就会变得越来越抽象。在该框架下,GCN 的各类变体只不外是在撒播法则 f 的选择上有所差异 [1]。

撒播法则的简朴示例

下面,本文将给出一个最简朴的撒播法则示例 [1]:

  1. f(Hⁱ, A) = σ(AHⁱWⁱ)  

个中,Wⁱ 是第 i 层的权重矩阵,σ 长短线性激活函数(如 ReLU 函数)。权重矩阵的维度为 Fⁱ × Fⁱ⁺¹,即权重矩阵第二个维度的巨细抉择了下一层的特性数。假如你对卷积神经收集很认识,那么你会发明因为这些权重在图中的节点间共享,该操纵与卷积核滤波操纵相同。

简化

接下来我们在最简朴的条理上研究撒播法则。令:

  • i = 1,(束缚前提 f 是浸染于输入特性矩阵的函数)
  • σ 为恒等函数
  • 选择权重(束缚前提: AH⁰W⁰ =AXW⁰ = AX)

换言之,f(X, A) = AX。该撒播法则也许过于简朴,本文后头会增补缺失的部门。另外,AX 等价于多层感知机的输入层。

1. 简朴的图示例

我们将行使下面的图作为简朴的示例:

一个简朴的有向图。

行使 numpy 编写的上述有向图的连接矩阵表征如下:

  1. A = np.matrix([ 
  2.     [0, 1, 0, 0], 
  3.     [0, 0, 1, 1],  
  4.     [0, 1, 0, 0], 
  5.     [1, 0, 1, 0]], 
  6.     dtype=float 

接下来,我们必要抽取出特性!我们基于每个节点的索引为其天生两个整数特性,这简化了本文后头手动验证矩阵运算的进程。

  1. In [3]: X = np.matrix([ 
  2.             [i, -i] 
  3.             for i in range(A.shape[0]) 
  4.         ], dtype=float) 
  5.         X 
  6. Out[3]: matrix([ 
  7.            [ 0.,  0.], 
  8.            [ 1., -1.], 
  9.            [ 2., -2.], 
  10.            [ 3., -3.] 
  11.         ]) 

2. 应用撒播法则

我们此刻已经成立了一个图,其连接矩阵为 A,,输入特性的荟萃为 X。下面让我们来看看,当我们对其应用撒播法则后会产生什么:

  1. In [6]: A * X 
  2. Out[6]: matrix([ 
  3.             [ 1., -1.], 
  4.             [ 5., -5.], 
  5.             [ 1., -1.], 
  6.             [ 2., -2.]] 

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读