Que font les couches entièrement connectées dans les CNN?

19

Je comprends les couches convolutionnelles et de mise en commun, mais je ne vois pas la raison d'une couche entièrement connectée dans les CNN. Pourquoi la couche précédente n'est-elle pas directement connectée à la couche de sortie?

Jeff
la source

Réponses:

31

La sortie des couches convolutives représente des caractéristiques de haut niveau dans les données. Bien que cette sortie puisse être aplatie et connectée à la couche de sortie, l'ajout d'une couche entièrement connectée est un moyen (généralement) bon marché d'apprendre des combinaisons non linéaires de ces fonctionnalités.

Essentiellement, les couches convolutives fournissent un espace caractéristique significatif, de faible dimension et quelque peu invariant, et la couche entièrement connectée apprend une fonction (éventuellement non linéaire) dans cet espace.

REMARQUE: il est trivial de convertir des couches FC en couches Conv. La conversion de ces couches FC supérieures en couches Conv peut être utile comme le décrit cette page.

jamesmf
la source
Merci pour ta réponse James. Nous apprenons donc les poids entre les couches connectées avec rétropropagation, est-ce correct?
jeff
Oui, l'erreur se propage en retour à travers la couche entièrement connectée aux couches convolutionnelles et de mise en commun.
jamesmf
D'accord. Ainsi, le but de la couche fc peut être pensé comme un PCA non linéaire, il rectifie les "bonnes" caractéristiques et diminue les autres en apprenant l'ensemble complet des poids.
jeff
1
Il vous permet principalement une combinaison non linéaire de fonctionnalités. Toutes les fonctionnalités peuvent être bonnes (en supposant que vous n'avez pas de fonctionnalités «mortes»), mais les combinaisons de ces fonctionnalités peuvent être encore meilleures.
jamesmf
@jamesmf: Qu'est-ce qu'une fonction morte? et quelles sont les combinaisons de fonctionnalités dont vous parlez? qu'entendez-vous par une combinaison non linéaire? L'utilisation d'une couche entièrement connectée est-elle obligatoire dans un cnn? ou peut-il être remplacé sans aucun effet négatif sur la précision? Merci beaucoup d'avance. Je vous serais reconnaissant de bien vouloir donner une intuition sur les questions que j'ai posées.
Rika
4

J'ai trouvé cette réponse d' Anil-Sharma sur Quora utile.

Nous pouvons diviser l'ensemble du réseau (pour la classification) en deux parties:

  • Extraction d' entités: Dans les algorithmes de classification conventionnels, comme les SVM, nous avions l'habitude d'extraire des entités des données pour faire fonctionner la classification. Les couches convolutives servent le même but d'extraction d'entités. Les CNN capturent une meilleure représentation des données et nous n'avons donc pas besoin de faire de l'ingénierie des fonctionnalités.

  • Classification : Après l'extraction des fonctionnalités, nous devons classer les données en différentes classes, cela peut être fait en utilisant un réseau neuronal entièrement connecté (FC). Au lieu de couches entièrement connectées, nous pouvons également utiliser un classificateur classique comme SVM. Mais nous finissons généralement par ajouter des couches FC pour rendre le modèle de bout en bout entraînable.

rocksyne
la source