0Pricing
Learn AI with Python · Pelajaran

Prediksi Tautan dan Klasifikasi Graf

Tugas prediksi sisi, pengambilan sampel negatif, pooling tingkat graf, GINConv untuk klasifikasi graf.

Prediksi Tautan dan Klasifikasi Graf adalah pelajaran Learn AI with Python gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Learn AI with Python, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Learn AI with Python mencakup 4 pelajaran total.

Dua Tugas Graf Baru

Selain mengklasifikasikan simpul, GNN menangani:

  • Prediksi hubungan: apakah sebuah sisi akan ada di antara dua simpul? (saran teman, interaksi obat)
  • Klasifikasi graf: memberikan label pada seluruh graf (apakah molekul ini beracun?)

Penyiapan Prediksi Hubungan

Dalam prediksi hubungan, kita terlebih dahulu menghitung penyematan simpul dengan GNN, lalu memberikan skor pada pasangan simpul kandidat. Skor tinggi berarti model meyakini bahwa sebuah sisi seharusnya menghubungkan keduanya.

Memberi Skor pada Sisi

Skor sisi yang umum adalah hasil kali titik dari dua penyematan simpul: score = dot(h_u, h_v). Penyematan yang mirip menghasilkan hasil kali titik yang tinggi, sehingga memprediksi hubungan yang mungkin.

h = gnn(data.x, data.edge_index)        # node embeddings
score = (h[u] * h[v]).sum(dim=-1)        # dot product per pair

Pengambilan Sampel Negatif

Graf hanya mencantumkan sisi yang ada (positif). Untuk melatih pengklasifikasi, kita juga memerlukan pasangan yang tidak memiliki sisi. Pengambilan sampel negatif memilih pasangan simpul yang tidak terhubung secara acak sebagai contoh negatif, sehingga kumpulan pelatihan menjadi seimbang.

from torch_geometric.utils import negative_sampling

neg_edge_index = negative_sampling(
    edge_index=data.edge_index,
    num_nodes=data.num_nodes,
    num_neg_samples=data.edge_index.size(1),
)

BCEWithLogitsLoss

Prediksi hubungan bersifat biner (ada sisi atau tidak ada sisi). Kita memberi skor pada pasangan positif dan negatif, memberi label 1 dan 0, lalu melatih dengan BCEWithLogitsLoss, yang menggabungkan sigmoid dengan entropi silang biner secara stabil secara numerik.

import torch

pos = (h[pos_u] * h[pos_v]).sum(-1)
neg = (h[neg_u] * h[neg_v]).sum(-1)
scores = torch.cat([pos, neg])
labels = torch.cat([torch.ones_like(pos), torch.zeros_like(neg)])
loss = torch.nn.functional.binary_cross_entropy_with_logits(scores, labels)

Beralih ke Klasifikasi Graf

Untuk klasifikasi graf, kita memerlukan satu vektor per graf, bukan per simpul. Setelah lapisan GNN menghasilkan penyematan simpul, kita menggabungkannya menjadi satu representasi tingkat graf.

global_mean_pool

global_mean_pool merata-ratakan semua penyematan simpul dalam sebuah graf untuk menghasilkan satu vektor berukuran tetap, terlepas dari ukuran graf. Indeks batch memberi tahu fungsi tersebut simpul mana yang termasuk dalam graf tertentu ketika beberapa graf diproses sebagai satu kelompok.

from torch_geometric.nn import global_mean_pool

h = gnn(x, edge_index)               # [num_nodes, dim]
hg = global_mean_pool(h, batch)       # [num_graphs, dim]
logits = classifier(hg)

Mengapa Penggabungan Penting

Penggabungan membuat model tidak terpengaruh oleh urutan simpul dan ukuran graf: dua graf isomorfik menghasilkan vektor gabungan yang sama. Penggabungan rata-rata bersifat sederhana; penggabungan jumlah dan maksimum merupakan alternatif dengan sensitivitas yang berbeda.

GINConv

GINConv (Jaringan Isomorfisme Graf) adalah konvolusi yang lebih ekspresif. Lapisan ini menggunakan MLP dan agregasi penjumlahan yang dirancang khusus untuk memaksimalkan kemampuan diskriminatif propagasi pesan pada tugas tingkat graf.

from torch_geometric.nn import GINConv
import torch

mlp = torch.nn.Sequential(
    torch.nn.Linear(in_dim, hid),
    torch.nn.ReLU(),
    torch.nn.Linear(hid, hid),
)
conv = GINConv(mlp)

Kaitan dengan Weisfeiler-Leman

GIN dirancang agar sekuat uji Weisfeiler-Leman (WL), yaitu algoritme klasik untuk membedakan graf yang tidak isomorfik. Banyak GNN yang lebih sederhana tidak dapat membedakan graf tertentu; GIN dapat melakukannya hingga batasan uji WL, sehingga kuat untuk klasifikasi graf.

Memilih Alat yang Tepat

Sesuaikan arsitektur dengan tugasnya:

  • Prediksi tautan: embedding GNN + penilaian hasil kali titik + pengambilan sampel negatif + kerugian BCE
  • Klasifikasi graf: konvolusi ekspresif seperti GINConv + penggabungan global + pengklasifikasi

Pemeriksaan Singkat

Uji pengetahuan Anda.

Ringkasan

Anda telah mempelajari prediksi tautan dan klasifikasi graf:

  • Skor sisi = dot(h_u, h_v), dilatih dengan pengambilan sampel negatif dan BCEWithLogitsLoss
  • global_mean_pool mengubah embedding simpul menjadi vektor tingkat graf
  • GINConv sangat ekspresif dan menyamai uji Weisfeiler-Leman

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Prediksi Tautan dan Klasifikasi Graf” gratis?

Ya — teks lengkap “Prediksi Tautan dan Klasifikasi Graf” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Learn AI with Python, upgrade ke CoddyKit PRO. Kursus Learn AI with Python mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Prediksi Tautan dan Klasifikasi Graf”?

Tugas prediksi sisi, pengambilan sampel negatif, pooling tingkat graf, GINConv untuk klasifikasi graf. Kamu berlatih Learn AI with Python dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Learn AI with Python?

Tidak diperlukan pengalaman sebelumnya. Learn AI with Python di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Prediksi Tautan dan Klasifikasi Graf” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Learn AI with Python ini?

Ya. Setiap pelajaran Learn AI with Python menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Teori Graf untuk Pembelajaran Mesin
  2. Graph Convolutional Networks (GCN)
  3. Klasifikasi Simpul dengan GNN
  4. Prediksi Tautan dan Klasifikasi Graf
← Kembali ke Learn AI with Python