Taula de continguts[Amaga][Espectacle]
Les tècniques d'aprenentatge profund conegudes com a "xarxes neuronals de gràfics" (GNN) operen en el domini dels gràfics. Darrerament, aquestes xarxes han trobat ús en diversos camps, com ara la visió per computador, els sistemes de recomanació i l'optimització combinatòria, per citar-ne alguns.
A més, aquestes xarxes es poden utilitzar per representar sistemes complexos, incloses xarxes socials, xarxes d'interacció proteïna-proteïna, gràfics de coneixement i altres en diversos camps d'estudi.
L'espai no euclidià és on operen les dades del gràfic, a diferència d'altres tipus de dades com les imatges. Per tal de classificar nodes, predir enllaços i dades de clúster, s'utilitza l'anàlisi de gràfics.
En aquest article, examinarem el gràfic xarxa neuronal en detall, els seus tipus, així com proporcionar exemples pràctics amb PyTorch.
Aleshores, què és Graph?
Un gràfic és un tipus d'estructura de dades formada per nodes i vèrtexs. Les connexions entre els diferents nodes estan determinades pels vèrtexs. Si s'indica la direcció als nodes, es diu que el gràfic està dirigit; en cas contrari, no està dirigit.
Una bona aplicació dels gràfics és modelar les relacions entre diversos individus en a social network. Quan es tracta de circumstàncies complexes, com ara enllaços i intercanvis, els gràfics són molt útils.
S'utilitzen per sistemes de recomanació, anàlisi semàntica, anàlisi de xarxes socials i reconeixement de patrons
. La creació de solucions basades en gràfics és un camp totalment nou que ofereix una comprensió profunda de dades complexes i interrelacionades.
Xarxa neuronal gràfica
Les xarxes neuronals de gràfics són tipus de xarxes neuronals especialitzades que poden funcionar en un format de dades de gràfics. La incorporació de gràfics i les xarxes neuronals convolucionals (CNN) tenen un impacte significatiu en elles.
Les xarxes neuronals de gràfics s'utilitzen en tasques que inclouen predir nodes, vores i gràfics.
- Les CNN s'utilitzen per classificar imatges. De la mateixa manera, per predir una classe, els GNN s'apliquen a la graella de píxels que representa l'estructura del gràfic.
- Categorització de textos mitjançant xarxes neuronals de recurrència. Els GNN també s'utilitzen amb arquitectures de gràfics on cada paraula d'una frase és un node.
Per tal de preveure nodes, vores o gràfics complets, s'utilitzen xarxes neuronals per crear GNN. Una predicció a nivell de node, per exemple, pot resoldre un problema com la detecció de correu brossa.
La predicció d'enllaços és un cas típic en els sistemes de recomanació i pot ser un exemple d'un problema de predicció de la vora.
Tipus de xarxes neuronals gràfics
Existeixen nombrosos tipus de xarxes neuronals, i les xarxes neuronals convolucionals estan presents a la majoria d'elles. En aquesta part coneixerem les GNN més conegudes.
Xarxes convolucionals de gràfics (GCN)
Són comparables a les CNN clàssiques. Adquireix característiques mirant els nodes propers. Les GNN utilitzen la funció d'activació per afegir no linealitat després d'agregar vectors de nodes i enviar la sortida a la capa densa.
Es compon de convolució gràfica, una capa lineal i una funció d'activació que no és l'aprenent, en essència. Els GCN es presenten en dues varietats principals: xarxes convolucionals espectrals i xarxes convolucionals espacials.
Gràfic de xarxes de codificació automàtica
Utilitza un codificador per aprendre a representar gràfics i un descodificador per intentar reconstruir gràfics d'entrada. Hi ha una capa de coll d'ampolla que connecta el codificador i el descodificador.
Com que els codificadors automàtics fan un treball excel·lent per gestionar l'equilibri de classes, s'utilitzen sovint en la predicció d'enllaços.
Xarxes neuronals de gràfics recurrents (RGNN)
A les xarxes multirelacionals, on un sol node té nombroses relacions, aprèn el patró de difusió òptim i pot gestionar els gràfics. Per tal d'augmentar la suavitat i reduir l'excés de parametrització, s'utilitzen regularitzadors en aquesta forma de xarxa neuronal gràfica.
Per obtenir millors resultats, els RGNN requereixen menys potència de processament. S'utilitzen per a la generació de text, reconeixement de veu, traducció automàtica, descripció d'imatges, etiquetatge de vídeo i resum de text.
Xarxes de gràfics neuronals tancats (GGNN)
Quan es tracta de tasques dependents a llarg termini, superen els RGNN. En incloure nodes, arestes i portes temporals a les dependències a llarg termini, les xarxes neuronals de grafs tancats milloren les xarxes neuronals de grafs recurrents.
Les portes funcionen de manera similar a les unitats recurrents amb porta (GRU), ja que s'utilitzen per recuperar i oblidar dades en diverses etapes.
Implementació de la xarxa neuronal de gràfics amb Pytorch
El problema específic en què ens centrarem és un problema comú de categorització de nodes. Tenim una xarxa social important anomenada musae-github, que es va compilar a partir de l'API oberta, per als desenvolupadors de GitHub.
Les vores mostren les relacions de seguidors mutus entre els nodes, que representen desenvolupadors (usuaris de plataforma) que han protagonitzat almenys 10 repositoris (tingueu en compte que la paraula mutu indica una relació no dirigida).
En funció de la ubicació del node, els dipòsits destacats, l'empresari i l'adreça de correu electrònic, es recuperen les característiques del node. Predir si un usuari de GitHub és un desenvolupador web o un desenvolupador d'aprenentatge automàtic és la nostra tasca.
El càrrec de cada usuari va servir de base per a aquesta funció d'orientació.
Instal·lació de PyTorch
Per començar, primer hem d'instal·lar-lo PyTorch. Podeu configurar-lo segons la vostra màquina des de aquí. Aquí està el meu:
Importació de mòduls
Ara, importem els mòduls necessaris
Importació i exploració de les dades
El pas següent és llegir les dades i representar les cinc primeres files i les últimes cinc files del fitxer d'etiquetes.
Només dues de les quatre columnes —l'identificador del node (és a dir, l'usuari) i ml_target, que és 1 si l'usuari és membre de la comunitat d'aprenentatge automàtic i 0 en cas contrari— són rellevants per a nosaltres en aquesta situació.
Atès que només hi ha dues classes, ara podem estar segurs que la nostra tasca és una qüestió de classificació binària.
Com a resultat d'importants desequilibris de classe, el classificador només pot assumir quina classe és la majoria en lloc d'avaluar la classe infrarepresentada, fent que l'equilibri de classe sigui un altre factor crucial a tenir en compte.
El dibuix de l'histograma (distribució de freqüència) revela un cert desequilibri perquè hi ha menys classes d'aprenentatge automàtic (etiqueta = 1) que de les altres classes.
Codificació de funcions
Les característiques dels nodes ens informen de la característica que s'associa a cada node. Mitjançant la implementació del nostre mètode per codificar dades, podem codificar instantàniament aquestes característiques.
Volem utilitzar aquest mètode per encapsular una petita part de la xarxa (per exemple, 60 nodes) per a la seva visualització. El codi es mostra aquí.
Disseny i representació de gràfics
Utilitzarem la torxa geomètrica. dades per construir el nostre gràfic.
Per modelar un únic gràfic amb diferents propietats (opcionals), s'utilitzen dades que són un objecte Python simple. Utilitzant aquesta classe i els atributs següents, tots ells tensors de torxa, crearem el nostre objecte gràfic.
La forma del valor x, que s'assignarà a les característiques del node codificades, és [nombre de nodes, nombre de característiques].
La forma de y és [nombre de nodes] i s'aplicarà a les etiquetes dels nodes.
Índex d'arestes: per descriure un gràfic no dirigit, hem d'ampliar els índexs d'areste originals per permetre l'existència de dues arestes dirigides diferents que uneixen els mateixos dos nodes però apunten en direccions oposades.
Es requereix un parell d'arestes, una apuntant del node 100 al 200 i l'altra del 200 al 100, per exemple, entre els nodes 100 i 200. Si es proporcionen els índexs d'arestes, així és com es pot representar el gràfic no dirigit. [2,2*nombre d'arestes originals] serà la forma tensor.
Creem el nostre mètode de dibuix de gràfics per mostrar un gràfic. El primer pas és transformar la nostra xarxa homogènia en un gràfic NetworkX, que després es pot dibuixar amb NetworkX.draw.
Fes el nostre model GNN i entrena'l
Comencem codificant tot el conjunt de dades executant la codificació de dades amb light=False i després cridant a construir el gràfic amb light=False per construir tot el gràfic. No intentarem dibuixar aquest gràfic gran perquè suposo que esteu utilitzant una màquina local que té recursos limitats.
Les màscares, que són vectors binaris que identifiquen quins nodes pertanyen a cada màscara específica mitjançant els dígits 0 i 1, es poden utilitzar per notificar a la fase d'entrenament quins nodes s'han d'incloure durant l'entrenament i per indicar a la fase d'inferència quins nodes són les dades de prova. Torxa geomètric.transforma.
Es pot afegir una divisió a nivell de node mitjançant la màscara d'entrenament, la màscara de valor i les propietats de màscara de prova de la classe AddTrainValTestMask, que es poden utilitzar per fer un gràfic i ens permeten especificar com volem que es construeixin les nostres màscares.
Només utilitzem el 10% per a la formació i utilitzem el 60% de les dades com a conjunt de proves, mentre que utilitzem el 30% com a conjunt de validació.
Ara, apilarem dues capes GCNConv, la primera de les quals té un recompte de característiques de sortida igual al nombre de característiques del nostre gràfic com a característiques d'entrada.
A la segona capa, que conté nodes de sortida iguals al nombre de les nostres classes, apliquem una funció d'activació de relu i proporcionem les característiques latents.
L'índex de vora i el pes de la vora són dues de les moltes opcions x que GCNConv pot acceptar a la funció d'avanç, però en la nostra situació, només necessitem les dues primeres variables.
Tot i que el nostre model serà capaç de predir la classe de cada node del gràfic, encara hem de determinar la precisió i la pèrdua per a cada conjunt per separat en funció de la fase.
Per exemple, durant l'entrenament, només volem utilitzar el conjunt d'entrenament per determinar la precisió i la pèrdua d'entrenament i, per tant, aquí és on les nostres màscares són útils.
Per calcular la pèrdua i la precisió adequades, definirem les funcions de pèrdua emmascarada i precisió emmascarada.
Formació del model
Ara que hem definit el propòsit d'entrenament per al qual s'utilitzarà la torxa. Adam és un optimitzador mestre.
Realitzarem l'entrenament durant un cert nombre d'èpoques mentre vigilarem la precisió de la validació.
També tratem les pèrdues i precisions de l'entrenament al llarg de diferents èpoques.
Inconvenients de la xarxa neuronal gràfica
L'ús de GNN té alguns desavantatges. Quan s'ha d'utilitzar GNNa i com millorar el rendiment dels nostres models d'aprenentatge automàtic, ens quedaran clars un cop els tinguem una millor comprensió.
- Tot i que les GNN són xarxes poc profundes, normalment amb tres capes, la majoria de xarxes neuronals poden aprofundir per millorar el rendiment. No podem actuar a l'avantguarda en grans conjunts de dades a causa d'aquesta limitació.
- És més difícil entrenar un model sobre gràfics, ja que la seva dinàmica estructural és dinàmica.
- A causa dels elevats costos computacionals d'aquestes xarxes, escalar el model per a la producció presenta reptes. Escalar els GNN per a la producció serà un repte si l'estructura del gràfic és enorme i complicada.
Conclusió
Durant els últims anys, les GNN s'han convertit en eines potents i efectives per a problemes d'aprenentatge automàtic en el domini dels gràfics. En aquest article es dóna una visió general fonamental de les xarxes neuronals de gràfics.
Després d'això, podeu començar a crear el conjunt de dades que s'utilitzarà per entrenar i provar el model. Per entendre com funciona i de què és capaç, també podeu anar molt més lluny i entrenar-lo mitjançant un tipus de conjunt de dades diferent.
Codificació feliç!
Deixa un comentari