简单了解图注意力机制
如果对传统的图匹配的聚合方式进行创新的话,也就是对h这一个节点的聚合方式进行创新。
h i ( l + 1 ) = Norm ( σ ( h i ( l ) + α ∥ h i ( l ) ∥ m i ( l ) ∥ m i ( l ) ∥ ) ) , \mathbf{h}_{i}^{(l+1)}=\operatorname{Norm}\left(\sigma\left(\mathbf{h}_{i}^{(l)}+\alpha\left\|\mathbf{h}_{i}^{(l)}\right\| \frac{\mathbf{m}_{i}^{(l)}}{\left\|\mathbf{m}_{i}^{(l)}\right\|}\right)\right), hi(l+1)=Norm σ hi(l)+α hi(l) mi(l) mi(l) ,
将这一个聚合的方式进行改进,然后在通过余弦相似度生成亲和力矩阵进行匈牙利算法的匹配操作。
M i , j = h i ⊤ h j ∥ h i ∥ ⋅ ∥ h j ∥ . \mathbf{M}_{i, j}=\frac{\mathbf{h}_{i}^{\top} \mathbf{h}_{j}}{\left\|\mathbf{h}_{i}\right\| \cdot\left\|\mathbf{h}_{j}\right\|} . Mi,j=∥hi∥⋅∥hj∥hi⊤hj.
也就是想学习能不能在聚合的这个公式上加入注意力,或者考虑加入一个Transform模块作为一个创新点。
传统GNN的计算方法
在很早之前刚开学的时候,看过一些视频资料来学习GNN的聚合方式,本质上就是自身的节点,加上与之相连的节点乘以一个权重系数W进行聚合操作。
每一个连接的顶点特征向量乘以W在进行求和,最后通过一个激活函数来进行实现。
也就是要通过给出的特征向量矩阵(假设每一个节点是4维度的特征向量)先乘以一个可学习的参数矩阵w 得到更新之后的h,然后在根据邻接矩阵进行聚合操作.
下面是实际运算给出的示例图
也就是只有它自己本身和连接的两条边2和3来参与运算.然后其他节点的更新策略依次类推从而完成整个节点的一个更新操作.
图中的Attention操作
对于上面的一个图来说,同样对于节点1的权重更新需要考虑的是与之相邻的节点2和3,但是一个值得注意的点就是2和3对节点1的影响程度应该是一样的吗?
这里说的图中的注意力也就是要在连接两个节点之间的边上赋予其权重,类似于一个加权平均的感觉了.
计算i节点和j节点之间的注意力我们给出下面的公式来进行计算.
e i j = a ( W h i , W h j ) e_{i j}=a\left(W h_{i}, W h_{j}\right) eij=a(Whi,Whj)
注意力机制的运算就采样下面的方法来进行.
α i j = softmax j ( e i j ) = exp ( e i j ) ∑ k ∈ N ( i ) exp ( e i k ) = exp ( a ( W h i , W h j ) ) ∑ k ∈ N ( i ) exp ( a ( W h i , W h j ) ) \alpha_{i j}=\operatorname{softmax}_{j}\left(e_{i j}\right)=\frac{\exp \left(e_{i j}\right)}{\sum_{k \in N(i)} \exp \left(e_{i k}\right)}=\frac{\exp \left(a\left(W h_{i}, W h_{j}\right)\right)}{\sum_{k \in N(i)} \exp \left(a\left(W h_{i}, W h_{j}\right)\right)} αij=softmaxj(eij)=∑k∈N(i)exp(eik)exp(eij)=∑k∈N(i)exp(a(Whi,Whj))exp(a(Whi,Whj))
与之关联的节点之间做一个softmax操作.
这种方法的举例就是1和2之间做一个点积运算得到一个值,然后在2和3之间做一个点积运算得到另一个值,它们之间做softmax操作.
这种图中加注意力的方式是有很多种的,关于这方面的论文应该是有很多,这里就值列举课程中提到的一些.