Enhavtabelo[Kaŝi][Montri]
La profundaj lernadoteknikoj konataj kiel "grafeaj neŭralaj retoj" (GNNoj) funkcias en la grafika domajno. Ĉi tiuj retoj lastatempe trovis uzon en diversaj kampoj, inkluzive de komputila vizio, rekomendaj sistemoj kaj kombineca optimumigo, por nomi kelkajn.
Krome, ĉi tiuj retoj povas esti uzataj por reprezenti kompleksajn sistemojn, inkluzive de sociaj retoj, protein-proteinaj interagaj retoj, sciaj grafikaĵoj kaj aliaj en pluraj studkampoj.
La ne-eŭklida spaco estas kie grafikaj datumoj funkcias, kontraste al aliaj specoj de datumoj kiel bildoj. Por klasifiki nodojn, antaŭdiri ligilojn kaj aretdatenojn, grafikanalizo estas uzata.
En ĉi tiu artikolo, ni ekzamenos la Grafikon neural Reto en detalo, ĝiaj tipoj, same kiel provizi praktikajn ekzemplojn uzante PyTorch.
Do, kio estas Graph?
Grafeo estas speco de datumstrukturo formita de nodoj kaj verticoj. La ligoj inter la diversaj nodoj estas determinitaj per la verticoj. Se la direkto estas indikita en la nodoj, la grafeo laŭdire estas direktita; alie, ĝi estas nedirektita.
Bona apliko de grafeoj estas modeligado de la rilatoj inter diversaj individuoj en a socia reto. Kiam vi traktas kompleksajn cirkonstancojn, kiel ligilojn kaj interŝanĝojn, grafikaĵoj estas tre helpemaj.
Ili estas uzataj de rekomendaj sistemoj, semantika analizo, analizo de sociaj retoj kaj padronrekono
. Krei grafe-bazitajn solvojn estas tute nova kampo, kiu ofertas kompreneman komprenon de kompleksaj kaj interrilataj datumoj.
Grafika Neŭrala Reto
Grafikaj neŭralaj retoj estas specialecaj neŭralaj retoj, kiuj povas funkcii per grafika datenformato. Grafika enkonstruado kaj konvoluciaj neŭralaj retoj (CNNoj) havas signifan efikon al ili.
Grafikaj Neŭralaj Retoj estas uzataj en taskoj, kiuj inkluzivas antaŭdiri nodojn, randojn kaj grafeojn.
- CNN estas uzataj por klasifiki bildojn. Simile, por antaŭdiri klason, GNNoj estas aplikitaj al la piksela krado kiu reprezentas la grafeostrukturon.
- Tekstokategoriado uzante ripetiĝajn neŭralaj retoj. GNNoj ankaŭ estas uzitaj kun grafearkitekturoj kie ĉiu vorto en frazo estas nodo.
Por prognozi nodojn, randojn aŭ kompletajn grafeojn, neŭralaj retoj estas uzataj por krei GNNojn. Antaŭdiro ĉe la nodnivelo, ekzemple, povas solvi problemon kiel spamdetekto.
Ligprognozo estas tipa kazo en rekomendadsistemoj kaj povus esti ekzemplo de rand-saĝa prognoza problemo.
Grafiko de Tipoj de Neŭralaj Retoj
Multaj neŭralaj retoj ekzistas, kaj Konvoluciaj Neŭralaj Retoj ĉeestas en la plimulto de ili. Ni lernos pri la plej konataj GNN-oj en ĉi tiu parto.
Grafikaj Konvoluciaj Retoj (GCNoj)
Ili estas kompareblaj al klasikaj CNN-oj. Ĝi akiras karakterizaĵojn rigardante proksimajn nodojn. La aktivigfunkcio estas uzita de GNNoj por aldoni ne-linearecon post agregado de nodvektoroj kaj sendado de la produktaĵo al la densa tavolo.
Ĝi konsistas el Graph-konvolucio, linia tavolo, kaj ne-lernanta aktiviga funkcio, en esenco. GCNoj venas en du ĉefaj varioj: Spectral Convolutional Networks kaj Spatial Convolutional Networks.
Grafiku Aŭto-Kodigilon Retoj
Ĝi uzas kodilon por lerni kiel reprezenti grafeojn kaj malĉifrilon por provi rekonstrui enigajn grafeojn. Estas botelkolo-tavolo liganta la kodilon kaj malĉifrilon.
Ĉar aŭtomataj kodiloj faras bonegan laboron pri traktado de klasa ekvilibro, ili estas ofte uzataj en ligprognozo.
Ripetantaj Grafikaj Neŭralaj Retoj (RGNNoj)
En plurrilataj retoj, kie ununura nodo havas multajn rilatojn, ĝi lernas la optimuman difuzpadronon kaj povas administri la grafeojn. Por pliigi glatecon kaj redukti tro-parametriigon, reguligiloj estas uzataj en ĉi tiu formo de grafea neŭrala reto.
Por akiri pli bonajn rezultojn, RGNNoj postulas malpli da pretigpovo. Ili estas uzataj por tekstogenerado, parolrekono, maŝintradukado, bildpriskribo, videetikedado kaj teksta resumo.
Enirigitaj Neŭralaj Grafikaj Retoj (GGNNoj)
Kiam temas pri longdaŭraj dependaj taskoj, ili superas RGNNojn. Inkluzivante nodojn, randajn kaj tempajn pordegojn sur longperspektivaj dependecoj, enirigitaj grafeaj neŭralaj retoj plibonigas ripetiĝantajn grafeajn neŭralajn retojn.
La pordegoj funkcias simile al Gated Recurrent Units (GRUoj) ĉar ili kutimas memori kaj forgesi datenojn en diversaj stadioj.
Efektivigo de Graph Neural Network uzante Pytorch
La specifa afero, pri kiu ni fokusiĝos, estas ofta noda kategoriigproblemo. Ni havas konsiderindan socian reton nomatan musae-github, kiu estis kompilita de la malferma API, por GitHub-programistoj.
Randoj montras la reciprokaj sekvanto-rilatoj inter la nodoj, kiuj reprezentas programistojn (platformuzantoj) kiuj ĉefrolis en almenaŭ 10 deponejoj (notu ke la vorto reciproka indikas nedirektan rilaton).
Surbaze de la loko de la nodo, stelitaj deponejoj, dunganto kaj retadreso, nodo-karakterizaĵoj estas prenitaj. Antaŭdiri ĉu GitHub-uzanto estas retejo-programisto aŭ a programisto pri maŝinlernado estas nia tasko.
La labortitolo de ĉiu uzanto servis kiel bazo por ĉi tiu cela funkcio.
Instalante PyTorch
Por komenci, ni unue devas instali PyTorch. Vi povas agordi ĝin laŭ via maŝino de tie. Jen la mia:
Importi modulojn
Nun ni importas la necesajn modulojn
Importi kaj Esplori la datumojn
La sekva paŝo estas legi la datumojn kaj grafiki la unuajn kvin vicojn kaj la lastajn kvin vicojn el la etikeda dosiero.
Nur du el la kvar kolumnoj—la id de la nodo (t.e., uzanto) kaj ml_target, kiu estas 1 se la uzanto estas membro de la maŝinlernado komunumo kaj 0 alie—estas rilataj al ni en ĉi tiu situacio.
Konsiderante ke ekzistas nur du klasoj, ni nun povas esti certaj ke nia tasko estas binara klasifika afero.
Kiel rezulto de signifaj klasmalekvilibroj, la klasigilo povas ĵus supozi kiu klaso estas la plimulto prefere ol taksado de la subreprezentita klaso, igante klasekvilibron alia decida faktoro por pripensi.
Grafikante la histogramon (frekvenca distribuo) malkaŝas iun malekvilibron ĉar estas malpli da klasoj de maŝinlernado (etikedo=1) ol de la aliaj klasoj.
Karakterizaĵa Kodado
La karakterizaĵoj de la nodoj informas nin pri la trajto kiu estas asociita kun ĉiu nodo. Realigante nian metodon por kodi datumojn, ni povas tuj kodi tiujn trajtojn.
Ni volas uzi ĉi tiun metodon por enkapsuligi malgrandan parton de la reto (diru, 60 nodoj) por montri. La kodo estas listigita ĉi tie.
Desegni kaj montri grafikaĵojn
Ni uzos torĉon geometrian. datumoj por konstrui nian grafeon.
Por modeligi ununuran grafeon kun malsamaj (laŭvolaj) trajtoj, datumoj kiuj estas simpla Python-objekto estas uzataj. Uzante ĉi tiun klason kaj la sekvajn atributojn - ĉiuj el kiuj estas torĉaj tensoro - ni kreos nian grafikan objekton.
La formo de la valoro x, kiu estos asignita al la koditaj nodaj trajtoj, estas [nombro da nodoj, nombro da trajtoj].
La formo de y estas [nombro da nodoj], kaj ĝi estos aplikita al la nodaj etikedoj.
randindekson: Por priskribi nedirektan grafeon, ni devas vastigi la originajn randindeksojn por permesi la ekziston de du apartaj direktitaj randoj kiuj ligas la samajn du nodojn sed indikas en kontraŭaj direktoj.
Paro da randoj, unu indikanta de nodo 100 ĝis 200 kaj la alia de 200 ĝis 100, estas postulata, ekzemple, inter nodoj 100 kaj 200. Se la randindeksoj estas disponigitaj, tiam jen kiel la nedirektita grafeo povas esti reprezentita. [2,2*nombro de originalaj randoj] estos la tensora formo.
Ni kreas nian desegnan grafikan metodon por montri grafikaĵon. La unua paŝo estas transformi nian homogenan reton en NetworkX-grafikon, kiu tiam povas esti desegnita per NetworkX.draw.
Faru nian GNN-modelon kaj trejnu ĝin
Ni komencas kodi la tutan aron de datumoj per ekzekuto de kodigi datumojn per light=False kaj poste nomante konstrui grafeon per light=False por konstrui la tutan grafeon. Ni ne provos desegni ĉi tiun grandan grafeon ĉar mi supozas, ke vi uzas lokan maŝinon kiu havas limigitajn rimedojn.
Maskoj, kiuj estas binaraj vektoroj kiuj identigas kiuj nodoj apartenas al ĉiu specifa masko uzante la ciferojn 0 kaj 1, povas esti uzitaj por sciigi la trejnadfazon kiuj nodoj devus esti inkluditaj dum trejnado kaj por rakonti al la inferenca fazo kiuj nodoj estas la testdatenoj. Torĉo geometria.transformas.
Nodnivela disigo povas esti aldonita uzante la trejnadmaskon, val-maskon kaj testajn maskojn de la klaso AddTrainValTestMask, kiu povas esti uzata por preni grafeon kaj ebligi al ni specifi kiel ni volas, ke niaj maskoj estu konstruitaj.
Ni nur uzas 10% por trejnado kaj uzas 60% de la datumoj kiel la testaron dum ni uzas 30% kiel la validumaron.
Nun ni stakos du GCNConv-tavolojn, la unua el kiuj havas eligan kalkulon de tio egalas al la nombro da funkcioj en nia grafeo kiel enigo-trajtoj.
En la dua tavolo, kiu enhavas eligajn nodojn egalajn al la nombro de niaj klasoj, ni aplikas relu-aktivigan funkcion kaj provizas la latentajn trajtojn.
Randa indekso kaj randa pezo estas du el la multaj opcioj x kiujn GCNConv povas akcepti en la antaŭa funkcio, sed en nia situacio, ni bezonas nur la unuajn du variablojn.
Malgraŭ la fakto, ke nia modelo povos antaŭdiri la klason de ĉiu nodo en la grafeo, ni ankoraŭ bezonas determini la precizecon kaj perdon por ĉiu aro aparte depende de la fazo.
Ekzemple, dum trejnado, ni volas nur uzi la trejnan aron por determini la precizecon kaj trejnan perdon, kaj tial ĉi tie utilas niaj maskoj.
Por kalkuli la taŭgan perdon kaj precizecon, ni difinos la funkciojn de maskita perdo kaj maskita precizeco.
Trejnante la modelon
Nun kiam ni difinis la trejnan celon, por kiu la torĉo estos uzata. Adamo estas majstra optimumiganto.
Ni faros la trejnadon por certa nombro da epokoj, observante la validigan precizecon.
Ni ankaŭ kalkulas la perdojn kaj precizecojn de la trejnado tra malsamaj epokoj.
Malavantaĝoj de Graph Neural Network
Uzado de GNN-oj havas kelkajn malavantaĝojn. Kiam uzi GNNa kaj kiel plibonigi la agadon de niaj maŝinlernado-modeloj, estos ambaŭ klarigitaj al ni post kiam ni pli bone komprenos ilin.
- Dum GNNoj estas malprofundaj retoj, tipe kun tri tavoloj, plej multaj neŭralaj retoj povas profundiĝi por plibonigi rendimenton. Pro ĉi tiu limigo ni ne kapablas agadi ĉe la avangardo pri grandaj datumaj aroj.
- Estas pli malfacile trejni modelon pri grafeoj, ĉar ilia struktura dinamiko estas dinamika.
- Pro la altaj komputilkostoj de tiuj retoj, grimpi la modelon por produktado prezentas defiojn. Skali la GNN-ojn por produktado estos malfacila se via grafika strukturo estas grandega kaj komplika.
konkludo
Dum la lastaj jaroj, GNN-oj evoluis al potencaj kaj efikaj iloj por maŝinlernado-problemoj en la grafika domajno. Fundamenta superrigardo de grafeaj neŭralaj retoj estas donita en ĉi tiu artikolo.
Post tio, vi povas komenci krei la datumaron, kiu estos uzata por trejni kaj testi la modelon. Por kompreni kiel ĝi funkcias kaj kion ĝi kapablas, vi ankaŭ povas iri multe pli malproksimen kaj trejni ĝin per malsama speco de datumaro.
Feliĉan Kodigon!
Lasi Respondon