Um artigo leva você para começar com o aprendizado de máquina gráfico

Este artigo aborda principalmente os fundamentos do aprendizado de máquina de gráficos.

Começamos aprendendo o que é um gráfico, por que um gráfico é usado e como melhor representá-lo. Em seguida, apresentamos brevemente como você pode aprender sobre os dados do gráfico, desde os métodos anteriores de rede neural (enquanto exploraremos os recursos do gráfico) até a agora conhecida rede neural do gráfico (Graph Neural Network, GNN). Por fim, daremos uma olhada no mundo dos Transformers em dados gráficos.

O que é um gráfico?

Essencialmente, um grafo descreve entidades ligadas entre si por relacionamentos.

Existem muitos exemplos de gráficos na realidade, incluindo redes sociais (como Twitter, mamutes e qualquer rede de citações que vincule artigos e autores), moléculas, gráficos de conhecimento (como diagramas UML, enciclopédias e aqueles com hiperlinks entre páginas). sites), frases representadas como árvores de sintaxe, grades 3D, etc. Portanto, não é exagero dizer que os gráficos estão por toda parte.

As entidades em um grafo (ou rede) são chamadas de nós (ou vértices), e as conexões entre eles são chamadas de arestas (ou links). Por exemplo, em uma rede social, os nós são os usuários e as arestas são as conexões entre eles; nas moléculas, os nós são os átomos e as arestas são as ligações moleculares entre eles.

  • Um grafo que pode ter mais de um tipo de nó ou aresta é chamado de grafo heterogêneo (exemplo: os nós que referenciam a rede possuem dois tipos: papers e autores, e as arestas de grafos XML que contém múltiplos tipos de relacionamento são multitipo ). Um grafo heterogêneo não pode ser caracterizado apenas por sua topologia, ele requer informações adicionais. Este artigo se concentra em grafos homogêneos.

  • Os grafos também podem ser direcionados (por exemplo, em uma rede de atenção, A segue B, mas B não precisa seguir A) ou não direcionados (por exemplo, em uma molécula, a relação entre os átomos é bidirecional). As bordas podem conectar nós diferentes ou conectar-se (auto-bordas, auto-bordas), mas nem todos os nós devem ter conexões.

Se você deseja usar seus próprios dados, primeiro deve pensar em como melhor caracterizá-los (homogêneo/heterogêneo, direcionado/não direcionado, etc.).

Para que servem os gráficos?

Vamos dar uma olhada em quais tarefas podemos realizar no mapa.

No nível do grafo , as principais tarefas são:

  • Geração de gráficos, que podem ser usados ​​em tarefas de descoberta de drogas para gerar novas possíveis moléculas de drogas,
  • A evolução do gráfico (dado um gráfico, prevê como ele evoluirá ao longo do tempo), pode ser usado na física para prever a evolução de um sistema,
  • Previsão em nível de gráfico (classificação baseada em gráfico ou tarefas de regressão), como a previsão de toxicidade molecular.

No nível do , geralmente é usado para prever os atributos do nó. Por exemplo, o Alphafold usa o método de predição de atributo de nó para prever as coordenadas 3D dos átomos, dado o gráfico molecular geral e, assim, prever como as moléculas se dobram no espaço 3D, o que é um problema bioquímico relativamente difícil.

No nível de borda , podemos fazer previsão de atributo de borda ou previsão de borda ausente. A predição de atributo de borda pode ser usada para prever efeitos colaterais adversos de medicamentos administrados a um par de medicamentos. A previsão de borda ausente é usada em sistemas de recomendação para prever se dois nós em um grafo estão relacionados.

Outro trabalho possível é no nível do subgrafo , que pode ser usado para detecção de comunidades ou predição de propriedades do subgrafo. As redes sociais usam a detecção da comunidade para determinar como as pessoas estão conectadas. Podemos encontrar a previsão de atributo de subgrafo em sistemas de viagens (como o Google Maps ), onde é usado para prever horários de chegada.

Existem duas maneiras de realizar essas tarefas.

