Bab lan Paragraf[Singidaken][Tampilake]
Teknik sinau jero sing dikenal minangka "jaringan saraf grafik" (GNNs) beroperasi ing domain grafik. Jaringan kasebut bubar ditemokake digunakake ing macem-macem lapangan, kalebu visi komputer, sistem rekomendasi, lan optimasi gabungan, kanggo sawetara jeneng.
Kajaba iku, jaringan kasebut bisa digunakake kanggo makili sistem sing kompleks, kalebu jaringan sosial, jaringan interaksi protein-protein, grafik pengetahuan, lan liya-liyane ing sawetara bidang studi.
Spasi non-euclidean minangka papan data grafik, beda karo jinis data liyane kaya gambar. Kanggo nggolongake simpul, prediksi pranala, lan data kluster, analisis grafik digunakake.
Ing artikel iki, kita bakal nliti Graph Network Syaraf rinci, jinis sawijining, uga menehi conto praktis nggunakake PyTorch.
Dadi, apa Graph?
Grafik minangka jinis struktur data sing dumadi saka simpul lan simpul. Sambungan antarane macem-macem node ditemtokake dening vertex. Yen arah dituduhake ing simpul, grafik kasebut bakal diarahake; digunakake, iku undirected.
Aplikasi grafik sing apik yaiku nggawe model hubungan antarane macem-macem individu ing a jaringan sosial. Nalika nangani kahanan rumit, kayata pranala lan ijol-ijolan, grafik banget mbiyantu.
Dheweke digunakake dening sistem rekomendasi, analisis semantik, analisis jaringan sosial, lan pangenalan pola
. Nggawe solusi adhedhasar grafik minangka lapangan anyar sing menehi pangerten babagan data sing kompleks lan saling gegandhengan.
Grafik Jaringan Syaraf
Jaringan syaraf grafik minangka jinis jaringan syaraf khusus sing bisa digunakake ing format data grafik. Embedding grafik lan jaringan saraf convolutional (CNN) duwe pengaruh sing signifikan.
Graph Neural Networks digunakake ing tugas sing kalebu prediksi node, pinggir, lan grafik.
- CNN digunakake kanggo klasifikasi gambar. Kajaba iku, kanggo prédhiksi kelas, GNN ditrapake ing kothak piksel sing makili struktur grafik.
- Kategorisasi teks nggunakake jaringan syaraf ambalan. GNN uga digunakake karo arsitektur grafik ing ngendi saben tembung ing frasa minangka simpul.
Kanggo ramalan simpul, pinggir, utawa grafik lengkap, jaringan saraf digunakake kanggo nggawe GNN. Prediksi ing tingkat simpul, umpamane, bisa ngrampungake masalah kaya deteksi spam.
Prediksi link minangka kasus khas ing sistem rekomendasi lan bisa uga minangka conto masalah prediksi sing wicaksana.
Jinis-jinis Neural Network Grafik
Akeh jinis jaringan saraf ana, lan Convolutional Neural Networks ana ing mayoritas. Kita bakal sinau babagan GNN sing paling kondhang ing bagean iki.
Graph Convolutional Networks (GCNs)
Padha bisa dibandhingake karo CNN klasik. Iki entuk karakteristik kanthi ndeleng simpul sing cedhak. Fungsi aktivasi digunakake dening GNN kanggo nambah non-linearitas sawise nglumpukake vektor simpul lan ngirim output menyang lapisan kandhel.
Iki digawe saka konvolusi Graph, lapisan linear, lan fungsi aktivasi non-pelajar, ing intine. GCN kasedhiya ing rong jinis utama: Jaringan Konvolusi Spektral lan Jaringan Konvolusi Spasial.
Jaringan Auto-Encoder Grafik
Iki nggunakake encoder kanggo mangerteni carane makili grafik lan dekoder kanggo nyoba mbangun maneh grafik input. Ana lapisan bottleneck sing nyambungake encoder lan decoder.
Wiwit encoder otomatis nindakake tugas sing apik kanggo nangani keseimbangan kelas, mula asring digunakake ing prediksi link.
Recurrent Graph Neural Networks (RGNNs)
Ing jaringan multi-relasional, ing ngendi simpul siji nduweni akeh hubungan, sinau pola difusi optimal lan bisa ngatur grafik. Kanggo nambah kelancaran lan nyuda over-parameterisasi, regularizer digunakake ing jaringan saraf grafik iki.
Kanggo entuk asil sing luwih apik, RGNN mbutuhake daya pangolahan sing kurang. Iki digunakake kanggo nggawe teks, pangenalan wicara, terjemahan mesin, deskripsi gambar, menehi tag video, lan ringkesan teks.
Gated Neural Graph Networks (GGNNs)
Nalika nerangake tugas gumantung long-term, padha outperform RGNNs. Kanthi nyakup gerbang simpul, pinggir, lan temporal ing dependensi jangka panjang, jaringan saraf grafik gated ningkatake jaringan saraf grafik berulang.
Fungsi gerbang kasebut padha karo Unit Recurrent Gated (GRU) amarga digunakake kanggo ngeling-eling lan lali data ing macem-macem tahapan.
Implementasi Graph Neural Network nggunakake Pytorch
Masalah khusus sing bakal kita fokusake yaiku masalah kategorisasi simpul umum. Kita duwe jaringan sosial sing cukup gedhe sing diarani musae-github, sing dikompilasi saka API mbukak, kanggo pangembang GitHub.
Pinggir nuduhake hubungan panyengkuyung ing antarane simpul, sing makili pangembang (pangguna platform) sing wis mbintangi paling sethithik 10 repositori (cathetan yen tembung mutual nuduhake hubungan sing ora diarahake).
Adhedhasar lokasi simpul, repositori sing dibintangi, majikan, lan alamat email, karakteristik simpul dijupuk. Prediksi yen pangguna GitHub minangka pangembang web utawa a pangembang machine learning iku tugas kita.
Judhul proyek saben pangguna dadi basis kanggo fungsi nargetake iki.
Nginstal PyTorch
Kanggo miwiti, kita kudu nginstal PyTorch. Sampeyan bisa ngatur miturut mesin saka kene. Punika kula:
Ngimpor modul
Saiki, kita ngimpor modul sing dibutuhake
Ngimpor lan Njelajah data
Langkah ing ngisor iki yaiku maca data lan ngrancang limang baris pisanan lan limang baris pungkasan saka file label.
Mung loro saka patang kolom - id simpul (yaiku, pangguna) lan ml_target, yaiku 1 yen pangguna minangka anggota komunitas learning machine lan 0 liyane - cocog kanggo kita ing kahanan iki.
Amarga mung ana rong kelas, saiki kita bisa yakin manawa tugas kita minangka masalah klasifikasi binar.
Minangka asil saka imbalances kelas wujud, classifier mung bisa nganggep kelas kang mayoritas tinimbang ngevaluasi kelas underrepresented, nggawe imbangan kelas liyane faktor wigati kanggo nimbang.
Ngrancang histogram (distribusi frekuensi) nuduhake sawetara ora seimbang amarga ana kelas sing luwih sithik saka machine learning (label=1) tinimbang saka kelas liyane.
Fitur Encoding
Karakteristik node menehi informasi babagan fitur sing ana gandhengane karo saben simpul. Kanthi ngetrapake metode kanggo ngode data, kita bisa langsung ngode karakteristik kasebut.
Kita pengin nggunakake cara iki kanggo encapsulate bagean cilik saka jaringan (omong, 60 kelenjar) kanggo tampilan. Kode kasebut kadhaptar ing kene.
Ngrancang lan nampilake grafik
Kita bakal nggunakake obor geometris. data kanggo mbangun grafik kita.
Kanggo model grafik siji karo beda (opsional) sifat, data sing obyek Python prasaja digunakake. Kanthi nggunakake kelas iki lan atribut ing ngisor iki - kabeh minangka tensor obor - kita bakal nggawe obyek grafik.
Wangun nilai x, sing bakal dialokasikan kanggo fitur simpul sing dienkode, yaiku [jumlah simpul, jumlah fitur].
Wangun y yaiku [jumlah simpul], lan bakal ditrapake ing label simpul.
indeks pinggiran: Supaya kanggo njlèntrèhaké graph undirected, kita kudu nggedhekake indeks pinggiran asli supaya ngidini kanggo orane loro sudhut diarahake béda sing nyambung loro kelenjar padha nanging titik ing arah ngelawan.
Sepasang pinggiran, siji nunjuk saka simpul 100 kanggo 200 lan liyane saka 200 kanggo 100, dibutuhake, contone, antarane simpul 100 lan 200. Yen indeks pinggiran kasedhiya, banjur iki carane graph undirected bisa dituduhake. [2,2*jumlah pinggiran asli] bakal dadi wangun tensor.
Kita nggawe cara grafik gambar kanggo nampilake grafik. Langkah pisanan yaiku ngowahi jaringan homogen dadi grafik NetworkX, sing banjur bisa digambar nggunakake NetworkX.draw.
Nggawe model GNN kita lan nglatih
Kita miwiti kanthi ngodhe kabeh set data kanthi ngeksekusi data encode nganggo cahya=False banjur nelpon construct graph karo cahya=False kanggo mbangun kabeh grafik. Kita ora bakal nyoba nggambar grafik gedhe iki amarga aku ngira sampeyan nggunakake mesin lokal sing duwe sumber daya winates.
Topeng, yaiku vektor binar sing ngenali simpul endi sing ana ing saben topeng tartamtu kanthi nggunakake angka 0 lan 1, bisa digunakake kanggo menehi kabar ing tahap latihan simpul sing kudu dilebokake sajrone latihan lan kanggo ngandhani fase inferensi sing simpul minangka data tes. Obor geometric.transforms.
Pemisahan tingkat simpul bisa ditambahake nggunakake topeng latihan, topeng val, lan sifat topeng test saka kelas AddTrainValTestMask, sing bisa digunakake kanggo njupuk grafik lan ngidini kita nemtokake cara nggawe topeng kita.
Kita mung nggunakake 10% kanggo latihan lan nggunakake 60% data minangka set test nalika nggunakake 30% minangka set validasi.
Saiki, kita bakal numpuk rong lapisan GCNConv, sing pisanan duwe jumlah fitur output sing padha karo jumlah fitur ing grafik kita minangka fitur input.
Ing lapisan kapindho, sing ngemot kelenjar output sing padha karo jumlah kelas kita, kita nggunakake fungsi aktivasi relu lan nyedhiyakake fitur laten.
Indeks pinggiran lan bobot pinggiran minangka rong pilihan x sing bisa ditampa GCNConv ing fungsi maju, nanging ing kahanan kita, kita mung butuh rong variabel pisanan.
Senadyan kasunyatan manawa model kita bakal bisa prédhiksi kelas saben simpul ing grafik, kita isih kudu nemtokake akurasi lan mundhut kanggo saben set kanthi kapisah gumantung saka fase kasebut.
Umpamane, sajrone latihan, kita mung pengin nggunakake set latihan kanggo nemtokake akurasi lan mundhut latihan, lan mulane topeng iki migunani.
Kanggo ngetung kerugian lan akurasi sing cocog, kita bakal nemtokake fungsi mundhut topeng lan akurasi topeng.
Nglatih model
Saiki kita wis nemtokake tujuan latihan sing bakal digunakake obor. Adam minangka master optimizer.
Kita bakal nganakake latihan kanggo sawetara jaman nalika ngawasi akurasi validasi.
Kita uga ngrancang kerugian lan akurasi latihan sajrone macem-macem jaman.
Kekurangan Graph Neural Network
Nggunakake GNN duwe sawetara kekurangan. Nalika nggunakake GNNa lan carane nambah kinerja model machine learning kita bakal digawe cetha kanggo kita sawise kita duwe pangerten sing luwih apik.
- Nalika GNN minangka jaringan cethek, biasane kanthi telung lapisan, umume jaringan saraf bisa luwih jero kanggo nambah kinerja. Kita ora bisa nindakake ing pinggiran nglereni ing dataset gedhe amarga watesan iki.
- Luwih angel nglatih model babagan grafik, amarga dinamika strukture dinamis.
- Amarga biaya komputasi sing dhuwur saka jaringan kasebut, skala model kanggo produksi menehi tantangan. Scaling GNN kanggo produksi bakal dadi tantangan yen struktur grafik sampeyan gedhe lan rumit.
kesimpulan
Ing sawetara taun kepungkur, GNN wis berkembang dadi alat sing kuat lan efektif kanggo masalah machine learning ing domain grafik. Ringkesan dhasar babagan jaringan saraf grafik diwenehi ing artikel iki.
Sawise iku, sampeyan bisa miwiti nggawe dataset sing bakal digunakake kanggo nglatih lan nguji model kasebut. Kanggo ngerti carane fungsi lan apa iku saged, sampeyan uga bisa pindhah luwih adoh lan nglatih nggunakake macem-macem dataset.
Seneng Coding!
Ninggalake a Reply