首页 > 其他分享 >机器学习_图卷积神经网络

机器学习_图卷积神经网络

时间:2024-12-13 15:12:05浏览次数:5  
标签:机器 卷积 矩阵 token GCN 神经网络 上下文 节点

现在最常用的是GCN,所以首先讲解。后面再根据模型的发展历程讲解。

图卷积神经网络GCN

原文:GNN | 从序列神经网络到GCN、GraphSage、GAT图模型总结

我们发现,无论是序列结构,还是图结构,其在增强token表示的过程,实际上是融合上下文信息的过程。以CNN为例,其通过滑窗的方式,学习到的是制定n-gram的共现信息(其中的n取决于卷积核的大小),LSTM学习的是上文之间的依赖关系,双向LSTM建模的是上下文之间的关系。这种上下文的获取是很直接的,可以是整个句子,也可以是指定的窗口。

但对于GNN而言,对应的token的上下文则是其一阶邻居或者二阶邻居,将邻居的特征融入到该token上的方式很直观的想法就是不同邻居的特征,按照不同的贡献度(权重),联合自身的特征进行加权求和,像能量传递一样,传递给当前token,并得到该token的总体能量表示。这也就是常说的聚合操作。

因此,为了实现上述过程,我们至少需要有以下输入

我们需要针对每一个节点,再每次特征聚合时,都拿到一阶邻居和自身信息。这就用到了就邻阶矩阵。

  1. 每个token节点的特征信息,即特征矩阵X。就像CNN的输入一样,我们针对每个词,可以通过lookup embedding的方法获取每个词对应的embedd表示(通过word2vec训练得到),可以是100维、300维等。当然也有其他的特征表示方法,如收集特征,然后对应的获取指定特征项上的值。

  2. 每个token的上下文信息,即邻阶矩阵A。图的上下文信息通过邻接矩阵(记录了每个节点对应的邻居信息)实现,而为了获取自身的信息,需要添加一个自环操作,即邻接矩阵+对角矩阵(对角线值为1,其余为0)。

  3. 上下文贡献信息,即度矩阵D。上面说到当前节点token,其接受到其上下文节点的信息,但需要有不同的权重,这个权重比较直观的想法就是借助当前节点的邻接个数来说,如果邻接个数多,那么每个对应的节点开源所贡献就会被分解,因此,可以通过计算每个节点对应的邻居个数,得到一个度矩阵,然后再求倒数(取逆),得到对应的值。而对于度数很大的超级节点,其值趋近于0,所以通常也会先对度开根号,然后再取逆。

因此,很自然的,有了上述三个矩阵,做一个连乘,即\(D*A*X\),将token节点的特征矩阵,通过邻阶矩阵获取上下文节点及其对应的特征,再乘以根据对应的权值,就完成了可以将每个token节点一阶邻居在相同维度上的特征值进行聚合(最简单的是直接相加)。

进一步的,我们将这一过程纳入神经网络当中进行拟合学习,需要用到一个参数矩阵W,一个激活函数,如Relu,得到经过一层GNN后得到的节点隐藏状态表示H。

当然,这是比较朴素的方法,在实际的工作中,会使用归一化后的邻阶矩阵进行处理。

发展历程

原文:回顾频谱图卷积的经典工作:从ChebNet到GCN
图卷积神经网络2-谱域卷积:SCNN/ChebNet/GCN的引入和介绍

https://www.zhihu.com/question/54504471/answer/3328747512

从图(Graph)到图卷积(Graph Convolution):漫谈图神经网络模型 (一)
https://www.cnblogs.com/SivilTaram/p/graph_neural_network_1.html

SCNN

ChebNet

对SCNN进行简化(砍手砍脚)

GCN

再ChebNet基础上,再次对SCNN进行简化(只剩头部)

Graph Transformer

为什么可以使用? Transformer有能力将其他节点的信息 附加到 该节点,和GCN的目的一致。
关键点是什么? position embedding,需要position embedding将本节点与有关系的节点表示出来。

