Esiste anche un altro approccio al problema del learning slowdown, basato sui cosiddetti softmax layer nei neuroni di uscita.
La ratio sottesa dal softmax è di definire un nuovo tipo di layer di uscita per le reti neurali.
Il procedimento iniziale è simile a quello di un layer con neuroni sigmoidali:
si calcola il generico input netto di un neurone di uscita :
In un layer softmax non si applica la funzione sigmoide all’input netto per ottenere l’uscita, bensì la funzione softmax e l’attivazione del -esimo neurone di uscita è definita come:
dove al denominatore si esegue la somma su tutti i neuroni di uscita.
Per una migliore comprensione della suddetta equazione, si consideri una rete con quattro neuroni di output, e i quattro corrispondenti input netti , , , . Nella seguente figura è riportato il plot delle attivazioni di output corrispondenti a diversi valori di input netti.

Si nota che all’aumentare di si osserva un incremento nell’attivazione corrispondente ,
mentre tutte le altre attivazioni di output decrescono.
Analogamente, aumentando uno qualsiasi degli altri , l’attivazione cresce, a scapito delle attivazioni corrispondenti agli altri neuroni.
Qualora si diminuisca anche diminuisce, e tutte le altre attivazioni di output crescono.
In realtà, osservando attentamente, si può notare che in entrambi i casi la variazione totale delle altre attivazioni compensa esattamente la variazione di .
Il motivo è che le attivazioni di output sono garantite a sommarsi sempre a , come si può dimostrare utilizzando la suddetta equazione e un po’ di algebra:
Pertanto, se aumenta, allora le altre attivazioni di output devono diminuire di un ammontare totale equivalente, in modo da garantire che la somma complessiva di tutte le attivazioni rimanga pari a .Naturalmente, considerazioni analoghe valgono anche per qualsiasi altro neurone di uscita.
📌 Tale comportamento riflette perfettamente la monotonicità del softmax:
incrementare un implica una riallocazione della “massa di probabilità” a favore della classe ,
e contemporaneamente una diminuzione della quota associata alle altre classi.
La suddetta equazione implica anche che tutte le attivazioni di output sono positive,
poiché la funzione esponenziale restituisce sempre valori positivi.
Combinando tale osservazione con quanto visto nel paragrafo precedente,
si conclude che l’uscita di un layer softmax è costituita da un insieme di numeri positivi che sommano a .
📌 In altre parole, l’uscita del softmax può essere interpretata come una distribuzione di probabilità.
📚 Interpretazione pratica
Il fatto che un layer softmax produca una distribuzione di probabilità è particolarmente utile:
in molti problemi è conveniente poter interpretare l’attivazione di output come una stima della probabilità che l’output corretto corrisponda alla classe .
Ad esempio, nel problema di classificazione delle cifre MNIST, si può interpretare come la probabilità stimata dalla rete che la cifra corretta sia .
⚡ Confronto con il layer sigmoide
Al contrario, se il layer di uscita fosse un layer sigmoide, non è possibile assumere che le attivazioni formino una distribuzione di probabilità): le attivazioni di un layer sigmoide non costituiscono una distribuzione di probabilità. (INSERIRE RIFERIMENTO AL PARAGRAFO OPPOrtuno dove si mostra cio
Di conseguenza, con un’uscita sigmoide, non è possibile attribuire alle attivazioni una semplice interpretazione probabilistica come avviene invece con il softmax.
📘 Riepilogo: perché il softmax produce una distribuzione di probabilità
- Gli esponenziali presenti nella suddetta equazione garantiscono che tutte le attivazioni di output siano positive.
- La somma al denominatore nella suddetta equazione assicura che le attivazioni finali sommino a 1.
📌 Pertanto, la particolare forma della funzione softmax non è affatto misteriosa:
è un modo naturale per garantire che le attivazioni di output formino una distribuzione di probabilità.👉 Intuitivamente, il softmax può essere visto come un processo che:
- Riscala i valori ,
- “Schiaccia” (squish) questi valori insieme, normalizzandoli, in modo da ottenere una distribuzione probabilistica tra le classi.
How softmax solves the learning slowdown problem: Softamx loss

🔄 Sigmoide + cross-entropy vs Soft-max + log-likelihood
È bene ricordare che un layer di uscita soft-max con loss log-likelihood è, dal punto di vista del comportamento dell’addestramento, molto simile a un layer sigmoide con loss cross-entropy.
Quale scegliere, dunque?
- In molte applicazioni entrambi funzionano bene.
- Soft-max + log-likelihood è preferibile quando si desidera che le attivazioni di uscita siano interpretate come probabilità (caso tipico dei problemi di classificazione con classi disgiunte, e.g. MNIST).
🔑 Principio generale: scegli soft-max + log-likelihood se l’interpretazione probabilistica delle uscite è importante; altrimenti sigmoide + cross-entropy rimane una scelta solida ed efficace.
🔵 Back-prop con soft-max + log-likelihood
Problema
Per un layer di uscita soft-max addestrato con la log-likelihood costdeterminare l’errore nel layer finale
e mostrare che
Soluzione
- Derivata del costo rispetto alle attivazioni
\frac{\partial a_k^L}{\partial z_j^L}=a_k^L(\delta_{kj}-a_j^L).\delta_j^L=\sum_k \frac{\partial C}{\partial a_k^L};\frac{\partial a_k^L}{\partial z_j^L} =-\sum_k \frac{y_k}{a_k^L};a_k^L(\delta_{kj}-a_j^L) =-\Bigl[y_j(1-a_j^L)-a_j^L\sum_k y_k\Bigr].
Poiché $\sum_k y_k = 1$ (one-hot target) otteniamo**Conclusione** Con $\delta_j^L=a_j^L-y_j$ il resto dell’algoritmo di back-propagation rimane identico a quello già derivato per gli hidden layer nel caso della sigmoide: basta sostituire questa nuova espressione dell’errore nel passo iniziale e propagare verso i layer precedenti.\delta_j^L = a_j^L - y_j.
La softmax ha il problema di comprimere le dinamiche cioe avalle dell’applicazione del softmax le uscte dellarete che avevao un’ampia dinamica (-infinto piu infinito) vengono comrpesse in zero,uno e cio implica che alcune classi possano diventari dominanti rispetot alle altre ossi possono esserci delle distorsioni nei rapporti di forza.
Quando si calcolano metriche di prestazioni, spesso si preferisce solo per le prestazione togliere il layer softmax. In addestramento va bene usare il layer softmax ma in fase di inferenza dove la loss non ce piu l’uso dell’uscita grezza della rete o l’uso dell’uscita della rete a vale dell’appplicazione del softmax dipende dall’applicazione. Se sto valutando le prestazioni di un classificatore e sto calcolando ad esempio la curva roc allora se la dinamica del mio classificatore è molto compressa allora la curva roc risultante anziché essere costituita da tanti punti e quindi risultante in una curva smooth risulta, quando uso le uscite della rete a valle del softmax per costruire tale curva, in una curva costituita da pochi punti cioè una spezzata. Dunque una curva roc per valutare le prestazioni usando reti neurali che è costituita da pochi punti è imputabile al aver compresso troppo la dinamica del classificatore per esempio usando le uscite della rete neurale a valle dell’applicazione della softmax.
📉 Dinamica compressa dal soft-max: implicazioni pratiche
Compressione della dinamica
L’operatore soft-max mappa l’intero intervallo dei logits nell’intervallo limitato ; di conseguenza le probabilità risultano “schiacciate” (squished) e alcune classi possono diventare dominanti, alterando i rapporti di forza fra le classi.Addestramento vs. inferenza
- Training➔Il layer soft-max + log-likelihood è appropriato perché fornisce una loss ben definita.
- Inference / valutazione ➔ In inferenza, la scelta di utilizzare i logits grezzi oppure le uscite soft-max dipende dal tipo di analisi:
- Per metriche che richiedono la forma di vera probabilità (ad es. cross-entropy calcolata offline) si mantengono le uscite soft-max.
- Per metriche basate sul ranking dei punteggi (p-value, AUC-ROC, Precision-Recall) conviene spesso usare i logits, che preservano una dinamica più ampia.
Esempio ROC
Se si valutano le prestazioni utilizzando le uscite già normalizzate dal soft-max, la dinamica dei punteggi può risultare eccessivamente compressa (valori molto concentrati nell’intervallo ). In tal caso, la curva ROC tende a ridursi a pochi punti discreti, generando una spezzata poco informativa. Usando invece i logits grezzi — che conservano una gamma di valori più ampia — la distribuzione dei punteggi è più estesa e la curva ROC risulta più densa e più liscia, riflettendo con maggiore fedeltà le reali prestazioni del classificatore.
The softmax function is used in various multiclass classification methods. It takes an un-normalized vector, and normalizes it into a probability distribution. It is often used in neural networks, to map the non-normalized output to a probability distribution over predicted output classes. It is a function which gets applied to a vector in x∈RK and returns a vector in [0,1]K with the property that the sum of all elements is 1, in other words, the softmax function is useful for converting an arbitrary vector of real numbers into a discrete probability distribution:
S(x)j=exj∑Kk=1exk for j=1,…,K
Python Implementation
import numpy as np
def softmax(w):
"""Calculate the softmax of a list of numbers w.
Parameters
----------
w : list of numbers
Return
------
a list of the same length as w of non-negative numbers
"""
e = np.exp(np.array(w))
softmax_result = e / np.sum(e)
return softmax_result
softmax([0.1, 0.2])
#array([0.47502081, 0.52497919])
softmax([-0.1, 0.2])
#array([0.42555748, 0.57444252])
softmax([0.9, -10])
#array([9.99981542e-01, 1.84578933e-05])
softmax([0, 10])
#array([4.53978687e-05, 9.99954602e-01])Note
Sigmoid function is special case of softmax function. It is easy to prove. Whereas the softmax outputs a valid probability distribution over K>2 distinct outputs, the sigmoid does the same for K=2.