Funzione Softmax - Softmax function

La funzione softmax, nota anche come softargmax o funzione esponenziale normalizzata , è una generalizzazione della funzione logistica a più dimensioni. Viene utilizzato nella regressione logistica multinomiale ed è spesso utilizzato come ultima funzione di attivazione di una rete neurale per normalizzare l'output di una rete a una distribuzione di probabilità su classi di output previste, in base all'assioma della scelta di Luce .

La funzione softmax prende come input un vettore z di K numeri reali e lo normalizza in una distribuzione di probabilità costituita da K probabilità proporzionali agli esponenziali dei numeri di input. Cioè, prima di applicare softmax, alcuni componenti del vettore potrebbero essere negativi o maggiori di uno; e potrebbe non sommarsi a 1; ma dopo aver applicato softmax, ogni componente sarà nell'intervallo e i componenti si sommano a 1, in modo che possano essere interpretati come probabilità. Inoltre, i componenti di input più grandi corrisponderanno a probabilità maggiori.

La funzione softmax standard (unità) è definita dalla formula

In parole povere, applica la funzione esponenziale standard a ciascun elemento del vettore di input e normalizza questi valori dividendo per la somma di tutti questi esponenziali; questa normalizzazione assicura che la somma delle componenti del vettore di uscita sia 1.

Invece di e , può essere usata una base diversa b > 0 . Se 0 < b < 1 , componenti di input più piccoli risulteranno in maggiori probabilità di output e la diminuzione del valore di b creerà distribuzioni di probabilità più concentrate attorno alle posizioni dei valori di input più piccoli. Viceversa, se b > 1 , componenti di input più grandi risulteranno in maggiori probabilità di output e l'aumento del valore di b creerà distribuzioni di probabilità più concentrate attorno alle posizioni dei valori di input più grandi. Scrivendo o (per davvero β ) si ottengono le espressioni:

In alcuni settori, la base viene fissata, corrispondente ad una scala fissa, mentre in altri parametro β è variata.

Interpretazioni

Argomento liscio max

Il nome "softmax" è fuorviante; la funzione non è un massimo uniforme ( un'approssimazione uniforme alla funzione massimo ), ma è piuttosto un'approssimazione uniforme alla funzione arg max : la funzione il cui valore è quale indice ha il massimo. In effetti, il termine "softmax" viene utilizzato anche per la funzione LogSumExp strettamente correlata , che è un massimo uniforme. Per questo motivo, alcuni preferiscono il termine più accurato "softargmax", ma il termine "softmax" è convenzionale nell'apprendimento automatico. Questa sezione utilizza il termine "softargmax" per enfatizzare questa interpretazione.

Formalmente, invece di considerare l'arg max come una funzione con output categoriale (corrispondente all'indice), si consideri la funzione arg max con rappresentazione one-hot dell'output (assumendo che ci sia un unico arg massimo):

dove la coordinata di output se e solo se è l'arg max di , il significato è l'unico valore massimo di . Ad esempio, in questa codifica poiché il terzo argomento è il massimo.

Questo può essere generalizzato a più valori di arg max (multiplo uguale al massimo) dividendo l'1 tra tutti gli arg max ; formalmente 1/ k dove k è il numero di argomenti assumendo il massimo. Ad esempio, poiché il secondo e il terzo argomento sono entrambi il massimo. Nel caso in cui tutti gli argomenti siano uguali, questo è semplicemente I punti z con più valori di arg max sono punti singolari (o singolarità e formano l'insieme singolare) - questi sono i punti in cui arg max è discontinuo (con una discontinuità di salto ) - mentre i punti con un singolo arg max sono noti come punti non singolari o regolari.

Con l'ultima espressione data nell'introduzione, softargmax è ora un'approssimazione graduale di arg max: come , softargmax converge ad arg max. Esistono varie nozioni di convergenza di una funzione; softargmax converge ad arg max pointwise , il che significa per ogni input fisso z come , Tuttavia, softargmax non converge uniformemente ad arg max, il che significa intuitivamente che punti diversi convergono a velocità diverse e possono convergere arbitrariamente lentamente. Infatti, softargmax è continuo, ma arg max non è continuo all'insieme singolare in cui due coordinate sono uguali, mentre il limite uniforme delle funzioni continue è continuo. Il motivo per cui non riesce a convergere uniformemente è che per gli input in cui due coordinate sono quasi uguali (e una è il massimo), l'arg max è l'indice dell'uno o dell'altro, quindi un piccolo cambiamento nell'input produce un grande cambiamento nell'output. Ad esempio, ma e per tutti gli input: più i punti sono vicini all'insieme singolare , più lentamente convergono. Tuttavia, softargmax converge in modo compatto sull'insieme non singolare.

