Intelligence artificielle

Didacticiel sur les encodeurs automatiques de graphes variationnels

Didacticiel sur les encodeurs automatiques de graphes variationnels


Les graphes sont applicables à de nombreux ensembles de données du monde réel tels que les réseaux sociaux, les réseaux de citation, les graphes chimiques, etc. L'intérêt croissant pour les données structurées en graphes augmente le nombre de recherches dans les réseaux de neurones de graphes.

Les autoencodeurs variationnels (VAE) incarnent le succès des méthodes bayésiennes variationnelles en apprentissage en profondeur et ont inspiré un large éventail de recherches en cours. Le VGAE (Variational Graph Autoencoder) applique l’idée de VAE sur des données structurées en graphes, ce qui améliore considérablement les performances prédictives sur un certain nombre de jeux de données réseau de citations tels que Cora et Citesser.

J'ai cherché sur Internet et je n'ai pas encore vu de tutoriel détaillé sur VGAE. Dans cet article, je parlerai brièvement des autoencodeurs traditionnels et des autoencodeurs variationnels. De plus, je discuterai de l’idée d’appliquer VAE aux données structurées graphiquement (VGAE).

Figure 1: L'architecture de l'auto-codeur traditionnel

Le codeur automatique traditionnel est un réseau de neurones contenant un codeur et un décodeur. Le codeur prend un point de données X en entrée et le convertit en une représentation de dimension inférieure (incorporation) Z. Le décodeur prend la représentation de la dimension inférieure Z et retourne une reconstruction de l'entrée d'origine X-hat qui ressemble à l'entrée X. La qualité de l'intégration détermine la qualité de la sortie X-hat. Cependant, il se peut que le codeur ne puisse pas coder toutes les informations car l’incorporation a une dimensionnalité inférieure à celle de l’entrée. Par conséquent, si l'intégration incorpore plus d'informations à partir de l'entrée, les performances seront meilleures.

L'architecture de l'encodeur et du décodeur

Figure 2: Autoencoder traditionnel pour le jeu de données MNIST

Regardons un exemple. La figure 2 montre un exemple de codeur automatique prenant une image MNIST en entrée. Le jeu de données MNIST contient des images en niveaux de gris et chaque image a une forme de 28 sur 28 pixels. Le codeur prend cette image et la convertit en une incorporation de dimension inférieure Z. Le décodeur prend l'intégration Z et retourne une image d'entrée reconstruite, qui est la sortie de l'auto-codeur.

Fonction de perte

La fonction de perte d'un auto-codeur mesure les informations perdues lors de la reconstruction. Nous voulons minimiser la perte de reconstruction à faire X-hat plus proche de X. Nous utilisons souvent l'erreur quadratique moyenne comme fonction de perte,

qui mesure la proximité X-hat est de X.

Pourquoi voulons-nous convertir l’entrée en une incorporation de dimension inférieure?

Prenons les images comme exemple. Il existe plusieurs façons d’utiliser des images incorporées de faible dimension. Stocker des images intégrées dans des images de faible dimension pourrait économiser de l’espace de stockage par rapport à leurs intensités de pixels. Le stockage d’implications de faible dimension des images pourrait également permettre d’économiser de la puissance de calcul, car les dimensions en entrée sont plus faibles.

Les points proches des images incorporées sont également des images incorporées dans l’espace d’incorporation. C’est une autre raison pour laquelle l’incorporation par autoencoder est utile. Par exemple, si vous modifiez les intensités en pixels d'une image MNIST, vous obtiendrez une image bruyante qui ne ressemble pas à une image du jeu de données MNIST. Toutefois, si vous modifiez légèrement l’incorporation d’une image MNIST, puis décodez l’incorporation modifiée, vous pouvez toujours obtenir quelque chose qui ressemble à une image MNIST.

Figure 3: Modifier les intensités de pixels d'une image MNIST

La figure 3 montre un exemple de modification de la intensités de pixels d'une image MNIST. Après avoir ajouté du bruit aléatoire à l’intensité de chaque pixel, la sortie est une image bruyante qui ne ressemble pas à une image du jeu de données MNIST.

Figure 4: modifiez légèrement l’incorporation de l’image MNIST

La figure 4 montre un exemple de modification de la enchâssement d'une image MNIST. Modifier l’incorporation d’une petite quantité équivaut à modifier légèrement l’espace d’incorporation. La figure 4 montre qu'après avoir ajouté 4 à chaque élément de l'intégration Z, l'image de sortie X2-chapeau est toujours très similaire à la sortie d'origine X1-chapeau.

Figure 5: Exemple de représentation graphique des données MNIST sur l’intégration d’espace

Nous pourrions également tracer ces imbrications de faible dimension à la coordonnée n-d. La figure 5 montre un exemple de tracé des données MNIST sur l'espace d'inclusion. Chaque point de l'espace d'intégration représente une donnée d'entrée. Cette visualisation est pratique car elle permet d’organiser systématiquement toutes les données d’entrée dans les coordonnées.

