Blogue de Vector Research : Réseaux neuronaux structurés pour l’estimation de la densité et l’inférence causale

22 janvier 2024

Rechercher

Par Asic Q. Chen, Ruian Shi, Xiang Gao, Ricardo Baptista, Rahul G. Krishnan

Dans cet article, nous présentons StrNN, une méthode efficace pour intégrer une structure de variables préalablement définie dans des réseaux de neurones arbitraires grâce au masquage des poids. La modularité de StrNN ouvre la voie à des applications telles que l'estimation de densité, la modélisation générative, l'inférence causale, et bien d'autres.

Basé sur l'article de NeurIPS 2023 : Réseaux neuronaux structurés pour l'estimation de la densité et l'inférence causale .

Pour exécuter votre propre version de StrNN, trouvez notre paquet Python sur GitHub .

StrNN injecte de la structure en masquant les poids d'un réseau neuronal. En haut : connexions StrNN (vert) comparées à celles d'un réseau entièrement connecté (gris). En bas : la factorisation binaire d'une matrice d'adjacence produit des masques de poids. Les poids masqués sont représentés en gris.

Figure 1 : StrNN injecte de la structure en masquant les poids d'un réseau neuronal. En haut : connexions StrNN (vert) comparées à celles d'un réseau entièrement connecté (gris). En bas : la factorisation binaire d'une matrice d'adjacence produit des masques de poids. Les poids masqués sont représentés en gris.

Bien que les réseaux de neurones soient des estimateurs de fonctions universels, il peut souvent être avantageux de restreindre la classe des fonctions qu'ils peuvent modéliser. Par exemple, dans l'article Deep Sets 1 , largement cité, Zaheer et al. se sont concentrés sur les fonctions invariantes par permutation, c'est-à-dire dont la sortie reste inchangée quel que soit l'ordre des entrées, afin de mieux traiter les données d'entraînement présentées sous forme d'ensembles non ordonnés. Dans notre article, nous démontrons comment la structuration des réseaux de neurones peut mener à des invariances de fonctions bénéfiques dans d'autres applications. 

L'un des principaux cas d'utilisation motivants est l'estimation de la densité de probabilité, où l'on utilise des réseaux de neurones pour modéliser la densité de probabilité conjointe de variables aléatoires. Dans ce contexte, on connaît souvent déjà certains aspects du processus de génération des données, notamment les relations d'indépendance entre les variables aléatoires. Ces relations d'indépendance sont généralement établies grâce à l'expertise du domaine ou à des algorithmes de découverte de structures. La structure de ces indépendances est couramment décrite à l'aide de réseaux bayésiens.

Plus généralement, on utilise une matrice d'adjacence pour modéliser des hypothèses d'indépendance arbitraires entre les entrées et les sorties. Si nos données sont de dimension d, notre matrice d'adjacence est une matrice binaire A ∈ {0, 1} d × dA ij = 0 si et seulement si x i x j | x ∈ { 1, …, i \ pa(i)} et A ij = 1 sinon. Considérons un auto-encodeur avec d entrées et d sorties. Lorsque les sorties sont autorégressives par rapport aux entrées, la diagonale de A est composée uniquement de 1 et le reste uniquement de 0. Des travaux existants, tels que le Masked Autoencoder for Density Estimation (MADE) 2 , ont exploité cette structure pour utiliser chaque nœud de sortie d'un auto-encodeur afin de modéliser un facteur de probabilité marginale dans la règle de la chaîne de probabilités. Nous nous intéressons, quant à nous, à des structures d'indépendance connues plus complexes, ce qui signifie que A est non seulement triangulaire inférieure, mais aussi creuse sous la diagonale, comme dans l'exemple illustré à la figure 1.

En nous inspirant de l'approche utilisée dans MADE, nous imposons la structure définie par A en multipliant élément par élément les matrices de poids du réseau de neurones par des masques binaires. De cette manière, nous annulons certaines connexions du réseau afin qu'il n'existe aucun chemin entre les entrées et sorties indépendantes, conformément à A. Plus concrètement, pour un réseau de neurones simplifié y=f(x ) avec une seule couche cachée, nous multiplions élément par élément (noté ʘ) les matrices de poids W et V par des masques binaires M W et M V .

h(x) = g((W ʘ M W )x + b), y = f((V ʘ M V )h(x) + c )

