Une explication simple de la fonction Softmax

Softmax transforme des valeurs réelles arbitraires en probabilités, qui sont souvent utiles en apprentissage automatique. Les mathématiques qui la sous-tendent sont assez simples : étant donné certains nombres,

  1. Elever e (la constante mathématique) à la puissance de chacun de ces nombres.
  2. Sommer toutes les exponentielles (puissances de eee). Ce résultat est le dénominateur.
  3. Utiliser l’exponentielle de chaque nombre comme son numérateur.
  4. Probabilité=NumérateurDénominateur\text{Probabilité} = \frac{\text{Numérateur}}{\text{Dénominateur}}Probabilité=DénominateurNumérateur.

Ecrit de manière plus fantaisiste, Softmax effectue la transformation suivante sur nnn nombres x1…xnx_1 \ldots x_nx1…xn :

s(xi)=exi∑j=1nexjs(x_i) = \frac{e^{x_i}}{\sum_{j=1}^n e^{x_j}s(xi)=∑j=1nexjexi

Les sorties de la transformation de Softmax sont toujours dans l’intervalle et s’additionnent à 1. Par conséquent, elles forment une distribution de probabilité.

Un exemple simple

Disons que nous avons les nombres -1, 0, 3 et 5. Tout d’abord, nous calculons le dénominateur :

Dénominateur=e-1+e0+e3+e5=169,87\begin{aligned}\text{Dénominateur} &= e^{-1} + e^0 + e^3 + e^5\\\&= \boxed{169.87} \\\\Nend{aligned}Dénominateur=e-1+e0+e3+e5=169.87

Alors, on peut calculer les numérateurs et les probabilités :

xxx Numérateur (exe^xex) Probabilité (ex169.87\frac{e^x}{169.87}169.87ex)
-1 0.368 0.002
0 1 0.006
3 20.09 0.118
5 148,41 0,874

Plus le xxx est grand, plus sa probabilité est élevée. Remarquez également que les probabilités s’additionnent toutes à 1, comme mentionné précédemment.

Mise en œuvre de Softmax en Python

L’utilisation de numpy rend cela super facile :

import numpy as npdef softmax(xs): return np.exp(xs) / sum(np.exp(xs))xs = np.array()print(softmax(xs)) # 
np.exp() élève e à la puissance de chaque élément du tableau d’entrée.

Note : pour les utilisateurs plus avancés, vous voudrez probablement implémenter ceci en utilisant l’astuce LogSumExp pour éviter les problèmes de underflow/overflow.

Pourquoi Softmax est-il utile ?

Imaginez construire un réseau neuronal pour répondre à la question : Cette photo est-elle celle d’un chien ou d’un chat ?

Une conception commune pour ce réseau neuronal lui ferait sortir 2 nombres réels, l’un représentant le chien et l’autre le chat, et appliquerait Softmax sur ces valeurs. Par exemple, disons que le réseau sort :

Animal xxx exe^xex Probabilité
Chien -1 0.368 0,047
Chat 2 7,39 0,953

Ce qui signifie que notre réseau est confiant à 95,3% que la photo est celle d’un chat. Softmax nous permet de répondre à des questions de classification avec des probabilités, qui sont plus utiles que des réponses plus simples (par exemple, binaire oui/non).

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.