J'étudie et j'essaie de mettre en œuvre des réseaux de neurones convolutionnels, mais je suppose que cette question s'applique aux perceptrons multicouches en général.
Les neurones de sortie de mon réseau représentent l'activation de chaque classe: le neurone le plus actif correspond à la classe prédite pour une entrée donnée. Pour considérer un coût d'entropie croisée pour la formation, j'ajoute une couche softmax à la fin du réseau, afin que la valeur d'activation de chaque neurone soit interprétée comme une valeur de probabilité.
Ma question est: les neurones de la couche de sortie devraient-ils appliquer une fonction non linéaire à l'entrée? Mon intuition est qu'il n'est pas nécessaire:
- si l'entrée du ème neurone de sortie est le produit scalaire entre un vecteur (provenant de la couche précédente) et les poids pour ce neurone,
- et si j'emploie une fonction non linéaire monotone comme le sigmoïde ou le ReLU
- alors la plus grande sortie d'activation correspondra toujours au plus grand , donc de ce point de vue la fonction non linéaire ne changerait pas la prédiction.
Quelque chose ne va pas avec cette interprétation? Y a-t-il des facteurs de formation que j'écarte qui rendent la non-linéarité de sortie nécessaire?
Et si j'ai raison, est-ce que quelque chose changerait si au lieu d'utiliser la fonction sigmoïde j'utilise la fonction ReLU , qui n'est pas strictement monotone?
ÉDITER
En référence à la réponse de Karel, dont la réponse était essentiellement "ça dépend", voici une description plus détaillée de mon réseau et de mon doute:
Supposons que j'ai N couches cachées, et ma couche de sortie est juste une couche softmax sur un ensemble de neurones représentant des classes (donc ma sortie attendue est la probabilité que les données d'entrée appartiennent à chaque classe). En supposant que les premières N-1 couches ont des neurones non linéaires, quelle est la différence entre l'utilisation de neurones non linéaires et linéaires dans la N-ème couche cachée?
Réponses:
Vous ne devez pas utiliser une non-linéarité pour la dernière couche avant la classification softmax. La non-linéarité ReLU (utilisée maintenant presque exclusivement) va dans ce cas simplement jeter des informations sans ajouter aucun avantage supplémentaire. Vous pouvez consulter l' implémentation caffe du célèbre AlexNet pour une référence de ce qui est fait dans la pratique.
la source
Vous souhaiterez peut-être envoyer une valeur négative dans la fonction softmax, pour indiquer qu'un événement a une faible probabilité. Si vous transmettez les valeurs d'entrée à une relu, le réseau ne passera aucun gradient à travers les unités où l'entrée de la relu est négative. Ainsi, bien que la puissance expressive du softmax ne soit pas modifiée, cela rendra probablement l'apprentissage beaucoup plus difficile.
la source
La réponse n'est ni oui ni non. Cela dépend fortement de vos attentes envers votre réseau. Je suppose que vous voulez avoir un bon classificateur, éventuellement applicable à un large éventail de problèmes. Par conséquent, la non-linéarité peut être utile pour capturer des classes non triviales. La non-linéarité peut être incluse soit dans la dernière couche avant la couche soft-max, soit dans la couche précédente.
la source