【论文笔记】Heterogeneous Graph Attention Network

题 目 : 《 H e t e r o g e n e o u s 题目:《Heterogeneous Heterogeneous G r a p h Graph Graph A t t e n t i o n Attention Attention N e t w o r k 》 Network》 Network 🔗
作 者 : X i a o 作者:Xiao Xiao W a n g Wang Wang
来 源 : W W W 2019 来源:WWW2019 WWW2019
源 码 : 源码: github addr
笔 记 : H u 笔记:Hu Hu H e n g c h a n g Hengchang Hengchang

原文摘自我自己的博客Link:http://holdenhu.cn/2020/paper-noteheterogeneous-graph-attention-network/

Intro


本文提出的HAN(Heterogeneous Graph Attention Network)涉及到节点级别和语义级别。

  • 节点级别的Attention主要学习节点及其临近节点间的权重。
  • 语义级别的Attention是来学习基于不同meta-path的权重。

 

Related Work


Graph Neural Network
  ​GNN作为深度学习领域的扩展,用来处理无规则图结构数据。主要的信息传播使用卷积,即GCN,可以分为两类:

Attention
注意力机制在深度学习中也有广泛的应用,self-attention、soft-attention等。也已经有很多基于图Attention的应用,但是都是同构图的数据。
但2019年随后的一篇Graph Transformer Networks也是在异构图上的工作,详见我的note
 

Network Embedding
Network embedding和network representation learning都是在保留图的结构前提下,将网络转换到低位空间(比如推荐系统里常用的user embedding就是压缩到了一维特征值)。而以往的方法比如random walk、matrix factorization都是基于同构图。

 

Contribution


现实世界的交互数据往往种类繁多,构成的heterogeneous graph network (HIN)往往特别复杂,GNN不能直接应用。这也几乎是首次将attention机制用到处理meta-path和graph embedding里。

  • HAN能解决异构图中多种Node、Relation,以及Semantic融合的问题;
  • 该模型能够并行计算;
  • 整个模型的Attention是共享的;
  • 具有很好的可解释性;

 

Implemention


