【图结构】之HAN:Heterogeneous Graph Attention Network

作者:張張張張
github地址:https://github.com/zhanghekai
【转载请注明出处,谢谢!】


H A N HAN HAN源代码地址:https://github.com/Jhy1993/HAN
H A N HAN HAN论文地址:http://www.shichuan.org/doc/66.pdf

H A N \qquad HAN HAN是在 G A T GAT GAT的基础上实现的,它的模型分为两部分:(1)节点级的注意力;(2)语义级的注意力。整个模型大致流程如下:首先确定元路径,使用元路径将异构图转换为同构图,邻接矩阵中两节点间有关系则为 1 1 1,没有关系则为 0 0 0;然后,对每一条元路径调用一次 G A T GAT GAT模型,生成与元路径个数相同的 n o d e    e m b e d d i n g node \; embedding nodeembedding,此过程成为节点级注意力机制( N o d e − l e v e l    A t t e n t i o n Node-level \; Attention NodelevelAttention);最后,将生成的多个 e m b e d d i n g embedding embedding进行一个单层神经网络训练,得到元路径的权重,此过程称为语义级注意力机制( S e m a n t i c − l e v e l    A t t e n t i o n Semantic-level \;Attention SemanticlevelAttention)。

注意:邻接矩阵中记录的不再是两节点间的连通数。因为 G A T GAT GAT原本是用于同构图的,只在乎两节点间是否有关系,以此来确定邻居节点,与路径数无关。

一、节点级注意力

\qquad 节点级注意力机制其实就是原封不动的 G A T GAT GAT模型,只不过是对每个元路径都调用了一次 G A T GAT GAT而已。从 H A N HAN HAN N o d e − l e v e l    A t t e n t i o n Node-level \; Attention NodelevelAttention部分我们可以看到,里面用的公式与 G A T GAT GAT论文中的公式是一模一样的,只不过加上了确定元路径的角标。因为 G A T GAT GAT的一个优点就是允许节点 i i i为其不同的邻居节点赋予不同的权重, H A N HAN HAN把这个优点提取出来而已。不熟悉 G A T GAT GAT的同学可以阅读我的另一篇博文【图结构】之图注意力网络GAT详解。在这里不多做赘述。

二、语义级注意力

\qquad 当求出每一个元路径的 e m b e d d i n g embedding embedding后,接下来就要对每个 e m b e d d i n g embedding embedding计算权重,也就是论文中所说的语义级注意力机制( S e m a n t i c − l e v e l    A t t e n t i o n Semantic-level \;Attention SemanticlevelAttention)。这部分的主要公式只有一个:
w Φ i = 1 ∣ V ∣ ∑ i ∈ V q T ⋅ t a n h ( W ⋅ z i Φ + b ) ★ w_{\Phi_i}=\frac{1}{|V|}\sum_{i \in V}q^T\cdot tanh(W\cdot z^\Phi_i +b)\qquad\qquad\qquad ★ wΦi=V1iVqTtanh(WziΦ+b)
\qquad 这个公式由于下标符号的原因,写的有点乱。等号左边的 i i i和等号右边的 i i i含义是不同的。 w Φ i w_{\Phi_i} wΦi表示元路径 Φ i \Phi_i Φi的权重,这里的 i i i表示元路径集合中第 i i i个元路径;而等号右边的 i i i代表每个节点(node),其中 V V V表示节点的集合(论文中这个符号的解释在PRELIMINARY Definition 3.1.中)。我们分三部分解释这个公式:

\qquad (1) t a n h ( W ⋅ z i Φ + b ) tanh(W\cdot z^\Phi_i +b) tanh(WziΦ+b):这是一个单层神经网络,输入层为 z i Φ z^\Phi_i ziΦ,表示在元路径 Φ \Phi Φ下得到的节点 i i i e m b e d d i n g embedding embedding z i Φ z^\Phi_i ziΦ是一个向量,大小为 F ′ × 1 F' \times1 F×1 F ′ F' F为输出 e m b e d d n g embeddng embeddng的维度。 W W W是一个待训练的权重矩阵,即全链接神经网络中边的权重,大小为 P × F ′ P\times F' P×F,其中 P P P表示为元路径的数量。 b b b是偏差向量。得到的结果是一个向量,假定它为 Q Q Q,则 Q Q Q的大小为 P × 1 P\times 1 P×1

\qquad (2) q T ⋅ Q q^T\cdot Q qTQ q T q^T qT是一个向量,大小为 1 × P 1\times P 1×P,可以理解为又进行了一个单层的神经网络。

\qquad 以上公式中的 W W W q T q^T qT是被共享与所有的元路径和特定于语义的嵌入,目的是为了进行有意义的比较。也就是说,所有的 n o d e e m b e d d i n g node embedding nodeembedding都使用同一个神经网络以及里面的参数。

很多人到此仍然不明白这个公式为什么要这样写,不明白为公式(1)部分和公式(2)部分的作用。我对他的理解是:强行往语义路径上凑!。我们可以看到其实 W W W q T q^T qT的维度大小其实对最后结果的维度大小是一样的,因为最后公式(2)完成后会得到一个数。最后的这个“数”的大小是固定的, W W W q T q^T qT起到的是中间过渡转换的作用,事实上,只要 W W W的行数与 q T q^T qT的列数相同就可以了。

\qquad 综上所述,正是由于共用同一套权重矩阵,才能够将不同的元路径联系起来。

\qquad (3) 1 ∣ V ∣ ∑ i ∈ V q T ⋅ Q \frac{1}{|V|}\sum_{i \in V}q^T\cdot Q V1iVqTQ:每个元路径的每个节点的embedding都会计算出一个数值,将这些数值求和并求平均,即可得到该元路径的权重。

【图结构】之HAN:Heterogeneous Graph Attention Network_第1张图片

\qquad 在获得每个元路径的重要性之后,我们通过softmax函数对其进行归一化。通过使用softmax函数归一化所有元路径的重要性,可以得到元路径的权重。

β Φ i = e x p ( w Φ i ) ∑ i = 1 P e x p ( w Φ i ) \beta_{\Phi_i}=\frac{exp(w_{\Phi_i})}{\sum_{i=1}^{P}exp(w_{\Phi_i})} βΦi=i=1Pexp(wΦi)exp(wΦi)

\qquad 使用学习的权重作为系数,我们可以将这些特定于语义的嵌入融合在一起,以获得最终的嵌入 Z Z Z
Z = ∑ i = 1 P β Φ i ⋅ Z Φ i Z = \sum_{i=1}^{P}\beta_{\Phi_i}\cdot Z_{\Phi_i} Z=i=1PβΦiZΦi

\qquad 通过半监督学习,对模型中的所有权重进行训练,最终得到一个提取好的 n o d e    e m b e d d i n g node \; embedding nodeembedding

你可能感兴趣的:(异构图网络,神经网络,机器学习,深度学习,python,算法)