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))

相关推荐
weixin_437497771 小时前
读书笔记:Context Engineering 2.0 (上)
人工智能·nlp
喝拿铁写前端1 小时前
前端开发者使用 AI 的能力层级——从表面使用到工程化能力的真正分水岭
前端·人工智能·程序员
goodfat1 小时前
Win11如何关闭自动更新 Win11暂停系统更新的设置方法【教程】
人工智能·禁止windows更新·win11优化工具
北京领雁科技2 小时前
领雁科技反洗钱案例白皮书暨人工智能在反洗钱系统中的深度应用
人工智能·科技·安全
落叶,听雪2 小时前
河南建站系统哪个好
大数据·人工智能·python
清月电子2 小时前
杰理AC109N系列AC1082 AC1074 AC1090 芯片停产替代及资料说明
人工智能·单片机·嵌入式硬件·物联网
Dev7z2 小时前
非线性MPC在自动驾驶路径跟踪与避障控制中的应用及Matlab实现
人工智能·matlab·自动驾驶
七月shi人2 小时前
AI浪潮下,前端路在何方
前端·人工智能·ai编程
橙汁味的风2 小时前
1隐马尔科夫模型HMM与条件随机场CRF
人工智能·深度学习·机器学习
itwangyang5203 小时前
AIDD-人工智能药物设计-AI 制药编码之战:预测癌症反应,选对方法是关键
人工智能