Table di cuntinutu[Piattà][Mostra]
E tecniche d'apprendimentu prufonda cunnisciute cum'è "rete neurali di graffiu" (GNN) operanu in u duminiu di u graficu. Queste rete anu ultimamente trovu usu in una varietà di campi, cumpresa a visione di l'informatica, i sistemi di ricunniscenza è l'ottimisazione cumminatoria, per nome uni pochi.
Inoltre, queste rete ponu esse aduprate per rapprisintà sistemi cumplessi, cumprese e rete soziale, rete d'interazzione proteina-proteina, gràfiche di cunniscenza, è altri in parechji campi di studiu.
U spaziu non euclidianu hè induve i dati di u graficu operanu, in cuntrastu à altri tipi di dati cum'è l'imaghjini. Per classificà i nodi, predichendu i ligami è i dati di cluster, l'analisi grafica hè aduprata.
In questu articulu, avemu da esaminà u Graficu Network filaire in detail, i so tipi, è ancu furnisce esempi pratichi cù PyTorch.
Allora, chì hè Graph?
Un graficu hè un tipu di struttura di dati cumpostu di nodi è vertici. I ligami trà i varii nodi sò determinati da i vertici. Se a direzzione hè indicata in i nodi, u graficu hè dettu chì hè diretta; altrimenti, ùn hè micca diretta.
Una bona applicazione di i grafici hè di mudificà e relazioni trà e diverse individui in a suciali, a reta. Quandu si tratta di circustanze cumplessi, cum'è ligami è scambii, i grafici sò assai utili.
Sò impiegati da sistemi di ricunniscenza, analisi semantica, analisi di rete suciale è ricunniscenza di mudelli
. A creazione di soluzioni basate in grafici hè un campu novu chì offre una comprensione perspicacia di dati cumplessi è interrelati.
Graph Neural Network
E rete neurali gràfiche sò tipi di rete neurale specializate chì ponu operare nantu à un formatu di dati gràficu. L'incrustazione di grafici è e rete neurali cunvoluzionali (CNN) anu un impattu significativu nantu à elli.
E Rete Neural Graph sò impiegate in i travaglii chì includenu predichendu nodi, bordi è grafici.
- I CNN sò usati per classificà l'imaghjini. In listessu modu, per predichendu una classa, i GNN sò appiicati à a griglia di pixel chì rapprisenta a struttura di u graficu.
- Categurizazione di testu utilizendu e rete neurali di recurrenza. I GNN sò ancu usati cù l'architetture di gràficu induve ogni parolla in una frase hè un node.
Per previsione nodi, bordi, o grafici cumpleti, e rete neurali sò aduprate per creà GNN. Una predizione à u livellu di u nodu, per esempiu, pò risolve un prublema cum'è a rilevazione di spam.
A predizione di u ligame hè un casu tipicu in i sistemi di ricunniscenza è puderia esse un esempiu di un prublema di prediczione di punta.
Tipi di Rete Neurale Graficu
Ci sò numerosi tipi di rete neurali, è e Reti Neural Convolutional sò prisenti in a maiò parte di elli. Ampararemu nantu à i GNN più cunnisciuti in questa parte.
Reti di cunvoluzione grafica (GCN)
Sò paragunabili à i CNN classici. Acquistà caratteristiche fighjendu i nodi vicini. A funzione di attivazione hè aduprata da i GNN per aghjunghje a non-linearità dopu l'aggregazione di vettori di nodi è l'inviu di l'output à a capa densa.
Hè custituitu da a cunvoluzione di Graficu, una strata lineale, è una funzione di attivazione non-learner, in essenza. I GCN venenu in duie varietà principali: Reti Convoluziunali Spettrali è Reti Convoluzionali Spaziali.
Graficu Reti Auto-Encoder
Aduprà un codificatore per amparà à rapprisintà i grafici è un decodificatore per pruvà à ricustruisce i grafici di input. Ci hè una strata di collu di buttiglia chì cunnetta u codificatore è u decodificatore.
Siccomu l'auto-codificatori facenu un excelente travagliu di gestisce l'equilibriu di classi, sò spessu usati in a predizione di ligami.
Reti Neural Graph Recurrents (RGNN)
In e rete multi-relazioni, induve un unicu node hà numerosi rilazioni, ampara u mudellu di diffusione ottimali è pò gestisce i grafici. Per aumentà a fluidità è riduce a parametrizzazione eccessiva, i regularizers sò usati in questa forma di rete neurale gràfica.
Per ottene risultati megliu, i RGNN necessitanu menu putenza di trasfurmazioni. Sò aduprati per a generazione di testu, u ricunniscenza di voce, a traduzzione automatica, a descrizzione di l'imaghjini, l'etichettatura di video è a summarization di testu.
Reti di Grafici Neuronali Gated (GGNN)
Quandu si tratta di travaglii dipendente à longu andà, superanu i RGNN. Includendu i nodi, i bordi è e porte temporali in dipendenze à longu andà, e rete neurali di graffi gated rinforzanu e rete neurali di graffi ricurrenti.
I cancelli funzionanu in modu simile à l'Unità Recurrenti Gated (GRU) in quantu sò usati per ricurdà è scurdà di dati in diverse tappe.
Implementazione di a Rete Neurale di Graficu cù Pytorch
U prublema specificu nantu à quale ci focalizeremu hè un prublema di categurizazione di nodi cumuni. Avemu una rete suciale grande chjamata musae-github, chì hè stata compilata da l'API aperta, per i sviluppatori di GitHub.
I bordi mostranu e rilazioni di seguitori mutuali trà i nodi, chì rapprisentanu sviluppatori (utilizatori di a piattaforma) chì anu stellatu in almenu 10 repositori (nota chì a parola mutuale indica una relazione indiretta).
Basatu nantu à u locu di u node, i repositori stellati, l'impiegatori è l'indirizzu email, e caratteristiche di u nodu sò recuperati. Predichendu se un utilizatore GitHub hè un sviluppatore web o un sviluppatore di machine learning hè u nostru compitu.
U titulu di travagliu di ogni utilizatore hà servitu cum'è a basa per sta funzione di destinazione.
Installazione di PyTorch
Per cumincià, prima avemu bisognu di stallà PyTorch. Pudete cunfigurà secondu a vostra macchina da ccà. Eccu u mio:
Importazione di moduli
Avà, impurtate i moduli necessarii
Importazione è Esplora i dati
U passu dopu hè di leghje e dati è tracciate e prime cinque fila è l'ultimi cinque fila da u schedariu di l'etichette.
Solu duie di e quattru culonne - l'ID di u nodu (vale à dì, l'utilizatore) è ml_target, chì hè 1 se l'utilizatore hè un membru di a cumunità di l'apprendimentu automaticu è 0 altrimente - sò pertinenti per noi in questa situazione.
Dapoi chì ci sò solu duie classi, pudemu avà esse sicuru chì a nostra missione hè una questione di classificazione binaria.
In u risultatu di i squilibri di classi significativi, u classificatore pò solu assume chì a classa hè a maiuranza invece di valutà a classa sottorappresentata, facendu l'equilibriu di classi un altru fattore cruciale per cunsiderà.
Tracendu l'istogramma (distribuzione di freccia) palesa un certu sbilanciamentu perchè ci sò menu classi da l'apprendimentu machine (etichetta = 1) cà da l'altri classi.
Funzioni di codificazione
E caratteristiche di i nodi ci informanu di a funzione chì hè assuciata à ogni nodu. Implementendu u nostru metudu per codificà e dati, pudemu codificà istantaneamente queste caratteristiche.
Vulemu utilizà stu metudu per incapsulà una piccula parte di a reta (per dì, 60 nodi) per a visualizazione. U codice hè listatu quì.
Cuncepimentu è visualizazione di grafici
Utilizemu a torcia geomètrica. dati per custruisce u nostru graficu.
Per mudificà un unicu gràficu cù diverse proprietà (opcionali), dati chì sò un oggettu simplice di Python sò utilizati. Utilizendu sta classa è i seguenti attributi, chì sò tutti tensori di torche, creeremu u nostru ughjettu graficu.
A forma di u valore x, chì serà attribuitu à e caratteristiche di node codificate, hè [number of nodes, number of features].
A forma di y hè [number of nodes], è serà appiicata à l'etichette di node.
indice di bordu: Per discrivà un gràficu senza direzzione, avemu bisognu di espansione l'indici di bordu originali per permette l'esistenza di dui bordi diretti distinti chì liganu i stessi dui nodi ma puntanu in direzzione opposta.
Un paru di arghjintini, unu chì puntanu da u node 100 à 200 è l'altru da 200 à 100, hè necessariu, per esempiu, trà i nodi 100 è 200. Se l'indici di punta sò furniti, allora questu hè cumu si pò esse rapprisintatu u gràficu indirigitu. [2,2 * numeru di bordi originali] serà a forma di tensor.
Creemu u nostru metudu di disegnu graficu per vede un graficu. U primu passu hè di trasfurmà a nostra reta homogeneia in un graficu NetworkX, chì pò esse tracciatu cù NetworkX.draw.
Fate u nostru mudellu GNN è furmà
Cuminciamu per codificà l'intera serie di dati eseguendu dati di codifica cù light=False è dopu chjamà u grafficu di custruzzione cù light=False per custruisce u gràficu tutale. Ùn pruveremu micca di disegnà stu grande graficu perchè presumu chì site aduprate una macchina locale chì hà risorse limitate.
I maschere, chì sò vettori binari chì identificanu quali nodi appartenenu à ogni maschera specifica utilizendu i numeri 0 è 1, ponu esse aduprati per notificà a fase di furmazione chì i nodi devenu esse inclusi durante a furmazione è per dì à a fase di inferenza chì i nodi sò i dati di prova. Torch geometric.trasforma.
Una divisione à livellu di nodu pò esse aghjuntu cù a maschera di furmazione, a maschera di val, è a maschere di prova di a classa AddTrainValTestMask, chì pò esse usata per piglià un graficu è ci permette di specificà cumu vulemu chì e nostre maschere sò custruite.
Utilizemu solu u 10% per a furmazione è utilizemu u 60% di e dati cum'è u set di teste mentre utilizemu u 30% cum'è u set di validazione.
Avà, stack due strati GCNConv, u primu di quale hà un numeru di funzioni di output chì hè uguale à u numeru di funzioni in u nostru graficu cum'è funzioni di input.
In a seconda capa, chì cuntene nodi di output uguali à u numeru di e nostre classi, applicà una funzione di attivazione relu è furnisce e caratteristiche latenti.
L'indice di punta è u pesu di punta sò dui di e parechje opzioni x chì GCNConv pò accettà in a funzione avanti, ma in a nostra situazione, avemu solu bisognu di i primi dui variàbili.
Malgradu u fattu chì u nostru mudellu serà capaci di predichendu a classa di ogni node in u graficu, avemu sempre bisognu di determinà l'accuratezza è a perdita per ogni settore separatamente secondu a fase.
Per esempiu, durante a furmazione, vulemu solu aduprà u set di furmazione per determinà a precisione è a perdita di furmazione, è per quessa hè quì chì e nostre maschere sò utili.
Per calculà a perdita apprupriata è a precisione, avemu da definisce e funzioni di perdita mascherata è precisione mascherata.
Training u mudellu
Avà chì avemu definitu u scopu di furmazione per quale u torch serà utilizatu. Adam hè un ottimisatore maestru.
Cunduceremu a furmazione per un certu nùmeru di epoche mantenendu un ochju nantu à a precisione di validazione.
Tracemu ancu e perdite di furmazione è precisione in diverse epoche.
Disvantages di Graph Neural Network
L'usu di GNN hà uni pochi svantaghji. Quandu impiegà GNNa è cumu per rinfurzà a prestazione di i nostri mudelli di apprendimentu di macchina, ci saranu sia chiari dopu avè una megliu comprensione di elli.
- Mentre i GNN sò reti superficiali, tipicamente cù trè strati, a maiò parte di e rete neurali ponu andà in profondità per migliurà u rendiment. Ùn pudemu micca esse realizatu à l'avanguardia in i grandi datasets per via di questa limitazione.
- Hè più difficiuli di furmà un mudellu nantu à i grafici, postu chì a so dinamica strutturale hè dinamica.
- A causa di l'alti costi di computazione di queste rete, a scala di u mudellu per a produzzione presenta sfide. Scaling the GNNs for production will be challenge if your graph structure is enormous and complicated.
cunchiusioni
In l'ultimi anni, i GNN si sò sviluppati in strumenti putenti è efficaci per i prublemi di l'apprendimentu automaticu in u duminiu graficu. Una panoramica fundamentale di e rete neurali di u graficu hè datu in questu articulu.
Dopu quì, pudete inizià a creazione di u dataset chì serà utilizatu per furmà è pruvà u mudellu. Per capisce cumu funziona è ciò chì hè capace di, pudete ancu andà assai più luntanu è furmà cù un altru tipu di dataset.
Felice Codificazione!
Lascia un Audiolibro