J'ai cette question depuis des mois. Il semble que nous avons simplement deviné habilement le softmax comme fonction de sortie, puis interprété l'entrée du softmax comme des log-probabilités. Comme vous l'avez dit, pourquoi ne pas simplement normaliser toutes les sorties en les divisant par leur somme? J'ai trouvé la réponse dans le livre de Deep Learning de Goodfellow, Bengio et Courville (2016) à la section 6.2.2.
Disons que notre dernière couche cachée nous donne z en tant qu'activation. Ensuite, le softmax est défini comme
Explication Très Courte
La fonction exp dans le softmax annule approximativement le log dans la perte de cross-entropie, provoquant la perte d'être approximativement linéaire en z_i. Cela conduit à un gradient approximativement constant, lorsque le modèle a tort, lui permettant de se corriger rapidement. Ainsi, un softmax faux saturé ne provoque pas un gradient s'éteignant.
Explication Courte
La méthode la plus populaire pour entraîner un réseau neuronal est l'estimation de probabilité maximale. Nous estimons les paramètres theta d'une manière qui maximise la probabilité des données d'entraînement (de taille m). Parce que la probabilité de l'ensemble du jeu de données d'entraînement est un produit des probabilités de chaque échantillon, il est plus facile de maximiser la log-vraisemblance du jeu de données et donc la somme de la log-vraisemblance de chaque échantillon indexée par k :
Maintenant, nous nous concentrons uniquement sur le softmax ici avec z étant déjà donné, donc nous pouvons remplacer
avec i étant la classe correcte de l'échantillon k. Maintenant, nous voyons que lorsque nous prenons le logarithme du softmax, pour calculer la log-vraisemblance de l'échantillon, nous obtenons :
, ce qui pour des différences importantes de z approxime approximativement à
En premier lieu, nous constatons la composante linéaire z_i ici. Deuxièmement, nous pouvons examiner le comportement de max(z) pour deux cas :
- Si le modèle est correct, alors max(z) sera z_i. Ainsi, la log-vraisemblance tend vers zéro (c'est-à-dire une vraisemblance de 1) avec une différence croissante entre z_i et les autres entrées dans z.
- Si le modèle est incorrect, alors max(z) sera un autre z_j > z_i. Ainsi, l'addition de z_i n'annule pas entièrement -z_j et la log-vraisemblance est approximativement (z_i - z_j). Cela dit clairement au modèle ce qu'il doit faire pour augmenter la log-vraisemblance : augmenter z_i et diminuer z_j.
Nous voyons que la log-vraisemblance globale sera dominée par les échantillons où le modèle est incorrect. De plus, même si le modèle est vraiment incorrect, ce qui entraîne un softmax saturé, la fonction de perte ne se sature pas. Elle est approximativement linéaire en z_j, ce qui signifie que nous avons un gradient approximativement constant. Cela permet au modèle de se corriger rapidement. Notez que ce n'est pas le cas de l'erreur quadratique moyenne par exemple.
Explication Longue
Si le softmax vous semble toujours être un choix arbitraire, vous pouvez jeter un coup d'oeil à la justification de l'utilisation de la sigmoïde dans la régression logistique :
Pourquoi une fonction sigmoïde plutôt que quelque chose d'autre?
Le softmax est la généralisation de la sigmoïde pour les problèmes multi-classes justifiée de manière analogique.
14 votes
La fonction n'est pas coûteuse à calculer en raison des exposants, mais parce que vous devez calculer chaque qj. L'exponentiation est bon marché par rapport à la quantité totale de calcul nécessaire.
3 votes
Quel type de transformée Z mentionnez-vous? Le sens du traitement du signal du terme ne convient pas ici, et le remplacement des valeurs par leur score Z donne une sortie négative si l'entrée est en dessous de la moyenne.
0 votes
Voir aussi: Stats.SE