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:
avec , , , , (en ignorant les biais pour des raisons de simplicité). W 1 ∈ R 50 × 4 D ∈ { 0 , 1 } 50 × 1 W 2 ∈ R 20 × 50 W 3 ∈ R 20 × 3
Avec et
où l'opération multiplie ponctuellement par (voir produit Hadamard ).
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:
- Suppression de cartes de fonctionnalités complètes (d'où un noyau)
- Suppression d'un élément d'un noyau (remplacement d'un élément d'un noyau par 0)
- 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=None
est 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.