Perché usare softmax rispetto alla normalizzazione standard?

Nello strato di output di una rete neurale, è tipico utilizzare la funzione softmax per approssimare una distribuzione di probabilità:

inserisci la descrizione dell'immagine qui

Questo è costoso da calcolare a causa degli esponenti. Perché non eseguire semplicemente una trasformazione Z in modo che tutte le uscite siano positive e quindi normalizzare dividendo tutte le uscite per la sum di tutte le uscite?

C’è una bella caratteristica di Softmax rispetto alla normalizzazione standard.

Reagisce alla stimolazione bassa (pensa un’immagine sfocata) della tua rete neurale con una distribuzione piuttosto uniforms e ad alta stimolazione (cioè numeri grandi, pensa un’immagine nitida) con probabilità vicine a 0 e 1.

Mentre la normalizzazione standard non interessa finché la proporzione è la stessa.

Dai un’occhiata a cosa succede quando soft max ha un input 10 volte più grande, ovvero la tua rete neurale ha ottenuto un’immagine nitida e molti neuroni sono stati triggersti

>>> softmax([1,2]) # blurry image of a ferret [0.26894142, 0.73105858]) # it is a cat perhaps !? >>> softmax([10,20]) # crisp image of a cat [0.0000453978687, 0.999954602]) # it is definitely a CAT ! 

E poi confrontalo con la normalizzazione standard

 >>> std_norm([1,2]) # blurry image of a ferret [0.3333333333333333, 0.6666666666666666] # it is a cat perhaps !? >>> std_norm([10,20]) # crisp image of a cat [0.3333333333333333, 0.6666666666666666] # it is a cat perhaps !? 

Ho trovato la spiegazione qui molto valida: CS231n: Reti neurali rivoluzionarie per riconoscimento visivo.

Sulla superficie l’algoritmo di softmax sembra essere una semplice normalizzazione non lineare (stiamo diffondendo i dati con l’esponenziale). Tuttavia, c’è di più.

Nello specifico ci sono un paio di viste differenti ( stesso link come sopra ):

  1. Teoria dell’informazione – dal punto di vista della teoria dell’informazione, la funzione softmax può essere vista come un tentativo di minimizzare la cross-entropia tra le previsioni e la verità.

  2. Vista probabilistica – da questa prospettiva stiamo di fatto esaminando le probabilità di log, quindi quando eseguiamo l’esponenziazione ci ritroviamo con le probabilità non elaborate. In questo caso l’equazione di softmax trova la MLE (stima di massima verosimiglianza)

In sintesi, anche se l’equazione di softmax sembra che possa essere arbitraria, NON lo è. In realtà è un modo piuttosto per normalizzare le classificazioni per minimizzare la probabilità di entropia / negatività tra le previsioni e la verità.

Ho avuto questa domanda per mesi. Sembra che abbiamo appena intelligentemente intuito il softmax come una funzione di output e quindi interpretiamo l’input per il softmax come probabilità di log. Come hai detto, perché non normalizzare semplicemente tutti gli output dividendo per la loro sum? Ho trovato la risposta nel libro Deep Learning di Goodfellow, Bengio e Courville (2016) nella sezione 6.2.2.

Diciamo che il nostro ultimo livello nascosto ci dà z come triggerszione. Quindi il softmax è definito come

Spiegazione molto breve

L’exp nella funzione softmax annulla approssimativamente il log nella perdita di entropia incrociata, causando una perdita approssimativamente lineare in z_i. Questo porta a un gradiente approssimativamente costante, quando il modello è sbagliato, permettendogli di correggersi rapidamente. Pertanto, una softmax saturata errata non causa un gradiente di sfumatura.

Breve spiegazione

Il metodo più popolare per addestrare una rete neurale è la stima della massima verosimiglianza. Stimiamo i parametri theta in modo da massimizzare la probabilità dei dati di allenamento (della dimensione m). Poiché la probabilità dell’insieme di dati di formazione completo è un prodotto delle probabilità di ciascun campione, è più facile massimizzare la probabilità di log del set di dati e quindi la sum della probabilità di log di ogni campione indicizzato da k:

Ora, ci concentriamo solo su softmax qui con z già dato, quindi possiamo sostituire

con io essendo la class corretta del campione kth. Ora, vediamo che quando prendiamo il logaritmo di softmax, per calcolare la verosimiglianza del campione, otteniamo:

, che per grandi differenze in z approssimativamente approssima a

