ai攻防基础篇-图神经网络GNN从入门到实战

admin 2025年5月18日20:38:53评论1 views字数 4703阅读15分40秒阅读模式

作者:yueji0j1anke

首发于公号:剑客古月的安全屋

字数:3973

阅读时间:    15min

声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。本文章内容纯属虚构,如遇巧合,纯属意外

目录

  • 前言

  • 图嵌入

  • 图神经网络

  • 图模型代码demo

  • 总结

0x00 前言

本期为大家带来图神经网络的专题。图神经网络在安全模型中存在大量的应用,不论是风控还是反入侵,深入学习并理解其是在算法一道上不可或缺的一步。

0x01 图的基本概念

1.1 图定义

图是节点和连接节点的边的集合的表示

ai攻防基础篇-图神经网络GNN从入门到实战

1.2 图表示的基本概念

临接矩阵(Adjacency Matrix)和度矩阵(Degree Matrix)是图论中常见的两种矩阵表示方式

邻接矩阵:表示图中节点之间是否存在边

     A B C   -------A | 0 1 1B | 1 0 0C | 1 0 0

A[0][1] = 1 表示 A 与 B 相连

A[0][2] = 1 表示 A 与 C 相连

度矩阵:表示每个节点连接了多少条边

     A B C   -------A | 2 0 0B | 0 1 0C | 0 0 1

D[0][0] = 2 表示 A 连接了 2 条边

D[1][1] = 1 表示 B 连接了 1 条边

1.3 图的应用

图(Graph)被广泛应用于处理结构化关系数据,尤其在社交网络、生物信息、推荐系统、金融风控、交通网络、自然语言处理等场景中具有重要意义

图能够自然表示对象之间的关系。例如:

  • 社交网络中用户之间的“关注”或“好友”关系

  • 商品之间的共购关系

  • 文章之间的引用关系

  • 生物分子中的化学键

  • 图中相临像素

  • 句子中各单词关系

1.4 图的分类

  • 无向图 | 有向图

  • 有权图 | 无权图

  • 重构图 | 异构图

    这里讲解一下第三组

根据图的边和点是否具有多种类型,可以将图分为同构图和异构图

同构图

  • 示例:社交网络图节点:用户边:好友关系所有节点/边类型一样

(User) —— (User) —— (User)

异构图:

  • 示例:学术网络图节点类型:作者、论文、机构边类型:撰写、发表、所属机

[Author] —writes→ [Paper] —published_in→ [Venue]       ↘ affiliated_with ↙           [Institution]

0x02 图嵌入

1.图嵌入概念

Graph Embedding,将图表示为低维向量,类似于NLP里面分词以后,把单词变为Embedding输入给encoder一样

通过图嵌入,将节点/图编码为稠密、低维、有语义的向量,更利于下游任务使用

2.图嵌入分类

1.基于矩阵分解

通过分解图的邻接矩阵或相似度矩阵来获取嵌入

代表方法:Laplacian EigenmapsHOPE

核心思想:图中的节点连接关系可用邻接矩阵 $A$ 或相似度矩阵 $S$ 表示,然后将其分解为低秩矩阵:

例如:S≈UΣVT

2.基于随机游走

模拟在图中游走,统计节点共现

将节点序列视作“句子”进行词嵌入(如 Word2Vec)

代表方法:

  • DeepWalk:类比 Word2Vec,学习节点上下文

  • Node2Vec:改进 DeepWalk,引入灵活的游走策略(DFS/BFS)

  • LINE:保留一阶与二阶邻接关系

例如以下无向图

A —— B —— C          |          |   —— D ——

节点集合:{A, B, C, D} 边集合:{(A,B), (A,D), (B,C), (C,D)}

临接关系如下

A: B, D  B: A, C  C: B, D  D: A, C

我们设定一个游走长度为 5(也就是走 5 步),从节点 A 开始,每次随机选择一个相邻节点走过去。

  1. 起点:A

  2. 第一步:从 A 可选 → [B, D],随机选中 B

  3. 第二步:从 B 可选 → [A, C],随机选中 C

  4. 第三步:从 C 可选 → [B, D],随机选中 D

  5. 第四步:从 D 可选 → [A, C],随机选中 A

  6. 第五步:从 A 可选 → [B, D],随机选中 D

