Skip to content
← Blog

GGNN vs GCN untuk Deteksi Malware: Apa Perbedaannya?

Visual penelitian malware menggunakan graph neural network
GGNN dan GCN sama-sama melakukan message passing, tetapi cara memperbarui representasi node dan asumsi eksperimennya berbeda.

Bayangkan sebuah process tidak dinilai hanya dari namanya. Ia dinilai dari parent, child, DLL, socket, dan region memorinya. Inilah alasan graph cocok untuk malware analysis. Namun memilih model tetap harus berdasarkan kebutuhan, bukan karena satu akronim terdengar lebih canggih.

Intuisi GCN#

Graph Convolutional Network menggabungkan feature node dengan tetangganya menggunakan adjacency yang dinormalisasi. Secara intuitif: “lihat saya dan tetangga saya, rata-ratakan informasi penting, lalu transformasikan.” Paper Kipf dan Welling memperkenalkan bentuk populer yang efisien dan berskala linear terhadap jumlah edge.

class GCN(torch.nn.Module):
    def __init__(self, in_dim, hidden, classes):
        super().__init__()
        self.gcn1 = GCNConv(in_dim, hidden)
        self.gcn2 = GCNConv(hidden, classes)
    def forward(self, x, edge_index):
        x = self.gcn1(x, edge_index).relu()
        return self.gcn2(x, edge_index)

Kelebihannya: sederhana, cepat, baseline kuat. Kekurangannya: beberapa layer dapat membuat representasi node terlalu serupa (over-smoothing), dan vanilla GCN tidak otomatis membedakan tipe edge.

Intuisi GGNN#

Gated Graph Neural Network memakai pembaruan berulang dengan mekanisme gate mirip GRU. Node dapat mempertahankan informasi lama dan memilih informasi baru yang masuk. Paper Li dkk. memperluas GNN dengan gated recurrent units untuk data graph.

class MalwareGGNN(torch.nn.Module):
    def __init__(self, hidden, steps, edge_types):
        super().__init__()
        self.ggnn = GatedGraphConv(hidden, steps, edge_types)
        self.head = torch.nn.Linear(hidden, 2)
    def forward(self, x, edge_index, edge_type):
        h = self.ggnn(x, edge_index, edge_type)
        return self.head(h)

Gate membantu ketika informasi perlu berjalan beberapa langkah dan tipe hubungan penting. Biayanya lebih tinggi karena pembaruan dilakukan berulang.

Perbandingan praktis#

AspekGCNGGNN
Update nodeAgregasi ter-normalisasiRecurrent update dengan gate
Tipe edgePerlu perluasanDapat dimodelkan eksplisit
KecepatanUmumnya lebih cepatLebih mahal per propagation step
InterpretasiBaseline mudah dijelaskanState evolution lebih kompleks
Cocok untukGraph homogen dan baselineRelasi bertipe dan dependensi bertahap

Contoh keputusan model#

Jika graph hanya berisi process dengan edge parent-child dan feature sudah kuat, mulai dari GCN. Jika graph memiliki SPAWNED, LOADED, dan CONNECTED_TO, GGNN memberi ruang lebih alami untuk bobot transformasi per tipe edge. Namun lakukan ablation: jalankan Logistic Regression, MLP tanpa edge, GCN, dan GGNN dengan split yang sama.

Metrik yang tidak boleh dilewatkan#

Accuracy mudah menyesatkan ketika malware hanya 2% data. Laporkan precision, recall, F1, PR-AUC, confusion matrix, waktu inferensi, dan variasi beberapa seed. Untuk SOC, false positive per 1.000 process sering lebih bermakna daripada angka accuracy tunggal.

Kesimpulan#

GCN adalah titik awal yang bersih dan efisien. GGNN layak dipilih jika tipe relasi serta propagasi berulang benar-benar menambah informasi. Model terbaik adalah yang menang pada evaluasi bebas leakage dan masih dapat dioperasikan oleh analis.

Eksperimen yang adil#

GCN dan GGNN harus mendapat node feature, train/validation/test split, optimizer budget, dan stopping rule yang setara. Samakan hidden dimension bila memungkinkan, laporkan jumlah parameter, lalu jalankan beberapa seed. Bila GGNN menang tetapi memakai lima kali parameter dan waktu, hasil itu tetap valid—namun biaya harus disebutkan.

Model | Params | PR-AUC | Recall@95%Precision | ms/graph
MLP   | ...    | ...    | ...                 | ...
GCN   | ...    | ...    | ...                 | ...
GGNN  | ...    | ...    | ...                 | ...

Ablation yang menjawab “mengapa”#

Hapus edge type, network node, atau memory-region feature satu per satu. Jika performa tidak berubah ketika edge diacak, model mungkin hanya mengandalkan node feature dan klaim manfaat graph perlu diperiksa. Jika GGNN hanya unggul pada graph dalam tetapi inference terlalu lambat untuk SOC, GCN dapat menjadi pilihan production yang lebih rasional.

Cek pemahaman#

GCN bukan selalu model “lebih dangkal” dan GGNN bukan selalu “lebih akurat”. Keduanya adalah hipotesis tentang bagaimana informasi menyebar. Pilihan harus mengikuti struktur data, metric operasional, dan hasil ablation.

💬 Comments (0)

No comments yet. Be the first to share your thoughts!

Related reading

Aug 11, 2026 · 3 min Inductive vs Transductive Learning dalam Malware Detection Mengapa split graph mengubah arti hasil eksperimen, bagaimana menguji host baru secara jujur, dan kapan evaluasi transductive masih berguna. Aug 11, 2026 · 4 min Dari Memory Dump Menjadi Graph: Pipeline Deteksi Malware dengan GNN Panduan end-to-end mengubah memory dump Windows menjadi graph process–DLL, menyiapkan feature, lalu menjalankan inferensi GGNN atau GCN tanpa melewatkan validasi forensik.
Now Playing Loading...