INHOUDSOPGAWE[Versteek][Wys]
Die diep leer tegnieke bekend as "grafiek neurale netwerke" (GNNs) werk in die grafiek domein. Hierdie netwerke het die afgelope tyd gebruik gevind in 'n verskeidenheid van velde, insluitend rekenaarvisie, aanbevelingstelsels en kombinatoriese optimalisering, om 'n paar te noem.
Daarbenewens kan hierdie netwerke gebruik word om komplekse stelsels voor te stel, insluitend sosiale netwerke, proteïen-proteïen-interaksienetwerke, kennisgrafieke en ander in verskeie studievelde.
Die nie-euklidiese ruimte is waar grafiekdata werk, in teenstelling met ander tipes data soos prente. Grafiekanalise word gebruik om nodusse te klassifiseer, skakels te voorspel en clusterdata.
In hierdie artikel sal ons die grafiek ondersoek neurale netwerk in detail, sy tipes, sowel as praktiese voorbeelde verskaf met behulp van PyTorch.
So, wat is Grafiek?
'n Grafiek is 'n tipe datastruktuur wat uit nodusse en hoekpunte bestaan. Die verbindings tussen die verskillende nodusse word deur die hoekpunte bepaal. As die rigting in die nodusse aangedui word, word gesê dat die grafiek gerig is; anders is dit ongerig.
'n Goeie toepassing van grafieke is die modellering van die verwantskappe tussen verskeie individue in a sosiale netwerk. Wanneer komplekse omstandighede, soos skakels en uitruilings hanteer word, is grafieke baie nuttig.
Hulle word gebruik deur aanbevelingstelsels, semantiese analise, sosiale netwerk-analise en patroonherkenning
. Die skep van grafiekgebaseerde oplossings is 'n splinternuwe veld wat 'n insiggewende begrip van komplekse en onderling verwante data bied.
Grafiek Neurale Netwerk
Grafiekneurale netwerke is gespesialiseerde neurale netwerktipes wat op 'n grafiekdataformaat kan werk. Grafiekinbedding en konvolusionele neurale netwerke (CNN's) het 'n beduidende impak op hulle.
Grafiekneurale netwerke word gebruik in take wat die voorspelling van nodusse, rande en grafieke insluit.
- CNN's word gebruik om beelde te klassifiseer. Net so, om 'n klas te voorspel, word GNN'e toegepas op die pixelrooster wat die grafiekstruktuur verteenwoordig.
- Tekskategorisering met behulp van herhalende neurale netwerke. GNN'e word ook gebruik met grafiekargitekture waar elke woord in 'n frase 'n nodus is.
Ten einde nodusse, rande of volledige grafieke te voorspel, word neurale netwerke gebruik om GNN's te skep. 'n Voorspelling op die nodusvlak kan byvoorbeeld 'n probleem soos strooiposopsporing oplos.
Skakelvoorspelling is 'n tipiese geval in aanbevelingstelsels en kan 'n voorbeeld wees van 'n randgewyse voorspellingsprobleem.
Grafiek Neurale Netwerk Tipes
Talle neurale netwerktipes bestaan, en konvolusionele neurale netwerke is in die meerderheid van hulle teenwoordig. Ons sal leer oor die bekendste GNN'e in hierdie deel.
Grafiekkonvolusionele netwerke (GCN'e)
Hulle is vergelykbaar met klassieke CNN's. Dit verkry eienskappe deur na nabygeleë nodusse te kyk. Die aktiveringsfunksie word deur GNN'e gebruik om nie-lineariteit by te voeg nadat nodusvektore saamgevoeg is en die uitset na die digte laag gestuur is.
Dit bestaan in wese uit Grafiekkonvolusie, 'n lineêre laag en 'n nie-leerderaktiveringsfunksie. GCN'e kom in twee hoofvariëteite voor: Spectral Convolutional Networks en Spatial Convolutional Networks.
Grafiek Outo-enkodeerder netwerke
Dit gebruik 'n enkodeerder om te leer hoe om grafieke voor te stel en 'n dekodeerder om insetgrafieke te probeer rekonstrueer. Daar is 'n bottelneklaag wat die enkodeerder en dekodeerder verbind.
Aangesien outo-enkodeerders 'n uitstekende werk doen om klasbalans te hanteer, word hulle gereeld in skakelvoorspelling gebruik.
Herhalende Grafiek Neurale Netwerke (RGNN'e)
In multi-relasionele netwerke, waar 'n enkele nodus talle verwantskappe het, leer dit die optimale diffusiepatroon en kan dit die grafieke bestuur. Ten einde gladheid te verhoog en oorparameterisering te verminder, word reguleerders gebruik in hierdie vorm van grafiek neurale netwerk.
Om beter uitkomste te kry, benodig RGNN's minder verwerkingskrag. Hulle word gebruik vir teksgenerering, spraakherkenning, masjienvertaling, prentbeskrywing, videomerking en teksopsomming.
Omheinde neurale grafieknetwerke (GGNN'e)
Wanneer dit kom by langtermyn-afhanklike take, presteer hulle beter as RGNN's. Deur nodus-, rand- en temporale hekke op langtermyn-afhanklikhede in te sluit, verbeter omheinde grafiek-neurale netwerke herhalende grafiek-neurale netwerke.
Die hekke funksioneer soortgelyk aan Gated Recurrent Units (GRU's) deurdat hulle gewoond is om data in verskeie stadiums te herroep en te vergeet.
Implementering van Graph Neurale Netwerk met Pytorch
Die spesifieke kwessie waarop ons sal fokus, is 'n algemene noduskategoriseringskwessie. Ons het 'n aansienlike sosiale netwerk genaamd musae-github, wat saamgestel is uit die oop API, vir GitHub-ontwikkelaars.
Rande wys die wedersydse volgelinge-verhoudings tussen die nodusse, wat ontwikkelaars (platformgebruikers) verteenwoordig wat in ten minste 10 bewaarplekke gespeel het (let daarop dat die woord wedersyds 'n ongerigte verhouding aandui).
Op grond van die nodus se ligging, gesterde bewaarplekke, werkgewer en e-posadres, word noduskenmerke herwin. Voorspel of 'n GitHub-gebruiker 'n webontwikkelaar is of 'n masjienleer-ontwikkelaar is ons taak.
Die postitel van elke gebruiker het as basis vir hierdie teikenfunksie gedien.
Installeer PyTorch
Om te begin, moet ons eers installeer PyTorch. Jy kan dit instel volgens jou masjien vanaf na hierdie skakel. Hier is myne:
Invoer van modules
Nou voer ons die nodige modules in
Invoer en verken die data
Die volgende stap is om die data te lees en die eerste vyf rye en die laaste vyf rye uit die etiketlêer te teken.
Slegs twee van die vier kolomme—die nodus se id (dws gebruiker) en ml_target, wat 1 is as die gebruiker 'n lid van die masjienleergemeenskap is en 0 andersins—is relevant vir ons in hierdie situasie.
Aangesien daar net twee klasse is, kan ons nou seker wees dat ons taak 'n binêre klassifikasiekwessie is.
As gevolg van beduidende klaswanbalanse kan die klassifiseerder net aanneem watter klas die meerderheid is eerder as om die onderverteenwoordigde klas te evalueer, wat klasbalans nog 'n deurslaggewende faktor maak om in ag te neem.
Die plot van die histogram (frekwensieverspreiding) openbaar 'n mate van wanbalans omdat daar minder klasse van masjienleer (etiket=1) as uit die ander klasse is.
Kenmerkenkodering
Die nodusse se kenmerke lig ons in oor die kenmerk wat met elke nodus geassosieer word. Deur ons metode te implementeer om data te enkodeer, kan ons daardie eienskappe onmiddellik enkodeer.
Ons wil hierdie metode gebruik om 'n klein deel van die netwerk (sê 60 nodusse) vir vertoon in te kap. Die kode word hier gelys.
Ontwerp en vertoon grafieke
Ons sal fakkel geometriese gebruik. data om ons grafiek te bou.
Om 'n enkele grafiek met verskillende (opsionele) eienskappe te modelleer, word data wat 'n eenvoudige Python-objek is, gebruik. Deur hierdie klas en die volgende eienskappe te gebruik—wat almal fakkeltensors is—sal ons ons grafiekvoorwerp skep.
Die vorm van die waarde x, wat aan die geënkodeerde noduskenmerke toegeken sal word, is [aantal nodusse, aantal kenmerke].
Die vorm van y is [aantal nodusse], en dit sal op die nodus-etikette toegepas word.
randindeks: Om 'n ongerigte grafiek te beskryf, moet ons die oorspronklike randindekse uitbrei om voorsiening te maak vir die bestaan van twee afsonderlike gerigte rande wat dieselfde twee nodusse verbind, maar in teenoorgestelde rigtings wys.
'n Paar rande, een wat van nodus 100 tot 200 wys en die ander van 200 tot 100, word benodig, byvoorbeeld, tussen nodes 100 en 200. As die randindekse verskaf word, is dit hoe die ongerigte grafiek voorgestel kan word. [2,2*aantal oorspronklike rande] sal die tensorvorm wees.
Ons skep ons tekengrafiekmetode om 'n grafiek te vertoon. Die eerste stap is om ons homogene netwerk in 'n NetworkX-grafiek te omskep, wat dan met NetworkX.draw geteken kan word.
Maak ons GNN-model en lei dit op
Ons begin deur die hele stel data te enkodeer deur enkodeer data uit te voer met light=False en dan construct graph with light=False te noem om die hele grafiek te bou. Ons sal nie probeer om hierdie groot grafiek te teken nie, want ek neem aan dat jy 'n plaaslike masjien gebruik wat beperkte hulpbronne het.
Maskers, wat binêre vektore is wat identifiseer watter nodusse aan elke spesifieke masker behoort deur die syfers 0 en 1 te gebruik, kan gebruik word om die opleidingsfase in kennis te stel watter nodusse tydens opleiding ingesluit moet word en om die afleidingsfase te vertel watter nodusse die toetsdata is. Toorts geometriese.transformeer.
'n Knoopvlakverdeling kan bygevoeg word deur die opleidingsmasker, valmasker en toetsmasker-eienskappe van die AddTrainValTestMask-klas te gebruik, wat gebruik kan word om 'n grafiek te neem en ons in staat stel om te spesifiseer hoe ons wil hê ons maskers moet gekonstrueer word.
Ons gebruik net 10% vir opleiding en gebruik 60% van die data as die toetsstel terwyl ons 30% as die valideringsstel gebruik.
Nou sal ons twee GCNConv-lae stapel, waarvan die eerste 'n uitsetkenmerktelling het wat gelyk is aan die aantal kenmerke in ons grafiek as invoerkenmerke.
In die tweede laag, wat uitsetnodusse gelykstaande aan die aantal van ons klasse bevat, pas ons 'n relu-aktiveringsfunksie toe en verskaf die latente kenmerke.
Randindeks en randgewig is twee van die vele opsies x wat GCNConv in die voorwaartse funksie kan aanvaar, maar in ons situasie het ons net die eerste twee veranderlikes nodig.
Ten spyte van die feit dat ons model die klas van elke nodus in die grafiek sal kan voorspel, moet ons steeds die akkuraatheid en verlies vir elke stel afsonderlik bepaal afhangende van die fase.
Byvoorbeeld, tydens opleiding wil ons slegs die oefenstel gebruik om die akkuraatheid en oefenverlies te bepaal, en daarom is dit waar ons maskers handig te pas kom.
Om die toepaslike verlies en akkuraatheid te bereken, sal ons die funksies van gemaskerde verlies en gemaskerde akkuraatheid definieer.
Opleiding van die model
Noudat ons die opleidingsdoel gedefinieer het waarvoor die fakkel gebruik gaan word. Adam is 'n meester-optimaliseerder.
Ons sal die opleiding vir 'n sekere aantal tydperke uitvoer terwyl ons die valideringsakkuraatheid dophou.
Ons skets ook die opleiding se verliese en akkuraatheid deur verskillende tydperke.
Nadele van Graph Neurale Netwerk
Die gebruik van GNN'e het 'n paar nadele. Wanneer om GNNa in diens te neem en hoe om die werkverrigting van ons masjienleermodelle te verbeter, sal albei aan ons duidelik gemaak word nadat ons hulle beter verstaan het.
- Terwyl GNN's vlak netwerke is, tipies met drie lae, kan die meeste neurale netwerke diep gaan om werkverrigting te verbeter. Ons is nie in staat om op die voorpunt op groot datastelle te presteer nie as gevolg van hierdie beperking.
- Dit is moeiliker om 'n model op grafieke op te lei, aangesien hul strukturele dinamika dinamies is.
- As gevolg van die hoë berekeningskoste van hierdie netwerke, bied die skaal van die model vir produksie uitdagings. Om die GNN's vir produksie te skaal, sal 'n uitdaging wees as jou grafiekstruktuur groot en ingewikkeld is.
Gevolgtrekking
Oor die afgelope paar jaar het GNN'e ontwikkel tot kragtige en effektiewe instrumente vir masjienleerkwessies in die grafiekdomein. 'n Fundamentele oorsig van grafiek neurale netwerke word in hierdie artikel gegee.
Daarna kan jy begin om die datastel te skep wat gebruik sal word om die model op te lei en te toets. Om te verstaan hoe dit funksioneer en waartoe dit in staat is, kan jy ook baie verder gaan en dit oplei met 'n ander soort datastel.
Gelukkige kodering!
Lewer Kommentaar