当前位置: 首页 > news >正文

gcn+tcn+transformer入侵检测

gcn

gcn_out = self.gcn(A_hat, D_hat, X) 的公式实际上是图卷积网络(GCN)层的核心操作。具体来说,这一步的计算基于图卷积的基本公式:

H ( l + 1 ) = σ ( D ^ − 1 / 2 A ^ D ^ − 1 / 2 H ( l ) W ( l ) ) H^{(l+1)} = \sigma\left( \hat{D}^{-1/2} \hat{A} \hat{D}^{-1/2} H^{(l)} W^{(l)} \right) H(l+1)=σ(D^1/2A^D^1/2H(l)W(l))

在这个公式中:

  • H ( l ) H^{(l)} H(l) 是第 l l l 层的节点特征矩阵, H ( 0 ) = X H^{(0)} = X H(0)=X 即输入的节点特征矩阵。
  • A ^ \hat{A} A^ 是加入自环后的图的邻接矩阵。
  • D ^ \hat{D} D^ A ^ \hat{A} A^ 的度矩阵。
  • W ( l ) W^{(l)} W(l) 是第 l l l 层的权重矩阵。
  • σ \sigma σ 是激活函数(例如ReLU)。

GCN的公式推导

我们可以具体推导出计算步骤:

  1. 邻接矩阵和度矩阵:假设图的邻接矩阵为 A A A,我们首先加入自环得到 A ^ = A + I \hat{A} = A + I A^=A+I,其中 I I I 是单位矩阵。然后计算 A ^ \hat{A} A^ 的度矩阵 D ^ \hat{D} D^,其对角线元素为 D ^ i i = ∑ j A ^ i j \hat{D}_{ii} = \sum_j \hat{A}_{ij} D^ii=jA^ij

  2. 归一化的邻接矩阵:接下来计算 D ^ − 1 / 2 A ^ D ^ − 1 / 2 \hat{D}^{-1/2} \hat{A} \hat{D}^{-1/2} D^1/2A^D^1/2,用于对邻接矩阵进行归一化,使得卷积操作不会改变特征的尺度。

  3. 图卷积操作:最后,将归一化后的邻接矩阵与输入特征矩阵相乘,再与权重矩阵 W W W 相乘,并通过激活函数 σ \sigma σ 得到输出特征矩阵 H ( l + 1 ) H^{(l+1)} H(l+1)

tcn

在Temporal Convolutional Network(TCN)中,关键操作包括卷积操作、激活函数、丢弃和跳跃连接。以下是TCN中TemporalBlock的推理公式:

  1. 卷积操作:使用扩展卷积对输入进行时间卷积。

y ( 1 ) = ReLU ( Dropout ( Chomp ( Conv1d ( x , W 1 ) ) ) ) y^{(1)} = \text{ReLU}(\text{Dropout}(\text{Chomp}(\text{Conv1d}(x, W_1)))) y(1)=ReLU(Dropout(Chomp(Conv1d(x,W1))))

  1. 第二次卷积操作:再次使用扩展卷积,并应用相同的操作。

y ( 2 ) = ReLU ( Dropout ( Chomp ( Conv1d ( y ( 1 ) , W 2 ) ) ) ) y^{(2)} = \text{ReLU}(\text{Dropout}(\text{Chomp}(\text{Conv1d}(y^{(1)}, W_2)))) y(2)=ReLU(Dropout(Chomp(Conv1d(y(1),W2))))

  1. 跳跃连接:如果输入和输出的维度不同,则使用 1 × 1 1 \times 1 1×1 卷积对输入进行下采样。

