论文阅读和分析: “How Attentive are Graph Attention Networks?”

下面所有博客是个人对EEG脑电的探索,项目代码是早期版本不完整,需要完整项目代码和资料请私聊。


数据集
1、脑电项目探索和实现(EEG) (上):研究数据集选取和介绍SEED
相关论文阅读分析:
1、EEG-SEED数据集作者的—基线论文阅读和分析
2、图神经网络EEG论文阅读和分析:《EEG-Based Emotion Recognition Using Regularized Graph Neural Networks》
3、EEG-GNN论文阅读和分析:《EEG Emotion Recognition Using Dynamical Graph Convolutional Neural Networks》
4、论文阅读和分析:Masked Label Prediction: Unified Message Passing Model for Semi-Supervised Classification
5、论文阅读和分析:《DeepGCNs: Can GCNs Go as Deep as CNNs?》
6、论文阅读和分析: “How Attentive are Graph Attention Networks?”
7、论文阅读和分析:Simplifying Graph Convolutional Networks

8、论文阅读和分析:LightGCN: Simplifying and Powering Graph Convolution Network for Recommendation
9、图神经网络汇总和总结
相关实验和代码实现:
1、用于图神经网络的脑电数据处理实现_图神经网络 脑电
2、使用GCN训练和测试EEG的公开SEED数据集
3、使用GAT训练和测试EEG公开的SEED数据集
4、使用SGC训练和测试SEED数据集
5、使用Transformer训练和测试EEG的公开SEED数据集_eeg transformer
6、使用RGNN训练和测试EEG公开的SEED数据集
辅助学习资料:
1、官网三个简单Graph示例说明三种层次的应用_graph 简单示例
2、PPI数据集示例项目学习图神经网络
3、geometric库的数据处理详解
4、NetworkX的dicts of dicts以及解决Seven Bridges of Königsberg问题
5、geometric源码阅读和分析:MessagePassin类详解和使用
6、cora数据集示例项目学习图神经网络
7、Graph 聚合
8、QM9数据集示例项目学习图神经网络
9、处理图的开源库

基本

GAT的缺点:

GAT计算的注意力非常有限:注意力得分的排名不受查询节点的限制。将这种受限的注意力正式定义为静态注意力。因为GAT使用静态注意力机制,所以存在GAT无法表达的简单图形问题:在受控问题中,发现静态注意力阻碍GAT甚至无法拟合训练数据。

提出GATv2:

一个动态图注意力变体,它比GAT更具表达力。进行了广泛的评估,表明GATv2在12个OGB和其他基准测试中优于GAT,同时匹配其参数成本。代码位于https://github.com/tech-srl/how_attentive_are_gats。GATv2 is available as part of the PyTorch Geometric library,
the DeepGraph Library,and the TensorFlow GNN library.
1、from torch_geometric.nn.conv.gatv2_conv import GATv2Conv
2、from dgl.nn.pytorch import GATv2Conv
3、from tensorflow_gnn.graph.keras.layers.gat_v2 import GATv2Convolution

结果:

论文阅读和分析: “How Attentive are Graph Attention Networks?”_第1张图片

算法理论:

和GAT相比, a T a^T aT的位置改变;
x i ′ = α i , i Θ x i + ∑ j ∈ N ( i ) α i , j Θ x j , \mathbf{x}^{\prime}_i = \alpha_{i,i}\mathbf{\Theta}\mathbf{x}_{i} + \sum_{j \in \mathcal{N}(i)} \alpha_{i,j}\mathbf{\Theta}\mathbf{x}_{j}, xi=αi,iΘxi+jN(i)αi,jΘxj,
注意力权重:
α i , j = exp ⁡ ( a ⊤ L e a k y R e L U ( Θ [ x i   ∥   x j ] ) ) ∑ k ∈ N ( i ) ∪ { i } exp ⁡ ( a ⊤ L e a k y R e L U ( Θ [ x i   ∥   x k ] ) ) . \alpha_{i,j} = \frac{ \exp\left(\mathbf{a}^{\top}\mathrm{LeakyReLU}\left(\mathbf{\Theta} [\mathbf{x}_i \, \Vert \, \mathbf{x}_j] \right)\right)} {\sum_{k \in \mathcal{N}(i) \cup \{ i \}} \exp\left(\mathbf{a}^{\top}\mathrm{LeakyReLU}\left(\mathbf{\Theta} [\mathbf{x}_i \, \Vert \, \mathbf{x}_k] \right)\right)}. αi,j=kN(i){i}exp(aLeakyReLU(Θ[xixk]))exp(aLeakyReLU(Θ[xixj])).
If the graph has multi-dimensional edge features e i , j \mathbf{e}_{i,j} ei,j the attention coefficients α i , j \alpha_{i,j} αi,j are computed as:
α i , j = exp ⁡ ( a ⊤ L e a k y R e L U ( Θ [ x i   ∥   x j   ∥   e i , j ] ) ) ∑ k ∈ N ( i ) ∪ { i } exp ⁡ ( a ⊤ L e a k y R e L U ( Θ [ x i   ∥   x k   ∥   e i , k ] ) ) . \alpha_{i,j} = \frac{ \exp\left(\mathbf{a}^{\top}\mathrm{LeakyReLU}\left(\mathbf{\Theta} [\mathbf{x}_i \, \Vert \, \mathbf{x}_j \, \Vert \, \mathbf{e}_{i,j}] \right)\right)} {\sum_{k \in \mathcal{N}(i) \cup \{ i \}} \exp\left(\mathbf{a}^{\top}\mathrm{LeakyReLU}\left(\mathbf{\Theta} [\mathbf{x}_i \, \Vert \, \mathbf{x}_k \, \Vert \, \mathbf{e}_{i,k}] \right)\right)}. αi,j=kN(i){i}exp(aLeakyReLU(Θ[xixkei,k]))exp(aLeakyReLU(Θ[xixjei,j])).

geometric开源的代码:

由于标准GAT中的线性层在每个层之后立即应用,因此参与节点的排名不受查询节点的限制。相反,在GATv2中,每个节点都可以处理任何其他节点。

torch_geometric.nn — pytorch_geometric documentation (pytorch-geometric.readthedocs.io)

    def __init__(
        self,
        in_channels: Union[int, Tuple[int, int]],
        out_channels: int,
        heads: int = 1,
        concat: bool = True,
        negative_slope: float = 0.2,
        dropout: float = 0.0,
        add_self_loops: bool = True,
        edge_dim: Optional[int] = None,
        fill_value: Union[float, Tensor, str] = 'mean',
        bias: bool = True,
        share_weights: bool = False,
        **kwargs,
    ):
        
    def forward(self, x: Union[Tensor, PairTensor], edge_index: Adj,
                edge_attr: OptTensor = None,
                return_attention_weights: bool = None):        


参考:

论文阅读和分析:Graph Attention Networks_KPer_Yang的博客-CSDN博客
https://github.com/tech-srl/how_attentive_are_gats
https://arxiv.org/abs/2105.14491
https://pytorch-geometric.readthedocs.io/en/latest/modules/nn.html#torch_geometric.nn.conv.GATv2Conv

你可能感兴趣的:(机器学习,论文阅读,人工智能,深度学习)