最终路径为:A → B → C → D → A → D

现在我们多次游走+其他做起始点

会得到一个序列

游走1(从A):A → D → C → D → A → D → ...游走2(从B):B → A → B → C → D → ...游走3(从D):D → A → B → C → D → ...

这些序列可以看做句子,节点就像单词,喂给word2vec训练即可

3.基于图神经网络

使用神经网络传播邻居信息,学习表示

可以处理属性信息和图结构

常见模型:

  • GCN(Graph Convolutional Network)

  • GAT(Graph Attention Network)

  • GraphSAGE(Sample and Aggregate)

  • GIN(Graph Isomorphism Network)

图神经网络通过消息传递(Message Passing)+ 聚合(Aggregation)实现嵌入学习。

ai攻防基础篇-图神经网络GNN从入门到实战

ai攻防基础篇-图神经网络GNN从入门到实战

3.图嵌入和GNN区别

1.前者是向量表示转换方法,后者是深度学习模型框架

2.输入都是图结构或节点,前者输出是带有节点关系、图结构的向量,后者则是分类、回归的结果

3.后者直接端到端

0x03 GNN

1.什么是GNN

图神经网络的核心思想是通过消息传递机制 + 聚合 来整合邻居信息,更新节点当前特征表达。最终每个节点将包含自己以及其他节点的特征信息。

GNN的基本组成包括

1.节点特征矩阵:表示每个节点初始特征

2.邻接矩阵:图中节点连接关系

3.图卷积层:  聚合邻居信息并更新,引入线性变换和非线性激活

4.输出层:输出预测结构

2.GNN的应用

GNN的应用有很多

ai攻防基础篇-图神经网络GNN从入门到实战

图神经网络通过建模用户与用户之间的复杂关系,提高对网络入侵、洗钱、欺诈案例的识别效果。适用于传统机器学习难以捕捉的图结构模型

通过GNN,我们可以

利用交易图、社交图等关系网络

捕捉欺诈团伙、资金链、伪装行为

增强样本之间的上下文信息表示

包括自动驾驶、推荐系统

这里举个例子

1.  欺诈用户识别

  • 构建图:节点为用户,边为交易、设备共用、手机号共享、IP 相同等

  • 使用 GNN 聚合邻居信息,识别共谋欺诈团伙

  • 模型输出:某用户为欺诈账户的概率

2. HIDS入侵行为检测

  • 构建图:节点是进程、文件、系统调用,边表示调用关系或时间序列顺序

  • GNN 学习正常调用图结构,识别异常进程行为(如木马、勒索软件)

3.GNN分类

1.RecGNNs

Recurrent graph neural networks,递归图神经网络

假设为:图中一个节点不断与邻居节点交换消息,直至趋于稳定

假设有图如下:

A --- B --- C
  • 初始特征:A=[1,0], B=[0,1], C=[1,1]

  • 状态更新函数:平均邻居状态 + 自身状态 → 全连接层

步骤:

  • 第0轮:

    • hA(0)=[1,0]

    • hB(0)=[0,1]

    • hC(0)=[1,1]

  • 第1轮(更新 B):

    • 邻居 A,C 状态平均:([1,0] + [1,1])/2 = [1,0.5]

    • 拼接自身特征 [0,1] → 送入 MLP → 得到新 hB(1)

多轮递归后,所有节点的状态逐渐融合邻居信息,最终形成嵌入。

2.GCN

Convolutional graph neural networks,卷积图神经网络

其目标是学习节点在图中的表示,核心思想为 节点的表示 = 自身特征 + 邻居信息加权聚合,及通过聚合节点自身的特征xv和邻居的特征xu来生成节点v的表示

大概流程如下

输入:节点特征 X,邻接矩阵 A1. 加自环:A + I → 使节点可以保留自身信息2. 归一化:让每个节点的聚合过程“均衡”3. 第一层卷积:聚合邻居特征 → 线性变换 → 激活函数4. 第二层卷积:再聚合一次 → 得到最终节点嵌入

还有其他许多方法构造复杂GNN模型,比如说

1.基于谱的方法