res = { x , if  n inputs = n outputs Conv1d ( x , W downsample ) , otherwise \text{res} = \begin{cases} x, & \text{if } n_{\text{inputs}} = n_{\text{outputs}} \\ \text{Conv1d}(x, W_{\text{downsample}}), & \text{otherwise} \end{cases} res={x,Conv1d(x,Wdownsample),if ninputs=noutputsotherwise

  1. 输出计算:将卷积操作后的输出与跳跃连接的结果相加,并通过ReLU激活函数。

output = ReLU ( y ( 2 ) + res ) \text{output} = \text{ReLU}(y^{(2)} + \text{res}) output=ReLU(y(2)+res)

总结起来,TemporalBlock的推理公式如下:

output = ReLU ( Conv1d ( ReLU ( Dropout ( Chomp ( Conv1d ( x , W 1 ) ) ) ) , W 2 ) + res ) \text{output} = \text{ReLU}(\text{Conv1d}(\text{ReLU}(\text{Dropout}(\text{Chomp}(\text{Conv1d}(x, W_1)))), W_2) + \text{res}) output=ReLU(Conv1d(ReLU(Dropout(Chomp(Conv1d(x,W1)))),W2)+res)

其中:

  • Conv1d ( x , W ) \text{Conv1d}(x, W) Conv1d(x,W) 表示对输入 x x x 进行卷积操作,卷积核权重为 W W W
  • Chomp \text{Chomp} Chomp 用于去除卷积后多余的填充部分。
  • Dropout \text{Dropout} Dropout 是丢弃层,用于防止过拟合。
  • ReLU \text{ReLU} ReLU 是激活函数。
  • res \text{res} res 是跳跃连接的结果。

transformer

在TransformerBlock中,关键操作包括多头自注意力机制、前馈神经网络层、层归一化和跳跃连接。以下是TransformerBlock的推理公式:

  1. 多头自注意力机制

Attention ( Q , K , V ) = softmax ( Q K T d k ) V \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right) V Attention(Q,K,V)=softmax(dk QKT)V

其中, Q = K = V = x Q = K = V = x Q=K=V=x d k d_k dk 是键的维度。多头自注意力输出为:

attn_output = MultiHeadAttention ( x , x , x ) \text{attn\_output} = \text{MultiHeadAttention}(x, x, x) attn_output=MultiHeadAttention(x,x,x)

  1. 第一跳跃连接和层归一化

x 1 = LayerNorm ( x + Dropout ( attn_output ) ) x_1 = \text{LayerNorm}(x + \text{Dropout}(\text{attn\_output})) x1=LayerNorm(x+Dropout(attn_output))

  1. 前馈神经网络层

ff_output = Linear 2 ( Dropout ( ReLU ( Linear 1 ( x 1 ) ) ) ) \text{ff\_output} = \text{Linear}_2(\text{Dropout}(\text{ReLU}(\text{Linear}_1(x_1)))) ff_output=Linear2(Dropout(ReLU(Linear1(x1))))

  1. 第二跳跃连接和层归一化

output = LayerNorm ( x 1 + Dropout ( ff_output ) ) \text{output} = \text{LayerNorm}(x_1 + \text{Dropout}(\text{ff\_output})) output=LayerNorm(x1+Dropout(ff_output))

总结起来,TransformerBlock的推理公式如下:

  1. 多头自注意力机制

attn_output = MultiHeadAttention ( x , x , x ) \text{attn\_output} = \text{MultiHeadAttention}(x, x, x) attn_output=MultiHeadAttention(x,x,x)

  1. 第一跳跃连接和层归一化

x 1 = LayerNorm ( x + Dropout ( attn_output ) ) x_1 = \text{LayerNorm}(x + \text{Dropout}(\text{attn\_output})) x1=LayerNorm(x+Dropout(attn_output))

  1. 前馈神经网络层

ff_output = Linear 2 ( Dropout ( ReLU ( Linear 1 ( x 1 ) ) ) ) \text{ff\_output} = \text{Linear}_2(\text{Dropout}(\text{ReLU}(\text{Linear}_1(x_1)))) ff_output=Linear2(Dropout(ReLU(Linear1(x1))))

  1. 第二跳跃连接和层归一化

output = LayerNorm ( x 1 + Dropout ( ff_output ) ) \text{output} = \text{LayerNorm}(x_1 + \text{Dropout}(\text{ff\_output})) output=LayerNorm(x1+Dropout(ff_output))

http://www.lryc.cn/news/375605.html

相关文章:

  • 【Python】 了解二分类:机器学习中的基础任务
  • 搭建PHP开发环境:Linux篇
  • ROS 自动驾驶多点巡航
  • SQL学习,大厂面试真题(1):观看各个视频的平均完播率
  • 2023年全国大学生数学建模竞赛C题蔬菜类商品的自动定价与补货决策(含word论文和源代码资源)
  • inpaint下载安装2024-inpaint软件安装包下载v5.0.6官网最新版附加详细安装步骤
  • 分享三个仓库
  • MacOS - 启动台多了个『卸载 Adobe Photoshop』
  • PHP 日期处理完全指南
  • KVB:怎么样选择最优交易周期?
  • 前端面试题日常练-day69 【面试题】
  • Java 解析xml文件-工具类
  • PyQt5学习系列之新项目创建并使用widget
  • mtk8675 安卓端assert函数的坑
  • 编程入门笔记:从基础到进阶的探索之旅
  • 小规模自建 Elasticsearch 的部署及优化
  • MySQL 示例数据库大全
  • VirtualBox、Centos7下安装docker后pull镜像问题、ftp上传文件问题
  • 链表 题目汇总
  • grafana连接influxdb2.x做数据大盘
  • Java证件识别中的身份证识别接口
  • 迷你小风扇哪个品牌好?迷你小风扇前十名公开揭晓!
  • MikroTik RouterOS 授权签名验证分析
  • C#开发-集合使用和技巧(六)特殊转换方法SelectMany的介绍和用法
  • 高考后的抉择:如何在心仪专业与知名学校之间做出选择?
  • 黄仁勋提到的机器人世界,还需要AI数据来“调教” | CVPR 2024
  • 语言中 函数用地址传参的好处
  • Python进阶二: NumPy基础:数组和矢量计算
  • 2024北京智源大会开幕,智源推出大模型全家桶及全栈开源技术基座新版图,大模型先锋集结共探AGI之路
  • 李光明从程序员到架构师的逆袭之路(三)