Tüm Yazılar
Teknik2026-03-158 dk okuma

Graf Sinir Ağları (GNN) Nedir ve Ne Zaman Kullanılır?

VARIANT-GNN projesini geliştirirken sıkça şu soruyla karşılaştım: "Neden sinir ağını zaten biliyoruz, grafı ne işe yarıyor?" Bu yazı o soruya yanıt.

Klasik Veri ile Graf Verisi Farkı

Klasik makine öğrenmesi modellerini düşünün. Bir tablonuz var: her satır bir örnek, her sütun bir özellik. Model bu satırları bağımsız görür.

Ama bazı veriler doğası gereği birbirine bağlıdır:

  • Sosyal ağlar (kim kimle arkadaş?)
  • Molekül yapıları (atomlar arası bağlar)
  • Genomik etkileşimler (hangi gen hangi proteini etkiler?)

Bu tür verilerde ilişki bilgisi, örnek bilgisi kadar önemlidir. Graf yapısı tam da bunu yakalar.

Graf Nedir?

Bir graf iki bileşenden oluşur:

  • Düğümler (Nodes): Varlıklar (gen, atom, kullanıcı)
  • Kenarlar (Edges): İlişkiler (bağ, etkileşim, arkadaşlık)

Her düğümün özellikleri vardır (feature vector). GNN bu özellikleri komşularla iteratif olarak birleştirir.

Mesaj Geçişi Mekanizması

GNN'nin temel prensibi şudur: her düğüm, komşularından mesaj alır, bu mesajları birleştirir ve kendi temsilini günceller. Bunu birkaç tur (layer) boyunca tekrarlar.

h_v^(k) = UPDATE(h_v^(k-1), AGG({h_u^(k-1) : u ∈ N(v)}))

Yeterli tur sonunda her düğüm, yerel yapısının bir temsilini öğrenmiş olur.

Genomik Veride Neden GNN?

ClinVar'daki her genetik varyant izole değildir. Aynı gendeki başka varyantlarla, ilgili genlerle, protein etkileşim ağlarıyla bağlantılıdır. Bu bağlantıları tabloya sığdıramazsınız — ama grafa sığdırırsınız.

VARIANT-GNN'de PyTorch Geometric kullandık. Her varyant bir düğüm, biyolojik ilişkiler kenar. Model bu yapıyı öğrenerek patojenite tahmini yapıyor.

Ne Zaman GNN Kullanmalısınız?

GNN doğru seçimdir eğer:

  1. 1.Verinizdeki ilişkiler (kenarlar) bilgi taşıyorsa
  2. 2.Bir örneğin çıktısı komşularına bağlıysa
  3. 3.Veri doğal olarak ağ/graf yapısındaysa

Tablo verisi için genellikle XGBoost veya klasik DNN daha iyi sonuç verir — GNN'e gerek yoktur.

Tüm YazılarMuhammed Sina Gün