问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

网安毕设----基于深度学习的网络入侵检测系统(pytorch版本)

创作时间:
作者:
@小白创作中心

网安毕设----基于深度学习的网络入侵检测系统(pytorch版本)

引用
CSDN
1.
https://m.blog.csdn.net/laoman456/article/details/145826537

本文介绍了一个基于深度学习的网络入侵检测系统项目,使用PyTorch框架搭建多层神经网络,通过UNSW_NB15数据集进行训练和验证。项目通过消融实验分析不同网络结构和超参数对检测性能的影响,最终实现了96%的准确率。

项目概述

本项目实现了基于深度学习的网络入侵检测系统,通过使用 UNSW_NB15 数据集进行训练和验证,检测网络流量中的正常与异常行为。本项目使用 PyTorch 框架搭建了多层神经网络,并通过消融实验分析不同网络结构和超参数对检测性能的影响。

开发环境与依赖

  • 编程语言:Python 3.x
  • 深度学习框架:PyTorch 2.1.2
  • 主要库:
  • 数据处理:numpy、pandas
  • 数据可视化:matplotlib、seaborn
  • 机器学习:scikit-learn
  • 硬件环境:支持 GPU 加速训练
  • 依赖安装:通过 requirements.txt 文件安装所有依赖。
    pip install -r requirements.txt
    

项目结构

项目目录结构如下:

project/
│── datasets/
│ ├── UNSW_NB15_training-set.csv # 训练数据集
│ └── UNSW_NB15_testing-set.csv # 测试数据集
│  
│── model.py # 基础神经网络模型
│── ablation_model.py # 消融实验中的模型设计
│── ablation_study.py # 消融实验逻辑
│── main.py # 主程序入口
│── requirements.txt # 项目依赖
│  
│── runs/
│ ├── confusion_matrix.png # 混淆矩阵图
│ ├── training_metrics.png # 训练过程指标
│ └── best_model.pth # 最佳模型权重文件
│  
└── README.md # 项目说明文档

数据集说明

使用 UNSW_NB15 数据集,包含网络流量的特征和标签:

  • 特征数量:45个(例如:id、proto、spkts、rate 等)
  • 标签:
  • label: 0 表示正常流量,1 表示攻击流量
  • attack_cat: 攻击类别(如Normal、Fuzzers、DoS等)
  • 数据分为训练集和测试集:
  • 训练集:UNSW_NB15_training-set.csv
  • 测试集:UNSW_NB15_testing-set.csv

模型设计

基础模型 (model.py):

  • 输入层:45个特征输入
  • 隐藏层:两层全连接层,使用 ReLU 激活函数
  • 输出层:2个输出节点,使用 Softmax 进行分类

代码实现:

import torch.nn as nn

class NetworkModel(nn.Module):
    def __init__(self, input_size=45, hidden_size=64, output_size=2):
        super(NetworkModel, self).__init__()
        self.fc1 = nn.Linear(input_size, hidden_size)
        self.relu = nn.ReLU()
        self.fc2 = nn.Linear(hidden_size, output_size)
        self.softmax = nn.Softmax(dim=1)

    def forward(self, x):
        x = self.relu(self.fc1(x))
        x = self.softmax(self.fc2(x))
        return x

损失函数:交叉熵损失函数(CrossEntropyLoss)
优化器:Adam 优化器

消融实验

消融实验分析不同模型组件对性能的影响,主要包括:

  • 隐藏层数量变化:比较1层、2层、3层网络的性能。
  • 激活函数变化:比较 ReLU 和 Tanh 激活函数的影响。
  • 优化器变化:比较 Adam 和 SGD 优化器的效果。

消融实验的结果通过 ablation_study.py 脚本进行测试和评估。

训练与测试流程

训练和测试过程通过 main.py 实现:

  • 数据预处理:
  • 使用 pandas 加载 CSV 数据。
  • 标准化特征(归一化处理)。
  • 模型训练:
  • 加载训练数据,定义网络模型、损失函数和优化器。
  • 进行多个 Epoch 的训练,并保存最佳模型权重。
  • 模型验证与测试:
  • 在测试集上评估模型性能,输出混淆矩阵和其他指标。

代码示例:

# 模型训练
for epoch in range(num_epochs):
    for inputs, labels in train_loader:
        optimizer.zero_grad()
        outputs = model(inputs)
        loss = criterion(outputs, labels)
        loss.backward()
        optimizer.step()

实验结果与分析

  • 混淆矩阵: 显示模型在测试集上的分类结果。
  • 训练指标: 可视化训练过程中准确率和损失的变化。
  • 性能指标:
  • 准确率:模型整体准确率达到 96%。
  • F1-Score:针对正常流量和攻击流量均表现良好。

结论与未来改进

结论: 本项目基于深度学习模型成功实现了网络入侵检测,并通过消融实验确定了最佳模型配置。

未来改进方向:

  • 尝试更复杂的网络结构,如 LSTM 和 Transformer。
  • 添加更多的数据增强方法,提升模型泛化能力。
  • 在实际网络环境中部署模型进行实时测试。

使用方法

  1. 安装依赖:

    pip install -r requirements.txt
    
  2. 运行主程序:

    python main.py
    
  3. 查看结果:

  • 模型权重:runs/best_model.pth
  • 混淆矩阵图:runs/confusion_matrix.png
  • 训练指标图:runs/training_metrics.png

具体项目演示效果:

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号