
Cadre d'apprentissage continu sans mémoire pour la classification des malwares utilisant une interpolation basée sur la connectivité de mode. Prend en charge les scénarios incrémentaux par classe et par domaine sur les ensembles de données EMBER et Androzoo.
Zahra Asadi*, Haeseung Jeon*, Sohyun Han, Md Mahmuduzzaman Kamol, Se Eun Oh, Mohammad Saidur Rahman†
*Auteurs ayant contribué à égalité. †Auteur correspondant.
[!NOTE] Ceci est l'implémentation officielle de l'article FreeMOCA: Memory-Free Continual Learning for Malicious Code Analysis.
FreeMOCA fonctionne selon le processus suivant :
L'ensemble du processus construit une chaîne de solutions connectées qui se trouvent sur une variété à faible perte, réduisant significativement l'oubli catastrophique.
FreeMOCA a été évalué avec deux grands jeux de données de malwares, EMBER et Androzoo. Sources des jeux de données :
Téléchargez et configurez le jeu de données dans le répertoire suivant :
FreeMOCA/data/
├── AZ_Class
│ ├── AZ_Class_Test.npz
│ └── AZ_Class_Train.npz
│
├── AZ_Domain
│ ├── 2008_Domain_AZ_Test_Transfo...
│ ├── 2008_Domain_AZ_Train_Transfo...
│ ├── 2009_Domain_AZ_Test_Transfo...
│ └── ...
│
├── EMBER_Class
│ ├── XY_test.npz
│ └── XY_train.npz
│
└── EMBER_Domain
├── 2018-01
├── 2018-02
├── 2018-03
└── ...
Ce dépôt prend en charge deux scénarios d'apprentissage continu :
Exécutez la commande suivante pour :
conda create -n freemoca python=3.9
conda activate freemoca
pip install -r requirements.txt
# EMBER Class-IL
cd ./FreeMOCA_Class/EMBER_Class
CUDA_VISIBLE_DEVICES=0 python main.py --train_data /path/to/data --test_data /path/to/data
# AZ Class-IL
cd ./FreeMOCA_Class/AZ_Class
CUDA_VISIBLE_DEVICES=0 python main.py --train_data /path/to/data --test_data /path/to/data
# EMBER Domain-IL
cd ./FreeMOCA_Domain/EMBER_Domain
CUDA_VISIBLE_DEVICES=0 python main.py --data_root /path/to/data/directory
# AZ Domain-IL
cd ./FreeMOCA_Domain/AZ_Domain
CUDA_VISIBLE_DEVICES=0 python main.py --data_root /path/to/data/directory
Pour une configuration plus détaillée des hyperparamètres, consultez l'Annexe A : Arguments communs pour FreeMOCA.
Pour ajuster les hyperparamètres ou les paramètres expérimentaux, utilisez les arguments suivants :
| Argument | Description |
|---|---|
--init_classes | Nombre de classes à la tâche 0 |
--epochs | Époques par tâche |
--batchsize | Taille du lot |
--lr | Taux d'apprentissage |
--momentum | Momentum SGD |
--weight_decay | Décroissance du poids |
--lambda_min | Poids d'interpolation minimum |
--lambda_max | Poids d'interpolation maximum |
Pour modifier les paramètres par défaut, consultez le fichier arguments.py.
Notre dépôt prend en charge les expériences sur les modèles de base standards suivants :
Vous pouvez les exécuter avec la commande suivante :
cd /path/to/experiment/directory
CUDA_VISIBLE_DEVICES=0 python none.py --arugment_you_want
CUDA_VISIBLE_DEVICES=0 python joint.py --arugment_you_want
ainsi que les travaux précédents suivants :
Vous pouvez exécuter les modèles de base avec la commande suivante :
# CLeWI pour EMBER-Class
cd ./baselines/CLeWI
CUDA_VISIBLE_DEVICES=6 python main.py --model="clewi" \
--dataset="seq_ember" --n_tasks=11 \
--lr=0.001 --buffer_size=500 --n_epochs=50 \
--seed=42 --optim_wd=0.0 --optim_mom=0.0 \
--batch_size=512 --sub_dataset="ember"
# CLeWI pour AZ-Class
cd ./baselines/CLeWI
CUDA_VISIBLE_DEVICES=6 python main.py --model="clewi" \
--dataset="seq_ember" --n_tasks=11 \
--lr=0.001 --buffer_size=500 --n_epochs=50 \
--seed=42 --optim_wd=0.0 --optim_mom=0.0 \
--batch_size=512 --sub_dataset="az"
# WSC pour EMBER-Class
cd ./baselines/WSC
MODEL_NAME=wsc_20_ember
python main.py --config=./exps/wsc_memory/$MODEL_NAME.json
# WSC pour AZ-Class
cd ./baselines/WSC
MODEL_NAME=wsc_20_az
python main.py --config=./exps/wsc_memory/$MODEL_NAME.json