Comment visualiser / comprendre ce que fait un réseau de neurones?

37

Les réseaux de neurones sont souvent traités comme des "boîtes noires" en raison de leur structure complexe. Ce n'est pas idéal, car il est souvent bénéfique de comprendre intuitivement le fonctionnement d'un modèle en interne. Quelles sont les méthodes de visualisation du fonctionnement d'un réseau de neurones formés? Sinon, comment pouvons-nous extraire des descriptions faciles à assimiler du réseau (par exemple, ce nœud caché fonctionne principalement avec ces entrées)?

Je suis principalement intéressé par les réseaux à feed-forward à deux couches, mais j'aimerais également connaître les solutions pour les réseaux plus profonds. Les données d'entrée peuvent être de nature visuelle ou non visuelle.

rm999
la source
1
Voici un bel exemple: playground.tensorflow.org
nobar

Réponses:

12

Les réseaux de neurones sont parfois appelés "approximateurs de fonction différenciables". Donc, ce que vous pouvez faire est de différencier toute unité par rapport à une autre unité pour voir quelle est leur relation.

Vous pouvez également vérifier la sensibilité de l'erreur du réseau à une entrée spécifique.

Ensuite, il y a quelque chose appelé "champs réceptifs", qui est juste la visualisation des connexions entrant dans une unité cachée. Cela permet de comprendre facilement ce que font les unités particulières pour les données d'image, par exemple. Cela peut également être fait pour les niveaux supérieurs. Voir Visualisation des fonctionnalités de niveau supérieur d'un réseau profond .

Bayerj
la source
13

Estimez l’importance des caractéristiques en modifiant de façon aléatoire chaque valeur d’une caractéristique unique et en enregistrant la dégradation de vos fonctions de mise en forme.

Par conséquent, si votre première une valeur continue et est mise à l'échelle à , vous pouvez ajouter à la valeur de chaque exemple d'apprentissage pour la première entité. Ensuite, cherchez combien votre diminue. Cela exclut effectivement une fonctionnalité de vos données d'entraînement, mais gère mieux les interactions croisées que la suppression littérale de la fonctionnalité.X1,je[0,1]runen(0,1)-0.5R2

Ensuite, classez vos caractéristiques par dégradation de la fonction de remise en forme et créez un joli diagramme à barres. Au moins certaines des caractéristiques les plus importantes devraient passer un test d’aiguille, compte tenu de votre connaissance du domaine problématique. Et cela vous permet également d'être agréablement surpris par des fonctionnalités informatives auxquelles vous ne vous attendiez peut-être pas.

Ce type de test d'importance des fonctionnalités fonctionne pour tous les modèles à boîte noire, y compris les réseaux de neurones et les grands ensembles CART. D'après mon expérience, l'importance des fonctionnalités est la première étape pour comprendre ce que fait réellement un modèle.

un peu
la source
1
Merci d'avoir répondu; c'est en fait quelque chose que j'ai fait et je le trouve très utile. Dans cette question, je cherche plutôt quelque chose qui regarde à l'intérieur du réseau plutôt que de le traiter comme une boîte noire.
rm999
2

Voici une intuition graphique pour un type particulier de réseaux de neurones. À la fin de ce post, il y a un lien vers le code R qui montre une visualisation pour un problème particulier. Voici à quoi ça ressemble:

entrez la description de l'image ici

Dimitriy V. Masterov
la source
1

À l'automne 2011, j'ai suivi le cours d'apprentissage en ligne gratuit en ligne de Standford dispensé par Andrew Ng et nous avons visualisé un réseau de neurones qui était un détecteur de visage. La sortie était un visage générique. Je veux mentionner ceci pour être complet, mais vous n’avez pas mentionné ce type d’application, je ne vais donc pas chercher les détails. :)

Andrew
la source
L'université est Stanford. Je peux trouver Andrew Ng bien sur sur le web. J'ai entendu Dick DeVeaux faire une conférence sur les réseaux de neurones, affirmant que les neurones en font en quelque sorte partie cachée. c'est simplement un autre type de classifieur non linéaire et si, au lieu de le regarder du point de vue du diagramme, ils sont mieux compris en écrivant ce qu'ils font algébriquement. J'espère que je me souviens de ce droit.
Michael R. Chernick,
De Veaux et Ungar, brève introduction aux réseaux neuronaux 1997: "Les réseaux neuronaux semblent être omniprésents de nos jours, et au moins dans leur publicité, ils sont capables de faire tout ce que les statistiques peuvent faire sans le tracas et la peine de devoir faire autre chose que acheter un logiciel. "
denis
0

La méthode mentionnée ci-dessous est tirée de ce lien , visitez le site pour plus de détails.

Commencez avec une image aléatoire, c.-à-d., Fournissez des valeurs aux pixels de manière arbitraire. "Ensuite, nous faisons un passage en avant en utilisant cette image x comme entrée du réseau pour calculer l’activation a_i (x) provoquée par x sur un neurone i quelque part au milieu du réseau. Ensuite, nous effectuons un passage en arrière (effectuant un retour arrière). pour calculer le gradient de a_i (x) par rapport aux activations précédentes sur le réseau. À la fin de la passe arrière, il nous reste le dégradé a_i (x) / ∂x , ou comment changer la couleur de chaque pixel en augmenter l'activation du neurone I. Nous faisons exactement cela en ajoutant une petite fraction αα de ce gradient à l'image:

x ← x + α⋅∂a_i (x) / ∂x

Nous continuons à faire cela à plusieurs reprises jusqu'à ce que nous ayons une image x 'qui provoque une forte activation du neurone en question. "

LKB
la source