Viceversa, come , softargmax converge allo stesso modo ad arg min, dove qui l'insieme singolare sono punti con due valori di arg min . Nel linguaggio dell'analisi tropicale , il softmax è una deformazione o "quantizzazione" di arg max e arg min, corrispondente all'utilizzo del log semiring invece del max-plus semiring (rispettivamente min-plus semiring ), e al recupero dell'arg max o arg min prendendo il limite è chiamato "tropicalizzazione" o "dequantizzazione".

È anche il caso che, per ogni β fisso , se un ingresso è molto più grande degli altri rispetto alla temperatura, , l'uscita è approssimativamente l'arg max. Ad esempio, una differenza di 10 è grande rispetto a una temperatura di 1:

Tuttavia, se la differenza è piccola rispetto alla temperatura, il valore non è vicino all'arg max. Ad esempio, una differenza di 10 è piccola rispetto a una temperatura di 100:

Poiché , la temperatura va a zero, , quindi alla fine tutte le differenze diventano grandi (rispetto a una temperatura di restringimento), il che fornisce un'altra interpretazione per il comportamento limite.

Teoria della probabilità

Nella teoria della probabilità , l'output della funzione softargmax può essere utilizzato per rappresentare una distribuzione categoriale , ovvero una distribuzione di probabilità su K diversi possibili risultati.

Meccanica statistica

In meccanica statistica , la funzione softargmax è nota come distribuzione di Boltzmann (o distribuzione di Gibbs ): gli indici impostati sono i microstati del sistema; gli input sono le energie di quello stato; il denominatore è noto come funzione di partizione , spesso indicato con Z ; e il fattore β si chiama freddo (o beta termodinamica , o temperatura inversa ).

Applicazioni

La funzione softmax viene utilizzata in vari metodi di classificazione multiclasse , come la regressione logistica multinomiale (nota anche come regressione softmax) [1] , analisi discriminante lineare multiclasse , classificatori Bayes ingenui e reti neurali artificiali . Nello specifico, nella regressione logistica multinomiale e nell'analisi discriminante lineare, l'input alla funzione è il risultato di K distinte funzioni lineari e la probabilità prevista per la j'esima classe dato un vettore campione x e un vettore di ponderazione w è:

Questo può essere visto come la composizione di K funzioni lineari e la funzione softmax (dove denota il prodotto interno di e ). L'operazione equivale ad applicare un operatore lineare definito da ai vettori , trasformando così l'input originale, probabilmente altamente dimensionale, in vettori in uno spazio K -dimensionale .

Reti neurali

La funzione softmax viene spesso utilizzata nel livello finale di un classificatore basato su rete neurale. Tali reti sono comunemente addestrate in un regime di perdita logaritmica (o entropia incrociata ), fornendo una variante non lineare della regressione logistica multinomiale.

Poiché la funzione mappa un vettore e un indice specifico su un valore reale, la derivata deve tenere conto dell'indice:

Questa espressione è simmetrica negli indici e quindi può essere espressa anche come

Qui, il delta di Kronecker è usato per semplicità (cfr. la derivata di una funzione sigmoide , essendo espressa tramite la funzione stessa).

Se la funzione viene scalata con il parametro , queste espressioni devono essere moltiplicate per .

Vedere logit multinomiale per un modello di probabilità che utilizza la funzione di attivazione softmax.

Insegnamento rafforzativo

Nel campo dell'apprendimento per rinforzo , una funzione softmax può essere utilizzata per convertire i valori in probabilità di azione. La funzione comunemente usata è:

dove il valore dell'azione corrisponde alla ricompensa attesa dell'azione successiva a ed è chiamato parametro di temperatura (allusione alla meccanica statistica ). Per le alte temperature ( ), tutte le azioni hanno quasi la stessa probabilità e più bassa è la temperatura, più ricompense attese influiscono sulla probabilità. Per una temperatura bassa ( ), la probabilità dell'azione con la ricompensa attesa più alta tende a 1.

Proprietà

