Daptar eusi[Sumputkeun][Témbongkeun]
Téhnik diajar jero katelah "jaringan saraf grafik" (GNNs) beroperasi dina domain grafik. Jaringan ieu nembe mendakan dianggo dina sababaraha widang, kalebet visi komputer, sistem rekomendasi, sareng optimasi kombinatorial, kanggo sababaraha nami.
Sajaba ti éta, jaringan ieu bisa dipaké pikeun ngagambarkeun sistem kompléks, kaasup jaringan sosial, jaringan interaksi protéin-protéin, grafik pangaweruh, jeung sajabana dina sababaraha widang ulikan.
Rohangan non-euclidean mangrupa tempat data grafik beroperasi, kontras jeung tipe séjén data kawas gambar. Pikeun ngagolongkeun titik, ngaramalkeun tautan, sareng data klaster, analisis grafik dianggo.
Dina artikel ieu, urang bakal nalungtik Graph Network neural di jéntré, jenis na, kitu ogé nyadiakeun conto praktis ngagunakeun PyTorch.
Janten, naon éta Graph?
Grafik mangrupikeun jinis struktur data anu diwangun ku titik sareng titik. Hubungan antara rupa-rupa titik ditangtukeun ku simpul. Lamun arah dituduhkeun dina titik, grafik disebut diarahkeun; disebutkeun, éta undirected.
Aplikasi grafik anu hadé nyaéta modél hubungan antara sababaraha individu dina a jaringan sosial. Lamun kaayaan kaayaan kompléks, kayaning Tumbu na bursa, grafik pohara mantuan.
Aranjeunna dianggo ku sistem rekomendasi, analisis semantik, analisis jaringan sosial, sareng pangakuan pola
. Nyiptakeun solusi dumasar-grafik mangrupikeun médan énggal anu nawiskeun pamahaman anu lengkep ngeunaan data anu rumit sareng saling berhubungan.
Grafik Jaringan Neural
Jaringan neural grafik mangrupikeun jinis jaringan saraf khusus anu tiasa beroperasi dina format data grafik. Embedding grafik sareng jaringan neural convolutional (CNNs) gaduh dampak anu signifikan dina aranjeunna.
Graph Neural Networks dianggo dina tugas anu kalebet ngaramal titik, edges, sareng grafik.
- CNN dipaké pikeun mengklasifikasikan gambar. Nya kitu, pikeun ngaduga kelas, GNNs dilarapkeun ka grid piksel nu ngagambarkeun struktur grafik.
- Kategorisasi téks ngagunakeun jaringan saraf recurrence. GNN ogé dianggo sareng arsitéktur grafik dimana unggal kecap dina frasa mangrupikeun titik.
Pikeun ngaramal titik, edges, atawa grafik lengkep, jaringan saraf dipaké pikeun nyieun GNNs. Prediksi dina tingkat titik, contona, tiasa ngabéréskeun masalah sapertos deteksi spam.
Prediksi link mangrupikeun kasus umum dina sistem anu nyarankeun sareng tiasa janten conto masalah prediksi tepi.
Grafik Jinis Neural Network
Seueur jinis jaringan saraf aya, sareng Jaringan Neural Convolutional aya dina kalolobaanana. Urang bakal diajar ngeunaan GNN anu paling terkenal dina bagian ieu.
Graph Convolutional Networks (GCNs)
Aranjeunna dibandingkeun sareng CNN klasik. Ieu acquires ciri ku nempo titik caket dieu. Fungsi aktivasina dipaké ku GNNs pikeun nambahkeun non-linearity sanggeus aggregating véktor titik jeung ngirim kaluaran ka lapisan padet.
Éta diwangun ku Graph convolution, lapisan linier, sareng fungsi aktivasina non-learner, dina dasarna. GCNs aya dina dua jinis utama: Jaringan Konvolusional Spektral sareng Jaringan Konvolusional Spasi.
Grafik Jaringan Encoder Otomatis
Éta ngagunakeun encoder pikeun diajar kumaha ngagambarkeun grafik sareng decoder pikeun nyobian ngarekonstruksikeun grafik input. Aya lapisan bottleneck anu nyambungkeun encoder sareng decoder.
Kusabab encoder otomatis ngalakukeun padamelan anu saé pikeun ngatur kasaimbangan kelas, aranjeunna sering dianggo dina prediksi tautan.
Recurrent Graph Neural Networks (RGNNs)
Dina jaringan multi-relasional, dimana hiji titik gaduh seueur hubungan, éta diajar pola difusi optimal sareng tiasa ngatur grafik. Pikeun ningkatkeun kalancaran sareng ngirangan over-parameterization, pangaturan dianggo dina bentuk jaringan neural grafik ieu.
Pikeun kéngingkeun hasil anu langkung saé, RGNN ngabutuhkeun kakuatan ngolah anu kirang. Éta dianggo pikeun ngahasilkeun téks, pangakuan ucapan, tarjamahan mesin, déskripsi gambar, tagging pidéo, sareng kasimpulan téks.
Gated Neural Graph Networks (GGNNs)
Lamun datang ka tugas gumantung jangka panjang, aranjeunna outperform RGNNs. Ku ngalebetkeun titik, edge, sareng gerbang temporal dina katergantungan jangka panjang, jaringan saraf graph gated ningkatkeun jaringan neural grafik berulang.
Gerbang fungsina sami sareng Gated Recurrent Units (GRUs) sabab biasa ngémutan sareng mopohokeun data dina sababaraha tahapan.
Nerapkeun Graph Neural Network ngagunakeun Pytorch
Masalah khusus anu bakal urang fokuskeun nyaéta masalah categorization node umum. Kami ngagaduhan jaringan sosial anu ageung disebut musae-github, anu disusun tina API kabuka, pikeun pamekar GitHub.
Edges nembongkeun hubungan silih follower antara titik, nu ngagambarkeun pamekar (pamaké platform) anu geus dibéntangan dina sahanteuna 10 repositories (perhatikeun yén kecap silih nunjukkeun hubungan teu diarahkeun).
Dumasar kana lokasi node, repositori anu dibéntangan, dunungan, sareng alamat email, ciri node dicandak. Ngaramal upami pangguna GitHub mangrupikeun pamekar wéb atanapi a pamekar learning mesin mangrupa tugas urang.
Judul padamelan unggal pangguna janten dasar pikeun fungsi nargétkeun ieu.
Masang PyTorch
Pikeun ngawitan, urang kudu install PyTorch. Anjeun tiasa ngonpigurasikeun éta nurutkeun mesin anjeun tina Ieuh. Ieu milik kuring:
Impor modul
Ayeuna, urang ngimpor modul anu diperyogikeun
Ngimpor sareng Ngajalajah data
Léngkah di handap ieu nyaéta maca data sareng plot lima jajar kahiji sareng lima jajar panungtung tina file labél.
Ngan dua tina opat kolom-id titik urang (ie, pamaké) jeung ml_target, nu 1 lamun pamaké mangrupa anggota komunitas mesin learning jeung 0 disebutkeun-anu relevan pikeun urang dina situasi ieu.
Kusabab ngan ukur aya dua kelas, urang ayeuna tiasa mastikeun yén tugas urang mangrupikeun masalah klasifikasi binér.
Salaku hasil tina imbalances kelas signifikan, classifier ngan bisa nganggap kelas nu mayoritas tinimbang evaluating kelas underrepresented, nyieun kasaimbangan kelas faktor krusial séjén pikeun mertimbangkeun.
Plotting histogram (distribusi frékuénsi) nembongkeun sababaraha teu saimbangna sabab aya saeutik kelas tina mesin learning (label = 1) ti ti kelas séjén.
Encoding Fitur
Karakteristik titik ngawartosan urang ngeunaan fitur anu aya hubunganana sareng unggal titik. Ku ngalaksanakeun metodeu pikeun ngodekeun data, urang tiasa langsung ngodekeun ciri-ciri éta.
Urang rék ngagunakeun métode ieu encapsulate bagian leutik tina jaringan (sebutkeun, 60 titik) pikeun tampilan. Kodeu didaptarkeun di dieu.
Ngarancang jeung mintonkeun grafik
Urang bakal ngagunakeun obor geometric. data pikeun ngawangun grafik urang.
Pikeun model grafik tunggal kalawan sipat béda (opsional), dipaké data anu mangrupa obyék Python basajan. Ku ngagunakeun kelas ieu sareng atribut-atribut di handap ieu - sadayana mangrupikeun tensor obor - kami bakal nyiptakeun objek grafik urang.
Bentuk nilai x, anu bakal dialokasikeun kana fitur titik disandikeun, nyaéta [jumlah titik, jumlah fitur].
Bentuk y nyaéta [jumlah titik], sareng éta bakal diterapkeun kana labél titik.
indéks ujung: Dina raraga ngajelaskeun hiji grafik undirected, urang kudu dilegakeun indéks ujung aslina guna ngidinan pikeun ayana dua edges diarahkeun béda nu numbu dua titik sarua tapi nunjuk dina arah sabalikna.
Sapasang edges, hiji nunjuk ti titik 100 ka 200 jeung lianna ti 200 nepi ka 100, diperlukeun, misalna, antara titik 100 jeung 200. Lamun indéks ujung disadiakeun, teras ieu kumaha grafik undirected bisa digambarkeun. [2,2*jumlah sisi aslina] bakal bentuk tensor.
Urang nyieun metoda grafik draw urang pikeun mintonkeun grafik. Hambalan munggaran nyaéta transformasi jaringan homogen urang kana grafik NetworkX, nu lajeng bisa digambar maké NetworkX.draw.
Jieun model GNN urang jeung ngalatih eta
Urang mimitian ku encoding sakabeh set data ku executing encode data kalawan lampu = Palsu lajeng nelepon ngawangun grafik kalawan lampu = Palsu pikeun ngawangun sakabéh grafik. Kami moal nyobian ngagambar grafik ageung ieu kusabab kuring nyangka anjeun nganggo mesin lokal anu gaduh sumber terbatas.
Masker, nyaéta véktor binér anu ngaidentipikasi titik mana anu kagolong kana unggal topéng khusus nganggo angka 0 sareng 1, tiasa dianggo pikeun ngabéjaan fase latihan mana titik-titik anu kedah dilebetkeun nalika latihan sareng nyarioskeun fase inferensi mana titik-titik anu data tés. Obor geometric.transforms.
A pamisah titik-tingkat bisa ditambahkeun ngagunakeun masker latihan, topeng val, sarta sipat masker test tina kelas AddTrainValTestMask, nu bisa dipaké pikeun nyandak grafik tur ngamungkinkeun urang pikeun nangtukeun kumaha urang hayang masker urang diwangun.
Kami ngan ngagunakeun 10% pikeun latihan sareng nganggo 60% data salaku set tés bari nganggo 30% salaku set validasi.
Ayeuna, urang bakal tumpukan dua lapisan GCNConv, anu mimitina ngagaduhan jumlah fitur kaluaran anu sami sareng jumlah fitur dina grafik urang salaku fitur input.
Dina lapisan kadua, nu ngandung titik kaluaran sarua jeung jumlah kelas urang, urang nerapkeun fungsi aktivasina relu jeung nyadiakeun fitur laten.
Indéks ujung sareng beurat ujung mangrupikeun dua tina seueur pilihan x anu GCNConv tiasa nampi dina fungsi payun, tapi dina kaayaan urang, urang ngan ukur peryogi dua variabel anu munggaran.
Najan kanyataan yén modél urang bakal tiasa ngaduga kelas unggal titik dina grafik, urang masih kudu nangtukeun akurasi sarta leungitna pikeun tiap set misah gumantung kana fase.
Salaku conto, nalika latihan, urang ngan ukur hoyong ngagunakeun set latihan pikeun nangtukeun katepatan sareng leungitna palatihan, sareng ku kituna ieu tempat masker kami tiasa dianggo.
Pikeun ngitung karugian sareng akurasi anu pas, urang bakal ngartikeun fungsi leungitna masked sareng akurasi masked.
Ngalatih modél
Ayeuna urang parantos netepkeun tujuan latihan anu bakal dianggo obor. Adam nyaéta master optimizer.
Kami bakal ngalaksanakeun palatihan pikeun sajumlah jaman bari ngawaskeun akurasi validasi.
Kami ogé ngarencanakeun karugian sareng akurasi latihan sapanjang jaman anu béda.
Kelemahan Graph Neural Network
Ngagunakeun GNN boga sababaraha kalemahan. Iraha ngagunakeun GNNa sareng kumaha carana ningkatkeun kinerja model pembelajaran mesin urang bakal dijelaskeun ka urang saatos urang gaduh pamahaman anu langkung saé.
- Bari GNNs mangrupakeun jaringan deet, ilaharna mibanda tilu lapisan, paling jaringan saraf bisa balik jero pikeun ngaronjatkeun kinerja. Kami henteu tiasa ngalaksanakeun di ujung motong dina set data ageung kusabab watesan ieu.
- Éta langkung hese ngalatih modél dina grafik, sabab dinamika strukturna dinamis.
- Kusabab biaya komputasi luhur tina jaringan ieu, skala model pikeun produksi nampilkeun tantangan. Skala GNN pikeun produksi bakal nangtang upami struktur grafik anjeun ageung sareng rumit.
kacindekan
Dina sababaraha taun katukang, GNN parantos ngembangkeun janten alat anu kuat sareng mujarab pikeun masalah pembelajaran mesin dina domain grafik. Tinjauan dasar tina jaringan neural grafik dirumuskeun dina tulisan ieu.
Saatos éta, anjeun tiasa ngamimitian nyiptakeun set data anu bakal dianggo pikeun ngalatih sareng nguji modél. Pikeun ngartos kumaha fungsina sareng naon kamampuanana, anjeun ogé tiasa langkung tebih sareng ngalatihna nganggo set data anu béda.
Senang Coding!
Leave a Reply