Sadržaj[Sakrij][Prikaži]
Tehnike dubokog učenja poznate kao "neuralne mreže grafova" (GNN) rade u domenu grafa. Ove mreže su u posljednje vrijeme našle primjenu u raznim oblastima, uključujući kompjuterski vid, sisteme preporuka i kombinatornu optimizaciju, da spomenemo samo neke.
Osim toga, ove mreže se mogu koristiti za predstavljanje složenih sistema, uključujući društvene mreže, mreže za interakciju protein-protein, grafove znanja i druge u nekoliko oblasti proučavanja.
Neeuklidski prostor je mjesto gdje funkcionišu podaci grafa, za razliku od drugih vrsta podataka poput slika. Za klasifikaciju čvorova, predviđanje veza i podataka klastera koristi se analiza grafova.
U ovom članku ćemo ispitati graf Neuronska mreža detaljno, njegove vrste, kao i pružiti praktične primjere korištenja PyTorcha.
Dakle, šta je Graf?
Graf je vrsta strukture podataka koju čine čvorovi i vrhovi. 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 između različitih pojedinaca u a socijalna mreža. Kada se radi o složenim okolnostima, kao što su veze i razmjene, grafikoni su od velike pomoći.
Koriste ih sistemi preporuka, semantička analiza, analiza društvenih mreža i prepoznavanje obrazaca
. Kreiranje rješenja zasnovanih na grafovima je potpuno novo polje koje nudi pronicljivo razumijevanje složenih i međusobno povezanih podataka.
Grafička neuronska mreža
Grafičke neuronske mreže su specijalizirani tipovi neuronskih mreža koje mogu raditi na formatu podataka grafa. Ugrađivanje grafova i konvolucione neuronske mreže (CNN) imaju značajan uticaj na njih.
Neuralne mreže grafova koriste se u zadacima koji uključuju predviđanje čvorova, ivica i grafova.
- CNN-ovi se koriste za klasifikaciju slika. Slično, za predviđanje klase, GNN se primjenjuju na mrežu piksela koja predstavlja strukturu grafa.
- Kategorizacija teksta korištenjem rekurentnih neuronskih mreža. GNN se također koriste sa arhitekturom grafova gdje je svaka riječ u frazi čvor.
Da bi se predvideli čvorovi, ivice ili kompletni grafovi, neuronske mreže se koriste za kreiranje GNN-ova. Predviđanje na nivou čvora, na primjer, može riješiti problem kao što je otkrivanje neželjene pošte.
Predviđanje veze je tipičan slučaj u sistemima preporuka i može biti primjer problema predviđanja po rubu.
Grafički tipovi neuronskih mreža
Postoje brojni tipovi neuronskih mreža, a konvolucione neuronske mreže su prisutne u većini njih. U ovom dijelu ćemo naučiti o najpoznatijim GNN-ovima.
Grafičke konvolucijske mreže (GCN)
Uporedivi su sa klasičnim CNN-ima. Stječe karakteristike gledajući obližnje čvorove. Funkciju aktivacije koriste GNN za dodavanje nelinearnosti nakon agregiranja vektora čvorova i slanja izlaza u gusti sloj.
Sastoji se od konvolucije grafa, linearnog sloja i funkcije aktivacije neučenika, u suštini. GCN-ovi dolaze u dvije glavne varijante: spektralne konvolucijske mreže i prostorne konvolucione mreže.
Mreže automatskog enkodera grafikona
Koristi enkoder da nauči kako da predstavi grafove i dekoder da pokuša da rekonstruiše ulazne grafove. Postoji sloj uskog grla koji povezuje enkoder i dekoder.
Pošto automatski enkoderi rade odličan posao rukovanja ravnotežom klasa, često se koriste u predviđanju veze.
Neuralne mreže s ponavljajućim grafovima (RGNN)
U multirelacijskim 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, koriste se regularizatori u ovom obliku graf neuronske mreže.
Da bi se postigli bolji rezultati, RGNN-ovima je potrebna manja procesorska snaga. Koriste se za generisanje teksta, prepoznavanje govora, mašinsko prevođenje, opis slika, označavanje videa i sažimanje teksta.
Mreže neuronskih grafova sa zatvorom (GGNN)
Kada su u pitanju dugoročni zavisni zadaci, oni nadmašuju RGNN. Uključujući čvorne, rubne i vremenske kapije na dugoročne ovisnosti, neuronske mreže s gated grafom poboljšavaju rekurentne neuronske mreže grafova.
Gejtovi funkcionišu slično kao GRU (Gate Recurrent Units) po tome što se koriste za pozivanje i zaboravljanje podataka u različitim fazama.
Implementacija Graph Neural Network koristeći Pytorch
Specifično pitanje na koje ćemo se fokusirati je uobičajeno pitanje kategorizacije čvorova. Imamo veliku društvenu mrežu tzv musae-github, koji je kompajliran iz otvorenog API-ja, za GitHub programere.
Rubovi pokazuju međusobne sljedbeničke odnose između čvorova, koji predstavljaju programere (korisnike platforme) koji su bili zvijezdom u najmanje 10 spremišta (imajte na umu da riječ uzajamni označava neusmjereni odnos).
Na osnovu lokacije čvora, spremišta sa zvjezdicom, poslodavca i adrese e-pošte, preuzimaju se karakteristike čvora. Predviđanje da li je korisnik GitHub-a web programer ili a programer za mašinsko učenje je naš zadatak.
Naziv radnog mjesta svakog korisnika poslužio je kao osnova za ovu funkciju ciljanja.
Instalacija PyTorcha
Za početak, prvo moramo instalirati PyTorch. Možete ga konfigurirati prema vašoj mašini 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 i posljednjih pet redova iz datoteke oznaka.
Samo dvije od četiri kolone — id čvora (tj. korisnika) i ml_target, što je 1 ako je korisnik član zajednice mašinskog učenja i 0 u suprotnom — su relevantne 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 samo pretpostaviti koja klasa je većina, umjesto da procjenjuje nedovoljno zastupljenu klasu, što čini klasnu ravnotežu još jednim ključnim faktorom koji treba uzeti u obzir.
Iscrtavanje histograma (distribucije frekvencije) otkriva određenu neravnotežu jer ima manje klasa iz mašinskog učenja (oznaka=1) nego iz drugih klasa.
Feature Encoding
Karakteristike čvorova nas informišu o osobinama koje su povezane sa svakim čvorom. Implementacijom naše metode za kodiranje podataka, možemo trenutno kodirati te karakteristike.
Želimo da koristimo ovu metodu da inkapsuliramo mali dio mreže (recimo, 60 čvorova) za prikaz. Kod je naveden ovdje.
Dizajniranje i prikaz grafova
Koristit ćemo geometrijsku baklju. podatke za izgradnju našeg grafikona.
Za modeliranje jednog grafa s različitim (opcionalnim) svojstvima, koriste se podaci koji su jednostavni Python objekt. Koristeći ovu klasu i sljedeće atribute – koji su svi tenzori baklje – kreirat ćemo naš objekat grafa.
Oblik vrijednosti x, koji će biti dodijeljen kodiranim karakteristikama čvora, je [broj čvorova, broj karakteristika].
Oblik y je [broj čvorova] i bit će primijenjen na oznake čvorova.
indeks rubova: Da bismo opisali neusmjereni graf, moramo proširiti originalne indekse rubova kako bismo omogućili postojanje dvije različite usmjerene ivice koje povezuju ista dva čvora, ali pokazuju u suprotnim smjerovima.
Par ivica, jedan koji pokazuje od čvora 100 do 200, a drugi od 200 do 100, je potreban, na primjer, između čvorova 100 i 200. Ako su navedeni indeksi rubova, onda se ovako može predstaviti neusmjeren graf. [2,2*broj originalnih ivica] će biti tenzorski oblik.
Kreiramo našu metodu crtanja grafa za prikaz grafa. Prvi korak je transformacija naše homogene mreže u NetworkX graf, koji se zatim može nacrtati pomoću NetworkX.draw.
Napravite naš GNN model i obučite ga
Počinjemo kodiranjem cijelog skupa podataka izvršavanjem kodiranja podataka sa light=False, a zatim pozivanjem konstruiranog grafa sa light=False da bismo izgradili cijeli graf. Nećemo pokušavati da nacrtamo ovaj veliki grafikon jer pretpostavljam da koristite lokalnu mašinu koja ima ograničene resurse.
Maske, koje su binarni vektori koji identifikuju koji čvorovi pripadaju svakoj specifičnoj maski pomoću cifara 0 i 1, mogu se koristiti da obaveste fazu obuke koji čvorovi treba da budu uključeni tokom treninga i da kažu fazi zaključivanja koji su čvorovi testni podaci. Torch geometric.transforms.
Podjela na razini čvora može se dodati korištenjem maske za obuku, val maske i svojstva test maske klase AddTrainValTestMask, koja se može koristiti za uzimanje grafa i omogućiti nam da specificiramo kako želimo da naše maske budu konstruirane.
Mi samo koristimo 10% za obuku i koristimo 60% podataka kao skup testova, dok koristimo 30% kao set za validaciju.
Sada ćemo složiti dva GCNConv sloja, od kojih prvi ima izlazni broj karakteristika koji je jednak broju karakteristika u našem grafu kao ulaznih karakteristika.
U drugom sloju, koji sadrži izlazne čvorove jednake broju naših klasa, primjenjujemo relu aktivacijsku funkciju i isporučujemo latentne karakteristike.
Indeks ruba i težina ruba su dvije od mnogih opcija x koje GCNConv može prihvatiti u funkciji naprijed, ali u našoj situaciji trebaju nam samo prve dvije varijable.
Uprkos činjenici da će naš model moći da predvidi klasu svakog čvora u grafu, još uvek moramo da odredimo tačnost i gubitak za svaki skup posebno u zavisnosti od faze.
Na primjer, tokom treninga želimo samo koristiti set za obuku da bismo odredili tačnost i gubitak treninga, i zato su naše maske korisne.
Da 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 obuke za koju će se baklja koristiti. Adam je vrhunski optimizator.
Obuku ćemo provoditi za određeni broj epoha, vodeći računa o tačnosti validacije.
Takođe prikazujemo gubitke i tačnost treninga kroz različite epohe.
Nedostaci grafičke neuronske mreže
Upotreba GNN-a ima nekoliko nedostataka. Kada primijeniti GNNa i kako poboljšati performanse naših modela strojnog učenja, bit će nam jasno nakon što ih bolje razumijemo.
- Dok su GNN plitke mreže, obično sa 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 da radimo na vrhuncu na velikim skupovima podataka.
- Teže je trenirati model na grafovima, jer je njihova strukturna dinamika dinamična.
- Zbog visokih računskih troškova ovih mreža, skaliranje modela za proizvodnju predstavlja izazov. Skaliranje GNN-a za proizvodnju će biti izazovno ako je vaša struktura grafa ogromna i komplikovana.
zaključak
Tokom proteklih nekoliko godina, GNN su se razvili u moćne i efikasne alate za probleme mašinskog učenja u domenu grafova. Osnovni pregled neuronskih mreža grafa dat je u ovom članku.
Nakon toga možete početi kreirati 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 mnogo dalje i trenirati ga koristeći drugu vrstu skupa podataka.
Sretno kodiranje!
Ostavite odgovor