• 【图神经网络学习笔记系列】01-Graph Attention Networks 学习笔记


    Graph Attention Networks 学习笔记

    这是一个exciting field

    前提引入:

    1. 图神经网络GNN介绍:https://www.bilibili.com/video/BV1Tf4y1i7Go8分钟小视频👍

    形态:就是《数据结构》、《离散数学》等所说的那个“图”的概念:节点、邻居、关系(有向、无向)、度、出度、入度

    然后,我们把邻接矩阵 A,度矩阵D,特征矩阵X再有个印象就OK了。

    操作-1:聚合:本质就是将目标实体和特征(邻居信息)作为一个整体,变成可学习的单位

    操作-2:更新:自己的特征+权重1邻居1特征+权重2邻居2特征…

    操作-3:循环-多层更新:A更新后新的A就不是原来的A了,那么在更新B的过程中,A给的也是含B信息的新的信息!最终A、B、C的值一定程度上也包含了结构信息。

    ----------------以下是自我理解-----------------

    我把up主在其他视频的例子做个改编,来解释一下GNN:
    例子:你微信朋友圈最近更新的五个人的平均工资 = 你的工资

    1. 有道理在于小A的朋友圈很有可能有一起工作的同事、相似教育经历的同学、工资高于或不如你的等等,平均一下确实有可能等于你的工资;

    2. 没道理在于
      轻视了自己的努力奋斗,在传递过程中,自己的个性化特征占比在减小
      ② 通过自己,将同事的信息和同学信息相互传递了,而且反复多次的传递特征,这个仿佛没有解释性;

    ③ 我稍微语文建模一下
    其实,小A能有这个“工资高于你的老板”,是因为与其他人竞争后,进入了这家公司,这个让体现了小A“工作能力强”的特征;
    小A有强大(或弱小)的同学,说明小A的教育资源和认知水平具备相似性或者合作(小组作业)、竞争(奖学金)等关系等等,也是你的“学习很强”的特征。
    因此,确实是有一定道理的,但是小A是同学中的2-8定律中的优秀的2(因为是20%,我并不认为是可以忽略的),其余的同学都有“懒惰”之类的不好的特征,老板是被国外制裁的科技公司老板(门槛高,但发展困难),那么“懒惰”和“未来不可期”的特点也会传呀?如何把握自身和邻居的关系呢?

    甚至,我自己的思考:真正和自己的一样强大(或弱小)的对手(或菜鸡互啄对象),我们反而没有好友关系。比如特征完全一致,但是是相反的类别。所以我想提出一种**“特征相似对立”**的概念。

    2. 图卷积网络GCN介绍:https://www.bilibili.com/video/BV1Xy4y1i7sq九分半的小视频👍

    发现问题:如下图,对B来说,能聚合很多特征,他们的特征反映了B的特点(看上面的语文建模),而对A来说,就只有B了,那把B的特征直接聚合到A就不行了。
    up主例子:马云有很多伙伴,你参加了双十一也四舍五入跟马云有关了,此时直接给你马云的特征…

    提出问题:
    参考:
    https://www.zhihu.com/question/426784258
    https://zhuanlan.zhihu.com/p/112277874

    度大的节点特征越来越大,而对于度小的节点却相反,会导致梯度爆炸或消失

    解决问题:
    思想:将度考虑进来,且不仅仅① 考虑本身的度,也考虑邻接节点的度,使用归一化使得更新权重时,②** B对A的影响 = A对B的影响**,主要是让B对A的特征的影响降低。

    step1:进行归一化

    简单的归一化本质是取平均,得到了一个非对称矩阵;
    stpe2 :所以进行改进

    推导过程,以这幅图为例

    A 指的是邻接矩阵,比如1和2、3相邻,则1这一行的第二列和第三列是1

    A^ 就是在A的基础上加上自己(自身特征)
    GNN中就说了:自己的特征 = 自己的特征+权重1邻居1特征+权重2邻居2特征…
    所以要考虑自己!

    D的意思是度(无向图比简单,有向图就稍微复杂一丢丢)
    D^ 也是+1

    注意1:
    刚学A^ 的时候,错误的理解为:加了一个环,但是实际上不能这么理解!!!

    思考:但是其实每一个都加一个环的话,也不算破坏图的结构吧…

    D^(-1/2)12345
    11/√30000
    201/√3000
    3001/200
    40001/20
    500001/√3

    之所以求-1/2次,是因为

    Step3:更新权重
    H^0 是最初的模样,也就是之前提到过的特征矩阵X

    然后每一轮都会在这个基础上进行更新权重,
    GNN是这么提的,只考虑了邻居,没有把度数加上

    现在从卷积神经网络中得到启发:
    W是学习权重,σ表示激活函数

    增加上归一化的概念
    在这里插入图片描述
    最终得到的结果

    图像表示图神经网络的过程:

    正文开始

    提出问题:
    在这里插入图片描述

    按照GNN,就是a,b,c=1,把信息直接聚合到一起
    按照GCN,就是除以节点度数开根号分之一,也就是度越多(邻居越多,给各个邻居的特征影响越小)
    都是数据本身一出现就定死了,没有根据不同节点的重要程度等等有不同的a,b,c

    做出假设:
    引入重要性 这一概念。根据关系之间的重要程度来影响最终聚合的结果。
    问:重要程度如何去描述呢?
    答:增加约束条件,就是所有邻居的重要性程度权重之和为1(都很重要的情况其实就是都不重要,根据这个思想)

    设计实验:
    以A与B的权重设置为例:假设向量a是用来将向量转化为数值的一个向量,那么
    向量a * (从A的特征中提取的特定部分 || 从B的特征中提取的特定部分)
    注:||指的是拼接
    在这里插入图片描述
    最终在网络中显示的为:ab重要值/(ab重要值+ac重要值+ad重要值)

    实际论文中,关于重要值还增加了激活函数leakyReLU(大概就是如果重要值太小了,就当没啥影响,就丢了),最后也用softmax进行了归一化。


    多头注意力机制:

    ——————未完待续——————

  • 相关阅读:
    【AIGC调研系列】llama 3与GPT4相比的优劣点
    java框架-Springboot3-场景整合
    前端文件流、切片下载和上传
    特征值和特征向量(3Blue1Brown学习笔记)
    elasticsearch查询bool和多字段查询
    网络开发套接字以及UDP、TCP协议
    thrust工程化学习(五)----噪声滤除
    比较器应用之一_窗口比较器/极限比较器
    Power Apps-组件属性
    C语言从入门到进阶教程文章分享汇总~持续更新
  • 原文地址:https://blog.csdn.net/qq_45637001/article/details/127694232