La commande de la normalisation de lots et d'abandon?
La question d'origine était en ce qui concerne TensorFlow implémentations plus précisément. Toutefois, les réponses sont pour les implémentations en général. Cette réponse générale est également la réponse correcte pour TensorFlow.
Lors de l'utilisation de la normalisation de lots et de l'abandon TensorFlow (plus précisément à l'aide de la contrib.couches) ai-je besoin d'être inquiet au sujet de la commande?
Il semble possible que si j'utilise l'abandon suivie immédiatement par la normalisation de lots il y a peut-être des ennuis. Par exemple, si le passage dans le lot normalisation des trains à l'échelle plus large des numéros de la formation de sorties, mais alors ce changement est appliqué à la plus petite (en raison de la compensation pour avoir plus de sorties) chiffres de l'échelle, sans abandon pendant les essais, alors que la maj est peut-être éteint. Le TensorFlow lot de normalisation de la couche de compenser automatiquement pour cela? Ou n'est-ce pas se produire pour une raison que je suis absent?
Aussi, il y a des pièges à regarder dehors pour dans lors de l'utilisation de ces deux ensemble? Par exemple, en supposant que je suis en utilisant dans l'ordre correct, en ce qui concerne la ci-dessus (en supposant qu'il est un ordre correct), pourrait-il y avoir de la difficulté avec l'utilisation de deux lots de normalisation et d'abandon sur plusieurs couches successives? Je n'ai pas immédiatement voir un problème avec ça, mais j'ai peut-être raté quelque chose.
Merci beaucoup!
Mise à JOUR:
Un test expérimental semble de suggérer que la commande ne question. J'ai couru le même réseau deux fois avec seulement le lot de norme et d'abandon inverse. Lors de l'abandon scolaire est avant que le lot de norme, de la validation de la perte semble être à la hausse comme à la formation de la perte est à la baisse. Ils sont en train de descendre dans les autres cas. Mais dans mon cas, les mouvements sont lents, donc les choses peuvent changer après plus de formation et il suffit d'un seul test. Un plus définitif et informé de la réponse sera appréciée.
Vous devez vous connecter pour publier un commentaire.
Dans le Ioffe et Szegedy 2015, les auteurs affirment que "nous aimerions nous assurer que, pour toutes les valeurs de paramètre, le réseau a toujours produit des activations avec la distribution désirée". Donc, le Lot de Normalisation de la Couche est en fait insérée juste après une Conv Couche/Entièrement Connecté Couche, mais avant de le nourrir dans ReLu (ou de tout autre type d'activation. Voir cette vidéo autour de l'heure 53 min pour plus de détails.
Aussi loin que le décrochage va, je crois abandon scolaire est appliquée après l'activation de la couche. Dans le abandon de papier la figure 3b, le décrochage/facteur de probabilité de la matrice r(l) pour la couche cachée l est appliqué sur y(l), où y(l) est le résultat après l'application de l'activation de la fonction f.
Donc en résumé, l'ordre de l'utilisation des lots de normalisation et d'abandon est:
-> CONV/FC -> BatchNorm -> ReLu(ou d'autres d'activation) -> Abandon -> CONV/FC ->
Comme indiqué dans les commentaires, une ressource incroyable de lire sur l'ordre des couches est ici. Je suis allé à travers les commentaires et c'est la meilleure ressource sur le sujet que j'ai trouvé sur internet
Mes 2 cents:
Abandon scolaire est destinée à bloquer l'information à partir de certains neurones complètement à assurez-vous que les neurones ne sont pas co-adapter.
Donc, le lot de normalisation doit être après l'abandon sinon, à vous transmettre des informations par le biais de la normalisation des statistiques.
Si vous pensez à ce sujet, dans le typique ML problèmes, c'est la raison pour laquelle nous ne pas calculer la moyenne et l'écart-type sur l'ensemble de données, puis de le diviser en train, de test et de validation des ensembles. Nous nous sommes séparés et ensuite calculer les statistiques sur le train et les utiliser pour normaliser et le centre de la validation et de test ensembles de données
alors je vous suggère de Régime 1 (Cela prend pseudomarvin de l' commentaire sur accepté de répondre en considération)
-> CONV/FC -> ReLu(ou d'autres d'activation) -> Abandon -> BatchNorm -> CONV/FC
plutôt le Schéma 2
-> CONV/FC -> BatchNorm -> ReLu(ou d'autres d'activation) -> Abandon -> CONV/FC -> dans la accepté de répondre à
Veuillez noter que cela signifie que le réseau selon le Schéma 2, devrait montrer sur-ajustement par rapport au réseau selon le Schéma 1, mais l'OP couru quelques tests mentionné dans la question, et ils soutiennent Schéma 2
Généralement, il suffit de déposer la
Dropout
(si vous avez desBN
):Dropout
dans certains cas, provoquer BN offre similaire à la régularisation des avantages que le Décrochage intuitivement"Dropout
Pour plus de détails, reportez-vous à ce document [La compréhension de la Dysharmonie entre le Décrochage et la Normalisation de Lots par la Variance Maj] comme déjà mentionné par @Haramoz dans les commentaires.
what about MLPs is it useful to combine them
, avez-vous dire queIs it useful to combine Dropout and BN when using MLPs
? Mon sentiment à ce sujet est qu'il dépend principalement de la taille de votre modèle et de la quantité de données d'apprentissage que vous avez.Basé sur la document de recherche pour de meilleures performances, nous devrions l'utiliser BN avant d'appliquer les Abandons
Le bon ordre est: Conv > Normalisation > Activation > Abandon > mise en commun