Redes neurais gráficas (GNNs) são uma arquitetura de rede neural profunda populares tanto em aplicações práticas quanto em pesquisas de ponta de aprendizado de máquina. Elas usam um modelo de redes neurais para representar dados sobre entidades e seus relacionamentos. Elas são úteis para mineração de dados do mundo real, compreensão de redes sociais, gráficos de conhecimento, sistemas de recomendação e bioinformática.
O desenvolvimento das GNNs inspirou-se em algoritmos de deep learning, como redes neurais convolucionais (CNNs) e redes neurais recorrentes (RNNs), mas elas têm várias diferenças importantes. As CNNs são projetadas para dados que possuem uma estrutura em grade, como os pixels de uma imagem. Qualquer pixel pode ser conectado a, no máximo, oito outros pixels. Por outro lado, as RNNs são adaptadas para estruturas de sequências em que cada elemento pode ser conectado a dois outros elementos no máximo, como uma sequência de palavras em um texto. No entanto, em dados estruturados em gráficos, qualquer elemento pode ter uma ou mais conexões e pode não haver consistência entre os números de conexões de um elemento específico.
As redes neurais gráficas são uma implementação de deep learning geométrico1, sendo classificadas em quatro categorias fundamentais:
Aprendizado baseado em gráficos, que aprende sobre dados semelhantes a gráficos.
Aprendizado baseado em grade, que aprende sobre imagens semelhantes a dados e outros tipos de dados que podem ser descritos por grades.
Aprendizado baseado em grupo, que aprende sobre como as informações se relacionam com um grupo principal. Isso é poderoso quando os dados são adquiridos de um grupo como uma esfera, como por exemplo, dados geológicos de diferentes fontes em toda a Terra.
Aprendizado baseado em malha, que aprende sobre como as informações são espalhadas por uma malha irregular, como analisar e prever elementos de um modelo 3D de um objeto.
As GNNs são uma área de pesquisa ativa em inteligência artificial, mas são bem corroboradas por bibliotecas e toolkits construídos em linguagens como Python e frameworks como TensorFlow e PyTorch.
Um conjunto de objetos e as conexões entre eles podem ser expressos como um gráfico. Pesquisadores de ciência da computação desenvolveram redes neurais para operar em estruturas de dados gráficas.
Um gráfico representa as relações, chamadas de "edges", entre uma coleção de entidades, chamadas de "nós". Matematicamente, um gráfico G é definido como uma tupla de um conjunto de nós e vértices V, e um conjunto de edges e ligações. E:G = (V, E). Cada edge é um par de dois vértices e representa uma conexão entre eles.
Para descrever ainda mais cada nó, edge ou todo o gráfico, podemos armazenar informações em cada uma dessas partes do gráfico.
Os gráficos podem ser descritos em mais detalhes atribuindo-se a direcionalidade a cada edge. Um gráfico é descrito como sendo direcionado ou não direcionado. Um gráfico não direcionado representa uma relação, que é bidirecional. Se Rosa tem um irmão, Juan, então Juan também tem uma irmã, Rosa. A relação entre Rosa e seu irmão não tem nenhuma direcionalidade, apenas conecta os dois. Um gráfico direcionado representa relações direcionais. Se Rosa tem um irmão mais velho, Juan, então a relação "irmão mais velho" só vai em uma direção: de Juan para Rosa; Juan não tem um "irmão mais velho".
Uma forma de visualizar a conectividade de um gráfico é por meio de sua matriz de adjacência. Ela é uma representação baseada em matriz dos vértices do gráfico que pode representar gráficos não direcionados e direcionados.
A matriz de adjacência de um gráfico direcionado mostrado indica todos os vértices e a direção da edge que os cria. Por exemplo, o nó 0 no gráfico direcionado se conecta ao nó 1, mas o inverso não é verdadeiro devido à direcionalidade da conexão. A matriz de adjacência, [linha 0, coluna 1] contém um valor, enquanto [linha 1, coluna 0], não.
As representações dos gráficos devem ter invariância de permutação, o que significa que as representações do gráfico devem produzir os resultados se a estrutura do gráfico for a mesma, mas a ordem dos nós for diferente. Essa abordagem garante que a representação do gráfico tenha as mesmas propriedades que o próprio gráfico.
As GNNs normalmente adotam uma arquitetura de "entrada gráfica, saída gráfica". Isso significa que esses tipos de modelo aceitam um gráfico como entrada, com informações carregadas em seus nós, edges e contexto global. Os modelos transformam progressivamente essas embeddings sem alterar a conectividade do gráfico de entrada. As embeddings representam os nós como embeddings de nós, e os vértices como embeddings de vértices. Essas embeddings permitem que o modelo aprenda quais tipos de nós ocorrem e onde no gráfico, bem como os tipos e localizações das edges.
Normalmente, o treinamento de redes neurais é feito atualizando os parâmetros da rede com gradientes calculados em um subconjunto aleatório dos dados de treinamento. Para treinar redes gráficas, redes neurais gráficas para criar subgráficos que preservem as propriedades essenciais do grande gráfico pai.
As GNNs usam um mecanismo de passagem de mensagens para agregar informações de nós vizinhos, permitindo que capturem as relações complexas em gráficos. Um desafio na modelagem de dados estruturados em gráficos é capturar as interações entre os nós. A passagem de mensagens neural lida com esse desafio fornecendo um framework para modelar dependências e interações em dados gráficos. Nós trocam informações com seus nós vizinhos e agregam essas informações para atualizar suas próprias representações. Esse processo de passagem de mensagens é semelhante a nós em um gráfico que trocam mensagens ou sinais.
As GNNs permitem vários tipos diferentes de análise, cada um dos quais fornece insights sobre diferentes elementos dos dados do gráfico.
Tarefas em nível de grafo
Em uma tarefa em nível de gráfico, a GNN prevê uma propriedade de um gráfico inteiro. Para uma molécula representada como um gráfico, você pode querer prever se ela se ligará a um receptor associado a uma doença. Para uma rede social, você pode querer prever se ela provavelmente estará associada a uma instituição específica, como uma universidade ou faculdade. Esse tipo de reconhecimento de padrão pode ser enquadrado como uma forma de classificação de gráficos, pois classifica o gráfico inteiro.
Tarefas em nível de nó
As tarefas em nível de nó referem-se à previsão da identidade ou função de cada nó em um grafo. Por exemplo, um problema de classificação de nós em um conjunto de dados de redes sociais pode ser prever se um usuário provavelmente terá um interesse específico com base em sua rede de amigos conectada. Ter amigos que compartilham apenas um interesse por golfe, mas nenhum outro interesse em comum, é uma boa indicação de que um novo amigo provavelmente também gosta de golfe. Esses tipos de funcionalidades de nó muitas vezes podem ser previstos com uma GNN.
Tarefas em nível de edge
O último tipo de problema de previsão em grafos é a previsão de edge, às vezes chamada de previsão de link.
Um exemplo de inferência em nível de edge está na compreensão de cena de imagem. Depois de identificar objetos em uma imagem, os modelos de deep learning também podem prever a relação entre eles. Essa é uma classificação em nível de edge porque os nós representam os objetos na imagem e a previsão indica quais desses nós compartilham uma edge ou qual é o valor dessa edge. Se quiser descobrir conexões entre entidades, você pode considerar o grafo como sendo "totalmente conectado" e, com base em seu valor previsto, podar as edges para chegar a um grafo esparso.
Redes convolucionais de grafos4 (GCNs): essa abordagem é para aprendizado semissupervisionado baseado em uma variante de redes neurais convolucionais que podem aprender e prever a partir de dados baseados em grafos. Esses modelos escalam linearmente no número de edges do grafo, tornando-os adequados para grandes conjuntos de dados. Os modelos também aprendem a estrutura dos grafos locais e as funcionalidades dos nós.
Autocodificadores de gráfico2: essas variantes são modelos de redes neurais treináveis de ponta a ponta para aprendizado não supervisionado, agrupamento e previsão de links em gráficos. Normalmente, usam uma GCN como codificador para criar embeddings e têm um decodificador que reconstrói o gráfico a partir da representação latente aprendida.
Redes de atenção de grafos3 (GAT): arquitetura de redes neurais que opera em dados estruturados de grafos. As GATs aproveitam um mecanismo de atenção na forma de camadas de autoatenção para lidar com as deficiências de métodos anteriores baseados em convoluções de grafos ou suas aproximações. Ao empilhar camadas nas quais os nós podem ter atenção sobre as funcionalidades de suas vizinhanças, uma GAT permite especificar (implicitamente) diferentes pesos para diferentes nós em uma vizinhança. Isso é possível sem a necessidade de operações com matrizes dispendiosas, como inversão, ou a dependência do conhecimento inicial da estrutura dos grafos.
Representação de grafos: o aprendizado é uma área de pesquisa que amplia as redes neurais como uma maneira de encontrar uma representação significativa, potencialmente de baixa dimensão, dos nós a partir das relações complexas presentes em um grafo. Um exemplo dessa extensão é o GraphSage6, um projeto da Stanford University, que cria representações vetoriais de baixa dimensão para nós, tornando-o adequado para trabalhar com dados onde os nós representam dados de alta dimensão.
Como um exemplo de como uma GNN pode ser estruturada, considere uma rede convolucional de grafos (GCN) simples para classificar um grafo inteiro. A GCN mais simples possui três camadas:
Camada convolucional — essa camada executa a convolução em cada nó para aprender suas conexões.
Camada de ativação não linear — essa camada aplica uma função de ativação como ReLU à saída da convolução.
Camada linear de saída — essa camada final soma as saídas para gerar uma previsão final.
Primeiro, uma convolução é executada usando cada nó no gráfico da camada de convolução. Essa camada convolucional utiliza informações de funcionalidade dos vizinhos de cada nó e as agrega, atualizando os pesos associados a cada nó. Em seguida, uma função de ativação não linear, como ReLU, é aplicada à saída da camada de convolução. Para obter a melhor precisão, uma rede pode usar múltiplas convoluções e camadas de ativação não lineares empilhadas juntas. Por fim, uma camada linear de saída é usada para prever a qual classe um gráfico provavelmente pertencerá.
As GCNs são conceitualmente simples, adequadas para grafos em grande escala e fáceis de programar, mas também têm várias desvantagens importantes. Por um lado, as GCNs não são compatíveis com funcionalidades de edge. Elas só podem aprender e prever funcionalidades dos nós ou funcionalidades gerais do grafo. A noção de passagem de mensagens não existe com as GCNs. Esse problema restringe seu uso somente aos casos em que todas as informações necessárias estão presentes nos nós em vez de existirem nas edges.
Uma rede neural de passagem de mensagens (MPNN), no entanto, permite representações de edges.5 O processo de passagem de mensagens é, aproximadamente, o seguinte. Cada nó no gráfico recebe uma embedding inicial, que atua como as funcionalidades de entrada iniciais do nó. Em cada iteração de passagem de mensagens, o nó agrega informações de seus nós vizinhos. Essas informações agregadas são, então, combinada, com a embedding atual do nó usando uma função de atualização. As embeddings atualizadas são passadas para a próxima iteração de passagem de mensagens. Depois de várias iterações adequadas para representar a complexidade do gráfico, as embeddings finais são usadas para representar cada nó no gráfico. Finalmente, as etapas de agregação, atualização e iteração são executadas por redes neurais para aprender padrões complexos no gráfico como um todo.
O uso da passagem de mensagens permite uma classificação de nós mais sofisticada, a classificação de edges ou até mesmo a previsão de onde as edges podem aparecer no grafo (chamada previsão de link).
As GNNs têm muitas aplicações no processamento de linguagem natural (NLP). Por exemplo, na classificação de documentos, as GNNs podem ser usadas para modelar as relações entre palavras ou frases em documentos. Essa capacidade permite melhor classificação de documentos e recuperação de informações. As GNNs podem ajudar em tarefas de perguntas e respostas, representando as relações entre as palavras em uma pergunta e as respostas candidatas em um gráfico de conhecimento. As GNNs podem capturar informações contextuais e dependências de sentimento em texto, melhorando a análise de sentimento em situações com alta ambiguidade ou relacionamentos com entidades altamente específicos.
Elas também têm muitas aplicações em visão computacional. Em tarefas de segmentação de imagens, as GNNs podem ser empregadas para tarefas de segmentação de imagens em nível de pixel, modelando as relações entre pixels adjacentes como um grafo. As GNNs podem auxiliar na detecção de objetos capturando informações contextuais e relações entre objetos em imagens. Em tarefas de compreensão de cena, as GNNs são usadas para entender cenas complexas e geração de grafos de cena que representam as relações espaciais entre objetos em uma imagem.
As GNNs também são ferramentas poderosas em bioinformática. Na análise de sequências genômicas, as GNNs podem modelar relações entre genes ou sequências genéticas, auxiliando na previsão da expressão generativa e em tarefas de classificação de sequências. Na descoberta de medicamentos, as GNNs podem ser usadas para previsão da interação medicamento-alvo e previsão de propriedades moleculares, o que é vital na pesquisa farmacêutica.
1. Inductive representation learning on large graphs, Will Hamilton, Zhitao Ying, Jure Leskovec, https://papers.nips.cc/paper_files/paper/2017/hash/5dd9db5e033da9c6fb5ba83c7a7ebea9-Abstract.html
2. Variational Graph Auto-Encoders, Thomas N. Kipf, Max Welling https://arxiv.org/abs/1611.07308
3. Graph Attention Networks; Petar Veličković, et al, https://arxiv.org/abs/1710.10903
4. Semi-Supervised Classification with Graph Convolutional Networks, Thomas N. Kipf, Max Welling https://arxiv.org/abs/1609.02907
5. Hierarchical Graph Representation Learning with Differentiable Pooling, NeurIPS 2018 · Rex Ying, et al https://arxiv.org/abs/1806.08804
6. GraphSage https://snap.stanford.edu/graphsage/
Acelere o impacto da IA generativa nos principais fluxos de trabalho e aumente a produtividade.
Coloque a IA em ação na sua empresa com a experiência em IA líder do setor e com o portfólio de soluções da IBM.
Reinvente os fluxos de trabalho e operações críticos adicionando IA para maximizar experiências, tomadas de decisão em tempo real e valor de negócios.