动态图神经网络——DGNN

定位:连续动态图的图神经网络

优点:

(1) 获得图神经网络的进化结构;
(2) 只要有新的连接就更新节点信息。建立新的连接时需要考虑节点属性(新的交互代表着用户最近的喜好),也会影响节点的属性。
(3) 交互间考虑时间间隔(会影响节点的更新策略,交互信息的传播策略;不仅影响与交互相关的两个节点,还有相近的节点)。

内容:

这个DGNN有两个组件:更新组件和传播组件

1、更新组件(update component):用于更新每次直接交互的两个点的过程

更新组件的过程
更新组件的过程

(1)interact unit

看一下update component的第一个步骤就是 interact unit。看一下interact unit输入的是什么信息——它输入的是v2和v5在t7时刻之前的信息进行一个组合。我们可以看一下公式——它就是source节点在t时刻之前的特征加上target节点在t时刻之前的特征加上,分别经过一个全连接层,再加上一个batch,输出的就是e(t).

(2)update unit

再看第二个过程,是update unit。我们输入的节点的cell特征,就是这个节作为source节点的cell 特征, 还有这个节点的hidden 特征 还有这个节点的再上一个输出的e(t), 再经过一个时间间隔delta(t), 我们就更新了这个节点的cell特征和这个节点的hidden特征。

这里要注意的是这个节点可能是source节点和target节点,我们就分成了source update和 target update。 但是这两个部分都是同样的结构,唯一的不同是网络参数的不同。

(3)merge unit

我们进入到第三个组件merge unit,我们看一下merge unit 在做什么。首先我们看一下v2节点。之前我们得到了v2节点作为source和targte得到的cell和hidden 特征,现在我要求v2节点的节点更新。我们将v2节点作为source节点的hidden 特征和v2节点作为target节点的hidden 特征进行聚合,就得到了v2节点在t7时刻的节点更新。我们可以看一下这个更新公式是怎么样的——这边的source节点的hidden 特征和target节点的hidden 特征经过一个Ws和Wg再加上一个batch,就更新了v2节点的特征表示。同理,target节点也用这样的方式去更新。

2、传播组件(propogation component):用于更新直接交互的两个点的邻居节点的过程

传播组件的过程

(1)interact unit

(2)Prop unit

4种传播:从源节点到源节点邻居(以该节点为源,和目标的邻居集合) + 从源节点到目标节点邻居 + 从目标节点到源节点邻居 + 从目标节点到目标节点邻居。这四种节点都要做更新——

g是递减函数,时间间隔越大,短期记忆保存得越少。
h用来过滤较早的邻居:如果时间间隔太大,信息将停止传播给他的邻居,使传播更有效。

f是注意函数,获得节点间的连接强度。

(3)merge unit

【资源说明】 基于动态图神经网络的异常流量检测Python源码+项目说明+详细注释.zip 将下载的数据集放在 `/data` 目录下。对于CSE-CIC-IDS 2018数据集,只使用“Thuesday-20-02-2018_TrafficForML_CICFlowMeter.csv”这一天的数据,因为其他数据文件不包含IP,无法建图。 动态图模型的作用在于进行子图嵌入,子图嵌入的结果可以用异常检测模型进行异常判断。 其他对比模型的代码在`/compare_models`目录下 ## 模型训练 基于cic2017数据集进行模型训练 python DyGCN/main.py --mode train --ck_path DyGCN/savedmodel/model.pt --embs_path DyGCN/data/graph_embs.pt --dataset data/cic2017 ## 模型测试 基于cic2017数据集进行模型测试 python DyGCN/main.py --mode test --ck_path DyGCN/savedmodel/model.pt --embs_path DyGCN/data/graph_embs.pt --dataset data/cic2017 ## 异常检测 基于模型图嵌入结果进行异常检测 python DyGCN/intrusion_detection.py --dataset cic2017 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,也适用于小白学习入门进阶。当然也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或者热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载,沟通交流,互相学习,共同进步!
### 动态图神经网络方法与原理 #### 定义与背景 动态图神经网络(Dynamic Graph Neural Networks, DGNNs)旨在处理随时间变化的图形结构数据。这类模型不仅考虑节点之间的静态关系,还关注随着时间推移而演变的关系模式[^2]。 #### 方法概述 为了适应不断变化的图表环境,DGNN采用了一系列策略来捕捉瞬息万变的信息流: - **时间感知更新机制**:通过引入时间戳或周期性的状态刷新操作,使得每一步迭代都能反映最新的交互情况。 - **记忆模块集成**:利用长期短期记忆(LSTM)单元或其他形式的记忆组件保存历史活动记录,从而增强对未来趋势的理解能力。 - **自适应邻接矩阵调整**:允许边权重依据实际发生的事件自动调节,确保信息传递路径始终处于最优配置下。 #### 原理阐述 核心在于如何有效地融合时间和空间维度上的特征表达。具体来说: - 初始状态下,基于给定时刻t_0构建初始版本G(t_0),并初始化各顶点v_i ∈ G(t_0)的状态向量h_v^(t_0). - 随着新观测到来,在后续时间节点{t_k}处重复执行如下过程直至结束: - 更新当前图实例G(t_k)=f(G(t_(k−1)),ΔE(k)),其中ΔE(k)代表发生在[t_(k−1), t_k]期间新增/删除的边集合; - 对于每一个活跃节点u∈V(tk),计算其最新表征H_u^(tk)=g(H_u^(tk−1);M(u)) 这里函数g()通常涉及消息传递算法如GCN层的应用;同时M(u)汇总了来自邻居的影响因子. ```python import torch.nn as nn from dgl.nn.pytorch import GraphConv class DynamicGraphModel(nn.Module): def __init__(self, input_dim, hidden_dim, output_dim): super(DynamicGraphModel, self).__init__() self.conv1 = GraphConv(input_dim, hidden_dim) self.lstm = nn.LSTMCell(hidden_dim, hidden_dim) def forward(self, g, features, memory_state=None): h = F.relu(self.conv1(g, features)) if memory_state is None: hx, cx = self.lstm(h.mean(dim=0).unsqueeze(0)) else: hx, cx = self.lstm(h.mean(dim=0).unsqueeze(0), memory_state) return hx.squeeze(), (hx, cx) ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值