Jadual Kandungan[Sembunyi][Tunjukkan]
Teknik pembelajaran mendalam yang dikenali sebagai "rangkaian neural graf" (GNN) beroperasi dalam domain graf. Rangkaian ini baru-baru ini didapati digunakan dalam pelbagai bidang, termasuk penglihatan komputer, sistem pengesyor dan pengoptimuman gabungan, untuk menamakan beberapa.
Selain itu, rangkaian ini boleh digunakan untuk mewakili sistem yang kompleks, termasuk rangkaian sosial, rangkaian interaksi protein-protein, graf pengetahuan dan lain-lain dalam beberapa bidang pengajian.
Ruang bukan euclidean ialah tempat data graf beroperasi, berbeza dengan jenis data lain seperti gambar. Untuk mengelaskan nod, meramalkan pautan, dan data kelompok, analisis graf digunakan.
Dalam artikel ini, kita akan mengkaji Graf Rangkaian neural secara terperinci, jenisnya, serta memberikan contoh praktikal menggunakan PyTorch.
Jadi, apakah itu Graf?
Graf ialah sejenis struktur data yang terdiri daripada nod dan bucu. Sambungan antara pelbagai nod ditentukan oleh bucu. Jika arah ditunjukkan dalam nod, graf dikatakan diarahkan; jika tidak, ia tidak terarah.
Aplikasi graf yang baik ialah memodelkan hubungan antara pelbagai individu dalam a rangkaian sosial. Apabila berhadapan dengan keadaan yang kompleks, seperti pautan dan pertukaran, graf sangat membantu.
Mereka digunakan oleh sistem pengesyoran, analisis semantik, analisis rangkaian sosial, dan pengecaman corak
. Mencipta penyelesaian berasaskan graf ialah medan serba baharu yang menawarkan pemahaman mendalam tentang data yang kompleks dan saling berkaitan.
Rangkaian Neural Graf
Rangkaian saraf graf ialah jenis rangkaian saraf khusus yang boleh beroperasi pada format data graf. Pembenaman graf dan rangkaian neural convolutional (CNN) mempunyai kesan yang ketara ke atasnya.
Rangkaian Neural Graf digunakan dalam tugas yang termasuk meramalkan nod, tepi dan graf.
- CNN digunakan untuk mengklasifikasikan imej. Begitu juga, untuk meramalkan kelas, GNN digunakan pada grid piksel yang mewakili struktur graf.
- Pengkategorian teks menggunakan rangkaian saraf berulang. GNN juga digunakan dengan seni bina graf di mana setiap perkataan dalam frasa ialah nod.
Untuk meramalkan nod, tepi atau graf lengkap, rangkaian saraf digunakan untuk mencipta GNN. Ramalan pada peringkat nod, misalnya, boleh menyelesaikan masalah seperti pengesanan spam.
Ramalan pautan ialah kes biasa dalam sistem pengesyor dan mungkin merupakan contoh masalah ramalan tepi.
Jenis Rangkaian Neural Graf
Banyak jenis rangkaian saraf wujud, dan Rangkaian Neural Konvolusi terdapat dalam kebanyakannya. Kami akan mempelajari tentang GNN yang paling terkenal dalam bahagian ini.
Rangkaian Konvolusi Graf (GCN)
Mereka setanding dengan CNN klasik. Ia memperoleh ciri dengan melihat nod berdekatan. Fungsi pengaktifan digunakan oleh GNN untuk menambah bukan linear selepas mengagregatkan vektor nod dan menghantar output ke lapisan padat.
Ia terdiri daripada lilitan Graf, lapisan linear, dan fungsi pengaktifan bukan pelajar, pada dasarnya. GCN terdapat dalam dua jenis utama: Rangkaian Konvolusi Spektrum dan Rangkaian Konvolusi Spatial.
Rangkaian Auto-Pengekod Graf
Ia menggunakan pengekod untuk mempelajari cara mewakili graf dan penyahkod untuk cuba membina semula graf input. Terdapat lapisan bottleneck yang menghubungkan pengekod dan penyahkod.
Memandangkan pengekod automatik melakukan tugas yang sangat baik dalam mengendalikan baki kelas, ia kerap digunakan dalam ramalan pautan.
Rangkaian Neural Graf Berulang (RGNN)
Dalam rangkaian berbilang perhubungan, di mana satu nod mempunyai banyak hubungan, ia mempelajari corak resapan yang optimum dan boleh mengurus graf. Untuk meningkatkan kelancaran dan mengurangkan penparameteran berlebihan, penyelaras digunakan dalam bentuk rangkaian saraf graf ini.
Untuk mendapatkan hasil yang lebih baik, RGNN memerlukan kuasa pemprosesan yang kurang. Ia digunakan untuk penjanaan teks, pengecaman pertuturan, terjemahan mesin, penerangan gambar, penandaan video dan ringkasan teks.
Rangkaian Graf Neural Berpagar (GGNN)
Apabila ia datang kepada tugas bergantung jangka panjang, mereka mengatasi RGNN. Dengan memasukkan get nod, edge dan temporal pada kebergantungan jangka panjang, rangkaian saraf graf berpagar meningkatkan rangkaian saraf graf berulang.
Gerbang berfungsi sama dengan Unit Berulang Berpagar (GRU) kerana ia digunakan untuk mengingat dan melupakan data dalam pelbagai peringkat.
Melaksanakan Rangkaian Neural Graf menggunakan Pytorch
Isu khusus yang akan kami fokuskan ialah isu pengkategorian nod biasa. Kami mempunyai rangkaian sosial yang besar dipanggil musae-github, yang telah disusun daripada API terbuka, untuk pembangun GitHub.
Tepi menunjukkan hubungan pengikut bersama antara nod, yang mewakili pembangun (pengguna platform) yang telah membintangi sekurang-kurangnya 10 repositori (perhatikan bahawa perkataan saling menunjukkan hubungan tidak terarah).
Berdasarkan lokasi nod, repositori berbintang, majikan dan alamat e-mel, ciri nod diambil semula. Meramalkan jika pengguna GitHub ialah pembangun web atau a pembangun pembelajaran mesin adalah tugas kita.
Tajuk kerja setiap pengguna berfungsi sebagai asas untuk fungsi penyasaran ini.
Memasang PyTorch
Untuk memulakan, kita perlu memasang terlebih dahulu PyTorch. Anda boleh mengkonfigurasinya mengikut mesin anda dari disini. Inilah saya:
Mengimport modul
Sekarang, kami mengimport modul yang diperlukan
Mengimport dan Meneroka data
Langkah berikut ialah membaca data dan plot lima baris pertama dan lima baris terakhir daripada fail label.
Hanya dua daripada empat lajur—id nod (iaitu, pengguna) dan ml_target, iaitu 1 jika pengguna ialah ahli komuniti pembelajaran mesin dan 0 sebaliknya—berkaitan dengan kami dalam situasi ini.
Memandangkan terdapat hanya dua kelas, kita kini boleh memastikan bahawa tugas kita ialah isu klasifikasi binari.
Akibat ketidakseimbangan kelas yang ketara, pengelas hanya boleh menganggap kelas mana yang merupakan majoriti daripada menilai kelas yang kurang diwakili, menjadikan keseimbangan kelas satu lagi faktor penting untuk dipertimbangkan.
Memplot histogram (taburan kekerapan) mendedahkan beberapa ketidakseimbangan kerana terdapat lebih sedikit kelas daripada pembelajaran mesin (label=1) berbanding daripada kelas lain.
Pengekodan Ciri
Ciri-ciri nod memberitahu kami tentang ciri yang dikaitkan dengan setiap nod. Dengan melaksanakan kaedah kami untuk mengekod data, kami boleh mengekod ciri tersebut dengan serta-merta.
Kami ingin menggunakan kaedah ini untuk merangkum sebahagian kecil rangkaian (katakan, 60 nod) untuk paparan. Kod tersebut disenaraikan di sini.
Mereka bentuk dan memaparkan graf
Kami akan menggunakan geometri obor. data untuk membina graf kami.
Untuk memodelkan graf tunggal dengan sifat (pilihan) berbeza, data yang merupakan objek Python mudah digunakan. Dengan menggunakan kelas ini dan atribut berikut—semuanya adalah tensor obor—kami akan mencipta objek graf kami.
Bentuk nilai x, yang akan diperuntukkan kepada ciri nod yang dikodkan, ialah [bilangan nod, bilangan ciri].
Bentuk y ialah [bilangan nod], dan ia akan digunakan pada label nod.
indeks tepi: Untuk menerangkan graf tidak terarah, kita perlu mengembangkan indeks tepi asal untuk membolehkan kewujudan dua tepi terarah berbeza yang menghubungkan dua nod yang sama tetapi menghala ke arah yang bertentangan.
Sepasang tepi, satu menunjuk dari nod 100 hingga 200 dan satu lagi dari 200 hingga 100, diperlukan, contohnya, antara nod 100 dan 200. Jika indeks tepi disediakan, maka beginilah cara graf tidak terarah boleh diwakili. [2,2*bilangan tepi asal] ialah bentuk tensor.
Kami mencipta kaedah graf lukis kami untuk memaparkan graf. Langkah pertama ialah mengubah rangkaian homogen kami menjadi graf NetworkX, yang kemudiannya boleh dilukis menggunakan NetworkX.draw.
Buat model GNN kami dan latihnya
Kita mulakan dengan mengekodkan keseluruhan set data dengan melaksanakan data pengekodan dengan light=False dan kemudian memanggil binaan graf dengan light=False untuk membina keseluruhan graf. Kami tidak akan cuba melukis graf besar ini kerana saya menganggap anda menggunakan mesin tempatan yang mempunyai sumber terhad.
Topeng, yang merupakan vektor perduaan yang mengenal pasti nod yang dimiliki oleh setiap topeng tertentu menggunakan digit 0 dan 1, boleh digunakan untuk memberitahu fasa latihan nod yang harus disertakan semasa latihan dan untuk memberitahu fasa inferens yang mana nod merupakan data ujian. Obor geometri.berubah.
Pemisahan tahap nod boleh ditambah menggunakan topeng latihan, topeng val dan sifat topeng ujian kelas AddTrainValTestMask, yang boleh digunakan untuk mengambil graf dan membolehkan kami menentukan cara kami mahu topeng kami dibina.
Kami hanya menggunakan 10% untuk latihan dan menggunakan 60% daripada data sebagai set ujian manakala menggunakan 30% sebagai set pengesahan.
Sekarang, kami akan menyusun dua lapisan GCNConv, yang pertama mempunyai kiraan ciri output yang sama dengan bilangan ciri dalam graf kami sebagai ciri input.
Dalam lapisan kedua, yang mengandungi nod keluaran yang sama dengan bilangan kelas kami, kami menggunakan fungsi pengaktifan relu dan membekalkan ciri terpendam.
Indeks tepi dan berat tepi ialah dua daripada banyak pilihan x yang GCNConv boleh terima dalam fungsi hadapan, tetapi dalam situasi kami, kami hanya memerlukan dua pembolehubah pertama.
Walaupun model kami akan dapat meramalkan kelas setiap nod dalam graf, kami masih perlu menentukan ketepatan dan kerugian untuk setiap set secara berasingan bergantung pada fasa.
Sebagai contoh, semasa latihan, kami hanya mahu menggunakan set latihan untuk menentukan ketepatan dan kehilangan latihan, dan oleh itu topeng kami berguna di sini.
Untuk mengira kehilangan dan ketepatan yang sesuai, kami akan mentakrifkan fungsi kehilangan bertopeng dan ketepatan bertopeng.
Melatih model
Sekarang kita telah menentukan tujuan latihan yang akan digunakan obor. Adam adalah pengoptimum utama.
Kami akan menjalankan latihan untuk beberapa zaman tertentu sambil memerhatikan ketepatan pengesahan.
Kami juga merancang kerugian dan ketepatan latihan sepanjang zaman yang berbeza.
Kelemahan Rangkaian Neural Graf
Menggunakan GNN mempunyai beberapa kelemahan. Masa untuk menggunakan GNNa dan cara meningkatkan prestasi model pembelajaran mesin kami akan dijelaskan kepada kami selepas kami memahaminya dengan lebih baik.
- Walaupun GNN adalah rangkaian cetek, biasanya dengan tiga lapisan, kebanyakan rangkaian saraf boleh pergi secara mendalam untuk meningkatkan prestasi. Kami tidak dapat menunjukkan prestasi yang canggih pada set data besar kerana had ini.
- Adalah lebih sukar untuk melatih model pada graf, kerana dinamik strukturnya adalah dinamik.
- Disebabkan oleh kos pengiraan yang tinggi bagi rangkaian ini, penskalaan model untuk pengeluaran memberikan cabaran. Penskalaan GNN untuk pengeluaran akan menjadi mencabar jika struktur graf anda besar dan rumit.
Kesimpulan
Sejak beberapa tahun lalu, GNN telah berkembang menjadi alat yang berkuasa dan berkesan untuk isu pembelajaran mesin dalam domain graf. Gambaran keseluruhan asas rangkaian saraf graf diberikan dalam artikel ini.
Selepas itu, anda boleh mula membuat set data yang akan digunakan untuk melatih dan menguji model. Untuk memahami cara ia berfungsi dan kemampuannya, anda juga boleh pergi lebih jauh dan melatihnya menggunakan jenis set data yang berbeza.
Selamat Pengkodan!
Sila tinggalkan balasan anda