Qu'est-ce que mon réseau de neurones vient d'apprendre? De quelles fonctionnalités se soucie-t-il et pourquoi?

30

Un réseau neuronal apprend les caractéristiques d'un ensemble de données comme moyen d'atteindre un objectif. Une fois cela fait, nous pouvons vouloir savoir ce que le réseau neuronal a appris. Quelles étaient les fonctionnalités et pourquoi s'en souciait-il? Quelqu'un peut-il donner quelques références sur l'ensemble des travaux qui concernent ce problème?

user442920
la source

Réponses:

28

Il est vrai qu'il est difficile de comprendre ce qu'un réseau de neurones apprend, mais il y a eu beaucoup de travail sur ce front. Nous pouvons certainement avoir une idée de ce que recherche notre réseau.

Prenons le cas d'un réseau neuronal convolutif pour les images. Nous avons l'interprétation pour notre première couche que nous glissons des filtres sur l'image, donc notre première couche cachée correspond à l'accord entre les petits morceaux de l'image et nos différents filtres. Nous pouvons visualiser ces filtres pour voir quelle est notre première couche de représentation:K

couche alexnet 1

Cette image représente la première couche de filtres d'un AlexNet et est tirée de ce merveilleux tutoriel: http://cs231n.github.io/understanding-cnn/ . Cela nous permet d'interpréter la première couche cachée comme apprenant à représenter l'image, constituée de pixels bruts, comme un tenseur où chaque coordonnée est l'accord d'un filtre avec une petite région de l'image. La couche suivante travaille alors avec ces activations de filtre.

Il n'est pas si difficile de comprendre la première couche cachée, car nous pouvons simplement regarder les filtres pour voir comment ils se comportent, car ils sont directement appliqués à une image d'entrée. Par exemple, disons que vous travaillez avec une image en noir et blanc (donc nos filtres sont 2D plutôt que 3D) et que vous avez un filtre qui ressemble à

[010141010].

Imaginez appliquer cela à une région 3x3 d'une image (en ignorant le terme de biais). Si chaque pixel était de la même couleur, vous obtiendrez car ils annuleraient. Mais si la moitié supérieure est différente de la moitié inférieure, par exemple, vous obtiendrez une valeur potentiellement élevée. Ce filtre, en fait, est un détecteur de bord, et nous pouvons le comprendre en l'appliquant simplement aux images et en voyant ce qui se passe. Mais il est beaucoup plus difficile de comprendre les couches plus profondes, car tout le problème est que nous ne savons pas comment interpréter à quoi nous appliquons les filtres.0

Cet article d'Erhan et al (2009) est d'accord avec cela: ils disent que les premières visualisations de couches cachées sont courantes (et c'était en 2009) mais la visualisation des couches plus profondes est la partie difficile. De ce papier:

Le principal résultat expérimental de cette enquête est très surprenant: la réponse d'une unité interne aux images d'entrée, en tant que fonction dans l'espace image, semble être unimodale, ou du moins que le maximum est trouvé de manière fiable et cohérente pour toutes les initialisations aléatoires testées . Ceci est intéressant car trouver ce mode dominant est relativement facile et son affichage permet alors de bien caractériser ce que fait l'unité.

Chris Olah et al ( https://distill.pub/2017/feature-visualization/ ) s'appuient sur cela et expliquent comment en général vous pouvez (1) générer des images qui conduisent à de grandes activations afin d'avoir une idée de ce que le réseau cherche; ou (2) prendre des images d'entrée réelles et voir comment différentes parties de l'image activent le réseau. Ce post se concentre sur (1).

Dans l'image ci-dessous, tirée de cet article lié d'Olah et al., Les auteurs discutent des différents aspects du réseau que vous pouvez inspecter. L'image la plus à gauche montre le résultat de l'optimisation de l'activation d'un neurone particulier sur l'espace d'image d'entrée, etc.

C. Olah et al

Je recommanderais fortement de lire cet article dans son intégralité si vous voulez une compréhension plus approfondie de cela, et en lisant ses références, vous devriez avoir une bonne compréhension de ce qui a été fait avec cela.

Maintenant, bien sûr, tout cela n'était que pour les images où nous, en tant qu'humains, pouvons donner un sens aux entrées. Si vous travaillez avec quelque chose de plus difficile à interpréter, comme juste un grand vecteur de nombres, alors vous ne pourrez peut-être pas faire des visualisations aussi cool, mais en principe, vous pourriez toujours envisager ces techniques pour évaluer les différents neurones, couches, etc. .

jld
la source
2
+1 spécialement pour le dernier paragraphe. Personnellement, je pense que les personnes visionnaires sont en train de faire des visualisations sur ces nombreux paramètres.
Haitao Du
bien sûr +1 pour la réponse longue bien écrite avec des références crédibles.
Haitao Du
1
@ hxd1011 merci, et je pense qu'Olah et al soulignent dans cet article qu'il n'est pas vraiment juste de regarder ce qui maximise un seul neurone car vraiment la couche est comme une base et il s'agit plus de l'espace qu'elle représente que les vecteurs de base exacts. Alors , tout en amusant à regarder, beaucoup de ces visualisations ne peut pas être super perspicace
JLD
1
Une idée fausse courante est également qu'en prenant les filtres de la première couche, un patch d'image qui maximisera la sortie d'un neurone donné ressemble exactement à ce filtre. En fait non, un patch maximisant la sortie d'un neurone ne ressemble en rien aux valeurs numériques du filtre, depuis sa convolution, pas la correspondance de gabarit. C'est là que je crois que les exemples accusatoires résident.
Lugi
Olah et al. le billet de blog est sympa, mais ils font une erreur - ils "optimisent pour une activation maximale" (pas exactement cela, mais se ferment), trouvent une image qui ne ressemble en rien aux images de l'ensemble d'entraînement et concluent que les CNN "voient" différemment de nous. Bien que la conclusion soit évidemment vraie, le raisonnement est erroné - le mode d'une distribution de grande dimension ne ressemble en rien à un échantillon typique de cette distribution. En d'autres termes, c'est précisément parce que les CNN doivent classer les chats, que le mode de distribution ne doit pas être un chat, mais un «chat cauchemardesque».
DeltaIV
7

Neural Network est l'un des modèles de boîte noire qui ne donneraient pas de règles «faciles à comprendre» ou ce qui a été appris.

Plus précisément, ce qui a été appris, ce sont les paramètres du modèle, mais les paramètres peuvent être importants: des centaines de milliers de paramètres sont très normaux.

De plus, il n'est pas clair non plus sur les fonctionnalités importantes apprises, vous pouvez comprendre que le modèle utilise toutes les fonctionnalités, avec de nombreuses opérations compliquées pour dériver les résultats, où il n'est pas facile de dire en langage simple comment le modèle transforme chaque fonctionnalité l'utilise.


En fait, le réseau neuronal à une couche (sans couche cachée) avec fonction logistique comme fonction d'activation est identique à la régression logistique. La régression logistique est très riche en interprétations. Voici un exemple. Mais avec un réseau neuronal complexe / des couches plus cachées, une telle interprétation ne s'appliquera pas.

Haitao Du
la source