Graf Evrişimli Ağlar (GCN)
Mesaj geçirme çerçevesi, GCNConv, düğüm özelliği toplulaştırma, PyTorch Geometric kurulumu.
Graf Evrişimli Ağlar (GCN), CoddyKit'te ücretsiz bir Learn AI with Python dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Learn AI with Python öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Learn AI with Python kursu toplamda 4 dersten oluşur.
CNN'lerden GCN'lere
CNN'ler görüntülerdeki ızgara yapısından yararlanır. Bir Çizge Evrişimsel Ağı (GCN), evrişimi düzensiz çizgelere geneller ve her düğümün komşularından gelen bilgileri kullanarak kendi temsilini güncellemesini sağlar. Bu yaklaşım, sabit bir ızgarası olmayan verileri işler.
Mesaj İletimi
GCN'ler mesaj iletimi çerçevesini izler: her katmanda her düğüm (1) komşularından mesajları toplar, (2) bunları birleştirir ve (3) kendi gömmesini günceller. Katmanları üst üste koymak, bilginin çizge boyunca akmasını sağlar.
Komşu Özelliklerini Birleştirme
Temel işlem komşu özelliklerini birleştirmektir. Basit bir GCN katmanı, bir düğümün komşularının (ve düğümün kendisinin) özellik vektörlerinin ortalamasını alır, ardından öğrenilmiş doğrusal bir dönüşüm ve doğrusal olmayanlık uygular.
# For each node v:
# h_v = activation( W * mean(features of v and its neighbors) )Komşuluk Matrisi Neden Normalleştirilir
Komşuları naif biçimde toplasaydık, derecesi yüksek düğümler baskın olurdu. GCN, katkıları ölçeklendirmek için normalleştirilmiş komşuluk matrisini kullanır ve farklı derecelere sahip düğümlerdeki düğüm gömmelerinin büyüklüğünü kararlı tutar.
Normalleştirme Formülü
Simetrik normalleştirme, öz-döngüler ekler ve ardından düğüm derecelerine göre ölçeklendirir; bu işlem D^(-1/2) (A + I) D^(-1/2) şeklinde yazılır. Birim matrisi I'nin eklenmesi, bir düğümün birleştirme sırasında kendi özelliklerini korumasını sağlar.
# A_hat = A + I (add self-loops)
# D_hat = degree matrix of A_hat
# A_norm = D_hat^(-1/2) * A_hat * D_hat^(-1/2)PyTorch Geometric
PyTorch Geometric (PyG), PyTorch'ta GNN'ler için kullanılan standart kütüphanedir. Sizin için normalleştirilmiş mesaj iletimi evrişimini uygulayan GCNConv gibi kullanıma hazır katmanlar sağlar.
import torch
import torch.nn.functional as F
from torch_geometric.nn import GCNConvTek Bir GCNConv Katmanı
GCNConv(in_channels, out_channels) bir çizge evrişimi oluşturur. Düğüm özellikleri matrisini x ve edge_index'i (COO biçimindeki çizge bağlantılılığı) alır ve güncellenmiş düğüm gömmelerini döndürür.
conv = GCNConv(in_channels=16, out_channels=32)
# x: [num_nodes, 16], edge_index: [2, num_edges]
h = conv(x, edge_index) # -> [num_nodes, 32]İki Katmanlı Bir GCN
Tipik bir GCN iki katmanı üst üste koyar: ilk katman özellikleri yansıtır ve komşuların bir sıçramasını birleştirir; ikinci katman ikinci sıçramayı birleştirerek her düğüme iki sıçramalık bir alıcı alanı sağlar.
class GCN(torch.nn.Module):
def __init__(self, in_dim, hid, out):
super().__init__()
self.conv1 = GCNConv(in_dim, hid)
self.conv2 = GCNConv(hid, out)
def forward(self, x, edge_index):
x = F.relu(self.conv1(x, edge_index))
x = F.dropout(x, training=self.training)
return self.conv2(x, edge_index)Alıcı Alan Derinlikle Genişler
Her GCN katmanı, bir düğümün alıcı alanını bir sıçrama kadar genişletir. İki katman iki sıçramalık komşulukları, üç katman üç sıçramalık komşulukları görür ve bu şekilde devam eder. Derinlik, uzaktaki bilgilerin bir düğüme ulaşmasını sağlar.
Aşırı Yumuşama
Ancak çok fazla katmanın üst üste konması aşırı yumuşamaya neden olur: komşuların tekrar tekrar ortalamasının alınması, tüm düğüm gömmelerinin neredeyse aynı vektöre yakınsamasına ve sınıflandırma için gereken ayrımların yok olmasına yol açar. Bu nedenle çoğu GCN yalnızca 2 veya 3 katman kullanır.
Aşırı Yumuşamayı Azaltma
Aşırı yumuşamayı önleme teknikleri arasında artık/atlamalı bağlantılar, katman çıktılarını birleştiren atlamalı bilgi ağları ve ağın sığ tutulması yer alır. Sığ GCN'ler, standart kıyaslamalarda çoğu zaman derin olanlardan daha iyi sonuç verir.
Kısa Sınama
GCN bilginizi sınayın.
Özet
Çizge Evrişimsel Ağlarını öğrendiniz:
- GCN'ler mesaj iletimi çerçevesini izler: komşu özelliklerini birleştirir, ardından günceller
- Öz-döngülere sahip normalleştirilmiş komşuluk matrisi, gömmeleri kararlı tutar
- PyTorch Geometric içindeki
GCNConvtek bir evrişimi uygular - Yaygın bir mimari 2 katmanlı GCN'dir
- Aşırı derinlik aşırı yumuşamaya neden olur
Sıkça Sorulan Sorular
“Graf Evrişimli Ağlar (GCN)” dersi ücretsiz mi?
Evet — “Graf Evrişimli Ağlar (GCN)” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Learn AI with Python kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Learn AI with Python kursu toplamda 4 dersten oluşur.
“Graf Evrişimli Ağlar (GCN)” dersinde ne öğreneceğim?
Mesaj geçirme çerçevesi, GCNConv, düğüm özelliği toplulaştırma, PyTorch Geometric kurulumu. Learn AI with Python ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Learn AI with Python öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Learn AI with Python, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Graf Evrişimli Ağlar (GCN)” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Learn AI with Python dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Learn AI with Python dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Makine Öğrenmesi için Graf Teorisi
- Graf Evrişimli Ağlar (GCN)
- GNN ile Düğüm Sınıflandırma
- Bağlantı Tahmini ve Graf Sınıflandırması