La fonction softmax, également connue sous le nom de softargmax ou fonction exponentielle normalisée, est une fonction mathématique qui convertit un vecteur de nombres réels en une distribution de probabilité. Elle constitue une généralisation de la fonction logistique à plusieurs dimensions et est largement utilisée dans le apprentissage automatique, en particulier dans le apprentissage profond pour les problèmes de classification multi-classes.
Définition
Étant donné un vecteur d'entrée \( \mathbf{z} = (z_1, \dots, z_K) \in \mathbb{R}^K \) avec \( K > 1 \), la fonction softmax \( \sigma: \mathbb{R}^K \to (0,1)^K \) est définie pour chaque composante \( i \) comme :
\[ \sigma(\mathbf{z})_i = \frac{e^{z_i}}{\sum_{j=1}^{K} e^{z_j}} \]
La sortie est un vecteur de valeurs positives dont la somme est égale à 1, ce qui la rend interprétable comme une distribution de probabilité catégorielle. L'opération exponentielle amplifie les différences dans l'entrée, de sorte que des valeurs d'entrée plus grandes produisent des probabilités disproportionnellement plus grandes. Par exemple, appliquer softmax au vecteur \( (1, 2, 8) \) donne approximativement \( (0,001, 0,002, 0,997) \), attribuant presque toute la masse de probabilité à l'élément le plus grand.
Propriétés
La fonction softmax possède plusieurs propriétés importantes :
- Plage de sortie : Chaque composante se situe strictement entre 0 et 1.
- Somme à un : La somme de toutes les composantes de sortie est égale à 1.
- Préservation de l'ordre : Si \( z_i > z_j \), alors \( \sigma(\mathbf{z})_i > \sigma(\mathbf{z})_j \).
- Invariance aux décalages constants : Ajouter une constante \( c \) à toutes les entrées laisse la sortie inchangée, car \( e^{z_i + c} / \sum_j e^{z_j + c} = e^{z_i} / \sum_j e^{z_j} \). Cette propriété est souvent utilisée pour la stabilité numérique en soustrayant la valeur maximale de l'entrée avant le calcul.
Paramètre de température
Une variante de la fonction softmax introduit un paramètre de température \( \beta \) (ou son inverse \( T = 1/\beta \)) :
\[ \sigma(\mathbf{z})_i = \frac{e^{\beta z_i}}{\sum_{j=1}^{K} e^{\beta z_j}} \]
Lorsque \( \beta > 1 \), la distribution devient plus concentrée (« plus nette ») autour de l'entrée maximale, tandis que \( 0 < \beta < 1 \) produit une distribution plus uniforme. Ce paramètre est couramment utilisé dans le échantillonnage top-k et le réglage de température pour les modèles d'IA générative afin de contrôler le caractère aléatoire de la sortie.
Applications
Softmax est un composant central dans de nombreuses architectures de réseaux neuronaux :
- Classification : En tant que couche d'activation finale, elle convertit les logits bruts en probabilités de classes, permettant l'entraînement avec la perte d'entropie croisée.
- Mécanismes d'attention : Dans les modèles transformers, softmax est utilisée pour calculer les poids d'attention sur les positions de la séquence, comme on le voit dans l'attention multi-têtes.
- Apprentissage par renforcement : Elle convertit les préférences d'action en une politique stochastique.
- Modèles de mélange : Elle est utilisée pour calculer les poids de mélange dans des modèles comme les modèles de mélange gaussien.
Stabilité numérique
Le calcul direct de l'exponentielle peut entraîner un débordement pour de grandes entrées. Un remède courant consiste à soustraire la valeur maximale de l'entrée avant l'exponentiation :
\[ \sigma(\mathbf{z})_i = \frac{e^{z_i - \max(\mathbf{z})}}{\sum_{j=1}^{K} e^{z_j - \max(\mathbf{z})}} \]
Cette transformation ne change pas le résultat en raison de la propriété d'invariance aux décalages, mais elle garantit que le plus grand exposant est nul, empêchant ainsi le débordement.
Concepts connexes
La fonction softmax est étroitement liée à la fonction logistique, qui en est un cas particulier pour \( K = 2 \). Elle apparaît également dans le contexte des fonctions de perte comme l'entropie croisée, et dans le décodage par recherche en faisceau pour la génération de séquences. Dans l'inférence des grands modèles de langage, softmax est appliquée aux logits pour obtenir les probabilités des jetons, souvent avec des ajustements de température pour équilibrer créativité et cohérence.