Pour injecter la structure prescrite par A , il nous suffit de trouver les matrices de masque appropriées M W et M V.

L'idée clé est donc que l'injection de structure dans un réseau neuronal se ramène à un problème de factorisation matricielle binaire. Nous formulons formellement ce problème comme suit : 

Given an adjacency matrix A∈{0,1 }d × d and a neural network with L hidden layers, each with h1, h2, …, hL (≥ d) hidden units, we want to factor A into mask matrices M1 {0, 1}h1×d, M2 {0, 1}h2xh1, …, ML {0, 1}d × hL such that A’ ~ A where A’ = ML × … × M2 × M1. We use the notation A’ ~ A to denote that matrices A’ and A share the same sparsity pattern, i.e.: exact same locations of zeros and non-zeros. (Overloading notation here – it doesn’t mean matrix similarity like in linear algebra!) Note that here A is a binary matrix and A’ is an integer matrix. We then mask the neural network’s hidden layers using M1, M2, …, ML through element-wise multiplication like in the above equation to obtain a Structured Neural Network (StrNN), which respects the independence constraints prescribed by A. The value of each entry A’ij thus corresponds to the number of connections flowing from input xj to output i in the StrNN.

La factorisation de matrices binaires est un problème NP-difficile. Bien qu'il existe une abondante littérature sur le sujet, celle-ci se concentre principalement sur la recherche de facteurs de faible rang tout en minimisant la perte de reconstruction. Dans notre cas, nous exigeons une perte de reconstruction nulle pour respecter la structure de A ; nous devons donc trouver nos propres méthodes de factorisation.

L'identifiabilité pose aussi problème. Lorsque la taille des couches cachées est importante, de nombreux masques sont possibles pour une même matrice d'adjacence. Il est donc nécessaire de définir des objectifs d'optimisation directement liés à l'architecture du réseau de neurones. Par exemple, dans cet article, nous testons principalement l'hypothèse selon laquelle maximiser le nombre de chemins restants dans notre réseau de neurones masqués améliore l'expressivité et la généralisation. À partir de cette idée, on étudie deux objectifs. Le premier est présenté dans l'équation 2 ci-dessous :

Elle maximise la somme de toutes les entrées de A'. Comme mentionné précédemment, cela équivaut à maximiser le nombre total de chemins entre toutes les entrées et sorties du StrNN. Un deuxième objectif que nous considérons est l'équation 3 :

Nous ajoutons ici un terme de pénalité de variance afin que les chemins restants ne soient pas trop concentrés sur une seule sortie. Des évaluations empiriques réalisées sur divers ensembles de données synthétiques nous permettent de conclure que cette pénalité de variance n'améliore pas significativement les performances d'estimation de densité de StrNN. Par conséquent, nous adoptons l'équation 2 comme objectif pour la suite du projet.

Nous abordons maintenant les méthodes de résolution du problème de factorisation de matrices binaires. Bien qu'il soit possible de trouver des solutions exactes pour maximiser les équations 2 et 3 par programmation linéaire en nombres entiers, cette approche s'avère empiriquement excessivement lente pour les grandes dimensions d'entrée (par exemple : d ≥ 20). C'est pourquoi nous proposons un algorithme glouton simple et efficace qui approche la fonction objectif d'optimisation (équation 2) tout en maintenant une perte de reconstruction nulle pour la matrice d'adjacence A présentant une structure creuse. Le pseudocode de notre algorithme est décrit dans l'algorithme 1 de notre article, et nous en fournissons ci-dessous une visualisation pour un exemple de matrice d'adjacence.

Illustration visuelle de l'algorithme 1 : l'objectif est de trouver des masques binaires adaptés à une matrice d'adjacence A. À l'étape 1, le premier masque est rempli par copie des lignes non nulles de A, en répétant l'opération au besoin jusqu'à ce que toutes les lignes soient remplies. À l'étape 2, le deuxième masque est rempli en conservant un maximum de 1. Prenons l'exemple de la dernière ligne : toutes les lignes sont initialisées à 1. On observe que, dans la dernière ligne de A, les première et dernière colonnes contiennent des 0. On repère alors les occurrences uniques de 1 dans ces colonnes et on les remplace par 0 dans la dernière ligne du second masque, de sorte que le produit des deux masques conserve la sparsité imposée par la dernière ligne de A. Cette procédure est répétée pour toutes les lignes du deuxième masque.

