图神经网络综述:模型、应用与最新研究

需积分: 41 12 下载量 197 浏览量 更新于2024-12-05 1 收藏 30KB ZIP 举报
资源摘要信息:"图神经网络(GNN)的必读文章-python" 图神经网络(Graph Neural Networks, GNN)是一种用于处理图结构数据的深度学习模型。由于图数据的特殊性,传统的深度学习技术如卷积神经网络(CNN)或循环神经网络(RNN)不能直接应用于图结构数据,因此GNN应运而生。GNN能够捕捉图数据中的节点和边的特征,并学习图的结构表示。 标题中提及的“GNN:图神经网络”是由Jie Zhou、Ganqu Cui、Zhengyan Zhang和Yushi Bai共同贡献的论文。这表明了该论文对图神经网络领域的深度探索和贡献。文章可能涵盖了图神经网络的多个方面,包括基础模型、图的类型、池化方法、分析、效率以及多样化的应用领域。 描述部分详细列举了GNN论文涵盖的内容,包括: 1. 调查:对图神经网络的研究进展进行综述,为读者提供GNN发展的背景和基础。 2. 模型:深入探讨了GNN的不同模型和相关技术: - 基本模型:解释了GNN的基础架构,如图卷积、图注意力机制等。 - 图类型:讨论了不同类型图结构的处理方法,如无向图、有向图、加权图等。 - 池化方法:介绍了用于提取图特征的池化技术,如池化层的使用来降低维度和提取重要信息。 - 分析:对GNN模型的理论分析,包括其表达能力、稳定性和可解释性。 - 效率:针对模型效率的探讨,强调如何提升计算性能、减少训练时间等。 3. 应用:展示了GNN在多个领域的实际应用,包括: - 物理:利用GNN研究物理系统的网络结构特性。 - 化学和生物学:在药物发现、蛋白质交互网络分析等领域应用。 - 知识图谱:利用GNN增强知识图谱的链接预测、实体识别等任务。 - 推荐系统:使用GNN进行用户和物品的表示学习。 - 计算机视觉:在图像分割、目标检测等任务中应用图结构。 - 自然语言处理:在文本分类、关系抽取等任务中应用图结构。 - 攻击生成器:探索GNN在对抗攻击中的作用。 - 图聚类、图分类:进行无监督或监督学习下的图结构聚类和分类。 - 强化学习:图结构在策略学习和环境建模中的应用。 - 交通网络:分析和预测交通流量、交通拥堵等问题。 - 小样本和零样本学习:使用图结构数据进行有效的学习。 - 程序表示:将程序代码表示为图结构,进行代码分析等任务。 - 社交网络:分析社交图谱中的社区发现、影响力分析等。 - 图匹配:在图像识别、信息检索等任务中寻找图之间的相似性。 - 计算机网络:用于网络安全分析、网络拓扑发现等。 标签“机器学习”提示了GNN与机器学习领域的密切关联,GNN是机器学习尤其是深度学习中图数据处理的前沿技术。作为机器学习领域的一个重要分支,图神经网络在信息检索、社交网络分析、生物信息学、化学信息学和计算机视觉等方面展示出强大的应用前景。 压缩包子文件的文件名称列表“GNNPapers-master”表明该文件包可能是一个包含了GNN相关论文的集合。文件中的“-master”后缀通常表明这是一个Git仓库中的主分支或主版本,意味着用户可以获取该领域最新的研究论文和文档。 在进行图神经网络相关的研究和开发时,Python是常用的语言之一,其因为拥有众多强大的深度学习库和框架,例如PyTorch Geometric、DGL(Deep Graph Library)等,这些工具包极大地降低了使用GNN进行算法研究和实验的门槛。此外,Python丰富的数据处理和机器学习库,如NumPy、SciPy、Pandas以及scikit-learn等,也为GNN的研究提供了便利。
2019-03-04 上传
# GPF ## 一、GPF(Graph Processing Flow):利用图神经网络处理问题的一般化流程 1、图节点预表示:利用NE框架,直接获得全图每个节点的Embedding; 2、正负样本采样:(1)单节点样本;(2)节点对样本; 3、抽取封闭子图:可做类化处理,建立一种通用图数据结构; 4、子图特征融合:预表示、节点特征、全局特征、边特征; 5、网络配置:可以是图输入、图输出的网络;也可以是图输入,分类/聚类结果输出的网络; 6、训练和测试; ## 二、主要文件: 1、graph.py:读入图数据; 2、embeddings.py:预表示学习; 3、sample.py:采样; 4、subgraphs.py/s2vGraph.py:抽取子图; 5、batchgraph.py:子图特征融合; 6、classifier.py:网络配置; 7、parameters.py/until.py:参数配置/帮助文件; ## 三、使用 1、在parameters.py中配置相关参数(可默认); 2、在example/文件夹中运行相应的案例文件--包括链接预测、节点状态预测; 以链接预测为例: ### 1、导入配置参数 ```from parameters import parser, cmd_embed, cmd_opt``` ### 2、参数转换 ``` args = parser.parse_args() args.cuda = not args.noCuda and torch.cuda.is_available() torch.manual_seed(args.seed) if args.cuda: torch.cuda.manual_seed(args.seed) if args.hop != 'auto': args.hop = int(args.hop) if args.maxNodesPerHop is not None: args.maxNodesPerHop = int(args.maxNodesPerHop) ``` ### 3、读取数据 ``` g = graph.Graph() g.read_edgelist(filename=args.dataName, weighted=args.weighted, directed=args.directed) g.read_node_status(filename=args.labelName) ``` ### 4、获取全图节点的Embedding ``` embed_args = cmd_embed.parse_args() embeddings = embeddings.learn_embeddings(g, embed_args) node_information = embeddings #print node_information ``` ### 5、正负节点采样 ``` train, train_status, test, test_status = sample.sample_single(g, args.testRatio, max_train_num=args.maxTrainNum) ``` ### 6、抽取节点对的封闭子图 ``` net = until.nxG_to_mat(g) #print net train_graphs, test_graphs, max_n_label = subgraphs.singleSubgraphs(net, train, train_status, test, test_status, args.hop, args.maxNodesPerHop, node_information) print('# train: %d, # test: %d' % (len(train_graphs), len(test_graphs))) ``` ### 7、加载网络模型,并在classifier中配置相关参数 ``` cmd_args = cmd_opt.parse_args() cmd_args.feat_dim = max_n_label + 1 cmd_args.attr_dim = node_information.shape[1] cmd_args.latent_dim = [int(x) for x in cmd_args.latent_dim.split('-')] if len(cmd_args.latent_dim) == 1: cmd_args.latent_dim = cmd_args.latent_dim[0] model = classifier.Classifier(cmd_args) optimizer = optim.Adam(model.parameters(), lr=args.learningRate) ``` ### 8、训练和测试 ``` train_idxes = list(range(len(train_graphs))) best_loss = None for epoch in range(args.num_epochs): random.shuffle(train_idxes) model.train() avg_loss = loop_dataset(train_graphs, model, train_idxes, cmd_args.batch_size, optimizer=optimizer) print('\033[92maverage training of epoch %d: loss %.5f acc %.5f auc %.5f\033[0m' % (epoch, avg_loss[0], avg_loss[1], avg_loss[2])) model.eval() test_loss = loop_dataset(test_graphs, model, list(range(len(test_graphs))), cmd_args.batch_size) print('\033[93maverage test of epoch %d: loss %.5f acc %.5f auc %.5f\033[0m' % (epoch, test_loss[0], test_loss[1], test_loss[2])) ``` ### 9、运行结果 ``` average test of epoch 0: loss 0.62392 acc 0.71462 auc 0.72314 loss: 0.51711 acc: 0.80000: 100%|███████████████████████████████████| 76/76 [00:07<00:00, 10.09batch/s] average training of epoch 1: loss 0.54414 acc 0.76895 auc 0.77751 loss: 0.37699 acc: 0.79167: 100%|█████████████████████████████████████| 9/9 [00:00<00:00, 34.07batch/s] average test of epoch 1: loss 0.51981 acc 0.78538 auc 0.79709 loss: 0.43700 acc: 0.84000: 100%|███████████████████████████████████| 76/76 [00:07<00:00, 9.64batch/s] average training of epoch 2: loss 0.49896 acc 0.79184 auc 0.82246 loss: 0.63594 acc: 0.66667: 100%|█████████████████████████████████████| 9/9 [00:00<00:00, 28.62batch/s] average test of epoch 2: loss 0.48979 acc 0.79481 auc 0.83416 loss: 0.57502 acc: 0.76000: 100%|███████████████████████████████████| 76/76 [00:07<00:00, 9.70batch/s] average training of epoch 3: loss 0.50005 acc 0.77447 auc 0.79622 loss: 0.38903 acc: 0.75000: 100%|█████████████████████████████████████| 9/9 [00:00<00:00, 34.03batch/s] average test of epoch 3: loss 0.41463 acc 0.81132 auc 0.86523 loss: 0.54336 acc: 0.76000: 100%|███████████████████████████████████| 76/76 [00:07<00:00, 9.57batch/s] average training of epoch 4: loss 0.44815 acc 0.81711 auc 0.84530 loss: 0.44784 acc: 0.70833: 100%|█████████████████████████████████████| 9/9 [00:00<00:00, 28.62batch/s] average test of epoch 4: loss 0.48319 acc 0.81368 auc 0.84454 loss: 0.36999 acc: 0.88000: 100%|███████████████████████████████████| 76/76 [00:07<00:00, 10.17batch/s] average training of epoch 5: loss 0.39647 acc 0.84184 auc 0.89236 loss: 0.15548 acc: 0.95833: 100%|█████████████████████████████████████| 9/9 [00:00<00:00, 28.62batch/s] average test of epoch 5: loss 0.30881 acc 0.89623 auc 0.95132 ```
2019-03-30 上传
《MATLAB神经网络43个案例分析》是在《MATLAB神经网络30个案例分析》的基础上出版的,部分章节涉及了常见的优化算法(遗传算法、粒子群算法等)与神经网络的结合问题。 《MATLAB神经网络43个案例分析》可作为高等学校相关专业学生本科毕业设计、研究生课题研究的参考书籍,亦可供相关专业教师教学参考。 《MATLAB神经网络43个案例分析》共有43章目录如下: 第1章 BP神经网络的数据分类——语音特征信号分类 第2章 BP神经网络的非线性系统建模——非线性函数拟合 第3章 遗传算法优化BP神经网络——非线性函数拟合 第4章 神经网络遗传算法函数极值寻优——非线性函数极值寻优 第5章 基于BP_Adaboost的强分类器设计——公司财务预警建模 第6章 PID神经元网络解耦控制算法——多变量系统控制 第7章 RBF网络的回归--非线性函数回归的实现 第8章 GRNN网络的预测----基于广义回归神经网络的货运量预测 第9章 离散Hopfield神经网络的联想记忆——数字识别 第10章 离散Hopfield神经网络的分类——高校科研能力评价 第11章 连续Hopfield神经网络的优化——旅行商问题优化计算 第12章 初始SVM分类与回归 第13章 LIBSVM参数实例详解 第14章 基于SVM的数据分类预测——意大利葡萄酒种类识别 第15章 SVM的参数优化——如何更好的提升分类器的性能 第16章 基于SVM的回归预测分析——上证指数开盘指数预测. 第17章 基于SVM的信息粒化时序回归预测——上证指数开盘指数变化趋势和变化空间预测 第18章 基于SVM的图像分割-真彩色图像分割 第19章 基于SVM的手写字体识别 第20章 LIBSVM-FarutoUltimate工具箱及GUI版本介绍与使用 第21章 自组织竞争网络在模式分类中的应用—患者癌症发病预测 第22章 SOM神经网络的数据分类--柴油机故障诊断 第23章 Elman神经网络的数据预测----电力负荷预测模型研究 第24章 概率神经网络的分类预测--基于PNN的变压器故障诊断 第25章 基于MIV的神经网络变量筛选----基于BP神经网络的变量筛选 第26章 LVQ神经网络的分类——乳腺肿瘤诊断 第27章 LVQ神经网络的预测——人脸朝向识别 第28章 决策树分类器的应用研究——乳腺癌诊断 第29章 极限学习机在回归拟合及分类问题中的应用研究——对比实验 第30章 基于随机森林思想的组合分类器设计——乳腺癌诊断 第31章 思维进化算法优化BP神经网络——非线性函数拟合 第32章 小波神经网络的时间序列预测——短时交通流量预测 第33章 模糊神经网络的预测算法——嘉陵江水质评价 第34章 广义神经网络的聚类算法——网络入侵聚类 第35章 粒子群优化算法的寻优算法——非线性函数极值寻优 第36章 遗传算法优化计算——建模自变量降维 第37章 基于灰色神经网络的预测算法研究——订单需求预测 第38章 基于Kohonen网络的聚类算法——网络入侵聚类 第39章 神经网络GUI的实现——基于GUI的神经网络拟合、模式识别、聚类 第40章 动态神经网络时间序列预测研究——基于MATLAB的NARX实现 第41章 定制神经网络的实现——神经网络的个性化建模与仿真 第42章 并行运算与神经网络——基于CPU/GPU的并行神经网络运算 第43章 神经网络高效编程技巧——基于MATLAB R2012b新版本特性的探讨