Preliminary

  • Heterogeneous Graph
    图可以表示成:
    G = ( V , E ) \mathcal{G}=(\mathcal{V}, \mathcal{E}) G=(V,E)
    其中 V \mathcal{V} V表示节点集, E \mathcal{E} E表示边的集合

  • 两个映射函数把节点和边映射到他们的种类上去:
    ϕ : V → H \phi: \mathcal{V} \rightarrow \mathscr{H} ϕ:VH
    ψ : E → R \psi: \mathcal{E} \rightarrow \mathcal{R} ψ:ER

  • Meta-path的表示:
    A 1 ⟶ R 1 A 2 ⟶ R 2 ⋯ ⟶ R l A l + 1 A_{1} \stackrel{R_{1}}{\longrightarrow} A_{2} \stackrel{R_{2}}{\longrightarrow} \cdots \stackrel{R_{l}}{\longrightarrow} A_{l+1} A1R1A2R2RlAl+1
    简单来说即是从节点A到节点B所经过的一系列点的序列。

  • Meta-path based Neighbors:基于一条meta-path的邻居节点。
    {{<note “// 默认一个节点的邻居节点包括其自身。”>}}

Structure Overview

structure

  • 先由Node-level Aggregating讲同一条元路径Φ上的节点根据不同的attention权重聚合起来(这里是简单的求和+激活函数)。
    {{<note “// # 注意这里的,node 1、2、3、4都在一条meta path中。这里我觉得有点小小的绘图问题导致歧义。”>}}

  • 再由Semantic-level Aggregating将不同元路径的输出通过另一个attention权重体制聚合起来(这里聚合方式也是简单的求和)

Node Level Attention

  1. Graph中有多种节点,可能对应的hidden feature的最佳表示形式不尽相同。所以先通过转换矩阵将所有节点转换到统一的特征空间。
    h i ′ = M ϕ i ⋅ h i \mathbf{h_i}^{\prime} = \mathbf{M}_{\phi_i} \cdot \mathbf{h}_i hi=Mϕihi

  2. 给定一条元路径 Φ Φ Φ,以及头节点 i i i和尾节点 j j j a t t n o d e att_node attnode里包括训练权重计算 j j j对于 i i i的attention值(有方向)
    e i j Φ = a t t n o d e ( h i ′ , h j ′ ; Φ ) e_{i j}^{\Phi}=a t t_{n o d e}\left(\mathbf{h}_{i}^{\prime}, \mathbf{h}_{j}^{\prime} ; \Phi\right) eijΦ=attnode(hi,hj;Φ)

  3. 通过softmax计算出节点 j j j的权重系数
    α i j Φ = softmax ⁡ j ( e i j Φ ) = exp ⁡ ( σ ( a Φ T ⋅ [ h i ′ ∥ h j ′ ] ) ) ∑ k ∈ N i φ exp ⁡ ( σ ( a Φ T ⋅ [ h i ′ ∥ h k ′ ] ) ) \alpha_{i j}^{\Phi}=\operatorname{softmax}_{j}\left(e_{i j}^{\Phi}\right)=\frac{\exp \left(\sigma\left(\mathbf{a}_{\Phi}^{\mathrm{T}} \cdot\left[\mathbf{h}_{i}^{\prime} \| \mathbf{h}_{j}^{\prime}\right]\right)\right)}{\sum_{k \in \mathcal{N}_{i}^{\varphi}} \exp \left(\sigma\left(\mathbf{a}_{\Phi}^{\mathrm{T}} \cdot\left[\mathbf{h}_{i}^{\prime} \| \mathbf{h}_{k}^{\prime}\right]\right)\right)} αijΦ=softmaxj(eijΦ)=kNiφexp(σ(aΦT[hihk]))exp(σ(aΦT[hihj]))

  4. 简单地将 Φ Φ Φ这条meta-path上邻接的节点的hidden feature根据不同的权重求和,再加上激活函数,即得到节点i的更新结果 z i Φ z_i^Φ ziΦ,即结点 i i i对于 Φ Φ Φ这条路径的embedding。
    z i Φ = σ ( ∑ j ∈ N i Φ α i j Φ ⋅ h j ′ ) \mathbf{z_i}^{\Phi} = \sigma\left(\sum_{j \in \mathcal{N}_{i}^{\Phi}} \alpha_{i j}^{\Phi} \cdot \mathbf{h}_{j}^{\prime}\right) ziΦ=σjNiΦαijΦhj

  5. 实际考虑到方差大的问题,将Node-level Attention延伸到了Multihead Attention来解决这个问题。将不同head的结果concatenate到一起。
    z i Φ = ∣ ∣ k = 1 K σ ( ∑ j ∈ N i Φ α i j Φ ⋅ h j ′ ) \mathbf{z_i}^{\Phi}=||_{k=1}^{K} \sigma\left(\sum_{j \in \mathcal{N}_{i}^{\Phi}} \alpha_{i j}^{\Phi} \cdot \mathbf{h}_{j}^{\prime}\right) ziΦ=k=1KσjNiΦαijΦhj

Semantic Level Attention

有了来自不同元路径的输出 z i Φ z_i^Φ ziΦ, 为了学习到更综合的信息,我们需要根据meta-path将多种语义信息融合到一起。这里还是使用attention机制将来自元路径的信息有效聚合起来。
( β Φ 0 , β Φ 1 , … , β Φ P ) = att ⁡ sem ⁡ ( Z Φ 0 , Z Φ 1 , … , Z Φ P ) \left(\beta_{\Phi_{0}}, \beta_{\Phi_{1}}, \ldots, \beta_{\Phi_{P}}\right)=\operatorname{att}_{\operatorname{sem}}\left(Z_{\Phi_{0}}, Z_{\Phi_{1}}, \ldots, Z_{\Phi_{P}}\right) (βΦ0,βΦ1,,βΦP)=attsem(ZΦ0,ZΦ1,,ZΦP)
{{<note “// 这里β是不同元路径对应的attention重要度参数。”>}}

  • β的计算方法:

    1. 要学习每条语义的权重,论文首先使用一层的MLP将Semantic embedding进行非线性转换。通过Semantic-level Attention vector q q q 来衡量多条Semantic embedding 间的相似性。
      w Φ i = 1 ∣ V ∣ ∑ i ∈ V q T ⋅ tanh ⁡ ( W ⋅ z i Φ + b ) w_{\Phi_{i}}=\frac{1}{|\mathcal{V}|} \sum_{i \in \mathcal{V}} \mathbf{q}^{\mathrm{T}} \cdot \tanh \left(\mathbf{W} \cdot \mathbf{z}_{i}^{\Phi}+\mathbf{b}\right) wΦi=V1iVqTtanh(WziΦ+b)
      {{<note “// 这里W是MLP的weight matrix,b是bias,q是attention vector。”>}}
    2. ​ 经过Softmax函数,得到语义权重。
      β Φ i = exp ⁡ ( w Φ i ) ∑ i = 1 P exp ⁡ ( w Φ i ) \beta_{\Phi_{i}}=\frac{\exp \left(w_{\Phi_{i}}\right)}{\sum_{i=1}^{P} \exp \left(w_{\Phi_{i}}\right)} βΦi=i=1Pexp(wΦi)exp(wΦi)
  • 最后的汇总得到的embedding也是通过简单的求和
    Z = ∑ i = 1 P β Φ i ⋅ Z Φ i \mathrm{Z}=\sum_{i=1}^{P} \beta_{\Phi_{i}} \cdot \mathrm{Z}_{\Phi_{i}} Z=i=1PβΦiZΦi

Training

Loss function:

{{<note “//使用Cross-Entropy将-ln求和”>}}
L = − ∑ l ∈ Y L Y l ln ⁡ ( C ⋅ Z l ) L=-\sum_{l \in \mathcal{Y}_{L}} \mathrm{Y}^{l} \ln \left(\mathrm{C} \cdot \mathrm{Z}^{l}\right) L=lYLYlln(CZl)
这里 Y L \mathcal{Y}_{L} YL表示有label的结点集; Y l \mathrm{Y}^{l} Yl表示真实输出,即label; Z l \mathrm{Z}^{l} Zl表示通过本论文方法得出的embedding值; C C C表示分类器,来根据embedding值分类结点。

Evaluation


研究问题:

  • Q1:GTN生成的新图结构对学习node representation是否有效?
  • Q2:GTN能否根据数据集自适应地产生可变长度的元路径?
  • Q3:如何从GTNs生成的邻接矩阵来解释每个元路径的重要性?

Dataset

​ 实验过程用到了DBLP、ACM、IMDB三个数据集。
dataset

Baselines

​Baseline包括:

  • 传统算法:DeepWalk、Esim、metapath2vec
  • GNN经典模型:GCN、GAT
  • 本文模型:HAN of Node、HAN of Semantic、HAN
    baseline
    从分类、聚类的实验结果来看,HAN(Attention of Node + Semantic)基本上都是最优的。

 

Process Pseudocode


code

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值