GNN
持续更新
实践程序放在了虚拟机里conda中NS环境里了
b站课程跳转------->>>>>
【不愧是公认最好的【图神经网络GNN/GCN教程】,从基础到进阶再到实战,一个合集全部到位!-人工智能/神经网络/图神经网络/深度学习。】 https://www.bilibili.com/video/BV1184y1x71H/?share_source=copy_web&vd_source=ad82400342f2b6e554e0db4400a9978f
实践应用:推荐算法,欺诈检测,交通道路,动态流量预测,知识图谱,自动驾驶,无人机场景,化学,医疗场景·····(有关系网的应用)
图的基本构成
图神经网络,但凡由关系的环境,都可以往这上面套。
图神经网络要做什么
ouput 就是对点做分类、做回归;对边做分类做回归。
图的邻接矩阵
图的临界矩阵思路的扩展👆
提出了图神经网络的问题,为什么会提出
对于正常的传统神经网络中,输入的格式一定是固定的!(图的输入格式比较随意)
GNN:输入数据不规则的时候,使用效果很好!
在后面的使用,大多的邻接矩阵的表达不是如上面图片中展示的N * N的,而是大概2*N的状态👇
图神经网络
考虑特征的时候,不光需要考虑自身的信息,还需要考虑邻居的信息。
上图的表示是求特征的一些方法,是一些思路,具体的操作需要自行选择。
每一次多加一层,临界矩阵和图的样子是不变的。但是特征的递归是加了一层, 以上图为例,当2被GNN层增加一层之后,2在返回给x1的特征的时候,已经包含了3,4的特征,所以GNN增加层数到一定程度,是能有Transformer的感觉的(每一个点的特征包含全局的感受事业)。
图神经网络可以概念性理解的基本功能👆
图卷积(GCN)
图卷积,图里就没有一个一个的框,只有相互的点的关系。
图中,不算是完全的有监督学习。大多是半监督任务。
图神经网络的一种思路:通过图中的相关联的点,获得特征值,求平均,然后通过一个全链接网络,最后做一个输出(输出的维度由自己控制)。
一般见到的任务,图卷积的层数不需要特别高。
👆有临界矩阵(A)、特征矩阵(F)、度矩阵(D)。
为什么需要度矩阵呢?
从上面可以发现一些小问题,一个人认识的人越多,按道理他对于特征的认识就应该越稀释(一个点不可能保持多个人的特别详细的了解)。
以上的操作就是对矩阵进行了一个度的变换,可以说是归一化的变换!但是其中又有问题,左乘其实是对(A)行产生了归一化,但是对于列没有太大的影响。
以上这个改变就解决了上述这个问题,既对列产生了修改,又对行产生了修改。
以上的做法是一种幽默的解释,其实就是把加权变得更和谐一点(不会让值变得那么小)。
GCN中为什么要有左乘右乘
对于上面问题的具体理解,如果一个点的度很高,那么点的特征值不会很大。
GCN论文中给出的基本公式。
层数太多可能效果也不好。感受野太大也不是好事情。
视频中的数据集的制作流程:
上图中 前是指转换item_id之前的编号,后是指转换之后的编号
TopKPooling函数讲解
其中的tanh激活函数可以参考
双曲正切函数Tanh