Perché usare softmax in contrapposizione alla normalizzazione standard?


160

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

inserisci qui la descrizione dell'immagine

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


8
La funzione non è costosa da calcolare a causa degli esponenti, ma perché è necessario calcolare ogni qj. L'esponenziazione è economica rispetto alla quantità totale di calcolo necessaria.
Seppo Enarvi,

Di che tipo di trasformata Z stai parlando? Il significato di elaborazione del segnale del termine non si adatta qui, e la sostituzione dei valori con il loro punteggio z produce un output negativo se l'input è inferiore alla media.
David Cian,

Vedi anche: Stats.SE
Martin Thoma

Risposte:


166

C'è un bel attributo di Softmax rispetto alla normalizzazione standard.

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

Mentre la normalizzazione standard non importa se la proporzione è la stessa.

Dai un'occhiata a cosa succede quando soft max ha un input 10 volte maggiore, ovvero la tua rete neurale ha un'immagine nitida e molti neuroni si attivano

>>> 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 !?

16
Questa risposta illustra meglio l' impatto dell'uso dell'espiazione piuttosto che concentrarsi sulle basi teoriche. (che è grandioso). Dovrebbe essere incluso all'inizio della risposta principale. Dopo aver visto come e in che misura l'espiazione diffonde i valori, la risposta migliore aiuta a spiegare perché lo desideri.
Ian Danforth,

@IanDanforth sono d'accordo con te. dovrebbe essere all'inizio.
Hitesh,

11
Non sono sicuro del perché questa risposta sia la più votata. Perché [1,2] corrisponde a un'immagine sfocata mentre [10,20] corrisponde a un'immagine più nitida? Questa è semplicemente una questione di ridimensionamento ed entrambi i casi sono essenzialmente gli stessi. Semmai, questo dovrebbe supportare la normalizzazione standard, che considera correttamente i due casi equivalenti.
user118967

Quando i valori sono già garantiti in [0, 1], c'è ancora qualche vantaggio nel prendere softmax invece di dividere semplicemente per la somma?
Martin Thoma,

59

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

Supponiamo che il nostro ultimo livello nascosto ci dia z come attivazione. Quindi il softmax è definito come

Spiegazione molto breve

L'esp nella funzione softmax annulla approssimativamente il log nella perdita di entropia crociata causando una perdita approssimativamente lineare in z_i. Ciò porta a un gradiente approssimativamente costante, quando il modello è sbagliato, consentendogli di correggersi rapidamente. Pertanto, un softmax saturo errato non provoca un gradiente evanescente.

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 (di dimensione m). Poiché la probabilità dell'intero set di dati di training è un prodotto della probabilità di ciascun campione, è più facile massimizzare la probabilità di log del set di dati e quindi la somma della probabilità di log di ciascun campione indicizzato da k:

Ora, ci concentriamo solo sul softmax qui con z già indicato, quindi possiamo sostituirlo

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

, che per grandi differenze in z si avvicina approssimativamente a

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

  1. Se il modello è corretto, max (z) sarà z_i. Pertanto, la probabilità logaritmica asintota zero (cioè una probabilità di 1) con una differenza crescente 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). Ciò indica chiaramente al modello cosa fare per aumentare la probabilità di log: aumentare z_i e diminuire z_j.

Vediamo che la probabilità di log complessiva sarà dominata da campioni, in cui il modello non è corretto. Inoltre, anche se il modello è davvero errato, il 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 al quadrato medio, ad esempio.

Spiegazione lunga

Se il softmax ti sembra ancora una scelta arbitraria, puoi dare un'occhiata alla giustificazione per l'uso del sigmoid nella regressione logistica:

Perché la funzione sigmoid invece di qualsiasi altra cosa?

Il softmax è la generalizzazione del sigmoide per problemi multi-classe giustificata in modo analogo.


Ciao, puoi per favore spiegare questa affermazione e come hai potuto approssimare? ", che per grandi differenze in z si avvicina approssimativamente a"
London guy

45

Ho trovato la spiegazione qui molto buona: CS231n: reti neurali convoluzionali per il riconoscimento visivo.

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

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

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

  2. Vista probabilistica - da questa prospettiva stiamo infatti esaminando le probabilità di registro, quindi quando eseguiamo l'esponenziazione finiamo con le probabilità grezze. In questo caso l'equazione del softmax trova l'MLE (stima della massima verosimiglianza)

In sintesi, anche se l'equazione del softmax sembra che potrebbe essere arbitraria, NON lo è. In realtà è un modo piuttosto di principio di normalizzare le classificazioni per minimizzare l'entropia crociata / probabilità negativa tra predizioni e verità.


2
Per aggiungere ai commenti precedenti, la derivata della funzione softmax è solo softmax (1-softmax)
Rouzbeh

11
Ottengo i motivi per usare la perdita di entropia incrociata, ma come si collega al softmax? Hai detto "la funzione di softmax può essere vista come un tentativo di minimizzare l'entropia incrociata tra predizioni e verità". Supponiamo che userei la normalizzazione standard / lineare, ma continuerò a usare la perdita di entropia incrociata. Quindi proverei anche a minimizzare l'entropia incrociata. Quindi, in che modo il softmax è collegato all'entropia crociata tranne che per i benefici numerici?
Kilian Batzner,