基于谱的方法通过从图信号处理的角度引入滤波器来定义图卷积,其中图卷积操作被解释为从图信号中去除噪声。

图可以看成一个信号载体,每个节点的特征视为“图信号”。

基于谱的方法使用 图拉普拉斯矩阵(Laplacian Matrix)来进行傅里叶变换(Graph Fourier Transform),在频域上定义卷积:

  • ai攻防基础篇-图神经网络GNN从入门到实战

就像传统信号中会过滤噪音,这里可以通过加滤波器来去除图节点中的高频扰动(不一致性)

2.基于空间的方法

继承了递归图神经网络思想,通过信息传播定义图卷积

3.GAES

Graph AutoDecorder,图自动编码器,是一种无监督学习框架,前面也讲过我们用AE神经网络建模训练异常交易数据的案例。

其核心是将图结构转换为嵌入向量,再进行重构

4.STGNNs

Spatial-temporal graph neural networks (STGNNs),时空图神经网络

其是专门处理空间依赖性和时间依赖性的图神经网络

STGNN = 图神经网络(空间建模) + 时间建模(RNN、CNN、Transformer等)

比如

输入数据 X: [T x N x F]         时间步 x 节点数 x 特征数流程:       时间卷积/GRU            ↓        图卷积(GCN)            ↓       时间卷积/GRU            ↓         输出预测 Y

4.GNN训练方式

根据数据集和学习任务,我们可以分为以下三种

1.节点级分类的半监督学**习**

在只有少量有标签的节点下,利用图结构和节点特征来预测所有节点的标签 —— 这就是半监督节点分类

2.图级监督学习

给定一堆图(Graph),每张图都有一个整体的标签,我们要训练一个模型,来预测整个图的类别

3.图嵌入无监督学习

除了我们之前讲的GAE,还有一个比较火的,就是负抽样方法

在图学习中,常常会有:

  • 正样本:图中存在的边(如节点对 A–B)

  • 负样本:图中不存在的边(如节点对 A–C),假设它们没有连接

负抽样的目标:让模型区分哪些节点对是“真实存在的连接”,哪些不是

0x04 图神经网络实战Demo

这里安装 相关库

https://blog.csdn.net/weixin_70816415/article/details/145971987

ai攻防基础篇-图神经网络GNN从入门到实战

ai攻防基础篇-图神经网络GNN从入门到实战

构建这样一个无向图

ai攻防基础篇-图神经网络GNN从入门到实战

data 是 torch_geometric.data.Data 类型的图数据结构。

keys() 显示当前图中有哪些属性。

  • x:节点特征矩阵。

  • edge_index:边的连接关系(二维张量,形状 [2, num_edges])。

ai攻防基础篇-图神经网络GNN从入门到实战

接下来了解一下图的相关api

# 打印节点数print("num_nodes:", data.num_nodes)  # 节点数:3# 打印边数print("num_edges:", data.num_edges)  # 边数:4# 打印每个节点的特征数(维度)print("num_node_features:", data.num_node_features)  # 特征数:1# 是否有孤立节点(无边连接)print("has_isolated_nodes:", data.has_isolated_nodes())  # False(每个节点都连接)# 是否有自环(即 i->i 的边)print("has_self_loops:", data.has_self_loops())  # False(没有自环)# 是否是有向图print("is_directed:", data.is_directed())  # True(边是单向存储)# 将数据转移到 GPUdevice = torch.device('cuda' if torch.cuda.is_available() else 'cpu')data = data.to(device)print("data device:", data.x.device)  # 打印数据现在在哪个设备上(cuda 或 cpu)

ai攻防基础篇-图神经网络GNN从入门到实战

0x05 总结

本期从图结构入手,深入讲解图嵌入和图神经网络,包括分类和训练方法,最后给出图模型的基础api调用,后续将为大家带来项目实战

参考文章 https://blog.csdn.net/cyj972628089?type=blog

原文始发于微信公众号(剑客古月的安全屋):ai攻防基础篇-图神经网络GNN从入门到实战

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年5月18日20:38:53
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   ai攻防基础篇-图神经网络GNN从入门到实战https://cn-sec.com/archives/4075688.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息