Quando você deseja prever a evolução de um determinado gráfico, trabalha no modo transdutivo, onde todo o treinamento, validação e inferência são baseados no mesmo gráfico. Se esta é a sua configuração, tenha cuidado! Não é fácil criar conjuntos de treinamento/avaliação/teste no mesmo gráfico. No entanto, muitas tarefas realmente funcionam em gráficos diferentes (diferentes partições de conjunto de treinamento/avaliação/teste), que chamamos de modo indutivo.

Como representar gráfico?

Existem dois métodos comumente usados ​​para representar gráficos para processamento e manipulação subsequentes:

  • Expresso como uma coleção de todas as arestas (e possivelmente uma coleção de todos os nós para complementar).
  • Ou expressa como uma matriz de adjacência entre todos os nós. A matriz de adjacência é uma matriz quadrada de tamanho $node_size \times node_size$, que indica quais nós no grafo estão diretamente conectados (se $n_i$ e $n_j$ estiverem conectados, então $A_{ij} = 1$, caso contrário é 0).

Nota: a maioria dos grafos não são densamente conectados, então suas matrizes de adjacência são esparsas, o que dificulta o cálculo.

Embora essas indicações possam parecer familiares, não se engane!

Os gráficos são bem diferentes dos objetos típicos usados ​​no aprendizado de máquina, pois sua topologia é muito mais complexa do que sequências (como texto ou áudio) ou grades ordenadas (como imagens e vídeos): embora possam ser representados como listas encadeadas ou matrizes , mas não podem ser tratados como objetos ordenados.

O que exatamente isso significa? Se você tiver uma frase e trocar a ordem das palavras dessa frase, você criou uma nova frase. Se você tiver uma imagem e reorganizar as colunas dessa imagem, criará uma nova imagem.

A imagem à esquerda é o logotipo da Hugging Face.  A imagem à direita é um logotipo reorganizado do Hugging Face, já uma nova imagem diferente.

Mas o gráfico não faz isso. Se você reorganizar a lista de arestas do grafo ou as colunas da matriz de adjacência, o grafo permanece o mesmo (um termo mais formal é invariância de permutação).

À esquerda, um pequeno gráfico (nós em amarelo, arestas em laranja).  No gráfico do meio, a matriz de adjacência do gráfico, os nós nas linhas e colunas são classificados alfabeticamente: você pode ver que o nó A na primeira linha está conectado a E e C.  À direita, a matriz de adjacência reorganizada (as colunas não estão mais em ordem alfabética), mas esta ainda é uma representação válida do grafo: Um nó ainda está conectado a E e C.

Representação gráfica baseada em aprendizado de máquina

O fluxo geral de processamento de gráficos com aprendizado de máquina é: primeiro gere uma representação significativa para os objetos nos quais você está interessado (nós, arestas ou gráficos completos, dependendo de sua tarefa) e, em seguida, use-os para treinar um preditor para a tarefa de destino . Assim como acontece com outros dados modais, queremos impor algumas restrições na representação matemática desses objetos de forma que objetos semelhantes sejam matematicamente próximos. No entanto, essa semelhança é difícil de definir estritamente em aprendizado de máquina de grafos. Por exemplo, quais dois nós com o mesmo rótulo ou dois nós com os mesmos vizinhos são mais semelhantes?

Nota: Nas seções subsequentes, vamos nos concentrar em como gerar representações de nós. Depois de ter uma representação em nível de nó, é possível obter informações de borda ou nível de gráfico. Você pode obter informações de nível de aresta concatenando as representações dos dois nós conectados pela aresta ou fazendo um produto escalar. Já as informações no nível do gráfico podem ser obtidas fazendo um agrupamento global (média, soma, etc.) em tensores concatenados a partir das representações de todos os nós do gráfico. É claro que fazer isso suavizará ou perderá algumas informações em todo o gráfico. Pode ser mais razoável usar o agrupamento iterativo de camadas ou adicionar um nó virtual conectado a todos os outros nós no gráfico e, em seguida, usar sua representação como todo representação gráfica.

Métodos anteriores de redes neurais

Use apenas recursos projetados à mão

