Paper Title: Malware Image Classification Using One-shot Learning with Siamese Network
Authors: Shou-Ching Hsiao, Da-Yu Kao, Zi-Yuan Liu, Raylin Tso
Venue: 23rd International Conference on Knowledge-Based and Intelligent Information & Engineering Systems
URL: https://doi.org/10.1016/j.procs.2019.09.358
Problem: Machine Learning mulai banyak digunakan untuk deteksi dan klasifikasi malware. Namun model machine Learning yang ada membutuhkan sampel malware yang besar. Model yang ada tidak efektif untuk melakukan re-training untuk mengenali sampel malware baru
Contribution:
- Mengajukan metode baru untuk mendeteksi variant malware menggunakan klasifikasi image
- Mengajukan jaringan siamee untuk mengatasi kekurangan sampel malware baru
- Memiliki akurasi tinggi dibandingkan baseline dengan metode one-shot classification
- Menguji dataset dengan model deep learning dan menunjukan bahwa model deep learning tidak cocok pada kasus sampel training terbatas
Method/solution
- Terdiri dari tiga tahap: pre-processing, training dan testing; Pada tahap pre-processing, sistem mengubah sampel malware menjadi image gray-scale dan mengklasifikasikannya berdasarkan average hash ke dalam family yang sama
- Siamese Network melakukan training untuk menilai tingkat kemiripan sampel, akurasi dihitung melalui N-way one shot task
- Skor similarity digenerated oleh layer output sigmod yang menentukan family malware
- Menggunakan Siamese CNN yang memiliki weight yang sama antara sub-network. Cara ini dapat mengurangi parameter yang perlu di train dan mengurangi masalah overfitting
- Setelah proces 2 input image dengan CNN berbeda, sistem membuat 2 feature vectir v(m1) dan v(m2).
- Manhattan distance antara v(m1) dan v(m2) akan jadi input fungsi sigmoid
- Skor similarity dibuat dalam range [0,1] dengan 0 tidak mirip dan 1 sangat mirip
- Malware diconvert ke grayscale pada 8-bit vector dengan range [0,255] dengan 0 hitam dan 1 putih.
- Image direscale ke 105×105 pixel, original aspect ratio dipertahankan dan background dipenuhi dengan hitam
- Untuk re-sampling, sistem menggunakan bicubic interpolation
- Klasifikasi image ke family menggunakan AverageHash (aHash). Ahash adalah perceptual hash yang membuat fingerpring dari gambar input
- Image dengan nilai aHash sama akan diberi label sub-type yang sama pada sistem
- CNN terdiri dari convolutional layer, pooling layer dan fully connected layer
- Sequence convolutional layer menggunakan filter dari ukuran berbeda dan fixed stride one to extract feature maps.
- Output setiap convolusi pada 3 layer pertama dimasukan ke fungsi aktivasi ReLU (rectified linear unit) dan operasi max-pooling dengan stride two
- Layer final convolusi diikuti dengan sebuah fully-connected layer dengan fungsi aktivasi sigmoid dimana feature map di flattened menjadi sebuah single vector.
- Klasifikasi image classification akan memproses melalui susunan layer CNN, dan hasilnya berupa distribusi probabilitas dari semua kelas
- Menambahkan sebuah layer tambahan untuk menghitung Manhattan distance L1 distance antara 2 extracted feature vector
- Hasilnya diteruskan ke fully connected layer dengan function sigmod dan unit di set menjadi Satu.
- Output adalah skor kemiripan malware dengan range [0,1]0
- Training Siamese CNN dilakukan dengan mini-batch. Sistem secara random memilih pasangan gambar untuk training tapi menghindari unbalanced number dari pasangan similar dan dissimilar gambar dengan mini batch
- Ukuran mini-batch dirandom dari beberapa kelas, sementara pasangan gambar dikontrol dengan setengah ukuran kelas sama den setengah beda kelas
- Network menggunakan Adaptive moment estimation optimizer (Adam) untuk mengupdate weight selama iterasi training mini-batch
- Proses testing menggunakan M times dari learning task N-way one-shot learning dengan Q times dari prediksi yang benar; Accuracy=(100*Q/M)%
- Pada setiap task N-way one-shot learning, sistem memilih anchor image xˆ dari sebuah kelas dan secara random memiliki kelas N untuk membentuk set support
- Baseline menggunakan k-NN
- Pengujian dilakukan dengan Keras, TensorFlow, matplotlib, numpy, dan scikit-learn, PIL (python imaging library) pada Intel Core i7-8700 HQ CPU @3,2 GHz, 16 GB DDR3 RAM, NVIDIA GeForce GTX 1060M 6GB DDR5 GPU
Main result
- Menghasilkan performa yang lebih unggul dibandingkan baseline
- Hyperparameter network Siamese, mini-batch size=6, Learning rate 0,00006; N-iterations=2000; N-way=1-15 ;N tasks-150
- Akurasi 29,56%
Limitation:
- Nilai akurasi masih rendah
- Malware baru nya belum diuji
note:
- Siamese neural network memiliki performa baik pada one-shot image recognition
- ML perlu banyak traning sampel dan long learning period
- Essential requerment train waide variety malware samples
- New malware model di retrained on whole large dataset
- Cost of massive sample collection and periodical re-training too large
- One-shot learning adalah training model dengan small set data tp tidak overfitting
- siamese networks arsitektur 2 convolutional neural network dengan parameter sama
- One-shot image recognition dengan convolutional siamese network mendapat akurasi 92% pada omniglot dataset
- binary-to image pertama di 17; pake k-NN dan menghitung euclidean distance
- 16 comparative analysis pake image based texture analysis dynamic
- Agarap dan Pepito [2] pake DL-SVM; CNN-SVM, GRU,SVM dan MLP SVM
- one shot learning dari sampel terbatas [5,6] pake framework bayesian, bisa digunakan untuk prediksi future image, Hierarchical bayesian program learning (HBPL) utk decognize handwritten
- Memory augmented Neural network (MANN) [23] modif Neural Turing Machine (NTM) dpt learn dr new sampel dan membuat prediksi akurat; eksperimen omniglot, imageNet and one language modeling
- Siamese dibuat bromley dan leCun 93 utk solve signature verification written pada tablet pen-input; dua network sama ekstrak feature vector dan mencari similarity dari 2 sampel input. Supervised
- Deep-Face system
- Ikut [13] to construct Siamese cnn best convolutional architecture