Tutorial PyTorch Geometric: Graph Neural Network dengan PyTorch

# Memulai dengan PyTorch Geometric: Graph Neural Network di PyTorch Sebagian besar machine learning bekerja pada grid (gambar) atau urutan (teks), tetapi banyak data dunia nyata secara alami berbentu...

By Ruby Abdullah · · tutorial
PyTorch GeometricGraph Neural NetworksGNNDeep LearningPyTorchPython

Memulai dengan PyTorch Geometric: Graph Neural Network di PyTorch

Sebagian besar machine learning bekerja pada grid (gambar) atau urutan (teks), tetapi banyak data dunia nyata secara alami berbentuk graf: orang terhubung dengan teman, atom terikat menjadi molekul, transaksi menghubungkan akun. PyTorch Geometric (PyG) adalah pustaka di atas PyTorch yang membuat pelatihan neural network langsung pada data terhubung semacam ini menjadi praktis. Tutorial ini mengasumsikan Anda sudah nyaman dengan PyTorch dasar (tensor, nn.Module, training loop) tetapi belum pernah bekerja dengan graph neural network.

Apa Itu Graph Machine Learning?

Sebuah graf adalah kumpulan node (disebut juga simpul) yang dihubungkan oleh edge (sisi). Baik node maupun edge dapat membawa fitur. Struktur graf itu sendiri — siapa terhubung dengan siapa — membawa informasi yang akan diabaikan oleh jaringan feed-forward biasa jika semuanya diratakan menjadi sebuah tabel.

Graph machine learning muncul di banyak skenario produksi:

  • Graf sosial dan rekomendasi. Pengguna, item, dan interaksinya membentuk graf. Memprediksi item yang akan diklik pengguna adalah masalah link prediction; mengklasifikasikan pengguna sebagai bot adalah node classification.
  • Molekul dan material. Atom adalah node, ikatan kimia adalah edge. Memprediksi kelarutan atau toksisitas molekul adalah tugas regresi atau klasifikasi pada level graf.
  • Fraud dan risiko. Akun, perangkat, dan transaksi membentuk graf. Komplotan fraud (fraud ring) adalah subgraf padat yang hampir tidak terlihat jika setiap transaksi dinilai secara terpisah.
  • Knowledge graph. Entitas dan relasi bertipe (misalnya "Jakarta — ibukotadari — Indonesia") mendukung penalaran dan pencarian. Ini biasanya berupa graf heterogen dengan banyak tipe node dan edge.

Benang merahnya adalah prediksi tentang satu elemen bergantung pada tetangganya, bukan hanya fiturnya sendiri.

Intuisi: Message Passing

Hampir semua GNN modern adalah bentuk dari message passing (kadang disebut neighborhood aggregation atau graph convolution). Idenya sederhana dan diulang melalui beberapa layer:

  • Setiap node melihat tetangga-tetangganya.
  • Node mengumpulkan ("agregasi") vektor fitur tetangga — misalnya dengan menjumlahkan atau merata-ratakannya.
  • Node menggabungkan pesan teragregasi dengan fiturnya sendiri saat ini untuk menghasilkan representasi yang diperbarui.
  • Setelah satu layer, representasi setiap node mencerminkan tetangga langsungnya. Setelah dua layer, representasinya mencerminkan tetangga-dari-tetangga, dan seterusnya. Menumpuk k layer membuat informasi mengalir melintasi tetangga sejauh k-hop.

    Secara formal, sebuah layer message passing generik memperbarui node i sebagai:

    hi' = UPDATE( hi , AGGREGATE( { MESSAGE(hi, hj, eij) : j in N(i) } ) )
    

    di mana N(i) adalah tetangga dari i, dan MESSAGE, AGGREGATE, serta UPDATE adalah bagian yang didefinisikan berbeda oleh setiap varian GNN. Graph Convolutional Network (GCN) memakai penjumlahan ternormalisasi, GraphSAGE melakukan sampling dan konkatenasi, dan Graph Attention Network (GAT) mempelajari bobot untuk setiap tetangga. Kita akan segera melihatnya.

    Instalasi

    PyG berjalan di atas PyTorch, jadi pasang dulu build PyTorch yang sesuai. Untuk pengaturan CPU saja, dasarnya adalah:

    pip install torch
    

    pip install torchgeometric

    Untuk sebagian besar tutorial level node dan graf, ini sudah cukup — versi PyG terbaru mengimplementasikan operasi inti dalam PyTorch murni.

    PyG juga menyediakan wheel ekstensi terkompilasi opsional (pyglib, torchscatter, torchsparse, torchcluster, torchsplineconv). Wheel ini mempercepat operasi scatter/gather dan sparse, serta diperlukan untuk beberapa fitur lanjutan (sampler dan rutin cluster tertentu). Wheel tersebut harus cocok dengan versi PyTorch sekaligus build CUDA Anda, jadi pasang dari indeks wheel PyG, bukan dari PyPI:

    # Ganti 2.4.0 dan cu121 dengan versi torch dan tag CUDA Anda sendiri.
    

    Gunakan cpu sebagai pengganti cu121 untuk mesin CPU saja.

    pip install pyglib torchscatter torchsparse torchcluster torchsplineconv \

    -f https://data.pyg.org/whl/torch-2.4.0+cu121.html

    Untuk menemukan tag yang tepat, periksa versi yang terpasang:

    Artikel Terkait

    Tutorial Ray Train & Ray Tune: Training Terdistribusi dan Tuning Hyperparameter

    Ray Train & Ray Tune: Pelatihan Terdistribusi dan Penyetelan Hiperparameter Sebagian besar proyek machine learning dimul...

    Tutorial OpenCV + Deep Learning: Image Processing Modern dengan Python

    OpenCV + Deep Learning: Tutorial Komprehensif Daftar Isi Pendahuluan Prasyarat Dasar-Dasar Preprocessing Gambar [T...

    Tutorial Lengkap Hugging Face Transformers: NLP Modern dengan Python

    Tutorial Lengkap Hugging Face Transformers: Pretrained Models untuk NLP dan Vision Hugging Face Transformers adalah libr...

    Tutorial Lengkap Ultralytics: Object Detection dengan YOLO

    Tutorial Lengkap Ultralytics: Object Detection dengan YOLO Ultralytics adalah framework Python yang menyediakan implemen...