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 pairPengambilan 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
- Teori Graf untuk Pembelajaran Mesin
- Graph Convolutional Networks (GCN)
- Klasifikasi Simpul dengan GNN
- Prediksi Tautan dan Klasifikasi Graf