Antes do advento das redes neurais, gráficos e itens de interesse em gráficos podiam ser representados como combinações de recursos que eram específicos da tarefa. Esses recursos ainda são usados ​​para aumento de dados e aprendizado semi embora agora existam métodos de geração de recursos mais . Neste momento, seu trabalho principal é encontrar os melhores recursos para treinamento de rede subsequente de acordo com a tarefa de destino.

Os recursos no nível do nó podem fornecer informações sobre sua importância (quão importante é esse nó para o gráfico?)

A centralidade do nó mede a importância dos nós em um gráfico. Ela pode ser calculada recursivamente, ou seja, a centralidade dos nós vizinhos de cada nó é continuamente somada até a convergência, ou pode ser obtida calculando-se a menor distância entre os nós, e assim por diante. O grau de nó mede o número de vizinhos diretos do nó. O coeficiente de agrupamento mede o grau em que os vizinhos de um nó estão conectados entre si. Graphlets grade vectors (GDV) calculam o número de graphlets diferentes de um determinado nó raiz, onde os graphlets se referem a todos os minigrafos que podem ser criados com um determinado número de nós conectados (por exemplo: 3 nós conectados podem gerar uma linha de dois lados, ou um triângulo de três lados).

Primitivas de 2 a 5 nós (Pržulj, 2007)

Os recursos de nível de borda trazem informações mais detalhadas sobre a conectividade entre os nós, complementando efetivamente a representação gráfica, incluindo: a menor distância entre dois nós, seus vizinhos comuns e seu índice de Katz (representa o número de caminhos entre dois nós cujo comprimento é menor que um determinado valor, que pode ser calculado diretamente da matriz de adjacência).

Os recursos de nível de gráfico contêm informações de alto nível sobre as semelhanças e especificações do gráfico. O número total de primitivas, embora computacionalmente caro, fornece informações sobre a forma do subgrafo. Os métodos do kernel medem a similaridade entre os grafos através de diferentes métodos "bag of nodes" (semelhantes a bag of words).

método baseado em caminhada

Os métodos baseados em caminhada usam a probabilidade de visitar o nó i do nó j durante uma caminhada aleatória para definir uma matriz de similaridade; esses métodos combinam informações locais e globais. Por exemplo, Node2Vec simula caminhadas aleatórias entre nós em um grafo, modela esses caminhos de caminhada como skip-grams, que é muito semelhante a como processamos palavras em sentenças e, em seguida, calcula embeddings. O método baseado em caminhada aleatória também pode ser usado para acelerar o método Page Rank para ajudar a calcular a pontuação de importância de cada nó (por exemplo: se a pontuação de importância for baseada na conectividade de cada nó com outros nós, podemos usar o frequência de visitas aleatórias a cada nó para simular essa conectividade).

No entanto, esses métodos também têm limitações: eles não podem obter novos vetores de incorporação de nós, não podem capturar bem a similaridade estrutural entre os nós e não podem usar recursos recém-adicionados.

Rede neural gráfica

As redes neurais podem generalizar para dados não vistos. Mencionamos algumas restrições de representação gráfica acima, então quais características uma boa rede neural deve ter?

deveria:

  • A invariância de permutação é satisfeita:

    • Equação: , onde f é a rede neural, P é a função de permutação e G é o gráfico.
    • Explicação: Após a imagem substituída e a imagem original passarem pela mesma rede neural, sua representação deve ser a mesma.
  • Satisfazer a equivalência de substituição

    • Fórmula: , também f é a rede neural, P é a função de permutação e G é o gráfico.
    • Explicação: Substituir o gráfico primeiro e depois passá-lo para a rede neural é equivalente a substituir a representação gráfica de saída da rede neural.

Redes neurais típicas, como redes neurais recorrentes (RNN) ou redes neurais convolucionais (CNN), não são invariantes de permutação. Portanto, a Graph Neural Network (Graph Neural Network, GNN) foi introduzida como uma nova arquitetura para resolver este problema (inicialmente usada como uma máquina de estado).

