69 votes

Pourquoi le 6 en relu6?

J'ai piraté un profond feed forward NN de a à z dans R, et il semble plus stable avec "dur sigmoïde" activations - max(0,min(1,x)) - que ReLU. En essayant de port à TensorFlow, et remarqué qu'ils ne disposent pas de cette fonction d'activation intégré, seulement relu6, qui utilise une coupure supérieure à 6. Est-il une raison pour cela? (Je me rends compte que vous pourriez faire relu6(x*6)/6, mais si le TF gars mettre la 6 là pour une bonne raison, j'aimerais bien le savoir.) Aussi, j'aimerais savoir si d'autres personnes ont d'explosion des problèmes avec ReLU en avance filets (je suis conscient de la RNN des questions).

74voto

GPhilo Points 6724

À partir de ce thread reddit:

C'est utile dans la prise de réseaux de prêt pour les points fixes de l'inférence. Si vous indépendant de la limite supérieure, vous perdez trop de bits pour la partie Q d'un Q. f nombre. En gardant le ReLUs délimitée par 6 leur permettra de prendre un max de 3 bits (jusqu'à 8) à la sortie de 4/5 bits pour .f

Il semble, alors, que 6 est juste une valeur arbitraire choisi en fonction du nombre de bits que vous souhaitez être en mesure de compresser votre réseau formé des paramètres. Selon le "pourquoi", seule la version avec la valeur 6 est mis en place, je suppose que c'est parce que c'est la valeur qui convient le mieux à 8 bits, ce qui est probablement le plus commun de cas d'utilisation.

64voto

Zephro Points 615

Tensorflows documentation (https://www.tensorflow.org/api_docs/python/tf/nn/relu6) points pour le papier suivant:

... Tout d'abord, nous avons casquette parts à 6, de sorte que notre ReLU activation la fonction est y = min(max(x, 0), 6). Lors de nos tests, cela encourage le modèle de pour en savoir éparses fonctionnalités plus tôt. Dans la formulation de [8], c'est équivalent à imaginer que chaque ReLU unité se compose de seulement 6 répliqué biais d'un décalage de Bernoulli unités, plutôt qu'un infinute montant. Nous nous référerons ReLU unités plafonné à n ReLU-n unités.

http://www.cs.utoronto.ca/~kriz/conv-cifar10-aug2010.pdf

Puisqu'il provient de la feuille de papier, je soupçonne qu'ils ont été testés avec différents n s et a obtenu les meilleurs résultats pour leurs testset avec n=6.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X