Les imbrications de faible dimension pourraient également être utilisées pour des tâches d’apprentissage automatique en aval. Nous pourrions utiliser les incorporations précalculées pour résoudre un autre problème d’apprentissage automatique, à savoir les problèmes de classification. Nous pourrions faire la classification sur ces imbrications plutôt que sur les entrées d'origine. Nous pourrions également utiliser des intégrations sur l'apprentissage par transfert ou l'apprentissage semi-supervisé, ce qui pourrait nous donner un meilleur résultat par rapport aux entrées d'origine.

Pourquoi avons-nous besoin des autoencodeurs variationnels?

L'un des principaux avantages du système d'auto-codage variationnel est que VAE peut générer de nouvelles données à partir du jeu de données source d'origine. En revanche, l'auto-codage traditionnel ne peut générer que des images similaires aux entrées d'origine. Supposons que vous souhaitiez construire un jardin rempli de buissons. Chaque buisson doit être différent pour que votre jardin ait une apparence réelle. Vous ne pouvez certainement pas dessiner chaque arbuste par vous-même. Une méthode plus intelligente consiste à utiliser autoencoder variationnel pour générer automatiquement de nouveaux arbustes pour votre jardin.

Idée principale

L’idée principale d’un autoencodeur variationnel est qu’il intègre l’entrée X à une distribution plutôt qu'un point. Et puis un échantillon aléatoire Z est tiré de la distribution plutôt que généré directement par le codeur.

L'architecture de l'encodeur et du décodeur

Le codeur pour un VAE est souvent écrit comme qφ (z | x), qui prend un point de données X et produit une distribution. La distribution est généralement paramétrée comme une gaussienne multivariée. Par conséquent, le codeur prédit la moyenne et l'écart type de la distribution gaussienne. L'incorporation de dimension inférieure Z est échantillonné à partir de cette distribution. Le décodeur est une approximation variationnelle, pθ (x | z), qui prend une intégration Z et produit la sortie X-hat.

Figure 6: Exemple d’auto-codeur variationnel

Fonction de perte

La fonction de perte pour VAE comprend deux parties. La première partie de la fonction de perte s'appelle la limite inférieure variationnelle, qui mesure dans quelle mesure le réseau reconstruit les données. Si les données reconstruites X est très différent des données d'origine, la perte de reconstruction sera alors élevée. La deuxième partie de la fonction de perte fonctionne comme un régularisateur. C’est la divergence KL de l’approximatif par rapport au vrai postérieur (p (z)), qui mesure le degré de précision de la distribution de la production (qφ (z | x)) correspondre à p (z).

Résumé

L'idée de VAE peut être généralisée par l'image ci-dessous:

Figure 7: Architecture du codeur automatique variationnel

Le codeur prend un point de donnée X en entrée et génère μ et logσ² en sortie. La raison pour laquelle nous utilisons logσ² au lieu de σ² est que σ² est non négatif, nous aurons donc besoin d'une fonction d'activation supplémentaire. Mais logσ² peut être positif ou négatif. Après avoir obtenu μ et logσ², nous essayons de rendre μ et logσ² proches de 0, ce qui signifie que μ est proche de 0 et que σ est proche de 1. Par conséquent, la distribution finale sera proche de N (0,1). Enfin, nous voulons générer l’intégration Z à partir de μ et σ par z = μ + σ * ε, où ε ~ N (0,1). Ceci est appelé le astuce de reparamétrage. Maintenant avec la variable latente Z, nous pouvons générer notre sortie X-hat à travers le décodeur.

introduction

Nous voulons construire un autoencoder de graphes variationnels qui applique l'idée de VAE aux données structurées en graphes. Nous voulons que notre autoencoder de graphe variationnel soit capable de générer de nouveaux graphes ou de raisonner sur des graphes. Cependant, nous ne pouvons pas simplement appliquer l’idée de VAE car les données structurées en graphe sont irrégulières. Chaque graphe a une taille variable de nœuds non ordonnés et chaque nœud d’un graphe a un nombre différent de voisins, nous ne pouvons donc plus utiliser la convolution directement. Voyons comment représenter un graphique de manière à ce qu’un réseau de neurones puisse comprendre.

Matrice d'adjacence

Nous utilisons une matrice d'adjacence UNE pour représenter le graphe d'entrée. Nous supposons normalement que la matrice d'adjacence est binaire. La valeur 1 à la ligne je et colonne j signifie qu'il y a un bord entre le sommet je et sommet j. La valeur 0 à la ligne m et colonne n signifie qu'il n'y a pas de bord entre le sommet m et sommet n.

Figure 8: Exemple de matrice d'adjacence