Um GNN consiste em camadas sucessivas. Uma camada representa um nó como uma combinação de seus vizinhos e sua própria representação (agregação) por meio de um processo de passagem de mensagens e, geralmente, também usamos uma função de ativação para adicionar alguma não linearidade.

Comparado com outros modelos : CNN pode ser considerado como um GNN com um tamanho e ordem de vizinhança fixos (ou seja, janela deslizante), ou seja, CNN não é um equivalente de permutação. Um modelo Transformer sem incorporações posicionais pode ser visto como um GNN trabalhando em um grafo de entrada totalmente conectado.

Agregação e mensagens

Vários métodos podem ser usados ​​para agregar as mensagens dos nós vizinhos, por exemplo, há soma, média e assim por diante. Alguns trabalhos notáveis ​​incluem:

  • A rede convolucional do gráfico calcula a média das representações normalizadas de todos os vizinhos do nó de destino para agregação (a maioria dos GNNs são, na verdade, GCNs);
  • A rede de atenção do grafo aprenderá como pesar e agregar os nós vizinhos de acordo com a importância dos nós vizinhos (semelhante à ideia do modelo do transformador);
  • O GraphSAGE primeiro faz amostras de nós vizinhos em saltos diferentes e, em seguida, usa o método de agrupamento máximo para agregar informações em várias etapas com base no subgrafo amostrado;
  • A rede isomórfica do grafo primeiro calcula a soma das representações dos nós vizinhos e, em seguida, envia para um MLP para calcular a informação agregada final.

Escolha um método de agregação : Algumas técnicas de agregação (notavelmente pooling médio e pooling máximo) podem falhar ao encontrar nós semelhantes com vizinhos apenas ligeiramente diferentes (por exemplo: com agrupamento médio, um nó Existem 4 nós vizinhos, que são representados como 1, 1 , -1, -1 respectivamente, e tornam-se 0 após tomar o valor médio; e o outro nó tem 3 nós vizinhos, que são representados como - 1, 0, 1 respectivamente, e torna-se 0 após tomar o valor médio 0. O dois são indistinguíveis.).

Forma GNN e problemas de supersuavização

Cada vez que uma nova camada é adicionada, mais e mais informações do nó serão incluídas na representação do nó.

Um nó, no primeiro nível, apenas agrega informações sobre seus vizinhos imediatos. No segundo nível, eles ainda agregam apenas informações de vizinhos imediatos, mas desta vez, as representações de seus vizinhos diretos já contêm suas respectivas informações de vizinhos (obtidas no primeiro nível). Após n camadas, a representação de todos os nós torna-se um agregado de todos os seus vizinhos à distância n. Se o diâmetro do gráfico inteiro for menor que n, as informações do gráfico inteiro serão agregadas!

Se sua rede tiver muitas camadas, existe o risco de cada nó agregar as informações de todos os nós em todo o grafo (e a representação de todos os nós convergir para o mesmo valor), isso é chamado de problema de supersuavização (oversmoothing problem) .

Isso pode ser resolvido por:

  • Ao projetar o número de camadas do GNN, primeiro analise o diâmetro e a forma do gráfico, e o número de camadas não deve ser muito grande para garantir que cada nó não agregue as informações de todo o gráfico
  • Adicionar complexidade de camada
  • Adicione uma camada sem mensagens para lidar com mensagens (como uma camada MLP simples)
  • Aumentar skip-conexões (skip-connections)

O problema de suavização excessiva é uma importante área de pesquisa do aprendizado de máquina de gráficos, porque evita que o GNN se torne maior, e modelos como Transformers em outros dados modais provaram que aumentar o modelo tem um bom efeito.

Figura Transformadores

O modelo do Transformer sem uma camada de codificação posicional é invariante à permutação, e o modelo do Transformer provou ser muito escalável, então recentemente todos começaram a ver como transformar o Transformer para se adaptar aos dados do gráfico ( revisão ). A maioria dos métodos se concentra em como representar melhor o gráfico, como encontrar as melhores características, a melhor maneira de representar as informações de localização e como mudar a atenção para se adaptar a esses novos dados.

