深度学习十大算法之图神经网络(GNN)

一、图神经网络的基础

在这里插入图片描述

图的基本概念

图是数学中的一个基本概念,用于表示事物间复杂的关系。在图论中,图通常被定义为一组节点(或称为顶点)以及连接这些节点的边。每个边可以有方向,称为有向边,或者没有方向,称为无向边。在不同的应用场景中,节点可以代表不同的实体,如人、地点、物品等,而边则代表这些实体间的关系或者连接,如友谊、路线、交互等。

神经网络概述

神经网络是一种模仿生物神经网络(例如大脑)工作方式的算法,是人工智能和机器学习领域的核心。最简单的神经网络由输入层、若干隐藏层和输出层组成,其中每层包含多个神经元。这些神经元通过带权重的连接相互作用。输入数据在网络中传播,并在每个神经元处进行加权求和和激活函数处理,最终产生输出。神经网络能够通过学习数据中的模式来执行各种复杂任务,如分类、预测等。

GNN的起源与发展

图神经网络(GNN)起源于传统神经网络,是一种专门用于处理图结构数据的神经网络。早期的研究主要集中在如何将神经网络模型应用于图数据上,以及如何在图结构中有效传播信息。随着深度学习的兴起,GNN得到了快速发展。

GNN的核心思想是在图的节点间传播信息,从而学习节点的表示。这种方法使GNN能够捕捉节点之间的复杂关系和依赖性。早期的GNN模型包括Spectral CNN、Graph Convolutional Network (GCN) 等。这些模型在不同的图结构数据上表现出色,比如社交网络、化学分子结构等。

近年来,GNN已经发展出多种变体,如Graph Attention Networks (GAT)、GraphSAGE等,它们在效率、扩展性和表达能力上有所改进。此外,GNN在多个领域内的应用也日益增多,例如在推荐系统、交通网络、药物发现等领域展现出巨大的潜力。

GNN的发展不仅推动了图数据处理技术的进步,也为深度学习领域带来了新的研究方向和挑战。

二、GNN的工作原理

基础知识

在图深度学习中,理解节点嵌入的概念是至关重要的。在图论中,节点嵌入指的是将图中的每个节点映射到一个低维空间(d维嵌入空间),这一过程旨在使得嵌入空间中的相似节点在网络中彼此靠近。这种映射使得我们能够在图数据中捕获复杂的关系和特征。

