0Pricing
Learn AI with Python · Ders

GNN ile Düğüm Sınıflandırma

Cora veri kümesi, 2 katmanlı GCN, eğitim döngüsü, maskeli kayıp, test doğruluğu, gömme vektörlerini görselleştirme.

GNN ile Düğüm Sınıflandırma, CoddyKit'te ücretsiz bir Learn AI with Python dersidir. Bu, 4 dersinin 3. 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.

Düğüm Sınıflandırma Görevi

Düğüm sınıflandırma, özelliklerini ve çizge yapısını kullanarak her düğüm için bir etiket tahmin eder. Klasik bir örnek, bir atıf ağındaki her makaleyi araştırma konusuna göre etiketlemektir; bunun için hem makaledeki kelimelerden hem de makalenin atıfta bulunduğu diğer makalelerden yararlanılır.

Cora Veri Kümesi

Cora, çizge öğrenmesinin MNIST'idir. Makine öğrenmesi alanındaki 2.708 makaleden oluşan bir atıf çizgesidir. Kenarlar atıfları gösterir; her makalenin uzunluğu 1433 olan bir kelime torbası özellik vektörü vardır. Amaç, her makaleyi 7 konudan birine sınıflandırmaktır.

# Cora:
#   nodes  = 2708 papers
#   edges  = citations
#   features per node = 1433
#   classes = 7

Planetoid ile Yükleme

PyTorch Geometric, Cora'yı verileri tek bir çizge nesnesine indirip biçimlendiren Planetoid yükleyicisi aracılığıyla sağlar.

from torch_geometric.datasets import Planetoid

dataset = Planetoid(root="data/Cora", name="Cora")
data = dataset[0]
print(data)  # x, edge_index, y, train_mask, test_mask

Veri Nesnesi

Çizge nesnesi her şeyi tutar: data.x (özellikler 2708 x 1433), data.edge_index (bağlantılılık), data.y (gerçek etiketler) ve hangi düğümlerin eğitim, doğrulama ve test için kullanılacağını belirleyen boole maskeleri.

7 Sınıf İçin Bir GCN

1433 girdi özelliğini 64 boyutlu gizli bir katmandan geçirerek 7 sınıf logitine dönüştüren 2 katmanlı bir GCN oluştururuz.

import torch
import torch.nn.functional as F
from torch_geometric.nn import GCNConv

class GCN(torch.nn.Module):
    def __init__(self):
        super().__init__()
        self.conv1 = GCNConv(1433, 64)
        self.conv2 = GCNConv(64, 7)

    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)

Transdüktif Öğrenme

Cora transdüktiftir: eğitim sırasında test düğümleri ve özellikleri de dâhil olmak üzere tüm çizgi görünür; yalnızca test etiketlerini gizleriz. Model tüm düğüm bağlantılarını kullanır, ancak yalnızca etiketli eğitim düğümlerinden öğrenir.

train_mask

train_mask, kayba katkıda bulunan düğümleri seçen bir boole vektörüdür. Modeli tüm çizge üzerinde çalıştırır, ancak çapraz entropiyi yalnızca maskelenmiş eğitim düğümleri üzerinde hesaplarız.

model = GCN()
optimizer = torch.optim.Adam(model.parameters(), lr=0.01, weight_decay=5e-4)

def train():
    model.train()
    optimizer.zero_grad()
    out = model(data.x, data.edge_index)
    loss = F.cross_entropy(out[data.train_mask], data.y[data.train_mask])
    loss.backward()
    optimizer.step()
    return loss.item()

Maskelenmiş Kaybın Sezgisel Açıklaması

İleri geçiş tüm 2708 düğüm için logitler üretse de train_mask ile indeksleme, kaybı etiketli eğitim düğümleriyle sınırlar. Etiketsiz düğümler mesaj iletmeye devam ederek modele yardımcı olur, ancak gradyanı doğrudan yönlendirmez.

test_mask ile Değerlendirme

Eğitimden sonra doğruluğu, kaybın hiç kullanmadığı ayrılmış test_mask düğümleri üzerinde değerlendiririz. Bu, modelin etiketlerini hiç görmediği makalelere genelleme becerisini ölçer.

@torch.no_grad()
def test():
    model.eval()
    pred = model(data.x, data.edge_index).argmax(dim=1)
    correct = (pred[data.test_mask] == data.y[data.test_mask]).sum()
    return int(correct) / int(data.test_mask.sum())

t-SNE ile Gömmeleri Görselleştirme

GCN'nin ne öğrendiğini görmek için gizli katmandaki düğüm gömmelerini alıp t-SNE ile 2B'ye yansıtın. İyi eğitilmiş bir GCN, aynı sınıftaki düğümlerin birlikte gruplanıp kümeler oluşturduğu bir çıktı üretir.

from sklearn.manifold import TSNE
import matplotlib.pyplot as plt

emb = model.conv1(data.x, data.edge_index).detach().numpy()
z = TSNE(n_components=2).fit_transform(emb)
plt.scatter(z[:, 0], z[:, 1], c=data.y, cmap="tab10", s=8)

t-SNE Grafiğini Yorumlama

İyi ayrılmış renkli kümeler, gömmelerin sınıfları ayırt edebildiğini ve GCN'nin yararlı bir yapı öğrendiğini gösterir. Üst üste binen lekeler, yetersiz eğitime veya aşırı yumuşamaya işaret eder. t-SNE bir ölçüt değil, nitel bir kontroldür.

Kısa Sınama

Düğüm sınıflandırma bilginizi sınayın.

Özet

Bir GNN ile düğüm sınıflandırmayı öğrendiniz:

  • Planetoid, Cora atıf çizgesini yükler
  • 2 katmanlı bir GCN, 1433'ü 64'e, ardından 7 sınıfa dönüştürür
  • train_mask kaybı sınırlar; test_mask genelleme becerisini ölçer
  • t-SNE, sınıfların ayrımını incelemek için düğüm gömmelerini görselleştirir

Sıkça Sorulan Sorular

“GNN ile Düğüm Sınıflandırma” dersi ücretsiz mi?

Evet — “GNN ile Düğüm Sınıflandırma” 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.

“GNN ile Düğüm Sınıflandırma” dersinde ne öğreneceğim?

Cora veri kümesi, 2 katmanlı GCN, eğitim döngüsü, maskeli kayıp, test doğruluğu, gömme vektörlerini görselleştirme. 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 3. dersidir.

“GNN ile Düğüm Sınıflandırma” 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

  1. Makine Öğrenmesi için Graf Teorisi
  2. Graf Evrişimli Ağlar (GCN)
  3. GNN ile Düğüm Sınıflandırma
  4. Bağlantı Tahmini ve Graf Sınıflandırması
← Learn AI with Python Sayfasına Dön