Pregled sadržaja[Sakriti][Pokazati]
Tehnike dubokog učenja poznate kao "neuralne mreže grafa" (GNN) djeluju u domeni grafa. Te su mreže u posljednje vrijeme pronašle primjenu u raznim područjima, uključujući računalni vid, sustave preporuka i kombinatornu optimizaciju, da spomenemo samo neke.
Osim toga, te se mreže mogu koristiti za predstavljanje složenih sustava, uključujući društvene mreže, mreže protein-protein interakcije, grafikone znanja i druge u nekoliko polja studija.
Neeuklidski prostor je mjesto gdje podaci grafikona funkcioniraju, za razliku od drugih vrsta podataka poput slika. Kako bi se klasificirali čvorovi, predvidjeli veze i podaci klastera, koristi se analiza grafova.
U ovom ćemo članku ispitati grafikon Živčana mreža detaljno, njegove vrste, kao i pružiti praktične primjere korištenja PyTorcha.
Dakle, što je Graph?
Graf je vrsta podatkovne strukture koja se sastoji od čvorova i vrhova. Veze između različitih čvorova određene su vrhovima. Ako je smjer naznačen u čvorovima, kaže se da je graf usmjeren; inače je neusmjeren.
Dobra primjena grafova je modeliranje odnosa među različitim pojedincima u a društvena mreža. Kada se radi o složenim okolnostima, kao što su veze i razmjene, grafikoni su od velike pomoći.
Koriste ih sustavi preporuke, semantička analiza, analiza društvenih mreža i prepoznavanje uzoraka
. Stvaranje rješenja temeljenih na grafikonima potpuno je novo polje koje nudi pronicljivo razumijevanje složenih i međusobno povezanih podataka.
Grafička neuronska mreža
Grafičke neuronske mreže specijalizirane su vrste neuronskih mreža koje mogu raditi na formatu podataka grafikona. Ugrađivanje grafova i konvolucijske neuronske mreže (CNN) imaju značajan utjecaj na njih.
Neuralne mreže grafova koriste se u zadacima koji uključuju predviđanje čvorova, rubova i grafova.
- CNN-ovi se koriste za klasifikaciju slika. Slično, za predviđanje klase, GNN-ovi se primjenjuju na mrežu piksela koja predstavlja strukturu grafa.
- Kategorizacija teksta korištenjem ponavljajućih neuronskih mreža. GNN-ovi se također koriste s arhitekturama grafova gdje je svaka riječ u izrazu čvor.
Kako bi se predvidjeli čvorovi, rubovi ili potpuni grafovi, neuronske mreže se koriste za stvaranje GNN-ova. Predviđanje na razini čvora, na primjer, može riješiti problem poput otkrivanja neželjene pošte.
Predviđanje veza je tipičan slučaj u sustavima preporuka i može biti primjer problema predviđanja po rubu.
Grafikirajte vrste neuronskih mreža
Postoje brojne vrste neuronskih mreža, a konvolucijske neuronske mreže prisutne su u većini njih. U ovom ćemo dijelu naučiti o najpoznatijim GNN-ovima.
Grafičke konvolucijske mreže (GCN)
Usporedivi su s klasičnim CNN-ovima. Stječe karakteristike gledajući obližnje čvorove. Funkciju aktivacije koriste GNN-ovi za dodavanje nelinearnosti nakon agregiranja vektora čvorova i slanja izlaza u gusti sloj.
Sastoji se od konvolucije grafikona, linearnog sloja i aktivacijske funkcije koja nije učenik, u biti. GCN-ovi dolaze u dvije glavne varijante: spektralne konvolucijske mreže i prostorne konvolucijske mreže.
Grafičke mreže automatskog kodiranja
Koristi koder za učenje kako predstaviti grafikone i dekoder za pokušaj rekonstruiranja ulaznih grafikona. Postoji sloj uskog grla koji povezuje koder i dekoder.
Budući da automatski koderi rade izvrstan posao u upravljanju ravnotežom klasa, često se koriste u predviđanju veze.
Neuralne mreže ponavljajućeg grafikona (RGNN)
U multi-relacijskim mrežama, gdje jedan čvor ima brojne relacije, on uči optimalni obrazac difuzije i može upravljati grafovima. Kako bi se povećala glatkoća i smanjila prekomjerna parametrizacija, u ovom obliku neuronske mreže grafa koriste se regulatori.
Kako bi dobili bolje rezultate, RGNN-ovi zahtijevaju manje procesorske snage. Koriste se za generiranje teksta, prepoznavanje govora, strojno prevođenje, opis slike, označavanje videa i sažimanje teksta.
Gated Neural Graph Networks (GGNNs)
Kada je riječ o dugoročno ovisnim zadacima, oni nadmašuju RGNN-ove. Uključivanjem čvornih, rubnih i vremenskih vrata o dugoročnim ovisnostima, neuronske mreže grafova s usmjernicima poboljšavaju neuronske mreže rekurentnih grafova.
Vrata funkcioniraju slično Gated Recurrent Units (GRU) utoliko što se koriste za prisjećanje i zaboravljanje podataka u različitim fazama.
Implementacija graf neuronske mreže pomoću Pytorcha
Specifični problem na koji ćemo se usredotočiti je uobičajeni problem kategorizacije čvorova. Imamo pozamašnu društvenu mrežu tzv musae-github, koji je sastavljen iz otvorenog API-ja, za GitHub programere.
Rubovi pokazuju međusobne odnose sljedbenika između čvorova, koji predstavljaju programere (korisnike platforme) koji su glumili u najmanje 10 spremišta (imajte na umu da riječ uzajamno označava neusmjereni odnos).
Na temelju lokacije čvora, spremišta označenih zvjezdicom, poslodavca i adrese e-pošte, karakteristike čvora se dohvaćaju. Predviđanje je li korisnik GitHuba web programer ili a programer strojnog učenja je naš zadatak.
Naziv radnog mjesta svakog korisnika poslužio je kao osnova za ovu funkciju ciljanja.
Instaliranje PyTorcha
Za početak, prvo moramo instalirati PyTorch. Možete ga konfigurirati prema svom stroju iz ovdje. Evo moje:
Uvoz modula
Sada uvozimo potrebne module
Uvoz i istraživanje podataka
Sljedeći korak je čitanje podataka i iscrtavanje prvih pet redaka i zadnjih pet redaka iz datoteke oznaka.
Samo su dva od četiri stupca – id čvora (tj. korisnika) i ml_target, koji je 1 ako je korisnik član zajednice strojnog učenja, a 0 inače – relevantni za nas u ovoj situaciji.
S obzirom da postoje samo dvije klase, sada možemo biti sigurni da je naš zadatak pitanje binarne klasifikacije.
Kao rezultat značajnih klasnih neravnoteža, klasifikator može jednostavno pretpostaviti koja je klasa većina, umjesto da procjenjuje podzastupljenu klasu, čineći klasnu ravnotežu još jednim ključnim faktorom koji treba uzeti u obzir.
Iscrtavanje histograma (raspodjela učestalosti) otkriva određenu neravnotežu jer ima manje klasa iz strojnog učenja (oznaka=1) nego iz drugih klasa.
Kodiranje značajki
Karakteristike čvorova informiraju nas o svojstvu koje je povezano sa svakim čvorom. Implementacijom naše metode za kodiranje podataka, možemo trenutno kodirati te karakteristike.
Želimo upotrijebiti ovu metodu za enkapsulaciju malog dijela mreže (recimo, 60 čvorova) za prikaz. Kod je naveden ovdje.
Dizajniranje i prikazivanje grafikona
Koristit ćemo geometriju baklje. podataka za izradu našeg grafikona.
Za modeliranje jednog grafikona s različitim (neobaveznim) svojstvima koriste se podaci koji su jednostavni Python objekti. Korištenjem ove klase i sljedećih atributa—od kojih su svi torch tenzori—stvorit ćemo naš objekt grafikona.
Oblik vrijednosti x, koja će biti dodijeljena značajkama kodiranog čvora, je [broj čvorova, broj značajki].
Oblik y je [broj čvorova] i primijenit će se na oznake čvorova.
Indeks ruba: Kako bismo opisali neusmjereni graf, moramo proširiti izvorne indekse ruba kako bismo omogućili postojanje dva različita usmjerena ruba koji povezuju ista dva čvora, ali pokazuju u suprotnim smjerovima.
Par bridova, jedan koji pokazuje od čvora 100 do 200, a drugi od 200 do 100, potreban je, na primjer, između čvorova 100 i 200. Ako su navedeni indeksi rubova, onda je to način na koji se neusmjereni graf može prikazati. [2,2*broj izvornih rubova] bit će oblik tenzora.
Mi stvaramo našu metodu crtanja grafikona za prikaz grafikona. Prvi korak je transformirati našu homogenu mrežu u NetworkX graf, koji se zatim može nacrtati pomoću NetworkX.draw.
Napravite naš GNN model i obučite ga
Počinjemo s kodiranjem cijelog skupa podataka izvršavanjem encode podataka s light=False i zatim pozivanjem konstrukcijskog grafa s light=False za izgradnju cijelog grafa. Nećemo pokušavati nacrtati ovaj veliki grafikon jer pretpostavljam da koristite lokalno računalo koje ima ograničene resurse.
Maske, koje su binarni vektori koji identificiraju koji čvorovi pripadaju svakoj specifičnoj maski pomoću znamenki 0 i 1, mogu se koristiti za obavještavanje faze obuke koji čvorovi trebaju biti uključeni tijekom obuke i da se fazi zaključivanja kaže koji su čvorovi testni podaci. Baklja geometrijska.transformira.
Podjela na razini čvora može se dodati korištenjem svojstava maske za obuku, val maske i test maske klase AddTrainValTestMask, koja se može koristiti za snimanje grafa i omogućiti nam da odredimo kako želimo da naše maske budu konstruirane.
Koristimo samo 10% za obuku i koristimo 60% podataka kao testni skup dok koristimo 30% kao validacijski skup.
Sada ćemo složiti dva sloja GCNConv, od kojih prvi ima broj izlaznih značajki koji je jednak broju značajki u našem grafikonu kao ulaznih značajki.
U drugom sloju, koji sadrži izlazne čvorove jednake broju naših klasa, primjenjujemo funkciju relu aktivacije i isporučujemo latentne značajke.
Indeks ruba i težina ruba dvije su od mnogih opcija x koje GCNConv može prihvatiti u funkciji prosljeđivanja, ali u našoj situaciji trebamo samo prve dvije varijable.
Unatoč činjenici da će naš model moći predvidjeti klasu svakog čvora u grafu, još uvijek trebamo odrediti točnost i gubitak za svaki skup zasebno ovisno o fazi.
Na primjer, tijekom treninga želimo samo koristiti set za vježbanje kako bismo utvrdili točnost i gubitak treninga, i zato su tu naše maske korisne.
Kako bismo izračunali odgovarajući gubitak i točnost, definirat ćemo funkcije maskiranog gubitka i maskirane točnosti.
Obuka modela
Sada kada smo definirali svrhu treninga za koju će se baklja koristiti. Adam je vrhunski optimizator.
Provest ćemo obuku za određeni broj epoha pazeći na točnost provjere valjanosti.
Također prikazujemo gubitke i točnosti treninga kroz različite epohe.
Nedostaci graf neuronske mreže
Korištenje GNN-ova ima nekoliko nedostataka. Kada upotrijebiti GNNa i kako poboljšati performanse naših modela strojnog učenja bit će nam jasno nakon što ih bolje razumijemo.
- Dok su GNN-ovi plitke mreže, obično s tri sloja, većina neuronskih mreža može ići duboko kako bi poboljšala performanse. Zbog ovog ograničenja nismo u mogućnosti raditi na vrhunskoj razini na velikim skupovima podataka.
- Teže je trenirati model na grafovima, jer je njihova strukturna dinamika dinamična.
- Zbog visokih računalnih troškova ovih mreža, skaliranje modela za proizvodnju predstavlja izazov. Skaliranje GNN-ova za proizvodnju bit će izazovno ako je struktura vašeg grafikona golema i komplicirana.
Zaključak
Tijekom proteklih nekoliko godina GNN-ovi su se razvili u moćne i učinkovite alate za probleme strojnog učenja u domeni grafova. Temeljni pregled graf neuronskih mreža dan je u ovom članku.
Nakon toga možete početi stvarati skup podataka koji će se koristiti za obuku i testiranje modela. Da biste razumjeli kako funkcionira i za što je sposoban, možete ići i mnogo dalje i trenirati ga koristeći drugu vrstu skupa podataka.
Sretno kodiranje!
Ostavi odgovor