考虑图中的两个节点 u 和 v。我们可以使用特征向量 x u \mathbf{x}_u xu x v \mathbf{x}_v xv 来表示这些节点的特征。目标是通过一个编码器函数(例如 E n c ( ⋅ ) Enc(\cdot) Enc()将这些特征向量转换成低维空间中的嵌入向量 z u \mathbf{z}_u zu z v \mathbf{z}_v zv

例如,编码器函数可以定义为:

E n c ( u ) = f ( W ⋅ x u + b ) Enc(u) = f(\mathbf{W} \cdot \mathbf{x}_u + \mathbf{b}) Enc(u)=f(Wxu+b)

其中 W \mathbf{W} W是权重矩阵, b \mathbf{b} b 是偏置向量, f f f是激活函数,例如ReLU。

在图深度学习中,度量嵌入空间中两个节点相似性的一种常用方法是计算它们嵌入向量之间的距离。相似性函数可以是欧几里得距离,定义为两个向量之间的直线距离。公式如下:

Similarity ( u , v ) = ∑ i = 1 d ( z u , i − z v , i ) 2 \text{Similarity}(u, v) = \sqrt{\sum_{i=1}^{d} (z_{u,i} - z_{v,i})^2} Similarity(u,v)=i=1d(zu,izv,i)2

其中 z u , i z_{u,i} zu,i z v , i z_{v,i} zv,i 分别是节点 u 和 v 在嵌入空间中的第 i 个维度的坐标。

此外,图神经网络(GNN)的设计目标是捕获图中节点间的复杂结构和关系。在GNN中,节点的嵌入是通过聚合邻居信息来更新的。例如,在图卷积网络(GCN)中,节点的更新公式可以表示为:

z u = f ( ∑ v ∈ N ( u ) 1 c u v W ⋅ x v ) \mathbf{z}_u = f\left(\sum_{v \in \mathcal{N}(u)} \frac{1}{c_{uv}} \mathbf{W} \cdot \mathbf{x}_v\right) zu=f(vN(u)cuv1Wxv)

其中, N ( u ) \mathcal{N}(u) N(u)是节点 u 的邻居集合, c u v c_{uv} cuv 是归一化常数,用于平衡不同节点间的影响。

节点表示学习

在GNN中,节点表示学习是一个核心过程,它的目标是将每个节点转换为数值形式的向量表示。这些向量包含了节点本身的特征信息以及与其相连的其他节点的信息。节点的表示向量可以用于后续的图分析任务,如节点分类、链接预测等。

提取特征
用于
节点
向量表示
图分析任务

邻接矩阵与特征聚合

GNN使用邻接矩阵来表示图中的节点间关系。邻接矩阵是一个二维数组,其中的元素表示节点间是否有边相连。特征聚合是GNN处理图数据的一个关键步骤,它涉及将一个节点的邻居节点信息聚合到该节点的表示中。

邻接矩阵
特征聚合
节点
邻居节点
更新节点表示

在这里插入图片描述

GNN的主要类型

GNN有多种不同的类型,每种类型在特征聚合和信息传播方面有所不同。

  1. Graph Convolutional Network (GCN): GCN通过将邻接矩阵和节点特征矩阵结合起来,利用卷积操作来更新节点表示。
卷积
结合
节点特征矩阵
更新后的节点表示
邻接矩阵
  1. Graph Attention Network (GAT): GAT引入了注意力机制,允许节点根据其邻居的重要性动态调整连接的权重。
注意力机制
加权邻居特征
节点
计算权重
更新节点表示

三、GNN的应用场景

社交网络分析

在社交网络分析中,GNN被用来识别社群结构、推荐朋友或内容,甚至预测用户行为。例如,通过分析用户间的互动,GNN可以预测用户可能感兴趣的新朋友或信息流内容。GraphSAGE是一个流行的开源框架,能够有效地生成社交网络中节点的嵌入表示。

生物信息学

GNN在生物信息学领域也显示出巨大潜力。它被用于蛋白质结构预测、基因表达分析等领域。例如,DeepMind的AlphaFold 使用GNN来预测蛋白质的三维结构,这对药物发现和生物医学研究具有重大意义。

推荐系统

GNN也被广泛应用于推荐系统中。它能够根据用户的历史交互数据,预测用户对未知项目的偏好。例如,Pinsage是Pinterest开发的一种基于图的深度学习模型,用于增强其推荐系统的效果。

四、GNN的实际案例

案例研究:使用GNN进行社交网络分析

在社交网络分析的案例中,GNN能够帮助揭示用户间复杂的互动模式。例如,使用GNN分析Twitter上的用户互动数据,可以识别出影响力大的用户、话题趋势,甚至是传播虚假信息的模式。相关研究和案例可以在arXiv找到。

简单实现:

在这个简单实现中,将使用PyTorch Geometric(一种流行的GNN库)和一个公开的社交网络数据集。使用的是Cora数据集,这是一个常用于图神经网络研究的学术论文引用网络。

请注意,要运行以下代码,需要安装torchtorch_geometric。代码会构建一个简单的图卷积网络(GCN),用于节点分类任务。

数据集:

  • 方法一:直接下载:数据集下载链接:https://networkrepository.com/cora.php 解压后放在和主函数同级的data文件夹下
  • 方法二:使用PyTorch Geometric库,它提供了一个简便的方法来下载和加载Cora数据集​​。以下是在Python中使用PyTorch Geometric获取Cora数据集的代码示例:
from torch_geometric.datasets import Planetoid
dataset = Planetoid(root='data/Cora', name='Cora')

data = dataset[0]
print(f'Dataset: {dataset}:')
print('======================')
print(f'Number of graphs: {len(dataset)}')
print(f'Number of features: {dataset.num_features}')
print(f'Number of classes: {dataset.num_classes}')

print(f'Number of nodes: {data.num_nodes}')
print(f'Number of edges: {data.num_edges}')
print(f'Average node degree: {data.num_edges / data.num_nodes:.2f}')
print(f'Number of training nodes: {data.train_mask.sum()}')
print(f'Training node label rate: {int(data.train_mask.sum()) / data.num_nodes:.2f}')
print(f'Contains isolated nodes: {data.contains_isolated_nodes()}')
print(f'Contains self-loops: {data.contains_self_loops()}')
print(f'Is undirected: {data.is_undirected()}')
  • 方法三:如果更倾向于使用TensorFlow,可以通过以下链接下载Cora数据集,并按照TensorFlow Neural Structured Learning的格式对其进行处理。下载和处理数据集的命令如下
wget --quiet -P /tmp https://linqs-data.soe.ucsc.edu/public/lbc/cora.tgz
tar -C /tmp -xvzf /tmp/cora.tgz

!wget https://raw.githubusercontent.com/tensorflow/neural-structured-learning/master/neural_structured_learning/examples/preprocess/cora/preprocess_cora_dataset.py

!python preprocess_cora_dataset.py \
--input_cora_content=/tmp/cora/cora.content \
--input_cora_graph=/tmp/cora/cora.cites \
--max_nbrs=5 \
--output_train_data=/tmp/cora/train_merged_examples.tfr \
--output_test_data=/tmp/cora/test_examples.tfr

main.py

import torch
from torch_geometric.datasets import Planetoid
import torch_geometric.transforms as T
from torch_geometric.nn import GCNConv

# 加载Cora数据集
dataset = Planetoid(root='/data/Cora', name='Cora', transform=T.NormalizeFeatures())

# 定义图卷积网络模型
class GCN(torch.nn.Module):
    def __init__(self):
        super(GCN, self).__init__()
        self.conv1 = GCNConv(dataset.num_node_features, 16)
        self.conv2 = GCNConv(16, dataset.num_classes)

    def forward(self, data):
        x, edge_index = data.x, data.edge_index

        x = self.conv1(x, edge_index)
        x = torch.relu(x)
        x = self.conv2(x, edge_index)

        return torch.log_softmax(x, dim=1)

# 初始化模型和优化器
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
model = GCN().to(device)
data = dataset[0].to(device)
optimizer = torch.optim.Adam(model.parameters(), lr=0.01, weight_decay=5e-4)

# 训练模型
model.train()
for epoch in range(200):
    optimizer.zero_grad()
    out = model(data)
    loss = torch.nn.functional.nll_loss(out[data.train_mask], data.y[data.train_mask])
    loss.backward()
    optimizer.step()

# 测试模型
model.eval()
_, pred = model(data).max(dim=1)
correct = pred[data.test_mask].eq(data.y[data.test_mask]).sum().item()
accuracy = correct / data.test_mask.sum().item()
print('Accuracy: {:.4f}'.format(accuracy))

案例研究:GNN在药物发现中的应用

药物发现领域中,图神经网络(GNN)的一个重要应用是通过分析化学结构来预测化合物的生物活性。具体来说,研究人员开发了新型的GNN模型,如RG-MPNN,这种模型将药效团信息层次性地融入到消息传递神经网络(MPNN)架构中,从而提高了化学属性预测的准确性。这种方法不仅吸收了原子和键的信息,还吸收了药效团的信息,能有效地用于虚拟筛选和先导化合物优化​​。

GNN在预测化合物与蛋白质相互作用(CPI)方面也显示出巨大潜力。在这方面的深度学习方法,如分层图卷积网络(HGCN),能够学习复杂的从原始数据中提取的抽象特征,从而提高性能。这些模型通常包括三个主要组件:负责分别编码化合物和蛋白质的两个组件,以及将这些编码层的输出转化为CPI预测的最终组件。例如,利用SMILES字符串来表示化合物,可以将其转换为独特的分子图,其中节点代表原子,边代表原子间的共价键。通过这种方法,研究人员可以更有效地预测化合物和蛋白质之间是否发生相互作用​​。。一个实际案例是使用GNN来加速新药的发现过程,这在ChemRXiv上有详细的论文和研究报告。

五、GNN的未来趋势与挑战

图神经网络(GNN)正迅速成为处理图结构数据的重要工具。尽管在多个领域取得了显著的进展,但GNN的未来发展仍面临一些挑战和研究趋势。

  • 数据集不平衡:目前可用的数据集存在限制标签数据、领域依赖性数据和数据不平衡等问题。解决这些问题的方法之一是使用迁移学习和领域适应技术。

  • 现有系统/模型的准确性:可以利用深度学习模型如GCN、GAT和GraphSAGE等方法来提高当前系统的效率和精度。此外,在大型、特定领域的数据集上训练模型可以进一步提高性能。

  • 提高文本分类效果:文本分类是一个重大挑战,可以通过利用先进的深度学习方法,如图神经网络,来提高文本分类的准确性和性能。

  • 过度平滑(Oversmoothing):在GNN中使用过多的消息传递和聚合层可能会导致过度平滑现象。随着网络深度的增加,图中不同部分的节点表示可能变得难以区分。在极端情况下,所有节点特征可能会趋于相似状态,失去其独特信息。这是因为在多次平滑迭代后,节点特征从其邻域中聚合了太多信息,从而丢失了个体的独特特征。

GNN的不断发展强调了需要解决的一系列图分析问题。在GNN的研究领域中,我们探讨了几个关键的近期研究领域,包括链接预测、图生成和图分类等​​​​。

随着GNN的持续发展,它们在捕获数据中的复杂关系和依赖性方面显示出独特的能力,但同时也面临着数据不平衡、模型准确性和文本分类等方面的挑战。未来,GNN的发展方向可能会集中在解决这些问题上,以及探索新的应用场景和优化现有模型的方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/491657.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C#学习笔记4:PC串口发送数据

今日继续我的C#学习之路,今日学习制作PC串口发送数据的窗口程序 串口是单片机上位机开发的重点,本文围绕做一个通过PC端串口发送数据的程序进行实践学习, 文章提供源码与解释、整体工程文件 目录 1、控件的选择与摆放: 2、程序设…

46 div 下面包含 el-radio, 导致点击一次 div, div 的 click 事件执行多次

前言 这是一个最近碰到的一个很奇怪的问题 情况如下一个 div 下面有一个 el-radio, 然后 div 上面配置了 click 的回调为 handleClick 然后 但是点击 div 的时候, handleClick 触发了两次 然后 这里 来模拟一下, 并解决一下 这个问题 这里的知识主要是 设计到 label 和 …

pytorch反向传播算法

目录 1. 链式法则复习2. 多输出感知机3. 多层感知机4. 多层感知机梯度推导5. 反向传播的总结 1. 链式法则复习 2. 多输出感知机 3. 多层感知机 如图: 4. 多层感知机梯度推导 简化式子把( O k O_k Ok​ - t k t_k tk​) O k O_k Ok​(1 - O k O_k Ok​)起个别名…

09-LearnTheArchitecture-MemoryManagement

快速链接: 【精选】ARMv8/ARMv9架构入门到精通-[目录] 👈👈👈 1 Overview 本文介绍了 Armv8-A 中的内存转换,这是内存管理的关键。 它解释了虚拟地址如何转换为物理地址、转换表格式以及软件如何管理Translation Lookaside Buffe…

阿里云对象存储OSS入门

阅读目录 一、阿里云OSS的使用 1、OSS是什么?2、OSS的使用 二、阿里云OSS的使用三、图床的搭建四:图床绑定阿里云OSS 编写不易,如果我的文章对你有帮助的话,麻烦小伙伴还帮忙点个赞再走! 如果有小伙伴觉得写的啰嗦&a…

【倪琴仲尼式-雷伴】全新倪诗韵精品杉木古琴

试音中的用弦:梦音,视频录音无任何处理,所见即所得。 现琴比照片更好看。倪琴吊牌、琴额后面的编码和倪琴官网上的序列号是一一对应的,可查。 雷伴,“伴”字取意陪伴、相伴、依随。栗壳色,纯鹿角霜生漆工艺…

C#打印50*30条码标签

示例图: 源码下载地址:https://download.csdn.net/download/tiegenZ/89035407?spm1001.2014.3001.5503

【第十二届“泰迪杯”数据挖掘挑战赛】【2024泰迪杯】B题基于多模态特征融合的图像文本检索—解题全流程(持续更新)

2024 年(第 12 届)“泰迪杯”数据挖掘挑战赛B题 解题全流程(持续更新) -----基于多模态特征融合的图像文本检索 一、写在前面: ​ 本题的全部资料打包为“全家桶”, “全家桶”包含:模型数据、全套代码、训练好的模…

解决npm init vue@latest证书过期问题:npm ERR! code CERT_HAS_EXPIRED

目录 一. 问题背景 二. 错误信息 三. 解决方案 3.1 临时解决办法 3.2 安全性考量 一. 问题背景 我在试图创建一个新的Vue.js项目时遇到了一个问题:npm init vuelatest命令出现了证书过期的错误。不过这是一个常见的问题,解决起来也简单。 二. 错误…

LabVIEW无人机大气数据智能测试系统

LabVIEW无人机大气数据智能测试系统 随着无人机技术的迅速发展,大气数据计算机作为重要的机载设备,在确保飞行安全性方面发挥着重要作用。设计了一套基于LabVIEW的无人机大气数据智能测试系统,通过高效、稳定的性能测试,及时发现…

Java八股文(SpringCloud Alibaba)

Java八股文のSpringCloud Alibaba SpringCloud Alibaba SpringCloud Alibaba Spring Cloud Alibaba与Spring Cloud有什么区别? Spring Cloud Alibaba是Spring Cloud的衍生版本,它是由Alibaba开发和维护的,相比于Spring Cloud,它在…

华为汽车图谱

极狐 极狐(ARCFOX)是由北汽、华为、戴姆勒、麦格纳等联合打造。总部位于北京蓝谷。 问界 华为与赛力斯(东风小康)合作的成果。 阿维塔 阿维塔(AVATR)是由长安汽车、华为、宁德时代三方联合打造。公司总部位…

二十八 超级数据查看器 讲解稿 收藏功能

二十八 超级数据查看器 讲解稿 收藏功能 ​点击此处 以新页面 打开B站 播放当前教学视频 点击访问app下载页面 百度手机助手 下载地址 大家好,这节课我们讲一下超级数据查看器的收藏功能,收藏功能是2.0版本将要增加的功能 这节课算是预告。 收藏功能是…

C#进阶-反射的详解与应用

一、反射的概念 反射是.NET框架提供的一个功能强大的机制,它允许程序在运行时检查和操作对象的类型信息。通过使用反射,程序可以动态地创建对象、调用方法、访问字段和属性,无需在编译时显式知道类型信息。在.NET中,所有类型的信…

Java项目:77 springboot母婴商城

作者主页:源码空间codegym 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 本课题后端使用SpringBoot Spring Cloud框架,前端采用html,JQuery,JS,DIVCSS技术进行编程&…

对谈Concured首席技术官:利用AI和MongoDB打造个性化内容推荐系统

Built with MongoDB 栏目采访了AI初创企业Concured在成立约一年后加入的首席技术官 Tom Wilson,围绕 Concured 的人工智能使用情况、Wilson 加入团队的过程、坚持选择MongoDB的原因以及公司未来发展展开讨论。 关于Concured 内容无处不在。无论消费者寻找什么或所处…

阐述el-dropdown(下拉菜单)的基本知识

目录 1. 基本知识2. Demo3. 实战 1. 基本知识 el-dropdown是一个常用的UI组件,用于创建下拉菜单,通常用于实现各种交互式菜单、导航栏或下拉选项 确保安装Element UI库,它包含了el-dropdown组件 npm install element-ui # 或者 yarn add e…

海格里斯助推实体制造业转型升级 “算法定义硬件”解题AIoT市场

随着自动化的发展,电子商务和智能制造推动了自动化立体仓库的快速发展与创新,产生了“密集仓储”的概念。对于一个实体企业来讲,其数智物流转型正在趋向于“去伪存真”,企业追求高ROI与真实经济价值,具有降本增效的业务…

Multimodal Chain-of-Thought Reasoning in Language Models阅读笔记

论文(2023年)链接:https://arxiv.org/pdf/2302.00923.pdf GitHub项目链接:GitHub - amazon-science/mm-cot: Official implementation for "Multimodal Chain-of-Thought Reasoning in Language Models" (stay tuned a…

人工智能时代如何高效完成营销内容计划

智能对话升级!【Kompas AI】AI对话助手,让沟通更高效 在人工智能时代,要高效完成营销计划,我们可以利用人工智能的多种能力来增强营销策略的精准度和执行效率。借助人工智能的力量,企业不仅可以提高营销计划的执行效率…