Comment fonctionne exactement DropOut avec les couches convolutives?


10

Dropout ( papier , explication ) met la sortie de certains neurones à zéro. Donc, pour un MLP, vous pouvez avoir l'architecture suivante pour le jeu de données Iris flower :

4 : 50 (tanh) : dropout (0.5) : 20 (tanh) : 3 (softmax)

Cela fonctionnerait comme ceci:

soFtmuneX(W3tanh(W2masque(,tanh(W1jenput_vector)))

avec , , , , (en ignorant les biais pour des raisons de simplicité). W 1R 50 × 4 D { 0 , 1 } 50 × 1 W 2R 20 × 50 W 3R 20 × 3jenput_vectorR4×1W1R50×4{0,1}50×1W2R20×50W3R20×3

Avec et=()jej

jejB(1,p=0,5)

où l'opération multiplie ponctuellement par (voir produit Hadamard ).masque(,M)M

Par conséquent, nous venons d'échantillonner la matrice chaque fois et ainsi le décrochage devient une multiplication d'un nœud avec 0.

Mais pour les CNN, je ne sais pas exactement ce qui est abandonné. Je vois trois possibilités:

  1. Suppression de cartes de fonctionnalités complètes (d'où un noyau)
  2. Suppression d'un élément d'un noyau (remplacement d'un élément d'un noyau par 0)
  3. Suppression d'un élément d'une carte d'entités

Veuillez ajouter une référence / devis à votre réponse.

Mes pensées

Je pense que la lasagne fait (3) (voir code ). Cela pourrait être le plus simple à mettre en œuvre. Cependant, l'idée la plus proche pourrait être (1).

Semble être similaire pour Caffe (voir code ). Pour tensorflow, l'utilisateur doit décider ( code - je ne sais pas ce qui se passe quand il noise_shape=Noneest passé).

Comment ça devrait être

(2) et (3) n'ont pas beaucoup de sens car cela amènerait le réseau à ajouter de l'invariance aux positions spatiales, ce qui n'est probablement pas souhaité. Par conséquent, (1) est la seule variante qui a du sens. Mais je ne sais pas ce qui se passe si vous utilisez l'implémentation par défaut.


J'ai également posé la question dans le groupe d'utilisateurs Lasagne .
Martin Thoma

Un ami a noté que (2) et (3) n'étaient peut-être pas une bonne idée car cela pourrait forcer le réseau à diffuser des informations dans l'espace.
Martin Thoma

Réponses:


1

Comme vous l'avez mentionné, la matrice de masque est échantillonnée et multipliée avec les activations dans la carte d' au niveau pour produire des activations modifiées supprimées qui sont ensuite convolues avec le filtre au niveau suivant . (3)lW(l+1)

Pour plus de détails, je pense que la section 3 de ce document pourrait vous aider: Max-pooling & Convolutional dropout . Plus précisément 3.2.

Lorsque vous testez, vous utilisez tous les nœuds du réseau mais avec les pondérations du filtre mises à l'échelle par la probabilité de rétention, comme expliqué dans l'article.

N'hésitez pas à affiner ou corriger ma réponse.

J'espère que cela aide au moins un peu.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.