# Funzione softmax

In matematica, una funzione softmax, o funzione esponenziale normalizzata, è una generalizzazione di una funzione logistica che mappa un vettore $K$-dimensionale $\mathbf {z}$ di valori reali arbitrari in un vettore $K$-dimensionale $\sigma (\mathbf {z} )$ di valori compresi in un intervallo $(0,1)$ la cui somma è $1$. La funzione è data da:
    $\sigma :\mathbb {R} ^{K}\to \left\{z\in \mathbb {R} ^{K}{\Big |}z_{i}>0,\ \sum _{i=1}^{K}z_{i}=1\right\}$
    $\sigma (\mathbf {z} )_{j}={\frac {e^{z_{j}}}{\sum _{k=1}^{K}e^{z_{k}}}}$ per $j=1,\ldots ,K.$
La funzione softmax è anche il gradiente della funzione LogSumExp. La funzione softmax è usata in vari metodi di classificazione multi-classe, come la regressione logistica multinomiale, analisi discriminante lineare multiclasse, classificatori bayesiani e reti neurali artificiali.

## Esempio

Si consideri un vettore in input $(1;2;3;4;1;2;3)$.
La funzione softmax produce il vettore $(0,024;\ 0,064;\ 0,175;\ 0,475;\ 0,024;\ 0,064;\ 0,175)$.
In tale risultato è possibile notare che:
* il valore massimo viene assegnato alla quarta posizione;
* tale valore è circa 20 volte maggiore di quello associato alla prima posizione.
Questa funzione mette in evidenza i valori più grandi e nasconde quelli significativamente più piccoli rispetto al valore massimo.

## Reti neurali artificiali

La funzione softmax è spesso usata nello strato finale dei classificatori basati su reti neurali. Tali reti sono solitamente allenate in un regime di entropia incrociata, ottenendo una variante non lineare di regressione logistica multinomiale.
Dato che la funzione mappa un vettore e una specifica posizione $i$ ad un valore reale, per derivare bisogna tener conto della posizione:
    ${\frac {\partial }{\partial q_{k}}}\sigma ({\textbf {q}},i)=\dots =\sigma ({\textbf {q}},i)(\delta _{ik}-\sigma ({\textbf {q}},k)).$

## Apprendimento per rinforzo

Nel campo dell'apprendimento per rinforzo, una funzione softmax può essere usata per convertire valori in probabilità. Una delle funzioni solitamente usate è:
    $P_{t}(a)={\frac {\exp(Q_{t}(a)/\tau )}{\sum _{i=1}^{n}\exp(Q_{t}(i)/\tau )}}$
dove $Q_{t}(a)$ è la funzione Q e $\tau$ è un parametro chiamato "temperatura". L'uso di questa funzione è generalmente indicato in alternativa alla strategia $\varepsilon$-greedy,

## Normalizzazione softmax

Una normalizzazione sigmoidale (o normalizzazione softmax) serve a ridurre l'influenza di valori estremi o di outlier nei dati senza rimuoverli dal dataset. I dati sono trasformati in maniera non lineare usando una funzione sigmoidea.
La funzione sigmoidea logistica:
    $x_{i}'\equiv {\frac {1}{1+e^{-{\frac {x_{i}-\mu _{i}}{\sigma _{i}}}}}}.$
La funzione tangente iperbolica:
    $x_{i}'\equiv {\frac {1-e^{-{\frac {x_{i}-\mu _{i}}{\sigma _{i}}}}}{1+e^{-{\frac {x_{i}-\mu _{i}}{\sigma _{i}}}}}}.$
La funzione sigmoidea limita fra $0$ e $1$ l'intervallo dei valori normalizzati. La funzione è approssimativamente lineare vicino alla media ed ha una non-linearità liscia presso entrambi gli estremi.
La tangente iperbolica limita fra $-1$ e $1$ l'intervallo dei valori normalizzati. La funzione è approssimativamente lineare vicino alla media, ma è pendente la metà rispetto alla funzione sigmoidea. Come la sigmoidea, è non lineare, liscia e monotona in entrambi gli estremi.