HAN论文阅读与代码详解

HAN学习
本文包含的代码 , 以及省略的工具类 , 批次训练代码都在我的仓库中
文章目录代码实现
论文思路 摘要
本文首先提出了一种新的基于分层注意力的异构图神经网络 , 包括节点级和语义级的注意力 。具体来说 , 节点级注意力旨在学习节点与其基于元路径的邻居之间的重要性 , 而语义级注意力能够学习不同元路径的重要性 。通过学习节点级和语义级注意力的重要性 , 可以充分考虑节点和元路径的重要性 。然后 , 所提出的模型可以以分层的方式通过基于源路径的邻居节点聚合特征来生成节点嵌入 。
HAN模型
HAN模型使用分层的注意力结构:分为节点级别的注意力和语义级别的注意力 。
节点级别:学习基于元路径的邻居的权重并聚合它们得到语义特定的节点嵌入 。
语义级别:判断元路径的不同 , 并针对特定任务得到语义特定节点嵌入的最优加权组合 。
下图为HAN的整体结构图 。
节点级别的注意力
由于每个类型的节点具有不同类型的特征 , 于是本文设计了类型特定的**转换矩阵 M ? i M_{\phi_{i}} M?i??**将不同类型的节点特征映射到同一个特征空间中 。映射过程如下公式1:
h i ′ = M ? i ? h i \{h}_i^{\prime}=\{M}_{\phi_i}\cdot\{h}_i hi′?=M?i???hi?
接着 , 本文使用自我注意力学习各种类型节点的权重 , 给定一个节点对 ( i , j ) (i,j) (i,j)  , 他们是通过元路径Φ \Phi Φ ,  e i j Φ e_{ij}^{\Phi} eijΦ?代表节点 j j j对节点 i i i的重要性 。如下公式2

HAN论文阅读与代码详解

文章插图
e i j Φ = a t t n o d e ( h i ′ , h j ′ ; Φ ) e_{ij}^{\Phi}=att_{node}(\{h}_i^{\prime},\{h}_j^{\prime};\Phi) eijΦ?=?(hi′?,hj′?;Φ)
然后 , 通过隐蔽注意力将结构信息注入模型(只需要对j ∈ N i Φ j\in\{N}_{i}^{\Phi} j∈NiΦ? 计算e i j Φ e_{ij}^{\Phi} eijΦ?), N i Φ \{N}_{i}^{\Phi} NiΦ?代表节点 i i i基于元路径的邻居(包括自己) , 然后通过函数进行归一化得到重要性系数 α i j Φ \{ij}^{\Phi} αijΦ? 。如下公式3
α i j Φ = s o f t m a x j ( e i j Φ ) = exp ? ( σ ( a Φ T ? [ h i ′ ∥ h j ′ ] ) ) ∑ k ∈ N i Φ exp ? ( σ ( a Φ T ? [ h i ′ ∥ h k ′ ] ) ) \{ij}^{\Phi}={j}(e_{ij}^{\Phi})=\frac{\exp(\sigma(\{a}_{\Phi}^{\{T}}\cdot[\{h}_{i}^{\prime}\|\{h}_{j}^{\prime}]))}{\sum_{k\in\{N}_{i}^{\Phi}}\exp(\sigma(\{a}_{\Phi}^{\{T}}\cdot[\{h}_{i}^{\prime}\|\{h}_{k}^{\prime}]))} αijΦ?=?(eijΦ?)=∑k∈NiΦ??exp(σ(aΦT??[hi′?∥hk′?]))exp(σ(aΦT??[hi′?∥hj′?]))?
然后 , 节点 i i i的基于元路径的嵌入可以通过邻居的映射后的特征根据重要性系数进行聚合决定 。如下公式4
【HAN论文阅读与代码详解】z i Φ = σ ( ∑ j ∈ N i Φ α i j Φ ? h j ′ ) \{z}_i^\Phi=\sigma\bigg(\sum_{j\in\{N}_i^\Phi}\{ij}^\Phi\cdot\{h}_j'\bigg) ziΦ?=σ(j∈NiΦ?∑?αijΦ??hj′?)
由于异构图具有无标度特性 , 因此图数据的方差很大 。为了解决上述挑战 , 我们将节点级注意力扩展到多头注意力 , 使训练过程更加稳定 。如下公式5
z i Φ = ∏ k = 1 K σ ( ∑ j ∈ N i Φ α i j Φ ? h j ′ ) \{z}_{i}^{\Phi}=\prod\{k=1}^{K}\sigma\bigg(\sum\{j\in\{N}_{i}^{\Phi}}\{ij}^{\Phi}\cdot\{h}_{j}'\bigg) ziΦ?=k=1∏K?σ(j∈NiΦ?∑?αijΦ??hj′?)
对于元路径集 { Φ 1 , … , Φ P } \{\Phi_{1},\ldots,\Phi_{P}\} {Φ1?,…,ΦP?} ,  在节点的特征经过节点级别注意力之后 , 我们可以得到 P P P组语义特定的节点特征 , 为 { Z Φ 1 , … , Z Φ P } \left\{\{Z}_{\Phi_{1}},\ldots,\{Z}_{\Phi_{P}}\right\} {ZΦ1??,…,ZΦP??}