Përmbajtje[Fshih][Shfaqje]
Teknikat e të mësuarit të thellë të njohura si "rrjetet nervore grafike" (GNNs) funksionojnë në domenin e grafikut. Këto rrjete kohët e fundit kanë gjetur përdorim në një sërë fushash, duke përfshirë vizionin kompjuterik, sistemet e rekomanduesve dhe optimizimin kombinues, për të përmendur disa.
Përveç kësaj, këto rrjete mund të përdoren për të përfaqësuar sisteme komplekse, duke përfshirë rrjetet sociale, rrjetet e ndërveprimit protein-proteina, grafikët e njohurive dhe të tjera në disa fusha studimi.
Hapësira jo-eklidiane është vendi ku funksionojnë të dhënat grafike, në kontrast me llojet e tjera të të dhënave si fotografitë. Për të klasifikuar nyjet, për të parashikuar lidhjet dhe për të dhënat e grupimit, përdoret analiza e grafikut.
Në këtë artikull, ne do të shqyrtojmë Grafikun Rrjeti nervoz në detaje, llojet e tij, si dhe jepni shembuj praktikë duke përdorur PyTorch.
Pra, çfarë është Grafiku?
Një grafik është një lloj strukture të dhënash e përbërë nga nyje dhe kulme. Lidhjet ndërmjet nyjeve të ndryshme përcaktohen nga kulmet. Nëse drejtimi tregohet në nyje, thuhet se grafiku është i drejtuar; përndryshe, është i padrejtuar.
Një aplikim i mirë i grafikëve është modelimi i marrëdhënieve ndërmjet individëve të ndryshëm në a rrjeti social. Kur kemi të bëjmë me rrethana komplekse, si lidhjet dhe shkëmbimet, grafikët janë shumë të dobishëm.
Ato përdoren nga sistemet e rekomandimeve, analiza semantike, analiza e rrjeteve sociale dhe njohja e modeleve
. Krijimi i zgjidhjeve të bazuara në grafik është një fushë krejt e re që ofron një kuptim të thellë të të dhënave komplekse dhe të ndërlidhura.
Rrjeti nervor grafik
Rrjetet nervore grafike janë lloje të specializuara të rrjeteve nervore që mund të funksionojnë në një format të të dhënave grafik. Përfshirja e grafikëve dhe rrjetet nervore konvolucionale (CNN) kanë një ndikim të rëndësishëm në to.
Rrjetet nervore grafike përdoren në detyra që përfshijnë parashikimin e nyjeve, skajeve dhe grafikëve.
- CNN-të përdoren për të klasifikuar imazhet. Në mënyrë të ngjashme, për të parashikuar një klasë, GNN-të aplikohen në rrjetën e pikselëve që përfaqëson strukturën e grafikut.
- Kategorizimi i tekstit duke përdorur rrjetet nervore të përsëritjes. GNN-të përdoren gjithashtu me arkitekturat grafike ku çdo fjalë në një frazë është një nyje.
Për të parashikuar nyjet, skajet ose grafikët e plotë, rrjetet nervore përdoren për të krijuar GNN. Një parashikim në nivelin e nyjeve, për shembull, mund të zgjidhë një problem si zbulimi i spamit.
Parashikimi i lidhjes është një rast tipik në sistemet e rekomanduesve dhe mund të jetë një shembull i një problemi parashikimi të skajshëm.
Grafik Llojet e rrjeteve nervore
Ekzistojnë lloje të shumta të rrjeteve nervore dhe Rrjetet Neurale Konvolucioniste janë të pranishme në shumicën e tyre. Për GNN-të më të njohur do të mësojmë në këtë pjesë.
Grafiku i rrjeteve konvolucionale (GCN)
Ato janë të krahasueshme me CNN-të klasike. Ai fiton karakteristika duke parë nyjet aty pranë. Funksioni i aktivizimit përdoret nga GNN për të shtuar jolinearitet pas grumbullimit të vektorëve të nyjeve dhe dërgimit të daljes në shtresën e dendur.
Ai përbëhet nga konvolucioni i Grafikut, një shtresë lineare dhe një funksion aktivizimi jo-mësues, në thelb. GCN-të vijnë në dy varietete kryesore: Rrjetet spektrale konvolucionale dhe rrjetet konvolucionare hapësinore.
Grafikoni Rrjetet Auto-Enkodues
Ai përdor një kodues për të mësuar se si të përfaqësojë grafikët dhe një dekoder për të rindërtuar grafikët e hyrjes. Ekziston një shtresë e ngushtë që lidh koduesin dhe dekoderin.
Meqenëse koduesit automatikë bëjnë një punë të shkëlqyeshme për trajtimin e balancës së klasës, ato përdoren shpesh në parashikimin e lidhjeve.
Rrjetet nervore me grafik të përsëritur (RGNN)
Në rrjetet shumë-relacionale, ku një nyje e vetme ka marrëdhënie të shumta, ajo mëson modelin optimal të difuzionit dhe mund të menaxhojë grafikët. Për të rritur butësinë dhe për të zvogëluar mbi-parametizimin, rregulluesit përdoren në këtë formë të rrjetit nervor grafik.
Për të marrë rezultate më të mira, RGNN-të kërkojnë më pak fuqi përpunuese. Ato përdoren për gjenerimin e tekstit, njohjen e të folurit, përkthimin me makinë, përshkrimin e fotografive, etiketimin e videos dhe përmbledhjen e tekstit.
Rrjetet e grafikut nervor të mbyllur (GGNN)
Kur bëhet fjalë për detyra të varura afatgjata, ato tejkalojnë RGNN-të. Duke përfshirë portat e nyjeve, skajeve dhe të përkohshme në varësitë afatgjata, rrjetet nervore grafike të mbyllura përmirësojnë rrjetet nervore grafike periodike.
Portat funksionojnë në mënyrë të ngjashme me Gated Recurrent Units (GRU) në atë që ato përdoren për të kujtuar dhe harruar të dhënat në faza të ndryshme.
Zbatimi i rrjetit nervor të grafikut duke përdorur Pytorch
Çështja specifike në të cilën do të përqendrohemi është një çështje e zakonshme e kategorizimit të nyjeve. Ne kemi një rrjet të konsiderueshëm social të quajtur musae-github, i cili u përpilua nga API i hapur, për zhvilluesit e GitHub.
Skajet tregojnë marrëdhëniet e ndërsjella të ndjekësve midis nyjeve, të cilat përfaqësojnë zhvilluesit (përdoruesit e platformës) të cilët kanë luajtur në të paktën 10 depo (vini re se fjala reciproke tregon një marrëdhënie të padrejtuar).
Bazuar në vendndodhjen e nyjës, depot e shënuara me yll, punëdhënësin dhe adresën e emailit, karakteristikat e nyjes janë marrë. Parashikimi nëse një përdorues i GitHub është një zhvillues ueb ose një zhvilluesi i mësimit të makinerisë është detyra jonë.
Titulli i punës së çdo përdoruesi shërbeu si bazë për këtë funksion të synimit.
Instalimi i PyTorch
Për të filluar, së pari duhet të instalojmë PyTorch. Mund ta konfiguroni sipas kompjuterit tuaj nga këtu. Këtu është e imja:
Importimi i moduleve
Tani, ne importojmë modulet e nevojshme
Importimi dhe eksplorimi i të dhënave
Hapi i mëposhtëm është të lexoni të dhënat dhe të vizatoni pesë rreshtat e parë dhe pesë rreshtat e fundit nga skedari i etiketave.
Vetëm dy nga katër kolonat—id-ja e nyjës (dmth. përdoruesi) dhe ml_target, që është 1 nëse përdoruesi është anëtar i komunitetit të mësimit të makinerisë dhe 0 në të kundërtën—janë të rëndësishme për ne në këtë situatë.
Duke pasur parasysh se ka vetëm dy klasa, tani mund të jemi të sigurt se detyra jonë është një çështje klasifikimi binar.
Si rezultat i pabarazive të rëndësishme të klasës, klasifikuesi thjesht mund të supozojë se cila klasë është shumica në vend që të vlerësojë klasën e nënpërfaqësuar, duke e bërë balancën e klasës një tjetër faktor vendimtar për t'u marrë parasysh.
Vizatimi i histogramit (shpërndarja e frekuencës) zbulon disa çekuilibër sepse ka më pak klasa nga mësimi i makinerive (etiketa=1) sesa nga klasat e tjera.
Kodimi i veçorive
Karakteristikat e nyjeve na informojnë për veçorinë që lidhet me secilën nyje. Duke zbatuar metodën tonë për të koduar të dhënat, ne mund t'i kodojmë menjëherë ato karakteristika.
Ne duam të përdorim këtë metodë për të inkapsuluar një pjesë të vogël të rrjetit (të themi, 60 nyje) për shfaqje. Kodi është renditur këtu.
Dizajnimi dhe shfaqja e grafikëve
Ne do të përdorim pishtari gjeometrik. të dhëna për të ndërtuar grafikun tonë.
Për të modeluar një grafik të vetëm me veti të ndryshme (opsionale), përdoren të dhëna që janë një objekt i thjeshtë Python. Duke shfrytëzuar këtë klasë dhe atributet e mëposhtme - që të gjitha janë tensorë pishtari - ne do të krijojmë objektin tonë grafik.
Forma e vlerës x, e cila do t'u ndahet veçorive të nyjeve të koduara, është [numri i nyjeve, numri i veçorive].
Forma e y është [numri i nyjeve] dhe do të aplikohet në etiketat e nyjeve.
indeksi i skajeve: Për të përshkruar një graf të padrejtuar, duhet të zgjerojmë indekset origjinale të skajeve në mënyrë që të lejojmë ekzistencën e dy skajeve të drejtuara të dallueshme që lidhin të njëjtat dy nyje, por tregojnë në drejtime të kundërta.
Kërkohet një palë skajesh, njëra që tregon nga nyja 100 në 200 dhe tjetra nga 200 në 100, për shembull, midis nyjeve 100 dhe 200. Nëse jepen indekset e skajeve, atëherë kështu mund të paraqitet grafiku i padrejtuar. [2,2*numri i skajeve origjinale] do të jetë forma tensor.
Ne krijojmë metodën tonë të grafikut të tërheqjes për të shfaqur një grafik. Hapi i parë është transformimi i rrjetit tonë homogjen në një grafik NetworkX, i cili më pas mund të vizatohet duke përdorur NetworkX.draw.
Bëni modelin tonë GNN dhe trajnoni atë
Fillojmë duke koduar të gjithë grupin e të dhënave duke ekzekutuar të dhënat e kodimit me light=False dhe më pas duke thirrur graph construct me light=False për të ndërtuar të gjithë grafikun. Ne nuk do të përpiqemi të vizatojmë këtë grafik të madh sepse po supozoj se po përdorni një makinë lokale që ka burime të kufizuara.
Maskat, të cilët janë vektorë binarë që identifikojnë se cilat nyje i përkasin secilës maskë specifike duke përdorur shifrat 0 dhe 1, mund të përdoren për të njoftuar fazën e trajnimit se cilat nyje duhet të përfshihen gjatë trajnimit dhe për të treguar fazën e konkluzionit se cilat nyje janë të dhënat e testimit. Pishtari gjeometrik.transformon.
Një ndarje e nivelit të nyjeve mund të shtohet duke përdorur veçoritë e maskës së trajnimit, maskës val dhe maskës së testit të klasës AddTrainValTestMask, të cilat mund të përdoren për të marrë një grafik dhe për të na mundësuar të specifikojmë se si duam të ndërtohen maskat tona.
Ne thjesht përdorim 10% për trajnim dhe përdorim 60% të të dhënave si grup testimi ndërsa përdorim 30% si grup verifikimi.
Tani, ne do të grumbullojmë dy shtresa GCNConv, e para prej të cilave ka një numër të veçorive dalëse që është i barabartë me numrin e veçorive në grafikun tonë si veçori hyrëse.
Në shtresën e dytë, e cila përmban nyje dalëse të barabarta me numrin e klasave tona, ne aplikojmë një funksion aktivizimi relu dhe furnizojmë veçoritë latente.
Indeksi i skajit dhe pesha e skajit janë dy nga opsionet e shumta x që GCNConv mund të pranojë në funksionin përpara, por në situatën tonë, na duhen vetëm dy ndryshoret e para.
Përkundër faktit se modeli ynë do të jetë në gjendje të parashikojë klasën e çdo nyje në grafik, ne ende duhet të përcaktojmë saktësinë dhe humbjen për secilin grup veç e veç në varësi të fazës.
Për shembull, gjatë stërvitjes, ne duam të përdorim vetëm grupin e trajnimit për të përcaktuar saktësinë dhe humbjen e stërvitjes, dhe për këtë arsye maskat tona vijnë në ndihmë.
Për të llogaritur humbjen dhe saktësinë e duhur, ne do të përcaktojmë funksionet e humbjes së maskuar dhe saktësisë së maskuar.
Trajnimi i modelit
Tani që kemi përcaktuar qëllimin e stërvitjes për të cilin do të përdoret pishtari. Adami është një optimizues mjeshtër.
Ne do të zhvillojmë trajnimin për një numër të caktuar epokash duke mbajtur një sy në saktësinë e vlefshmërisë.
Ne gjithashtu komplotojmë humbjet dhe saktësinë e trajnimit gjatë epokave të ndryshme.
Disavantazhet e rrjetit nervor grafik
Përdorimi i GNN-ve ka disa disavantazhe. Kur të përdorim GNNa dhe si të përmirësojmë performancën e modeleve tona të mësimit të makinerive do të na bëhet e qartë pasi t'i kuptojmë më mirë ato.
- Ndërsa GNN-të janë rrjete të cekëta, zakonisht me tre shtresa, shumica e rrjeteve nervore mund të shkojnë thellë për të përmirësuar performancën. Ne nuk jemi në gjendje të performojmë në avantazhin e grupeve të mëdha të të dhënave për shkak të këtij kufizimi.
- Është më e vështirë të trajnosh një model në grafikë, pasi dinamika e tyre strukturore është dinamike.
- Për shkak të kostove të larta llogaritëse të këtyre rrjeteve, shkallëzimi i modelit për prodhim paraqet sfida. Shkallëzimi i GNN-ve për prodhim do të jetë sfidues nëse struktura juaj e grafikut është e madhe dhe e ndërlikuar.
Përfundim
Gjatë viteve të fundit, GNN-të janë zhvilluar në mjete të fuqishme dhe efektive për çështjet e mësimit të makinerive në domenin e grafikut. Një përmbledhje themelore e rrjeteve nervore grafike është dhënë në këtë artikull.
Pas kësaj, mund të filloni të krijoni grupin e të dhënave që do të përdoret për të trajnuar dhe testuar modelin. Për të kuptuar se si funksionon dhe çfarë është në gjendje të bëjë, mund të shkoni edhe shumë më larg dhe ta stërvitni duke përdorur një lloj të ndryshëm të dhënash.
Gëzuar Kodimin!
Lini një Përgjigju