Pourquoi utiliser softmax uniquement dans la couche de sortie et pas dans les couches cachées?

la plupart des exemples de réseaux neuronaux pour les tâches de classification que j'ai vu utiliser la couche a softmax comme fonction d'activation de sortie. Normalement, les autres unités cachées utilisent une fonction sigmoid, tanh, ou ReLu comme fonction d'activation. L'utilisation de la fonction softmax ici pourrait - autant que je sache-fonctionner mathématiquement aussi.

  • quelles sont les justifications théoriques pour ne pas utiliser la fonction softmax comme des fonctions d'activation de la couche cachée?
  • existe-il des publications A propos de ça, quelque chose à citer?
12
demandé sur Marcin Możejko 2016-06-02 13:01:08

4 réponses

Je n'ai trouvé aucune publication expliquant pourquoi l'utilisation de softmax comme activation dans une couche cachée n'est pas la meilleure idée (sauf Quora la question que vous avez probablement déjà lu), mais je vais essayer d'expliquer pourquoi il n'est pas la meilleure idée de l'utiliser dans ce cas :

1. Les Variables de l'indépendance : beaucoup de régularisation et d'efforts sont mis pour garder vos variables indépendantes, non corrélés et assez rares. Si vous utilisez softmax couche cachée couche alors vous garderez tous vos noeuds (variables cachées) dépendant de façon linéaire ce qui peut entraîner de nombreux problèmes et de généralisation pauvres.

2. Les enjeux de la formation : essayez d'imaginer que, pour faire votre travail mieux que vous avez à faire une partie d'activations de votre couche cachée un peu plus bas. Puis-automaticaly vous faites repos d'eux d'avoir l'activation moyenne sur un niveau plus élevé qui pourrait en fait augmenter l'erreur et nuire à votre formation phase.

3. Questions mathématiques: en créant des contraintes sur les activations de votre modèle, vous diminuez le pouvoir expressif de votre modèle sans aucune explication logique. L'effort pour avoir toutes les activations la même n'est pas la peine à mon avis.

4. La normalisation par lots fait mieux : on peut considérer que la production moyenne constante d'un réseau peut être utile pour la formation. Mais d'un autre côté une technique appelée Normalisation Par Lots a déjà fait ses preuves pour mieux fonctionner, alors qu'il a été rapporté que le réglage de softmax comme fonction d'activation dans la couche cachée peut diminuer la précision et la vitesse d'apprentissage.

13
répondu Marcin Możejko 2016-06-02 20:52:55

en fait, les fonctions Softmax sont déjà utilisées au plus profond des réseaux neuronaux, dans certains cas, lorsqu'il s'agit de mémoire différentiable et de mécanismes d'attention!

les couches Softmax peuvent être utilisées dans les réseaux neuronaux tels que machines neuronales de Turing (NTM) et une amélioration de ceux qui sont Dérivable de Neurones Ordinateur (DNC).

Pour résumer, ces architectures sont RNNs/LSTMs qui ont été modifiés pour contient une matrice de mémoire différentielle (neurale) qui est possible d'écrire et d'accéder à travers des étapes de temps.

rapidement expliqué, la fonction softmax permet ici une normalisation d'un fetch de la mémoire et d'autres bizarreries similaires pour l'adressage basé sur le contenu de la mémoire. A propos de ça, j'ai vraiment aimé cet article qui illustre les opérations dans un NTM et d'autres architectures RNN récentes avec des figures interactives.

ce document. Là, le Softmax permet une normalisation des lieux où l'attention est distribuée afin de conserver "doucement" la place maximale à laquelle prêter attention: c'est-à-dire aussi prêter un peu d'attention à ailleurs d'une manière douce. Cependant, cela pourrait être considéré comme un mini-réseau neuronal qui traite de l'attention, à l'intérieur du grand réseau, comme expliqué dans le document. Par conséquent, il pourrait être débattue si oui ou non Softmax est utilisé seulement à la fin des réseaux neuronaux.

j'Espère que ça aide!

Edit-plus récemment, il est même possible de voir des modèles de traduction neuronale (NMT) où seule l'attention (avec softmax) est utilisée, sans RNN ni CNN: http://nlp.seas.harvard.edu/2018/04/03/attention.html

6
répondu Guillaume Chevalier 2018-04-09 00:17:49

la fonction Softmax est utilisée pour la couche de sortie seulement (au moins dans la plupart des cas) pour s'assurer que la somme des composantes du vecteur de sortie est égale à 1 (pour plus de clarté, voir la formule de la fonction de coût softmax). Cela implique également quelle est la probabilité d'occurrence de chaque composant (classe) de la sortie et donc la somme des probabilités(ou composants de sortie) est égal à 1.

2
répondu Nagabhushan Baddi 2016-06-02 10:34:53

utilisez une activation softmax partout où vous voulez modéliser une distribution multinomiale. Ceci peut être (habituellement) une couche de sortie y, mais peut aussi être une couche intermédiaire, disons une variable latente multinomiale z. Comme mentionné dans ce thread pour les sorties {o_i}, sum({o_i}) = 1 est une dépendance linéaire, qui est intentionnelle à cette couche. Des couches supplémentaires peuvent fournir la densité et / ou l'indépendance désirée en aval.

Page 198 de L'Apprentissage En Profondeur (Goodfellow, Bengio, Courville)

Tout temps, nous voulons représenter une distribution de probabilité sur une variable discrète avec n valeurs possibles, nous pouvons utiliser la fonction softmax. Ceci peut être vu comme une généralisation de la fonction sigmoïde qui a été utilisé pour représenter une probabilité distribution sur une variable binaire. Les fonctions Softmax sont le plus souvent utilisées comme sortie d'un classificateur, pour représenter la distribution de probabilité sur n classes différentes. Plus rarement, les fonctions softmax peut être utilisé à l'intérieur du modèle lui-même, si nous souhaitons que le modèle de choisir entre l'une des n Différentes options pour une variable interne.

2
répondu k3f9f2kf2 2018-01-29 19:58:22