Figure 2 : Illustration visuelle de l’algorithme 1 : l’objectif est de trouver des masques binaires adaptés à une matrice d’adjacence A. À l’étape 1, le premier masque est rempli par copie des lignes non nulles de A, en répétant l’opération si nécessaire jusqu’à ce que toutes les lignes soient remplies. À l'étape 2, le deuxième masque est rempli en conservant autant de 1 que possible. Prenons l’exemple de la dernière ligne : toutes les lignes sont initialisées à 1. On observe que, dans la dernière ligne de A, les première et dernière colonnes contiennent des 0. On repère alors les emplacements uniques des 1 dans les première et dernière colonnes du premier masque, et on les remplace par 0 dans la dernière ligne du second masque, de sorte que le produit des deux masques conserve la sparsité imposée par la dernière ligne de A. Cette procédure est répétée pour toutes les lignes du second masque.

Regardons maintenant quelques applications de StrNN.

Les flux normalisants constituent un cadre de travail populaire pour l'estimation de densité de probabilité et la modélisation générative. Ils appartiennent à un sous-ensemble de modèles d'estimation de densité qui formulent le problème comme l'apprentissage de fonctions complexes entre des espaces de grande dimension. Plus précisément, le cadre des flux normalisants apprend des applications inversibles entre une distribution de base simple et une distribution cible complexe. Cela permet une estimation de vraisemblance simple et efficace, ainsi qu'une génération d'échantillons. Il est donc facile de comprendre pourquoi il peut être utile d'exploiter les indépendances conditionnelles connues entre les variables d'entrée lors de l'entraînement d'un flux. Pour ce faire, nous utilisons StrNN afin d'imposer les invariances de fonction dans les réseaux de flux.

La classe de flux normalisant la plus naturelle à étendre est celle des flux autorégressifs (ARF 3 ), qui imposent une structure autorégressive entre les entrées et les sorties, simplifiant ainsi le calcul de la formule de changement de probabilité des variables, essentielle au calcul des densités de probabilité. En remplaçant les conditionneurs autorégressifs des ARF par StrNN, nous pouvons intégrer des conditions d'indépendance supplémentaires afin d'améliorer à la fois l'estimation de la vraisemblance et la qualité de la génération d'échantillons. Nous appelons ce flux le flux autorégressif structuré (StrAF), comme illustré à la figure 3. Suivant une logique similaire, nous introduisons une structure dans un flux normalisant continu appelé FFJORD 4 en utilisant StrNN pour paramétrer l'équation différentielle qui décrit la dynamique de génération des données continues. La figure 4 compare les échantillons générés par StrAF, StrCNF et les méthodes de référence.

Figure 3 : StrAF injecte une adjacence prédéfinie à chaque étape du flux à l’aide d’un conditionneur StrNN. StrAF ne permute pas les variables latentes, ce qui permet de respecter la matrice d'adjacence tout au long du flux.

Figure 3 : StrAF injecte une adjacence prédéfinie à chaque étape du flux à l’aide d’un conditionneur StrNN. StrAF ne permute pas les variables latentes, ce qui permet de respecter la matrice d'adjacence tout au long du flux.

Figure 4 : Les échantillons générés par le modèle sont représentés par des points bleus pour des dimensions sélectionnées aléatoirement. La densité réelle est visualisée par les contours orange.

Figure 4 : Les échantillons générés par le modèle sont représentés par des points bleus pour des dimensions sélectionnées aléatoirement. La densité réelle est visualisée par les contours orange.

Lors de l'injection de structure, StrAF et StrCNF héritent de l'efficacité de StrNN grâce à notre choix de masquage des poids. Plus précisément, la sortie de StrNN peut être calculée en un seul passage à travers le réseau. En comparaison, les approches de masquage d'entrée, telles que la méthode de référence Graphical Normalizing Flows 5, nécessitent d passages pour calculer la sortie d'une seule donnée. Cela empêche non seulement l'application efficace du masquage d'entrée aux données de grande dimension, mais constitue également un obstacle à l'intégration de la méthode avec certaines architectures. Par exemple, FFJORD requiert déjà de nombreuses évaluations du réseau neuronal pour résoudre numériquement l'équation différentielle ordinaire définissant l'application de flux ; effectuer des passages par évaluation est donc particulièrement inefficace. Cela fait de notre méthode StrNN le moyen le plus simple et le plus efficace d'injecter une structure dans ce type de flux continu.

