Índice analítico[Ocultar][Mostrar]
As técnicas de aprendizaxe profunda coñecidas como "redes neuronais de gráficos" (GNN) operan no dominio de gráficos. Estas redes atoparon uso recentemente en diversos campos, incluíndo visión por ordenador, sistemas de recomendación e optimización combinatoria, por citar algúns.
Ademais, estas redes pódense usar para representar sistemas complexos, incluíndo redes sociais, redes de interacción proteína-proteína, gráficos de coñecemento e outros en varios campos de estudo.
O espazo non euclidiano é onde operan os datos gráficos, en contraste con outros tipos de datos como as imaxes. Para clasificar nodos, predecir ligazóns e datos de clúster, utilízase a análise de gráficos.
Neste artigo, examinaremos o gráfico redes neurais en detalle, os seus tipos, así como proporcionar exemplos prácticos usando PyTorch.
Entón, que é Graph?
Un gráfico é un tipo de estrutura de datos formada por nós e vértices. As conexións entre os distintos nodos están determinadas polos vértices. Se nos nodos se indica a dirección, dise que o gráfico está dirixido; en caso contrario, non está dirixido.
Unha boa aplicación das gráficas é modelar as relacións entre varios individuos en a rede social. Cando se trata de circunstancias complexas, como enlaces e intercambios, os gráficos son moi útiles.
Empréganse en sistemas de recomendación, análise semántica, análise de redes sociais e recoñecemento de patróns
. A creación de solucións baseadas en gráficos é un campo novo que ofrece unha comprensión perspicaz de datos complexos e interrelacionados.
Rede neuronal gráfica
As redes neuronais gráficas son tipos de redes neuronais especializadas que poden funcionar nun formato de datos gráficas. A incorporación de gráficos e as redes neuronais convolucionais (CNN) teñen un impacto significativo nelas.
As redes neuronais de gráficos empréganse en tarefas que inclúen a predición de nós, bordos e gráficos.
- As CNN úsanse para clasificar imaxes. Do mesmo xeito, para predicir unha clase, aplícanse GNN á cuadrícula de píxeles que representa a estrutura do gráfico.
- Categorización de textos mediante redes neuronais de recurrencia. As GNN tamén se usan con arquitecturas gráficas onde cada palabra dunha frase é un nodo.
Para prever nodos, bordos ou gráficos completos, utilízanse redes neuronais para crear GNN. Unha predición a nivel de nodo, por exemplo, pode resolver un problema como a detección de spam.
A predición de ligazóns é un caso típico nos sistemas de recomendación e pode ser un exemplo dun problema de predición de punta.
Tipos de redes neuronais gráficas
Existen numerosos tipos de redes neuronais, e as redes neuronais convolucionais están presentes na maioría delas. Nesta parte coñeceremos as GNN máis coñecidas.
Redes convolucionais gráficas (GCN)
Son comparables ás CNN clásicas. Adquire características mirando os nós próximos. A función de activación é usada polas GNN para engadir a non linealidade despois de agregar vectores de nodos e enviar a saída á capa densa.
Está formado por convolución gráfica, unha capa lineal e unha función de activación non alumno, en esencia. Os GCN veñen en dúas variedades principais: Redes convolucionais espectrales e Redes convolucionais espaciais.
Redes de codificación automática gráfica
Usa un codificador para aprender a representar gráficos e un decodificador para tentar reconstruír gráficos de entrada. Hai unha capa de pescozo de botella que conecta o codificador e o decodificador.
Dado que os codificadores automáticos fan un excelente traballo ao manexar o equilibrio de clases, utilízanse con frecuencia na predición de ligazóns.
Redes neuronais de gráficos recorrentes (RGNN)
Nas redes multirelacionais, onde un só nodo ten numerosas relacións, aprende o patrón de difusión óptimo e pode xestionar os gráficos. Para aumentar a suavidade e reducir o exceso de parametrización, utilízanse regularizadores nesta forma de rede neuronal gráfica.
Para obter mellores resultados, os RGNN requiren menos potencia de procesamento. Utilízanse para a xeración de texto, recoñecemento de voz, tradución automática, descrición de imaxes, etiquetado de vídeos e resumo de texto.
Redes de gráficos neuronais con porta (GGNN)
Cando se trata de tarefas dependentes a longo prazo, superan os RGNN. Ao incluír portas de nodos, bordos e temporais nas dependencias a longo prazo, as redes neuronais de grafos con gated melloran as redes neuronais de grafos recorrentes.
As portas funcionan de forma similar ás unidades recorrentes con porta (GRU), xa que se utilizan para recuperar e esquecer datos en varias etapas.
Implementación de redes neuronales gráficas mediante Pytorch
O problema específico no que nos centraremos é un problema común de categorización de nodos. Temos unha rede social considerable chamada musae-github, que foi compilado a partir da API aberta, para desenvolvedores de GitHub.
Os bordes mostran as relacións de seguidores mutuos entre os nodos, que representan desenvolvedores (usuarios de plataformas) que protagonizaron polo menos 10 repositorios (teña en conta que a palabra mutuo indica unha relación non dirixida).
En función da localización do nodo, dos repositorios destacados, do empregador e do enderezo de correo electrónico, obtéñense as características do nodo. Predicir se un usuario de GitHub é un programador web ou un desenvolvedor de aprendizaxe automática é a nosa tarefa.
O cargo de cada usuario serviu de base para esta función de orientación.
Instalación de PyTorch
Para comezar, primeiro necesitamos instalar PyTorch. Podes configuralo segundo a túa máquina desde aquí. Aquí está o meu:
Importación de módulos
Agora, importamos os módulos necesarios
Importar e explorar os datos
O seguinte paso é ler os datos e representar as cinco primeiras filas e as últimas cinco filas do ficheiro de etiquetas.
Só dúas das catro columnas, o id do nodo (é dicir, usuario) e ml_target, que é 1 se o usuario é membro da comunidade de aprendizaxe automática e 0 no caso contrario, son relevantes para nós nesta situación.
Dado que só hai dúas clases, agora podemos estar seguros de que a nosa tarefa é unha cuestión de clasificación binaria.
Como resultado de importantes desequilibrios de clases, o clasificador pode só asumir que clase é a maioría en lugar de avaliar a clase subrepresentada, o que fai que o equilibrio de clases sexa outro factor crucial a considerar.
A representación gráfica do histograma (distribución de frecuencias) revela certo desequilibrio porque hai menos clases de aprendizaxe automática (etiqueta=1) que das outras clases.
Codificación de funcións
As características dos nodos infórmannos da característica que se asocia a cada nodo. Ao implementar o noso método para codificar datos, podemos codificar instantáneamente esas características.
Queremos utilizar este método para encapsular unha pequena parte da rede (por exemplo, 60 nodos) para a súa visualización. O código está listado aquí.
Deseño e visualización de gráficos
Utilizaremos un facho xeométrico. datos para construír o noso gráfico.
Para modelar un único gráfico con diferentes propiedades (opcionais), utilízanse datos que son un simple obxecto de Python. Ao utilizar esta clase e os seguintes atributos, todos eles tensores de facho, crearemos o noso obxecto gráfico.
A forma do valor x, que se asignará ás características do nodo codificado, é [número de nodos, número de características].
A forma de y é [número de nós], e aplicarase ás etiquetas dos nodos.
índice de aristas: para describir un gráfico non dirixido, necesitamos ampliar os índices de aristas orixinais para permitir a existencia de dúas arestas dirixidas distintas que unen os mesmos dous nodos pero apuntan en direccións opostas.
Requírese un par de arestas, un apuntando desde o nodo 100 ao 200 e outro do 200 ao 100, por exemplo, entre os nodos 100 e 200. Se se proporcionan os índices de bordo, entón é así como se pode representar o gráfico non dirixido. [2,2*número de arestas orixinais] será a forma tensor.
Creamos o noso método de debuxo gráfico para mostrar un gráfico. O primeiro paso é transformar a nosa rede homoxénea nun gráfico NetworkX, que logo se pode debuxar usando NetworkX.draw.
Fai o noso modelo GNN e adéntrao
Comezamos codificando todo o conxunto de datos executando codificar datos con light=False e despois chamando a construír un gráfico con light=False para construír o gráfico completo. Non intentaremos debuxar este gráfico grande porque supoño que estás a usar unha máquina local que ten recursos limitados.
As máscaras, que son vectores binarios que identifican cales nodos pertencen a cada máscara específica utilizando os díxitos 0 e 1, pódense usar para notificar á fase de adestramento que nodos deben incluírse durante o adestramento e para indicarlle á fase de inferencia cales son os datos da proba. Facho xeométrico.transforma.
Pódese engadir unha división a nivel de nodo usando as propiedades de máscara de adestramento, máscara de val e máscara de proba da clase AddTrainValTestMask, que se poden usar para tomar un gráfico e permitirnos especificar como queremos que se constrúan as nosas máscaras.
Só utilizamos o 10 % para adestrar e usamos o 60 % dos datos como conxunto de probas mentres usamos o 30 % como conxunto de validación.
Agora, apilaremos dúas capas GCNConv, a primeira das cales ten un reconto de características de saída igual ao número de características do noso gráfico como características de entrada.
Na segunda capa, que contén nodos de saída iguais ao número das nosas clases, aplicamos unha función de activación relu e proporcionamos as características latentes.
O índice de bordo e o peso do bordo son dúas das moitas opcións x que GCNConv pode aceptar na función de avance, pero na nosa situación, só necesitamos as dúas primeiras variables.
A pesar de que o noso modelo poderá predecir a clase de cada nodo do gráfico, aínda necesitamos determinar a precisión e a perda de cada conxunto por separado dependendo da fase.
Por exemplo, durante o adestramento, só queremos utilizar o conxunto de adestramento para determinar a precisión e a perda de adestramento e, polo tanto, aquí é onde as nosas máscaras son útiles.
Para calcular a perda e precisión adecuadas, definiremos as funcións de perda enmascarada e precisión enmascarada.
Adestramento do modelo
Agora que definimos o propósito de adestramento para o que se utilizará o facho. Adam é un mestre optimizador.
Realizaremos o adestramento durante un certo número de épocas mentres vixíamos a precisión da validación.
Tamén representamos as perdas e precisións do adestramento ao longo de diferentes épocas.
Desvantaxes da rede neuronal gráfica
Usar GNN ten algunhas desvantaxes. Cando empregar GNNa e como mellorar o rendemento dos nosos modelos de aprendizaxe automática, quedará claro cando teñamos unha mellor comprensión dos mesmos.
- Aínda que as GNN son redes pouco profundas, normalmente con tres capas, a maioría das redes neuronais poden ir profundamente para mellorar o rendemento. Non podemos funcionar á vangarda en grandes conxuntos de datos debido a esta limitación.
- É máis difícil adestrar un modelo sobre gráficos, xa que a súa dinámica estrutural é dinámica.
- Debido aos altos custos computacionais destas redes, escalar o modelo para a produción presenta retos. A escala das GNN para a produción será un reto se a súa estrutura gráfica é enorme e complicada.
Conclusión
Durante os últimos anos, as GNN convertéronse en ferramentas poderosas e eficaces para problemas de aprendizaxe automática no dominio dos gráficos. Neste artigo dáse unha visión xeral fundamental das redes neuronais gráficas.
Despois diso, pode comezar a crear o conxunto de datos que se utilizará para adestrar e probar o modelo. Para comprender como funciona e de que é capaz, tamén podes ir moito máis lonxe e adestralo usando un tipo de conxunto de datos diferente.
Feliz Codificación!
Deixe unha resposta