2017-02-15 2 views
2

Je travaille actuellement avec keras et je veux visualiser la sortie de chaque couche. Lorsque vous avez une visualisation d'une couche d'un réseau de neurones de sortie, comme l'exemple ci-dessous, qui est pour la reconnaissance du numéro d'écriture MNIST.De quelle manière la sortie des couches de réseau neuronal est-elle utile?

  1. Quelles informations ou comprendre le fait un gain de chercheur de ces images
  2. Comment ces images interprétées
  3. Si vous choisissez de voir la sortie d'une couche, quels sont vos critères de sélection?

Un commentaire ou une suggestion est grandement appréciée. Je vous remercie.

enter image description here

+0

Pouvez-vous fournir plus de détails sur un réseau que vous utilisez et les images que vous avez présenté? –

+0

Merci pour votre commentaire. Supposons que j'essaie de classer l'écriture des nombres à l'aide du modèle pré-formé VGG16, et que j'écrive une image 32x32 d'un nombre manuscrit. L'image ci-dessus est la sortie pour, disons, le calque 10, quelle information ou idée sur le calque 10 puis-je obtenir en voyant la sortie de ce calque? Je ne suis pas sûr si cela aide .. sinon, laissez-moi savoir quelles autres informations je peux fournir. – matchifang

Répondre

3

préface: Un réseau de convolution est un ensemble de filtres appliqués à des sections d'une image (enjambées, que l'on voit dans le GIF). Ils produisent des étiquettes vrai/faux pour si une sous-section donnée de l'image correspond au filtre.

Striding CNN

Qu'est-ce que vous voyez dans les images que vous fournissez n'est pas la meilleure représentation de la façon dont ces visualisations travaillent à mon avis, comme ils visualisent comment CNN percieves l'image entière, à chaque couche, et sont juste une série de filtres simples utilisés ici. Cela signifie que tous semblent très similaires.

Voici une meilleure représentation de l'apparence des filtres de base d'un réseau. Certains d'entre eux se déclencheront sur des lignes droites, d'autres se déclencheront sur des lignes horizontales. C'est aussi ce que montre l'image que vous avez liée, sauf pour l'image entière, sur un objet visuellement simple, ce qui le rend un peu plus difficile à comprendre. Lorsque vous obtenez des filtres plus complexes basés sur ces filtres de base, il est préférable de visualiser l'intégralité de l'image.

Simple convolutional filters

Il y a aussi un concept appelé l'apprentissage de transfert, où vous prenez des modèles généralisés existants qui sont très appréciés, et essayez de les appliquer à votre problème. Ces modèles doivent souvent être réglés, ce qui peut signifier enlever certaines couches inutiles (chaque couche que nous conservons signifie qu'il est généralement plus long à former) et/ou ajouter plus de couches. Un chercheur sera mieux à même d'interpréter comment chaque couche du réseau s'appuie sur les couches précédentes, et comment elles contribuent à résoudre le problème en question. Par exemple, supposons que j'utilise VGG16, qui est le nom d'un modèle général formé sur image-net. Je veux le changer pour classer des catégories distinctes de meubles, au lieu des 1000 classes de choses complètement différentes qu'il devait initialement classifier. Parce que c'est un modèle si général, il peut reconnaître beaucoup de choses différentes, des humains aux animaux, aux voitures, aux meubles. Mais beaucoup de ces choses n'ont pas de sens pour moi d'encourir une pénalité de performance, car ils ne m'aident pas vraiment à classer mes meubles. Comme beaucoup des découvertes les plus importantes que nous faisons à propos de ces classes se produisent à différentes couches du réseau, je peux alors remonter les couches convolutives, et enlever tout ce qui semble être trop complexe pour la tâche que je suis. Faire.Cela pourrait signifier que je supprime certaines couches qui semblent se spécialiser dans la catégorisation des caractéristiques humaines telles que les oreilles, la bouche, les yeux et les visages. Autant que je sache, les gens visualisent autant de couches qu'ils trouvent utiles, puis ils font généralement appel à leur instinct pour déterminer les couches à conserver ou à jeter après cela.

images empruntées à:

Visualizing what ConvNets learn

An Intuitive Explanation of Convolutional Neural Networks

+0

Merci pour votre réponse. Ce que je visualise actuellement, ce sont les cartes de caractéristiques. En fait, je voulais savoir quel point de vue on pourrait tirer de la visualisation des cartes de caractéristiques - avez-vous peut-être aussi une réponse à cela? Aussi, pensez-vous qu'il serait plus utile de visualiser les filtres plutôt que les cartes de caractéristiques? Toutes mes excuses si la question est stupide. Je suis assez nouveau pour les réseaux neuronaux. – matchifang

+0

Je pourrais ajouter quelques informations demain. Mais votre featuremap est essentiellement la sortie de l'un de vos filtres. Ce que vous visualisez dépend un peu de ce que vous essayez de comprendre. Je dirais de visualiser les filtres si vous essayez de comprendre les concepts, et comment fonctionnent les CNN. Mais pour le travail pratique, vous visualisez les featuremaps que vous obtenez à partir des filtres/couches. Je recommande fortement de regarder la vidéo que j'ai inclus. Il affiche assez bien comment ces featuremaps/filtres interagissent entre eux. – NegatioN