Graph Neural Network (GNN)
Graf sinir ağı (GNN), komşular arasında mesajlar ileterek düğümlerden ve kenarlardan öğrenir. Mesaj iletimi, GCN, GAT, gerçek dünya kullanımları ve kod ele alınır.
Graf sinir ağı (GNN), doğrudan graflar üzerinde çalışan bir sinir ağıdır: düğümlerin kenarlarla bağlandığı kümelerde hem düğümler hem de kenarlar özellik taşıyabilir. Moleküller (atomlar ve bağlar), sosyal ağlar (kullanıcılar ve takip ilişkileri), yol ağları (kavşaklar ve yol parçaları), 3B ağ yapıları ve insan iskeletinin eklemleri birer graftır. Bir grafın sabit bir ızgarası veya sıralaması yoktur ve düğümlerin komşu sayıları farklıdır; bu nedenle evrişimli sinir ağlarının (CNN) kayan filtreleri ve yinelenen sinir ağlarının (RNN) adım adım okuma yaklaşımı doğrudan uygulanamaz. GNN'ler bu sorunu mesaj iletimiyle ele alır: her düğüm, özellik vektörünü komşularının özelliklerinden yararlanarak tekrar tekrar günceller. Böylece düğümün hem kendi niteliklerini hem de graf içindeki konumunu kodlayan düğüm gömme vektörleri elde edilir.
Mesaj İletimi Nasıl Çalışır#
Bir GNN katmanı her düğümü üç adımda günceller. Her komşu, genellikle özelliklerinin öğrenilmiş bir dönüşümü olan bir mesaj gönderir. Düğüm, gelen mesajları toplam, ortalama veya maksimum gibi sıralarını dikkate almayan bir işlevle bir araya getirir. Ardından bu toplamı kendi özellikleriyle birleştirerek yeni temsilini oluşturur. Toplama işlemi sıralamayı dikkate almadığından sonuç, düğümlerin nasıl numaralandırıldığına bağlı değildir. Justin Gilmer ve çalışma arkadaşları, 2017'de pek çok GNN'yi bu mesaj iletimli sinir ağı çerçevesinin örnekleri olarak tanımladı. Son katmandan sonra, göreve özel bir başlık düğümleri etiketlemek, eksik kenarları tahmin etmek veya tüm grafiği sınıflandırmak için düğüm gömmelerini kullanır:
Her katman bir düğümün görüş alanını bir sıçrama genişletir; dolayısıyla k katmandan sonra bir düğümün gömmesi, grafikteki alıcı alanı olan k kenara kadar uzaklıktaki tüm düğümlere bağlıdır. Aşağıdaki PyTorch kodu altı düğümlü bir yol grafiği oluşturur, Thomas Kipf ve Max Welling'in GCN'sindeki normalleştirmeyi kullanan üç grafik evrişim katmanı uygular ve her katmandan sonra 0. düğümü hangi girdi düğümlerinin etkilediğini listelemek için autograd kullanır:
import torch
from torch import nn
# A path graph 0-1-2-3-4-5 as an adjacency matrix with self-loops
A = torch.eye(6)
for i in range(5):
A[i, i + 1] = A[i + 1, i] = 1
deg = A.sum(dim=1)
A_hat = A / torch.sqrt(deg[:, None] * deg[None, :]) # GCN normalization D^-1/2 (A + I) D^-1/2
torch.manual_seed(0)
x = torch.randn(6, 4, requires_grad=True) # 4 input features per node
layers = [nn.Linear(4, 4) for _ in range(3)]
h = x
for k, layer in enumerate(layers, start=1):
h = torch.tanh(A_hat @ layer(h)) # each node mixes in its neighbors' transformed features
grad = torch.autograd.grad(h[0].sum(), x, retain_graph=True)[0]
print(f"After layer {k}, node 0 depends on nodes {grad.abs().sum(dim=1).nonzero().flatten().tolist()}")Şu çıktıyı verir: [0, 1], [0, 1, 2] ve [0, 1, 2, 3]: 0. düğümün alıcı alanı her katmanda tam olarak bir sıçrama genişler.
Yaygın GNN Mimarileri#
- GCN: Grafik evrişim ağı H′ = σ(D̃^(−1/2) Ã D̃^(−1/2) H W) hesaplar. Burada Ã, öz döngüleri içeren komşuluk matrisi; D̃ ise derece matrisidir: her düğüm ve komşuları üzerinde derece ağırlıklı bir ortalama alınır, ardından tüm düğümlerin paylaştığı W ağırlık matrisi uygulanır.
- GraphSAGE: Düğüm başına sabit sayıda komşu örnekler ve toplama işlevini öğrenir; böylece çok büyük grafiklere ölçeklenebilir ve eğitimden sonra ortaya çıkan düğümleri gömebilir.
- GAT: Grafik dikkat ağları, sabit derece tabanlı ağırlıklar yerine her komşuya öğrenilmiş dikkat puanlarıyla ağırlık verir.
- GIN: Grafik izomorfizm ağı, komşularını toplar ve bir MLP uygular. Keyulu Xu ve çalışma arkadaşları bunun, standart mesaj iletiminin üst sınırı olan Weisfeiler-Lehman testi kadar iyi grafik ayırt etmesini sağladığını kanıtladı.
- Grafik Transformer'ları: Tüm düğümler arasında öz dikkat uygular ve grafik yapısından türetilen konumsal kodlamalar ekler. Standart bir Transformer, token'lardan oluşan tam bağlantılı bir grafikte çalışan bir GNN'dir.
Çok sayıda katmanı üst üste koymak aşırı düzleştirmeye neden olur: tekrarlanan ortalama alma, düğüm gömmelerini birbirine yaklaştırarak ayırt edilemez hâle getirir. Bu nedenle birçok GNN, özgün GCN'nin yaptığı gibi yalnızca iki veya üç katman kullanır. PyTorch Geometric ve Deep Graph Library (DGL), bu katmanları seyrek kenar listelerinde verimli biçimde uygular.
Gerçek Dünya Uygulamaları#
- Hava tahmini: Google DeepMind'ın 2023'te Science'ta yayımlanan GraphCast modeli, dünyayı kapsayan çok ölçekli bir ağ üzerinde mesaj iletimi gerçekleştirir ve bir dakikadan kısa sürede 0,25° çözünürlükte 10 günlük tahminler üretir; 1.380 doğrulama hedefinin %90'ında en doğru operasyonel deterministik sistemlerden daha iyi performans gösterir.
- İlaç keşfi: MIT araştırmacıları 2020'de moleküler grafiklerden antibakteriyel etkinlik tahmin etmek için yönlendirilmiş mesaj iletim ağı eğitti ve bunu, yapısal olarak bilinen antibiyotiklerden farklı olan, laboratuvar testlerinde ilaca dirençli birçok bakteriyi öldüren halicin bileşiğini belirlemek için kullandı.
- Öneri sistemleri: Pinterest'in PinSage modeli, 3 milyar pin ve panodan ve 18 milyar kenardan oluşan bir grafikten pin gömmelerini öğrendi; 7,5 milyar örnek üzerinde eğitildi.
- İskelet tabanlı eylem tanıma: ST-GCN, vücut eklemlerini düğüm olarak ele alır; bunları her karede kemiklerle ve komşu karelerdeki aynı eklemle bağlar, ardından ortaya çıkan uzamsal-zamansal grafikten eylemi sınıflandırır. YOLO26 poz tahmini modelleri, her karede kişi başına 17 COCO kilit noktası döndürür; iskelet grafiği bu eklem koordinatlarından oluşturulur.
GNN'ler ve İlgili Kavramlar#
- Bilgi grafiği: Olguları varlık-ilişki-varlık üçlüleri olarak depolayan bir veri yapısıdır. GNN, örneğin eksik bağlantıları tahmin etmek için bu yapıdan öğrenebilen bir modeldir.
- Geometrik derin öğrenme: Verilerinin simetrileri etrafında tasarlanan ağları kapsayan daha geniş bir alandır; ızgaralar üzerindeki CNN'leri, grafikler üzerindeki GNN'leri ve ağlar ile manifoldlar üzerindeki modelleri içerir.
- CNN: Bir görüntüye uygulanan CNN, ızgara grafiğinde mesaj iletiminin özel bir örneğidir. Burada her pikselin sabit göreli konumlarda aynı sayıda komşusu vardır; bu nedenle CNN her komşu konumu için ayrı bir ağırlık öğrenebilir. Düzensiz bir grafikteki GNN bunu yapamaz.