Nous appliquons ensuite StrAF à l'estimation des effets causaux. Nous nous appuyons sur des travaux antérieurs (Causal Autoregressive Flows 6 ) qui modélisent les modèles d'équations structurelles comme des flux affines, ce qui mène à des théorèmes d'identifiabilité favorables. La figure 5 présente des résultats expérimentaux montrant que l'exploitation de la structure d'indépendance exacte améliore les performances des requêtes interventionnelles et contrefactuelles pour de nombreuses variables.

Évaluations des prédictions causales (à gauche : interventions ; à droite : contrefactuels) sur des modèles d’équations structurelles (SEM) à 5 et 10 variables, réalisées par StrAF et CAREFL. La performance est mesurée par l’erreur quadratique moyenne totale correspondante, assortie de son écart-type, sur dix exécutions. (a) mesure l’erreur de la valeur attendue d’une variable sous différentes interventions, tandis que (b) calcule l’erreur en dérivant les valeurs contrefactuelles sous différents échantillons observés et requêtes.

Figure 5 : Évaluations des prédictions causales (à gauche : interventions ; à droite : contrefactuels) sur des modèles d’équations structurelles (SEM) à 5 et 10 variables, réalisées par StrAF et CAREFL. La performance est mesurée par l’erreur quadratique moyenne totale correspondante, assortie de son écart-type, sur dix exécutions. (a) mesure l’erreur de la valeur attendue d’une variable sous différentes interventions, tandis que (b) calcule l’erreur en dérivant les valeurs contrefactuelles sous différents échantillons observés et requêtes.

Conclusion

Nous avons introduit le réseau neuronal structuré, un approximateur de fonctions permettant d'injecter une structure de variables arbitraire par masquage des poids. Nous avons formulé le masquage des poids comme un problème de factorisation matricielle binaire et proposé divers algorithmes pour le résoudre. Nous avons appliqué les réseaux de neurones structurés à la normalisation des flux pour une meilleure estimation de la densité et une modélisation générative, ce qui nous fournit également un outil puissant pour la modélisation d'équations structurelles en vue de l'estimation des effets causaux.

Travaux futurs

Dans nos travaux, nous avons démontré l'avantage de la simplicité d'utilisation du StrNN en l'intégrant à des architectures de flux pour réaliser une estimation de densité. De même, le StrNN peut être facilement intégré à d'autres architectures de pointe existantes afin d'imposer une structure connue pour diverses tâches. Nous croyons que son extension aux modèles de diffusion, à l'inférence variationnelle et même à l'apprentissage supervisé constitue une piste prometteuse pour les travaux futurs.

Références

[1] Zaheer, Manzil, Satwik Kottur, Siamak Ravanbakhsh, Barnabas Poczos, Russ R. Salakhutdinov et Alexander J. Smola. "Ensembles profonds." Dans Progrès des systèmes de traitement de l'information neuronale 30 (2017).

[2] Germain, Mathieu, Karol Gregor, Iain Murray et Hugo Larochelle. « Fait : auto-encodeur masqué pour l’estimation de la distribution. » Dans : Conférence internationale sur l’apprentissage machine , p. 881-889. PMLR, 2015.

[3] Huang, Chin-Wei, David Krueger, Alexandre Lacoste et Aaron Courville. « Flux autorégressifs neuronaux ». Dans : Conférence internationale sur l’apprentissage machine , p. 2078-2087. PMLR, 2018.

[4] Grathwohl, Will, Ricky TQ Chen, Jesse Bettencourt, Ilya Sutskever et David Duvenaud. « Ffjord : dynamique continue de forme libre pour les modèles génératifs réversibles évolutifs. » arXiv preprint arXiv:1810.01367 (2018).

[5] Wehenkel, Antoine et Gilles Louppe. « Flux de normalisation graphique ». Dans : Conférence internationale sur l’intelligence artificielle et les statistiques , p. 37-45. PMLR, 2021.

[6] Khemakhem, Ilyes, Ricardo Monti, Robert Leech et Aapo Hyvarinen. « Flux autorégressifs causaux ». Dans : Conférence internationale sur l’intelligence artificielle et les statistiques , p. 3520-3528. PMLR, 2021.