DDoS prediction using Transformers in edge computing
This project implements a transformer-based neural network to detect DDoS attacks. It involves feature scaling, dataset creation, model training, and validation. The transformer leverages positional encoding and multi-head attention for feature learning.
DDoSDataset: Custom PyTorch dataset for feature-label pairs.
- Methods:
__len__: Returns dataset size.__getitem__: Retrieves a feature-label pair by index.
DDoSTransformer: A binary classifier with transformer encoder layers.
-
Components:
- Input Projection: Maps features to higher dimensions.
- Positional Encoding: Adds sequential information.
- Transformer Encoder: Multi-head attention layers with feedforward networks.
- Output Layer: Reduces features to class probabilities.
-
Parameters:
input_dim: Number of features.num_heads: Attention heads (default: 4).num_layers: Encoder layers (default: 2).dim_feedforward: Hidden layer size (default: 128).
train_model: Trains and validates the model, saving the best version.
- Input: Model, dataloaders, loss function, optimizer, epochs, and device.
- Workflow:
- Train using batches, calculate loss, and update weights.
- Validate at each epoch, saving the model with the lowest validation loss.
# Data preparation
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
train_dataset = DDoSDataset(X_train, y_train)
test_dataset = DDoSDataset(X_test, y_test)
train_loader = DataLoader(train_dataset, batch_size=32, shuffle=True)
test_loader = DataLoader(test_dataset, batch_size=32, shuffle=False)
# Model and training
model = DDoSTransformer(input_dim=X_train.shape[1])
train_model(
model, train_loader, test_loader, nn.CrossEntropyLoss(),
optim.Adam(model.parameters()), num_epochs=100, device="cuda"
)| Parameter | Default | Description |
|---|---|---|
num_heads |
4 | Number of attention heads. |
num_layers |
2 | Number of encoder layers. |
dim_feedforward |
128 | Hidden layer size. |
dropout |
0.1 | Dropout rate. |
batch_size |
32 | Samples per batch. |
learning_rate |
0.01 | Optimizer learning rate. |
num_epochs |
100 | Total training epochs. |
- Metrics: Training and validation loss/accuracy per epoch.
- Saved Model: Best model stored as
best_model.pth.
To load:
model.load_state_dict(torch.load("best_model.pth"))
model.eval()- Detects DDoS attacks in network traffic.
- Adaptable for multi-class anomaly detection.
- Scalable for edge device security.
- Address dataset imbalance with augmentation.
- Optimize hyperparameters with tools like Optuna.
- Visualize attention weights for model interpretability.
This concise documentation is designed for easy integration into a project description or user manual.