Edukien aurkibidea[Ezkutatu][Erakutsi]
"Sare neuronal grafikoak" (GNN) izenez ezagutzen diren deep learning teknikek grafikoen domeinuan funtzionatzen dute. Sare hauek azkenaldian hainbat esparrutan aurkitu dute erabilera, besteak beste, ordenagailu bidezko ikusmenean, gomendio-sistemenetan eta optimizazio konbinatorioan, batzuk aipatzearren.
Horrez gain, sare hauek sistema konplexuak irudikatzeko erabil daitezke, besteak beste, sare sozialak, proteina eta proteina elkarrekintza sareak, ezagutza grafikoak eta beste hainbat ikerketa-eremutan.
Espazio ez-euklidearra grafikoaren datuek funtzionatzen dute, irudiak bezalako beste datu mota batzuekin ez bezala. Nodoak sailkatzeko, loturak aurreikusteko eta kluster-datuak egiteko, grafikoen analisia erabiltzen da.
Artikulu honetan, grafikoa aztertuko dugu Neurona sarea zehatz-mehatz, bere motak, baita PyTorch erabiliz adibide praktikoak ematea ere.
Beraz, zer da Graph?
Grafikoa nodoz eta erpinez osatutako datu-egitura mota bat da. Nodo ezberdinen arteko loturak erpinek zehazten dituzte. Nodoetan norabidea adierazten bada, grafikoa zuzenduta dagoela esaten da; bestela, bideratu gabekoa da.
Grafikoen aplikazio ona a batean hainbat gizabanakoren arteko erlazioak modelatzea da gizarte sarea. Egoera konplexuei aurre egiteko, hala nola estekak eta trukeak, oso lagungarriak dira grafikoak.
Gomendio sistemek, analisi semantikoak, sare sozialen analisiak eta ereduak ezagutzeko erabiltzen dituzte
. Grafikoetan oinarritutako soluzioak sortzea datu konplexuak eta elkarrekin erlazionatutakoak hobeto ulertzeko eremu berri bat da.
Sare neuronal grafikoa
Sare neuronal grafikoak sare neuronal mota espezializatuak dira, grafikoaren datu-formatu batean funtziona dezaketenak. Grafiko barneratzeak eta sare neuronal konboluzionalak (CNN) eragin handia dute horietan.
Grafikoen Sare Neuronalak nodoak, ertzak eta grafikoak aurreikusten dituzten zereginetan erabiltzen dira.
- CNN-ak irudiak sailkatzeko erabiltzen dira. Era berean, klase bat iragartzeko, GNNak egitura grafikoa adierazten duen pixel-sarean aplikatzen dira.
- Testu-kategorizazioa errepikapen-sare neuronalak erabiliz. GNNak grafikoen arkitekturarekin ere erabiltzen dira, non esaldi bateko hitz bakoitza nodo bat den.
Nodoak, ertzak edo grafiko osoak aurreikusteko, neurona-sareak erabiltzen dira GNNak sortzeko. Nodo-mailako iragarpen batek, adibidez, spam-a hautematea bezalako arazo bat ebatzi dezake.
Estekaren iragarpena gomendio-sistemetan ohikoa da eta ertz-arazoen iragarpen-arazo baten adibidea izan daiteke.
Sare neuronal motak grafikoa
Neurona-sare mota ugari daude, eta Sare Neuronal Konboluzionalak daude gehienetan. GNN ezagunenak ezagutuko ditugu zati honetan.
Sare konboluzionalak grafikoak (GCN)
CNN klasikoen parekoak dira. Inguruko nodoei begiratuz ezaugarriak eskuratzen ditu. Aktibazio-funtzioa GNNek erabiltzen dute ez-linealtasuna gehitzeko, nodo-bektoreak batu eta irteera geruza trinkora bidali ondoren.
Grafiko konboluzioz, geruza lineal batek eta ikaslea ez den aktibazio funtzioaz osatuta dago, funtsean. GCNak bi barietate nagusitan datoz: Sare konboluzional espektralak eta sare konboluzional espazialak.
Kodegailu automatikoko sareen grafikoa
Kodetzaile bat erabiltzen du grafikoak adierazten ikasteko eta deskodetzaile bat sarrerako grafikoak berreraikitzen saiatzeko. Kodetzailea eta deskodetzailea lotzen dituen botila-lepoko geruza bat dago.
Kodegailu automatikoak klaseen oreka kudeatzeko lan bikaina egiten dutenez, maiz erabiltzen dira esteken iragarpenean.
Sare neuronal grafiko errekurrenteak (RGNN)
Erlazio anitzeko sareetan, nodo bakar batek erlazio ugari dituenean, difusio-eredu optimoa ikasten du eta grafikoak kudeatu ditzake. Leuntasuna areagotzeko eta gehiegizko parametrizazioa murrizteko, erregularizatzaileak erabiltzen dira sare neuronal grafiko modu honetan.
Emaitza hobeak lortzeko, RGNNek prozesatzeko ahalmen gutxiago behar dute. Testuak sortzeko, hizketa-ezagutzerako, itzulpen automatikorako, irudien deskribapenerako, bideo-etiketatzeko eta testuen laburpenerako erabiltzen dira.
Grafiko neuronal sareak (GGNN)
Epe luzerako menpeko zereginei dagokienez, RGNNak gainditzen dituzte. Epe luzeko menpekotasunetan nodo, ertz eta denborazko ateak barne hartuta, ateburuko grafo sare neuronalak errekurrente grafo sare neuronalak hobetzen dituzte.
Ateek Gated Recurrent Units (GRU) antzera funtzionatzen dute, hainbat fasetan datuak gogoratzeko eta ahazteko erabiltzen baitira.
Pytorch erabiliz Graph Neural Network inplementatzea
Zentratuko dugun arazo zehatza nodoen kategorizazio-arazo arrunta da. Sare sozial handi bat dugu izenekoa musae-github, API irekitik konpilatu zena, GitHub garatzaileentzat.
Ertzek nodoen arteko elkarrekiko jarraitzaile-erlazioak erakusten dituzte, gutxienez 10 biltegietan protagonista izan diren garatzaileak (plataforma-erabiltzaileak) ordezkatzen dituztenak (kontuan izan mutual hitzak bideratu gabeko harremana adierazten duela).
Nodoaren kokapenaren, biltegi izardunen, enpresaburuaren eta helbide elektronikoaren arabera, nodoaren ezaugarriak berreskuratzen dira. GitHub-eko erabiltzaile bat web garatzailea edo bat den aurreikustea ikaskuntza automatikoko garatzailea gure zeregina da.
Erabiltzaile bakoitzaren lan-tituluak bideratze-funtzio honen oinarri izan zen.
PyTorch instalatzen
Hasteko, lehenik instalatu behar dugu PyTorch. Zure makinaren arabera konfigura dezakezu hemen. Hona hemen nirea:
Moduluak inportatzea
Orain, beharrezko moduluak inportatzen ditugu
Datuak inportatzea eta arakatzea
Hurrengo urratsa datuak irakurri eta etiketen fitxategiko lehen bost errenkadak eta azken bost errenkadak marraztea da.
Lau zutabeetatik bi bakarrik —nodoaren id (hau da, erabiltzailea) eta ml_target, hau da, 1 da erabiltzailea ikaskuntza automatikoko komunitateko kidea bada eta 0 bestela— guretzat garrantzitsuak dira egoera honetan.
Bi klase besterik ez direla kontuan hartuta, orain ziur egon gaitezke gure zeregina sailkapen bitar-arazo bat dela.
Klase desoreka esanguratsuen ondorioz, sailkatzaileak zein klase den gehiengoa suposatu dezake, ordezkatuta dagoen klasea ebaluatu beharrean, klaseen oreka kontuan hartu beharreko beste faktore erabakigarri bat bihurtuz.
Histograma (maiztasunaren banaketa) irudikatzeak desoreka bat erakusten du, ikaskuntza automatikoaren (etiketa=1) klase gutxiago daudelako beste klaseetakoak baino.
Ezaugarrien kodeketa
Nodoen ezaugarriek nodo bakoitzari lotuta dagoen ezaugarriaren berri ematen digute. Datuak kodetzeko gure metodoa ezarriz, berehala kode ditzakegu ezaugarri horiek.
Metodo hau sarearen zati txiki bat kapsulatzeko erabili nahi dugu (esan, 60 nodo) bistaratzeko. Kodea hemen ageri da.
Grafikoak diseinatzea eta bistaratzea
Zuzi geometrikoa erabiliko dugu. datuak gure grafikoa eraikitzeko.
Propietate desberdinak (aukerakoak) dituen grafiko bakar bat modelatzeko, Python objektu soil bat den datuak erabiltzen dira. Klase hau eta ondorengo atributuak erabilita —guztiak zuzi tentsoreak dira— gure objektu grafikoa sortuko dugu.
X balioaren forma, kodetutako nodoen ezaugarriei esleituko zaiena, [nodo kopurua, ezaugarri kopurua] da.
Y-ren forma [nodo kopurua] da, eta nodoen etiketei aplikatuko zaie.
ertz-indizea: zuzendu gabeko grafiko bat deskribatzeko, jatorrizko ertz-indizeak zabaldu behar ditugu, bi nodo berdinak lotzen dituzten baina kontrako noranzkoetan seinalatzen duten bi ertz zuzendu ezberdin egotea ahalbidetzeko.
Ertz pare bat, bata 100. nodotik 200.era eta bestea 200.etik 100.era doana, beharrezkoa da, adibidez, 100. eta 200. nodoen artean. Ertz-indizeak ematen badira, horrela irudika daiteke bideratu gabeko grafikoa. [2,2*jatorrizko ertz kopurua] tentsore forma izango da.
Gure marrazki grafikoaren metodoa sortzen dugu grafiko bat bistaratzeko. Lehen urratsa gure sare homogeneoa NetworkX grafiko batean eraldatzea da, gero NetworkX.draw erabiliz marraztu ahal izateko.
Egin gure GNN eredua eta entrenatu
Datu-multzo osoa kodetzen hasten gara argia=False-rekin kodetu datuak exekutatzen eta gero eraikitzeko grafikoa deitzen argia=False grafiko osoa eraikitzeko. Ez gara grafiko handi hau marrazten saiatuko, baliabide mugatuak dituen tokiko makina bat erabiltzen ari zarela suposatzen baitut.
Maskarak, 0 eta 1 zifrak erabiliz maskara espezifiko bakoitzari zein nodo dagozkion identifikatzen duten bektore bitarrak dira, entrenamendu-fasean zein nodo sartu behar diren jakinarazteko eta inferentzia-faseari zein nodo diren proba-datuak adierazteko. Zuzi geometrikoa.eraldatzen.
Nodo-mailako zatiketa bat gehi daiteke AddTrainValTestMask klasearen entrenamendu-maskara, val-maskara eta proba-maskara propietateak erabiliz, grafiko bat hartzeko eta gure maskarak nola eraiki nahi ditugun zehazteko erabil daitekeen.
Prestakuntzarako % 10a erabiltzen dugu eta datuen % 60 proba multzo gisa erabiltzen dugu, % 30 baliozkotze multzo gisa erabiltzen dugun bitartean.
Orain, bi GCNConv geruza pilatuko ditugu, lehenengoak irteerako ezaugarrien kopurua du gure grafikoko ezaugarri kopurua sarrerako ezaugarri gisa.
Bigarren geruzan, gure klaseen kopuruaren berdinak diren irteera-nodoak dituenean, relu aktibazio funtzioa aplikatzen dugu eta ezkutuko ezaugarriak hornitzen ditugu.
Ertzaren indizea eta ertzaren pisua GCNConv-ek aurrera egiteko funtzioan onar ditzakeen x aukeretako bi dira, baina gure egoeran, lehen bi aldagaiak baino ez ditugu behar.
Gure ereduak grafikoko nodo bakoitzaren klasea iragartzeko gai izango den arren, oraindik multzo bakoitzaren zehaztasuna eta galera bereizita zehaztu behar ditugu fasearen arabera.
Esate baterako, entrenamenduan zehar, entrenamendu-multzoa soilik erabili nahi dugu zehaztasuna eta entrenamendu-galera zehazteko, eta, hortaz, gure maskarak ondo etortzen dira.
Galera eta zehaztasun egokiak kalkulatzeko, galera maskaratuaren eta zehaztasun maskaratuaren funtzioak definituko ditugu.
Eredua trebatzea
Orain, zuzia zein prestakuntza-helburua erabiliko den zehaztu dugu. Adam optimizatzaile maisua da.
Entrenamendua aro kopuru jakin baterako egingo dugu, balioztatzearen zehaztasunari erreparatuta.
Era berean, entrenamenduaren galerak eta zehaztasunak aro ezberdinetan marrazten ditugu.
Graph Neural Network-en desabantailak
GNNak erabiltzeak desabantaila batzuk ditu. GNNa noiz erabili behar den eta gure ikaskuntza automatikoko ereduen errendimendua nola hobetu argituko zaizkigu horiek hobeto ulertu ondoren.
- GNNak sakonera gutxiko sareak diren arren, normalean hiru geruza dituztenak, sare neuronal gehienak sakondu daitezke errendimendua hobetzeko. Ezin dugu datu multzo handietan abangoardian aritu muga hori dela eta.
- Grafikoetan eredu bat trebatzea zailagoa da, haien egitura-dinamika dinamikoa baita.
- Sare horien konputazio-kostu handiak direla eta, ekoizpenerako eredua eskalatzeak erronkak dakartza. GNNak ekoizpenerako eskalatzea zaila izango da zure grafikoaren egitura handia eta konplikatua bada.
Ondorioa
Azken urteotan, GNNak tresna indartsu eta eraginkor bihurtu dira grafikoen domeinuko ikaskuntza automatikoaren arazoetarako. Artikulu honetan sare neuronal grafikoen oinarrizko ikuspegi orokorra ematen da.
Horren ostean, eredua entrenatzeko eta probatzeko erabiliko den datu-multzoa sortzen has zaitezke. Nola funtzionatzen duen eta zertarako gai den ulertzeko, askoz urrunago joan eta treba dezakezu beste datu multzo bat erabiliz.
Kodetze zoriontsua!
Utzi erantzun bat