18
Per quanto riguarda la visione probabilistica: qual è la motivazione per guardare le probabilità del registro? Il ragionamento sembra essere un po 'come "Usiamo e ^ x nel softmax, perché interpretiamo x come log-probabilties". Con lo stesso ragionamento che potremmo dire, usiamo e ^ e ^ e ^ x nel softmax, perché interpretiamo x come probabilità log-log-log-log (esagerando qui, ovviamente). Ottengo i vantaggi numerici di softmax, ma qual è la motivazione teorica per usarlo?
Kilian Batzner,

5
@KilianBatzner Se l'output di un neurone è una probabilità logaritmica, la somma degli output di molti neuroni è una moltiplicazione delle loro probabilità. Questo è più comunemente utile di una somma di probabilità.
alltom,

1
@KilianBatzner Se le tue funzionalità provengono da diversi cluster gaussiani (su cluster per classe), puoi derivare un classificatore perfetto (regressione logistica). Vi sono alcune condizioni aggiuntive, ma essenzialmente è possibile giustificare / derivare softmax e logit presupponendo che si desideri separare i cluster gaussiani.
maxy,

16

I valori di q_i rappresentano le probabilità logaritmiche. Per recuperare i valori di probabilità, è necessario esponenziarli.

Una delle ragioni per cui gli algoritmi statistici usano spesso funzioni di perdita della probabilità di log è che sono più stabili dal punto di vista numerico: un prodotto di probabilità può essere rappresentato come un numero in virgola mobile molto piccolo. Utilizzando una funzione di perdita di probabilità logaritmica, un prodotto di probabilità diventa una somma.

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

Come sidenote, penso che questa domanda sia più appropriata per la teoria del CS o gli scambi di stack di scienza computazionale.


12
q_i non rappresentano implicitamente le probabilità di log. è solo quando usiamo il softmax che assumiamo esplicitamente che lo facciano.
Tom,

6

Stiamo esaminando un problema di classificazione multiclasse. Cioè, la variabile prevista ypuò assumere una delle kcategorie, dove k > 2. Nella teoria della probabilità, questo è di solito modellato da una distribuzione multinomiale. La distribuzione multinomiale è un membro di distribuzioni familiari esponenziali. Possiamo ricostruire la probabilitàP(k=?|x) usando le proprietà delle distribuzioni familiari esponenziali, coincide con la formula del softmax.

Se ritieni che il problema possa essere modellato da un'altra distribuzione, diversa dal multinomiale, potresti giungere a una conclusione diversa dalla softmax.

Per ulteriori informazioni e una derivazione formale, consultare le note della lezione CS229 (9.3 Regressione Softmax) .

Inoltre, un trucco utile di solito per softmax è: softmax (x) = softmax (x + c) , softmax è invariante a offset costanti nell'input.

inserisci la descrizione dell'immagine herse


Come funziona come una funzione di attivazione, poiché restituisce lo stesso valore per 'x' e 'x + c'?
Suresh Pokharel

1
A rigor di termini, softmaxnon è una funzione di attivazione. La funzione di attivazione è un'operazione basata sull'elemento - che fornisce a un elemento tensore che esegue saggiamente un'operazione non lineare per produrre un altro tensore. Ma softmaxè un'operazione vettoriale, ti produce un vettore normalizzato, ci sono dipendenze interne tra ogni elemento.
GabrielChu

5

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 somma sarà 0, possiamo usare softmax per evitare la divisione per zero.


3
Normalmente si sottrarre il minimo quindi dividere per il massimo / somma. Nel tuo caso ciò renderebbe [0, 1, 3, 4]quindi la divisione.
ubershmekel,

1
@ubershmekel Questo si traduce nel problema che alla classe con il punteggio più piccolo verrà sempre assegnata una probabilità di 0.
Alessandro Power,

4

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

dove cè una costante positiva. Si noti che c=1corrisponde alla funzione standard softmax. Ma se usiamo un valore diverso di cotteniamo una funzione diversa, che è comunque qualitativamente piuttosto simile alla softmax. In particolare, mostra che le attivazioni di output formano una distribuzione di probabilità, proprio come per il solito softmax. Supponiamo che permettiamo cdi diventare grandi, cioè c→∞. Qual è il valore limite per le attivazioni dell'uscita a^L_j? Dopo aver risolto questo problema, ti dovrebbe essere chiaro il motivo per cui pensiamo alla c=1funzione come una versione "attenuata" della funzione massima. Questa è l'origine del termine "softmax". Puoi seguire i dettagli da questa fonte (equazione 83).


Per me, l'idea della versione "ammorbidita" della funzione massima è il modo migliore per giustificare l'uso di softmax.
tashuhka,

3

Aggiungendo alla risposta di Piotr Czapla, maggiori sono i valori di input, maggiore è la probabilità di input massimo, per la stessa proporzione e rispetto agli altri input:

inserisci qui la descrizione dell'immagine


2

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 avrebbe prestazioni migliori rispetto ad altre alternative di perdita.

Da " Un'esplorazione delle alternative di Softmax appartenenti alla famiglia delle perdite sferiche " https://arxiv.org/abs/1511.05042

Gli autori hanno esplorato alcune altre funzioni tra cui l'espansione di Taylor expe il cosiddetto softmax sferico e hanno scoperto che a volte potevano eseguire meglio del solito softmax.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.