Geometricamente la funzione softmax mappa lo spazio vettoriale al confine dello standard -simplex , tagliando la dimensione di uno (l'intervallo è un simplesso -dimensionale nello spazio -dimensionale), a causa del vincolo lineare che tutto l'output somma a 1, il che significa che si trova su un iperpiano .

Lungo la diagonale principale il softmax è solo la distribuzione uniforme sugli output, : punteggi uguali producono probabilità uguali.

Più in generale, softmax è invariante rispetto alla traslazione dello stesso valore in ogni coordinata: sommando agli input si ottiene , perché moltiplica ogni esponente per lo stesso fattore, (perché ), quindi i rapporti non cambiano:

Geometricamente, softmax è costante lungo le diagonali: questa è la dimensione che viene eliminata e corrisponde al fatto che l'output del softmax è indipendente da una traduzione nei punteggi di input (a scelta 0 punteggio). Si possono normalizzare i punteggi di input assumendo che la somma sia zero (sottrarre la media: dove ), e quindi il softmax prende l'iperpiano dei punti che sommano a zero, , al simplesso aperto di valori positivi che sommano a 1 , analogamente a come l'esponente prende 0 a 1 ed è positivo.

Al contrario, softmax non è invariante rispetto al ridimensionamento. Per esempio, ma

La funzione logistica standard è il caso speciale per un asse unidimensionale nello spazio bidimensionale, diciamo l' asse x nel piano (x, y) . Una variabile è fissata a 0 (diciamo ), quindi , e l'altra variabile può variare, denotarla , quindi la funzione logistica standard e il suo complemento (nel senso che si sommano a 1). L'input unidimensionale potrebbe in alternativa essere espresso come la linea , con output e

La funzione softmax è anche il gradiente della funzione LogSumExp , un massimo uniforme :

dove la funzione LogSumExp è definita come .

Storia

La funzione softmax è stata utilizzata nella meccanica statistica come distribuzione di Boltzmann nel documento fondamentale Boltzmann (1868) , formalizzato e reso popolare nell'influente libro di testo Gibbs (1902) .

L'uso del softmax nella teoria delle decisioni è attribuito a Luce (1959) , che utilizzò l'assioma di indipendenza delle alternative irrilevanti nella teoria della scelta razionale per dedurre il softmax nell'assioma della scelta di Luce per le preferenze relative.

Nell'apprendimento automatico, il termine "softmax" è accreditato a John S. Bridle in due documenti della conferenza del 1989, Bridle (1990a) : e Bridle (1990b) :

Ci occupiamo di reti feed-forward non lineari (perceptron multistrato o MLP) con uscite multiple. Vogliamo trattare gli output della rete come probabilità di alternative ( es. classi di pattern), condizionate dagli input. Si cercano non linearità di output appropriate e criteri appropriati per l'adattamento dei parametri della rete ( es. pesi). Spieghiamo due modifiche: punteggio di probabilità, che è un'alternativa alla minimizzazione dell'errore al quadrato, e una generalizzazione esponenziale normalizzata ( softmax ) multi-input della non linearità logistica.

Per ogni input, le uscite devono essere tutte positive e devono sommarsi all'unità. ...

Dato un insieme di valori non vincolati, , possiamo garantire entrambe le condizioni utilizzando una trasformazione esponenziale normalizzata:

Questa trasformazione può essere considerata una generalizzazione multi-input della logistica, operante sull'intero livello di output. Conserva l'ordine di rango dei suoi valori di input ed è una generalizzazione differenziabile dell'operazione "winner-take-all" di prelievo del valore massimo. Per questo motivo ci piace chiamarlo softmax .

Esempio

Se prendiamo un input di [1, 2, 3, 4, 1, 2, 3], il softmax di questo è [0.024, 0.064, 0.175, 0.475, 0.024, 0.064, 0.175]. L'output ha la maggior parte del suo peso dove il '4' era nell'input originale. La funzione viene normalmente utilizzata per questo: evidenziare i valori maggiori e sopprimere i valori significativamente inferiori al valore massimo. Ma nota: il softmax non è invariante di scala, quindi se l'input fosse [0.1, 0.2, 0.3, 0.4, 0.1, 0.2, 0.3] (che somma a 1.6) il softmax sarebbe [0.125, 0.138, 0.153, 0.169, 0.125, 0,138, 0,153]. Questo mostra che per valori compresi tra 0 e 1 softmax, infatti, de-enfatizza il valore massimo (si noti che 0,169 non solo è inferiore a 0,475, ma è anche inferiore alla proporzione iniziale di 0,4/1,6=0,25).

Calcolo di questo esempio utilizzando il codice Python :

>>> import numpy as np
>>> a = [1.0, 2.0, 3.0, 4.0, 1.0, 2.0, 3.0]
>>> np.exp(a) / np.sum(np.exp(a)) 
array([0.02364054, 0.06426166, 0.1746813, 0.474833, 0.02364054,
       0.06426166, 0.1746813])

Ecco un esempio di codice Julia :

julia> A = [1.0, 2.0, 3.0, 4.0, 1.0, 2.0, 3.0];  # semicolon to suppress interactive output

julia> exp.(A) ./ sum(exp.(A))
7-element Array{Float64,1}:
 0.0236405
 0.0642617
 0.174681
 0.474833
 0.0236405
 0.0642617
 0.174681

Ecco un esempio di codice R :

> z <- c(1.0, 2.0, 3.0, 4.0, 1.0, 2.0, 3.0)
> softmax <- exp(z)/sum(exp(z))
> softmax
[1] 0.02364054 0.06426166 0.17468130 0.47483300 0.02364054 0.06426166 0.17468130

Ecco un esempio di codice Elixir :

iex> t = Nx.tensor([[1, 2], [3, 4]])
iex> Nx.divide(Nx.exp(t), Nx.sum(Nx.exp(t)))

#Nx.Tensor<
  f64[2][2]
  [
    [0.03205860328008499, 0.08714431874203257],
    [0.23688281808991013, 0.6439142598879722]
  ]
>

Guarda anche

Appunti

Riferimenti