Nombre et taille des couches denses dans un CNN

11

La plupart des réseaux que j'ai vus ont une ou deux couches denses avant la couche softmax finale.

  • Existe-t-il un moyen de choisir le nombre et la taille des couches denses selon des principes?
  • Deux couches denses sont-elles plus représentatives qu'une, pour le même nombre de paramètres?
  • Le décrochage doit-il être appliqué avant chaque couche dense, ou une seule fois?
geometrikal
la source

Réponses:

15

Tout d'abord:

Il n'y a aucun moyen de déterminer une bonne topologie de réseau uniquement à partir du nombre d'entrées et de sorties. Cela dépend essentiellement du nombre d'exemples de formation et de la complexité de la classification que vous essayez d'apprendre. [1]

et Yoshua Bengio a proposé une règle très simple:

Continuez simplement à ajouter des couches jusqu'à ce que l'erreur de test ne s'améliore plus. [2]

De plus:

Les anciennes fonctionnalités d'un ConvNet contiennent des fonctionnalités plus génériques (par exemple, des détecteurs de bord ou des détecteurs de taches de couleur) qui devraient être utiles pour de nombreuses tâches, mais les couches ultérieures du ConvNet deviennent progressivement plus spécifiques aux détails des classes contenues dans l'ensemble de données d'origine. [ 3]

Par exemple, dans une méthode d'apprentissage des détecteurs d'objets:

la première couche apprend les détecteurs de bord et les couches suivantes apprennent des caractéristiques plus complexes, et les couches de niveau supérieur codent des caractéristiques plus abstraites. [4]

Ainsi, l'utilisation de deux couches denses est plus conseillée qu'une seule couche.

Finalement:

Le document original sur Dropout fournit un certain nombre d'heuristiques utiles à prendre en compte lors de l'utilisation de dropout dans la pratique. L'un d'eux est: Utilisez le décrochage sur les unités entrantes (visibles) et cachées. L'application du décrochage à chaque couche du réseau a donné de bons résultats. [5]

dans CNN, une couche Dropout est généralement appliquée après chaque couche de regroupement, ainsi qu'après votre couche Dense. Un bon tutoriel est ici [6]

Références:

[1] https://www.cs.cmu.edu/Groups/AI/util/html/faqs/ai/neural/faq.html

[2] Bengio, Yoshua. "Recommandations pratiques pour la formation par gradient des architectures profondes." Réseaux de neurones: astuces du métier. Springer Berlin Heidelberg, 2012. 437-478.

[3] http://cs231n.github.io/transfer-learning/

[4] http://learning.eng.cam.ac.uk/pub/Public/Turner/Teaching/ml-lecture-3-slides.pdf

[5] https://machinelearningmastery.com/dropout-regularization-deep-learning-models-keras/

[6] https://cambridgespark.com/content/tutorials/convolutional-neural-networks-with-keras/index.html

moh
la source