• 注意力机制QKV在GAT(Graph Attention Network)的体现


    注意力机制其实并没有规定 Q、K、V 的具体来源,GAT是规定了一套Q、K、V,自注意力是规定了另一套Q、K、V。核心其实只要计算满足下图的矩阵形式计算流程就是所谓的注意力机制了。学过注意力机制的应该都看的明白。
    在这里插入图片描述

    自注意力机制self-attention中,Q、K和V是通过线性变换从同一个特征向量中获得的,是同一个特征矩阵X同源的,也就是Q、K、V都是来源于同一个特征矩阵X,只不过Q、K、V是同一个特征矩阵X的线性变换的产物罢了。说直白点就是:Q = X ⋅ WQ, K = X ⋅ WK, V = X ⋅ WV
    这些变换将节点的特征映射到不同的表示空间,然后用于计算注意力权重。

    GAT(Graph Attention Network)被称为注意力机制的一种图神经网络,它使用了注意力机制的思想。
    在GAT中,每个节点与其邻居节点之间的关系被建模为具有不同权重的注意力权重。这就涉及到了注意力机制中的Q(查询)、K(键)和V(数值)的概念。具体来说,Q、K和V分别用于以下操作:

    1. 查询(Q):用于度量一个节点与其邻居之间的相关性。每个节点都有一个查询向量,用于计算与邻居节点之间的相似度。

    2. 键(K):描述邻居节点的特征。每个节点都有一个键向量,它用于与其他节点的查询向量进行比较,以确定注意力权重。

    3. 数值(V):包含了邻居节点的特征信息。每个节点都有一个数值向量,用于计算与邻居节点之间的加权和。

    上面的Q、K、V 我自己觉得不太好理解,直接看下面的具体计算步骤。
    下面的计算步骤是典型的注意力机制的计算,那就是说明肯定用到了注意力机制就对了()

    通过将 查询向量Q键向量K 进行点积操作,然后应用softmax函数来获得注意力权重,最终用注意力权重对 邻居节点的 数值向量V 进行加权和,GAT可以动态地确定每个节点与其邻居节点之间的重要性,从而实现了图数据上的信息传递。

    下面两图的就是具体计算了。
    图一:a函数应该就是上面所描述的点积运算(上面只是写成矩阵形式Q x KT了,但是把矩阵拆开来的话就类似qi · kTj的点积运算),然后softmax得到注意力权重aij,表示 节点 i 和 节点 j 的注意力权重。

    图二:然后就再乘上红框里面标出来的V进行加权和就OK了,他还用了一个在这里插入图片描述
    函数,问题不大。 可能符号表示不太严谨,意思能理解就行。

    在这里插入图片描述
    在这里插入图片描述

    总之,GAT中的QKV是注意力机制的关键组成部分,用于计算节点之间的注意力权重以进行信息传递。这使得GAT在图数据上能够有效地捕捉节点之间的关系和特征交互。

  • 相关阅读:
    从 MySQL 扩展迁移到 PDO
    D. Yarik and Musical Notes Codeforces Round 909 (Div. 3) 1899D
    SveletJs学习——运动动画
    MySQL大数据量查询方案
    利用决策树找出最优特征组合
    通信总线协议四 :SPI
    操作系统---死锁
    python隶属关系图模型:基于模型的网络中密集重叠社区检测方法
    QT--Opencv下报错Mat/imwrite/imread找不到文件
    简单回归之电表预测
  • 原文地址:https://blog.csdn.net/qq_45732909/article/details/134060073