Innanzitutto, vediamo qui il componente lineare z_i. In secondo luogo, possiamo esaminare il comportamento di max (z) per due casi:

  1. Se il modello è corretto, max (z) sarà z_i. Quindi, il log-verosimiglianza asintoti zero (cioè una probabilità di 1) con una crescente differenza tra z_i e le altre voci in z.
  2. Se il modello non è corretto, max (z) sarà un altro z_j> z_i. Quindi, l’aggiunta di z_i non cancella completamente out -z_j e la probabilità di log è approssimativamente (z_i – z_j). Questo indica chiaramente al modello cosa fare per aumentare la probabilità di log: aumentare z_i e diminuire z_j.

Vediamo che la probabilità generale di log sarà dominata dai campioni, dove il modello è errato. Inoltre, anche se il modello è veramente errato, che porta a un softmax saturo, la funzione di perdita non si satura. È approssimativamente lineare in z_j, il che significa che abbiamo un gradiente approssimativamente costante. Ciò consente al modello di correggersi rapidamente. Si noti che questo non è il caso dell’errore medio al quadrato, ad esempio.

Lunga spiegazione

Se la softmax ti sembra ancora una scelta arbitraria, puoi dare un’occhiata alla giustificazione dell’uso del sigmoide nella regressione logistica:

Perché la funzione sigmoid invece di qualsiasi altra cosa?

La softmax è la generalizzazione del sigmoide per problemi multi-class giustificata in modo analogo.

I valori di q_i rappresentano log-likelihoods. Per recuperare i valori di probabilità, è necessario esponenziarli.

Una ragione per cui gli algoritmi statistici usano spesso le funzioni di perdita della probabilità di log è che sono più numericamente stabili: un prodotto delle probabilità può essere rappresentato da un numero in virgola mobile molto piccolo. Usando una funzione di perdita di probabilità di log, un prodotto di probabilità diventa una sum.

Un altro motivo è che le probabilità logaritiche si verificano naturalmente quando si derivano stimatori per variabili casuali che si presume siano tratte da distribuzioni gaussiane multivariate. Si veda ad esempio lo stimatore Maximum Likelihood (ML) e il modo in cui è collegato ai minimi quadrati.

Come sidenote, penso che questa domanda sia più appropriata per la CS CS o per gli scambi di stack di scienze computazionali.

Supponiamo di cambiare la funzione softmax in modo che le triggerszioni di output siano date da inserisci la descrizione dell'immagine qui

dove c è una costante positiva. Notare che c=1 corrisponde alla funzione standard softmax. Ma se usiamo un valore diverso di c otteniamo una funzione diversa, che tuttavia è qualitativamente piuttosto simile alla softmax. In particolare, mostra che le triggerszioni di output formano una distribuzione di probabilità, proprio come per la solita softmax. Supponiamo di consentire a c di diventare grande, cioè c→∞ . Qual è il valore limite per le triggerszioni di uscita a^L_j ? Dopo aver risolto questo problema, dovrebbe essere chiaro perché pensiamo alla funzione c=1 come a una versione “softened” della funzione massima. Questa è l’origine del termine “softmax”. Puoi seguire i dettagli da questa fonte (equazione 83).

Stiamo esaminando un problema di classificazione multipla. La variabile prevista y può assumere uno dei valori k , dove k > 2 . Nella probabilità, questo soddisfa una distribuzione multinomiale e la distribuzione multinomiale appartiene a una grande famiglia chiamata famiglia esponenziale. Secondo la proprietà delle distribuzioni familiari esponenziali, possiamo ribuild la probabilità di P(k=?|x) , essa coincide con la formula di softmax.

Per ulteriori informazioni e un riferimento formale prova CS229 dispense (regressione Softmax) .

Un trucco utile solitamente viene eseguito su softmax: softmax (x) = softmax (x + c) , ovvero, softmax è invariabile agli offset costanti nell’input.

inserisci la descrizione dell'immagine herse

La scelta della funzione softmax sembra in qualche modo arbitraria in quanto vi sono molte altre possibili funzioni di normalizzazione. Non è quindi chiaro il motivo per cui la perdita log-softmax potrebbe funzionare meglio di altre alternative di perdita.

Da ” Un’esplorazione delle alternative Softmax appartenenti alla famiglia delle perdite sferichehttps://arxiv.org/abs/1511.05042

Gli autori hanno esplorato alcune altre funzioni tra cui l’espansione di Taylor di exp e il cosiddetto softmax sferico e hanno scoperto che a volte potevano ottenere risultati migliori del solito softmax .

Penso che uno dei motivi possa essere quello di gestire i numeri negativi e la divisione per zero, poiché exp (x) sarà sempre positivo e maggiore di zero.

Ad esempio per a = [-2, -1, 1, 2] la sum sarà 0, possiamo usare softmax per evitare la divisione per zero.