使用了什么position embedding(PE)?

  • Global PE

  • Local PE

  • Relative PE

  • Structural PE

标签:机器,卷积,矩阵,token,GCN,神经网络,上下文,节点
From: https://www.cnblogs.com/kingwz/p/18604940

相关文章

  • 机器学习】ChatTTS-开源文本转语音(text-to-speech)大模型天花板
    【机器学习】ChatTTS:开源文本转语音(text-to-speech)大模型天花板目录一、引言二、TTS(text-to-speech)模型原理2.1VITS模型架构2.2VITS模型训练2.3VITS模型推理三、ChatTTS模型实战3.1ChatTTS简介3.2ChatTTS亮点3.3ChatTTS数据集3.4ChatTTS部署3.4......
  • ABB IRB6700机器人平衡缸维修故障小知识
    ABB作为工业机器人制造商,其IRB6700型机器人在许多工业应用中发挥着关键作用。然而,即使是如此高质量的机器人,在长时间使用后也可能出现某些故障,其中之一便是平衡缸渗油。本文将详细探讨这一问题的原因及相应的维修方法。一、渗油原因分析ABBIRB6700工业机器人平衡缸渗油可能由以下......
  • KUKA库卡机器人维修
    KUKA库卡机器人作为生产线上的核心设备,一旦出现KUKA机械手故障,将直接影响整个生产线的运行效率。及时的库卡机器人维修工作不仅能够迅速恢复机器人的工作状态,减少生产停滞时间,还能通过预防性维护降低未来库卡机械臂故障的发生率,延长机器人的使用寿命。此外,子锐机器人维修服务还能......
  • 计算机毕业设计Python+知识图谱大模型AI医疗问答系统 健康膳食推荐系统 食谱推荐系统
    温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO......
  • 计算机毕业设计Python+知识图谱大模型AI医疗问答系统 健康膳食推荐系统 食谱推荐系统
    温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO......
  • 机器学习-numpy
    numpy学习自用机器学习复习笔记::想学好机器学习,我们应该先学好一个实用的工具,numpypython语言作为解释型语言还是太慢了,整合C/C++/Fortran代码的工具,希望在学习机器学习前应该熟练使用。如同:创建一个一维数组和二维数组我们对这个数组进行一个切片,一般来说我们要切出最后......
  • 第二章 2.4使用序贯方法构建神经网络nn.Sequential() 及打印神经网络模型摘要
     #https://github.com/PacktPublishing/Modern-Computer-Vision-with-PyTorch#https://github.com/PacktPublishing/Modern-Computer-Vision-with-PyTorch###################ChapterTwo#######################################importtorchimporttorch.nnas......
  • Simulink在机器人视觉场景下的应用——基于视觉的无人机自主导航与避障
    目录项目实例:Simulink在机器人视觉场景下的应用——基于视觉的无人机自主导航与避障项目背景1.系统架构1.1硬件平台1.2软件平台2.系统功能模块2.1图像采集与预处理2.2地形识别与建图2.3障碍物检测与分类2.4环境建图与定位2.5路径规划与避障2.6飞行控制与......
  • 第二章 2.3 使用Pytorch构建神经网络
      #https://github.com/PacktPublishing/Modern-Computer-Vision-with-PyTorch#https://github.com/PacktPublishing/Modern-Computer-Vision-with-PyTorch###################ChapterTwo#######################################importtorchimporttorch.nn......
  • 12.9实验五:BP 神经网络算法实现与测试
    实验五:BP神经网络算法实现与测试 一、实验目的深入理解BP神经网络的算法原理,能够使用Python语言实现BP神经网络的训练与测试,并且使用五折交叉验证算法进行模型训练与评估。 二、实验内容(1)从scikit-learn库中加载iris数据集,使用留出法留出1/3的样本作为测试集......