La figure 8 montre un exemple de la matrice d'adjacence lorsque le graphe en entrée est dirigé et non dirigé. Sur le côté gauche, lorsque le graphique n'est pas dirigé, la matrice d'adjacence est symétrique. Le sommet 0 et le sommet 1 sont reliés, donc UNE[0,1] = 1 et UNE[1,0] = 1. A droite lorsque le graphique est dirigé, la matrice d'adjacence est asymétrique. Le sommet 0 pointe sur le sommet 1, ce qui signifie que le sommet 1 regroupe les informations du sommet 0, donc UNE[1,0] = 1.

Matrice de fonctionnalités

Nous utilisons la matrice de fonctionnalités X pour représenter les caractéristiques de chaque nœud à partir du graphe d'entrée. Rangée je de la matrice de caractéristiques X représente les fonctions intégrées pour le sommet je.

Figure 9: Exemple de matrice de fonctions

La figure 9 montre un exemple de la matrice de caractéristiques. Chaque noeud je a sa propre matrice de caractéristiques X_i et nous pouvons les combiner pour obtenir la matrice de caractéristiques X pour le graphique entier, où chaque ligne je représente la matrice de caractéristiques du noeud je.

L'architecture de l'encodeur et du décodeur

Figure 10: Architecture de l’auto-codeur variationnel

Le codeur (modèle d’inférence) de VGAE est constitué de réseaux convolutionnels à graphes (GCN). Il faut une matrice d'adjacence UNE et une matrice de fonctionnalités X en tant qu'entrées et génère la variable latente Z en sortie. La première couche GCN génère une matrice de caractéristiques de dimension inférieure. Il est défini comme

A-tilde est la matrice d'adjacence normalisée symétriquement.

La deuxième couche GCN génère μ et logσ², où

Maintenant, si nous combinons les mathématiques de GCN à deux couches ensemble, nous obtenons

qui génère μ et logσ².

Ensuite, nous pouvons calculer Z en utilisant l'astuce de paramétrage

où ε ~ N (0,1).

Le décodeur (modèle génératif) est défini par un produit interne entre variable latente Z. La sortie de notre décodeur est une matrice d'adjacence reconstruite Un chapeau, qui est défini comme

où σ (•) est la fonction sigmoïde logistique.

En résumé, le codeur est représenté par

et le décodeur est représenté par

Fonction de perte

La fonction de perte pour l’auto-codage variationnel est à peu près la même qu’auparavant. La première partie est la perte de reconstruction entre la matrice d'adjacence d'entrée et la matrice d'adjacence reconstruite. Plus spécifiquement, il s’agit de l’entropie croisée binaire entre les logits cible (A) et de sortie (A ’). La deuxième partie est la divergence KL entre q (Z | X, A) et p (Z), où p (Z) = N (0,1). Il mesure à quel point notre q (Z | X, A) correspond à p (Z).

L'avantage d'utiliser un décodeur de produit interne

Après avoir obtenu la variable latente Z, nous voulons trouver un moyen d’apprendre la similarité de chaque ligne de la variable latente (car une ligne représente un sommet) pour générer la matrice de contiguïté en sortie. Le produit interne pourrait calculer la similarité en cosinus de deux vecteurs, ce qui est utile lorsque nous voulons une mesure de distance invariante à la magnitude des vecteurs. Par conséquent, en appliquant le produit interne à la variable latente Z et Z ^ T, nous pouvons apprendre la similitude de chaque noeud à l'intérieur Z pour prédire notre matrice d'adjacence.

Expériences sur la prédiction de liens

Dans le document sur les encodeurs automatiques de graphes variationnels, les auteurs créent également un modèle GAE (Graph AutoCoder) traditionnel, qui contraste avec le modèle VGAE. Le modèle GAE a une couche simple GCN en tant que codeur, qui génère une variable latente Z directement, et un décodeur de produit interne, identique au modèle VGAE. Les auteurs testent les deux modèles sur trois jeux de données (Cora, Citesser et Pubmed), et le modèle VGAE permet d’obtenir des performances prédictives plus élevées pour les jeux de données Cora et Citeseer.

Dans cet article, vous avez appris l’idée de base de l’auto-encodeur traditionnel, de l’auto-encodeur variationnel, et comment appliquer l’idée de la VAE aux données structurées en graphes.

Les données structurées en graphe jouent un rôle plus important dans divers domaines. Et je pense que l'analyse de données structurée sous forme de graphes deviendra l'un des sujets les plus populaires de l'apprentissage automatique dans un avenir proche.

[1] Auto-encodage Variationnel Bayes

[2] Encodeurs automatiques de graphes variationnels

[3] Implémentation graphique TensorFlow des auto-encodeurs

[4] Tutoriel sur les autoencodeurs variationnels

[5] Divergence de Kullback – Leibler

Show More

SupportIvy

SupportIvy.com : Un lieu pour partager le savoir et mieux comprendre le monde. Meilleure plate-forme de support gratuit pour vous, Documentation &Tutoriels par les experts.

Related Articles

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Close
Close