Graph Convolutional Networks (GCN)
Kerangka kerja pengiriman pesan, GCNConv, agregasi fitur simpul, penyiapan PyTorch Geometric.
Graph Convolutional Networks (GCN) adalah pelajaran Learn AI with Python gratis di CoddyKit. Ini adalah pelajaran 2 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.
Dari CNN ke GCN
CNN memanfaatkan struktur kisi pada gambar. Jaringan Konvolusional Graf (GCN) menggeneralisasi konvolusi ke graf tidak beraturan, sehingga setiap simpul dapat memperbarui representasinya menggunakan informasi dari tetangganya. Cara ini menangani data yang tidak memiliki kisi tetap.
Penyampaian Pesan
GCN mengikuti kerangka kerja penyampaian pesan: pada setiap lapisan, setiap simpul (1) mengumpulkan pesan dari tetangganya, (2) mengagregasikannya, dan (3) memperbarui penyematan dirinya sendiri. Menumpuk beberapa lapisan memungkinkan informasi mengalir ke seluruh graf.
Agregasi Tetangga
Operasi intinya adalah mengagregasikan fitur tetangga. Lapisan GCN sederhana merata-ratakan vektor fitur tetangga sebuah simpul (termasuk simpul itu sendiri), lalu menerapkan transformasi linear dan fungsi nonlinier yang dipelajari.
# For each node v:
# h_v = activation( W * mean(features of v and its neighbors) )Mengapa Ketetanggaan Dinormalisasi
Simpul dengan derajat tinggi akan mendominasi jika tetangga dijumlahkan begitu saja. GCN menggunakan ketetanggaan yang dinormalisasi untuk menyesuaikan kontribusi, sehingga besar penyematan simpul tetap stabil pada simpul-simpul dengan derajat yang berbeda.
Rumus Normalisasi
Normalisasi simetris menambahkan gelang-diri, lalu menyesuaikan skala berdasarkan derajat simpul, yang dituliskan sebagai D^(-1/2) (A + I) D^(-1/2). Penambahan matriks identitas I memungkinkan simpul mempertahankan fiturnya sendiri selama agregasi.
# 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) adalah pustaka standar untuk GNN dalam PyTorch. Pustaka ini menyediakan lapisan siap pakai seperti GCNConv yang menerapkan konvolusi penyampaian pesan ternormalisasi untuk Anda.
import torch
import torch.nn.functional as F
from torch_geometric.nn import GCNConvSatu Lapisan GCNConv
GCNConv(in_channels, out_channels) membuat satu konvolusi graf. Lapisan ini menerima matriks fitur simpul x dan edge_index (keterhubungan graf dalam format COO), lalu mengembalikan penyematan simpul yang telah diperbarui.
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]GCN Dua Lapisan
GCN pada umumnya menumpuk dua lapisan: lapisan pertama memproyeksikan fitur dan mengagregasikan tetangga dalam satu lompatan, sedangkan lapisan kedua mengagregasikan tetangga dalam lompatan kedua, sehingga setiap simpul memiliki bidang penerimaan sejauh 2 lompatan.
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)Bidang Penerimaan Bertambah Seiring Kedalaman
Setiap lapisan GCN memperluas bidang penerimaan sebuah simpul sejauh satu lompatan. Dua lapisan melihat lingkungan sejauh 2 lompatan, tiga lapisan melihat sejauh 3 lompatan, dan seterusnya. Kedalaman memungkinkan informasi yang jauh mencapai sebuah simpul.
Penghalusan Berlebihan
Namun, menumpuk terlalu banyak lapisan menyebabkan penghalusan berlebihan: perataan tetangga berulang kali membuat semua penyematan simpul menyatu menjadi vektor yang hampir sama, sehingga perbedaan yang diperlukan untuk klasifikasi hilang. Inilah alasan sebagian besar GCN hanya menggunakan 2 atau 3 lapisan.
Mengurangi Penghalusan Berlebihan
Teknik untuk mengatasi penghalusan berlebihan mencakup koneksi residual/lompatan, jaringan pengetahuan-lompatan yang menggabungkan keluaran lapisan, dan menjaga jaringan tetap dangkal. GCN dangkal sering mengungguli GCN dalam pada tolok ukur standar.
Uji Cepat
Uji pengetahuan Anda tentang GCN.
Rangkuman
Anda telah mempelajari Jaringan Konvolusional Graf:
- GCN mengikuti kerangka kerja penyampaian pesan: mengagregasikan fitur tetangga, lalu memperbarui fitur
- Ketetanggaan yang dinormalisasi dengan gelang-diri menjaga penyematan tetap stabil
GCNConvdalam PyTorch Geometric menerapkan satu konvolusi- Arsitektur yang umum adalah GCN 2 lapisan
- Kedalaman yang berlebihan menyebabkan penghalusan berlebihan
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Graph Convolutional Networks (GCN)” gratis?
Ya — teks lengkap “Graph Convolutional Networks (GCN)” 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 “Graph Convolutional Networks (GCN)”?
Kerangka kerja pengiriman pesan, GCNConv, agregasi fitur simpul, penyiapan PyTorch Geometric. 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 2 dari 4.
Berapa lama pelajaran “Graph Convolutional Networks (GCN)” 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