Aqui, coletamos alguns trabalhos interessantes que, até o momento em que este livro foi escrito, alcançaram desempenho de ponta ou próximo do estado em um dos benchmarks mais difíceis existentes, o Stanford

  • O Graph Transformer for Graph-to-Sequence Learning (Cai e Lam, 2020) apresenta um codificador de gráfico que representa um nó como uma concatenação de sua própria incorporação e incorporações posicionais, e relacionamentos entre nós como os caminhos mais curtos entre eles. então combinado com um mecanismo de auto-atenção aumentado por relação.
  • Repensando transformadores de gráfico com atenção espectral (Kreuzer et al, 2021) apresenta redes de atenção espectral (SANs). Ele combina recursos de nó com codificações posicionais aprendidas (calculadas a partir de autovalores e autovetores laplacianos), usa-os como chaves de atenção e consultas e, em seguida, usa recursos de borda como valores de força de atenção (valores).
  • GRPE: Relative Positional Encoding for Graph Transformer (Park et al, 2021) apresenta o transformador de codificação de posição relativa do gráfico. Ele primeiro combina as informações do nó na codificação de posição no nível do gráfico e também combina as informações do nó na codificação de posição no nível da borda e, em seguida, combina os dois no mecanismo de atenção.
  • A auto-atenção global como um substituto para a convolução gráfica (Hussain et al, 2021) apresenta o transformador aprimorado de borda. A arquitetura incorpora nós e bordas separadamente e os agrega por meio de um mecanismo de atenção modificado.
  • Do Transformers Really Perform Bad for Graph Representation (Ying et al, 2021) apresenta o Graphormer da Microsoft , um modelo que conquistou o primeiro lugar no OGB quando foi lançado. Essa arquitetura usa recursos de nó como consulta/chave/valor (Q/K/V) para atenção e, em seguida, combina essas representações com informações de centralidade, espacial e de codificação de borda de maneira somativa no mecanismo de atenção.

O trabalho mais recente é Pure Transformers are Powerful Graph Learners (Kim et al, 2022), que apresenta o TokenGT . Essa abordagem representa o grafo de entrada como uma sequência de incorporações de nós e bordas (e aumenta com identificadores de nós ortonormais e identificadores de tipo treináveis) em vez de incorporações posicionais e, finalmente, leva essa entrada de sequência para o modelo Transformer. Super simples, mas inteligente!

A pequena diferença é que Recipe for a General, Powerful, Scalable Graph Transformer (Rampášek et al, 2022) apresenta não um determinado modelo, mas uma estrutura chamada GraphGPS . Ele permite combinar redes de passagem de mensagens e modelos de transformadores lineares (de longo alcance) para criar facilmente uma rede híbrida. A estrutura também inclui algumas ferramentas para computar codificações posicionais e estruturais (no nó, gráfico, nível de borda), aprimoramento de recursos, caminhadas aleatórias e muito mais.

O uso de modelos de transformadores em dados de gráficos ainda é um campo muito incipiente, mas parece promissor porque pode aliviar algumas das limitações de GNNs, como escalar para gráficos maiores/mais densos ou aumentar o tamanho do modelo sem se preocupar com problemas de suavização excessiva.

recursos mais avançados

Se você quiser se aprofundar, confira estes cursos:

Boas bibliotecas para trabalhar com dados gráficos são PyGeometric (para aprendizado de máquina de gráficos) e NetworkX (para operações gráficas mais gerais).

Se você precisa de um benchmark de boa qualidade, pode tentar:

Se você quiser mais conjuntos de dados, você pode dar uma olhada em:

fonte de imagem externa

As expressões Emoji nas miniaturas são de Openmoji (CC-BY-SA 4.0), e as imagens dos primitivos são de Comparação de rede biológica usando distribuição de grau de gráfico (Pržulj, 2007).

Texto original em inglês: https://huggingface.co/blog/intro-graphml

Tradutor: Matrix Yao

{{o.name}}
{{m.name}}

おすすめ

転載: my.oschina.net/HuggingFace/blog/6891585