Inhaltsverzeechnes[Verstoppen][Show]
Déi Deep Learning Techniken bekannt als "Graph neural Netzwierker" (GNNs) funktionnéieren am Grafik Domain. Dës Netzwierker hu viru kuerzem benotzt a ville Beräicher fonnt, dorënner Computervisioun, Empfehlersystemer a kombinatoresch Optimiséierung, fir e puer ze nennen.
Zousätzlech kënnen dës Netzwierker benotzt ginn fir komplex Systemer ze representéieren, dorënner sozial Netzwierker, Protein-Protein Interaktiounsnetzwierker, Wëssensgrafiken an anerer a verschiddene Studieberäicher.
Den net-euklidesche Raum ass wou Grafikdaten funktionnéieren, am Géigesaz zu aner Aarte vun Daten wéi Biller. Fir Noden ze klassifizéieren, Linken virauszesoen, a Clusterdaten, gëtt Grafikanalyse benotzt.
An dësem Artikel wäerte mir d'Grafik ënnersichen Mä Network am Detail, seng Zorte, souwéi déi praktesch Beispiller benotzt PyTorch.
Also, wat ass Grafik?
Eng Grafik ass eng Aart vun Datestruktur aus Wirbelen a Wirbelen. D'Verbindungen tëscht de verschiddene Wirbelen gi vun de Wirbelen bestëmmt. Wann d'Richtung an de Wirbelen uginn ass, gëtt gesot datt d'Grafik geriicht ass; soss ass et ongeriicht.
Eng gutt Uwendung vu Grafike ass d'Modellering vun de Bezéiungen tëscht verschiddenen Individuen an engem sozialt Netzwierk. Wann Dir mat komplexen Ëmstänn handelt, wéi Linken an Austausch, Grafike si ganz hëllefräich.
Si gi vu Empfehlungssystemer, semantescher Analyse, sozialen Netzwierkanalyse a Mustererkennung agestallt
. Grafik-baséiert Léisungen erstellen ass e fuschneie Feld deen en Asiichtegt Verständnis vu komplexen an interrelated Daten bitt.
Grafik Neural Netzwierk
Graph neural Netzwierker si spezialiséiert neural Netzwierktypen déi op engem Grafikdatenformat funktionnéiere kënnen. Grafik Embedding a convolutional neural Netzwierker (CNNs) hunn e wesentlechen Impakt op si.
Graph Neural Netzwierker ginn an Aufgaben beschäftegt déi Noden, Kanten a Grafike viraussoen.
- CNN's gi benotzt fir Biller ze klassifizéieren. Ähnlech, fir eng Klass virauszesoen, ginn GNNs op d'Pixelgitter applizéiert dat d'Grafikstruktur duerstellt.
- Text Kategoriséierung mat Widderhuelung neural Netzwierker. GNNs ginn och mat Grafikarchitekturen benotzt, wou all Wuert an enger Phrase en Node ass.
Fir Noden, Kanten oder komplette Grafike virauszesoen, ginn neural Netzwierker benotzt fir GNNs ze kreéieren. Eng Prognose um Node Niveau, zum Beispill, kann e Problem wéi Spam Detektioun léisen.
Link Prognose ass en typesche Fall an Empfehler Systemer a kéint e Beispill vun engem edge-wise Prognoseproblem sinn.
Graph Neural Netzwierk Typen
Vill neural Netzwierktypen existéieren, a Convolutional Neural Netzwierker sinn an der Majoritéit vun hinnen präsent. Mir léieren iwwer déi bekanntst GNNs an dësem Deel.
Graph Convolutional Networks (GCNs)
Si si vergläichbar mat klassesche CNNs. Et kritt Charakteristiken andeems Dir no noden node kuckt. D'Aktivéierungsfunktioun gëtt vu GNNs benotzt fir Net-Linearitéit ze addéieren nodeems Nodevektoren aggregéiert sinn an d'Ausgab an déi dichte Schicht geschéckt ginn.
Et besteet aus Grafikkonvolutioun, enger linearer Schicht, an enger Net-Léieraktivéierungsfunktioun, am Wesentlechen. GCNs kommen an zwou Haaptvarianten: Spektral Convolutional Networks a Spatial Convolutional Networks.
Grafik Auto-Encoder Netzwierker
Et benotzt en Encoder fir ze léieren wéi Grafike representéiert an en Decoder fir ze probéieren Input Grafiken ze rekonstruéieren. Et gëtt eng Flaschenhalsschicht déi den Encoder an den Decoder verbënnt.
Zënter Autoencoderen eng exzellent Aarbecht maache fir Klassebalance ze handhaben, gi se dacks a Linkprediktioun benotzt.
Recurrent Graph Neural Networks (RGNNs)
A multi-relational Netzwierker, wou en eenzegen Node vill Relatiounen huet, léiert en dat optimalt Diffusiounsmuster a kann d'Grafike verwalten. Fir d'Gläichheet ze erhéijen an d'Iwwerparameteriséierung ze reduzéieren, ginn Reguléierer an dëser Form vu Grafikneuralnetz benotzt.
Fir besser Resultater ze kréien, erfuerderen RGNNs manner Veraarbechtungskraaft. Si gi benotzt fir Textgeneratioun, Riederkennung, Maschinn Iwwersetzung, Bildbeschreiwung, Video-Tagging, an Textresumé.
Gated Neural Graph Networks (GGNNs)
Wann et drëms geet, fir laangfristeg ofhängeg Aufgaben, si besser RGNNs. Andeems Dir Node, Rand, an temporär Paarte op laangfristeg Ofhängegkeeten enthält, vergréissert gated Grafikneural Netzwierker widderhuelend Grafikneural Netzwierker.
D'Gate funktionnéieren ähnlech wéi Gated Recurrent Units (GRUs) an datt se benotzt gi fir Daten a verschiddene Stadien z'erënneren an ze vergiessen.
Implementéiere Graph Neural Network mat Pytorch
Dat spezifescht Thema op deem mir eis fokusséieren ass e gemeinsame Node-Kategoriséierungsprobleem. Mir hunn e sizable sozialen Netzwierk genannt musae-github, déi aus der oppener API kompiléiert gouf, fir GitHub Entwéckler.
Kanten weisen déi géigesäiteg Followerverhältnisser tëscht den Noden, déi Entwéckler (Plattform Benotzer) representéieren, déi an op d'mannst 10 Repositories gespillt hunn (Notéiert datt d'Wuert géigesäiteg eng ongeriicht Relatioun bezeechent).
Baséierend op der Plaz vum Node, Starred Repositories, Employeur, an E-Mailadress, Nodecharakteristike ginn zréckgezunn. Virauszesoen ob e GitHub Benotzer e Webentwéckler ass oder e Maschinn Léieren Entwéckler ass eis Aufgab.
Den Jobtitel vun all Benotzer huet als Basis fir dës Zilfunktioun gedéngt.
Installéiere PyTorch
Fir unzefänken, musse mir als éischt installéieren PyTorch. Dir kënnt et no Ärer Maschinn konfiguréieren aus hei. Hei ass mäin:
Moduler importéieren
Elo importéiere mir déi néideg Moduler
Importéieren an Entdeckt d'Donnéeën
De folgende Schrëtt ass d'Donnéeën ze liesen an déi éischt fënnef Reihen an déi lescht fënnef Reihen aus der Etikettdatei ze plotten.
Nëmmen zwou vun de véier Kolonnen - d'Id vum Node (dh Benotzer) an ml_target, dat ass 1 wann de Benotzer Member vun der Maschinnléiere Gemeinschaft ass an 0 soss - si relevant fir eis an dëser Situatioun.
Gitt datt et just zwou Klassen sinn, kënne mir elo sécher sinn datt eis Aufgab e binäre Klassifikatiounsprobleem ass.
Als Resultat vu bedeitende Klass Ongläichgewiichter kann de Klassifizéierer just unhuelen wéi eng Klass d'Majoritéit ass anstatt déi ënnerrepresentéiert Klass ze evaluéieren, wat d'Klassebalance en anere entscheedende Faktor mécht fir ze berücksichtegen.
D'Plotten vum Histogramm (Frequenzverdeelung) verroden e puer Ongläichgewiicht well et manner Klasse vu Maschinnléiere sinn (Label = 1) wéi aus deenen anere Klassen.
Feature Kodéierung
D'Charakteristiken vun den Noden informéieren eis iwwer d'Feature déi mat all Node assoziéiert ass. Andeems Dir eis Method implementéiert fir Daten ze codéieren, kënne mir dës Charakteristiken direkt codéieren.
Mir wëllen dës Method benotzen fir e klengen Deel vum Netz (z. B. 60 Noden) fir Affichage ze kapsuléieren. De Code ass hei opgelëscht.
Grafiken designen a weisen
Mir benotze geometresch Fackel. Daten fir eis Grafik ze bauen.
Fir eng eenzeg Grafik mat verschiddene (optional) Eegeschaften ze modelléieren, ginn Daten benotzt déi en einfachen Python-Objet sinn. Andeems Dir dës Klass an déi folgend Attributer benotzt - déi all Fackeltensoren sinn - kreéiere mir eise Grafikobjekt.
D'Form vum Wäert x, deen un déi kodéiert Node Feature zougewisen gëtt, ass [Zuel vun Noden, Zuel vun Features].
D'Form vum y ass [Zuel vun de Wirbelen], an et gëtt op d'Node Labels applizéiert.
Randindex: Fir eng ongeriicht Grafik ze beschreiwen, musse mir déi ursprénglech Randindexe ausbaue fir d'Existenz vun zwee ënnerscheedleche riichte Kanten z'erméiglechen, déi déiselwecht zwee Wirbelen verbannen, awer an entgéintgesate Richtungen weisen.
E Paar Kanten, eent weist vum Node 100 op 200 an déi aner vun 200 bis 100, ass néideg, zum Beispill, tëscht Noden 100 an 200. Wann d'Kanteindexe virgesinn sinn, da kann déi ongeriicht Grafik duergestallt ginn. [2,2 * Zuel vun originelle Kanten] wäert d'Tensorform sinn.
Mir kreéieren eis Zeechnen Grafikmethod fir eng Grafik ze weisen. Den éischte Schrëtt ass eis homogen Netzwierk an eng NetworkX Grafik ze transforméieren, déi dann mat NetworkX.draw gezeechent ka ginn.
Maacht eise GNN Modell an trainéiert en
Mir fänken un mat der Kodéierung vum ganze Set vun Daten andeems Dir codéiert Daten mat Liicht = Falsch ausféiert an dann Konstruktiounsgraf mat Liicht = Falsch nennt fir déi ganz Grafik ze bauen. Mir probéieren net dës grouss Grafik ze zéien, well ech huelen un datt Dir eng lokal Maschinn benotzt déi limitéiert Ressourcen huet.
Masken, déi binär Vecteure sinn, déi identifizéieren wéi eng Noden zu all spezifesche Mask gehéieren mat den Zifferen 0 an 1, kënne benotzt ginn fir d'Trainingsphase z'informéieren, wéi eng Node solle während dem Training abegraff sinn an d'Inferenzphase soen wéi eng Noden d'Testdaten sinn. Fackel geometresch.transforméiert.
Eng Node-Niveau Split kann bäigefüügt ginn mat der Trainingsmask, Val Mask, an Test Mask Eegeschafte vun der AddTrainValTestMask Klass, déi benotzt ka ginn fir eng Grafik ze huelen an et eis erlaabt ze spezifizéieren wéi mir wëllen datt eis Masken gebaut ginn.
Mir benotzen just 10% fir Training a benotzen 60% vun den Donnéeën als Testset, während mir 30% als Validatiounsset benotzen.
Elo stackele mir zwee GCNConv Schichten, déi éischt vun deenen huet en Ausgangsfunktiounszuel vun deem gläich ass wéi d'Zuel vun de Featuren an eiser Grafik als Input Feature.
An der zweeter Schicht, déi Ausgangsknäppchen gläich wéi d'Zuel vun eise Klassen enthält, benotze mir eng relu Aktivéierungsfunktioun a liwweren déi latent Features.
Randindex a Randgewiicht sinn zwee vun de ville Optiounen x déi GCNConv an der Forwardfunktioun akzeptéiere kann, awer an eiser Situatioun brauche mir nëmmen déi éischt zwou Variabelen.
Trotz der Tatsaach, datt eise Modell fäeg ass d'Klass vun all Node an der Grafik virauszesoen, musse mir nach ëmmer d'Genauegkeet a Verloscht fir all Set separat ofhängeg vun der Phase bestëmmen.
Zum Beispill, wärend dem Training, wëlle mir nëmmen den Trainingsset notzen fir d'Genauegkeet an d'Trainingsverloscht ze bestëmmen, an dofir sinn eis Masken praktesch.
Fir de passenden Verloscht a Genauegkeet ze berechnen, wäerte mir d'Funktioune vum maskéierte Verloscht a maskéierter Genauegkeet definéieren.
Training de Modell
Elo datt mir den Trainingszweck definéiert hunn, fir deen d'Takel benotzt gëtt. Den Adam ass e Master Optimizer.
Mir maachen d'Formatioun fir eng gewëssen Unzuel vun Epochen, wärend mir d'Validatiounsgenauegkeet am A behalen.
Mir plangen och d'Verloschter an d'Genauegkeet vum Training duerch verschidden Epochen.
Nodeeler vun Graph Neural Network
D'Benotzung vun GNNs huet e puer Nodeeler. Wéini GNNa ze beschäftegen a wéi d'Performance vun eise Maschinnléiermodeller verbessert gëtt, ginn eis allebéid kloer gemaach nodeems mir e bessert Verständnis vun hinnen hunn.
- Wärend GNNs flaach Netzwierker sinn, typesch mat dräi Schichten, kënnen déi meescht neural Netzwierker déif goen fir d'Performance ze verbesseren. Mir sinn net fäeg um Schneidkante op grouss Datesätz ze Leeschtunge wéinst dëser Begrenzung.
- Et ass méi schwéier e Modell op Grafiken ze trainéieren, well hir strukturell Dynamik dynamesch ass.
- Wéinst den héije Berechnungskäschte vun dësen Netzwierker stellt d'Skaléierung vum Modell fir d'Produktioun Erausfuerderungen. D'Skaléierung vun den GNNs fir d'Produktioun wäert Erausfuerderung sinn wann Är Grafikstruktur enorm a komplizéiert ass.
Konklusioun
An de leschte Joren hunn GNNs sech zu mächtegen an effektiven Tools fir Maschinnléiereprobleemer am Grafikberäich entwéckelt. Eng fundamental Iwwersiicht iwwer grafesch neural Netzwierker gëtt an dësem Artikel uginn.
Duerno kënnt Dir ufänken den Dataset ze kreéieren deen benotzt gëtt fir de Modell ze trainéieren an ze testen. Fir ze verstoen wéi et funktionnéiert a wat et fäeg ass, kënnt Dir och vill méi wäit goen an et trainéieren mat enger anerer Zort Dataset.
Happy Kodéierung!
Hannerlooss eng Äntwert