Softmax-funksjonen

I matematikk er **softmax-funksjonen**, eller **den normaliserte eksponentielle funksjonen**, en generalisering av den logistiske funksjonen, som «skviser sammen» en *K*-dimensjonal vektor \mathbf{z} av vilkårlige reelle verdier til en *K*-dimensjonal vektor \sigma(\mathbf{z}) av reelle verdier i intervallet (0, 1) med sum 1. Funksjonen er gitt ved

:\sigma(\mathbf{z})_j = \frac{e^{z_j}}{\sum_{k=1}^K e^{z_k}} &nbsp;&nbsp; for *j* = 1, …, *K*.

I sannsynlighetsteori blir output av softmax-funksjonen brukt til å representere en kategorisk fordeling – altså en sannsynlighetsfordeling over *K* ulike mulige utfall. Faktisk er det en gradient-log-normalisator av den kategoriske sannsynlighetsfordelingen.

Softmax-funksjonen blir brukt i ulike flerklassesklassifiseringsmetoder, som for eksempel multinomial logistisk regresjon, flerklasses lineær diskriminantanalyse, naiv Bayes-klassifikatorer, og kunstige nevrale nettverk. I multinomial logistisk regresjon og lineær diskriminantanalyse er input til funksjonen resultatet av *K* forskjellige lineære funksjoner; da er den predikerte sannsynligheten for den *j*-te klassen gitt en vektor **x** for utvalget og en vektor **w** for vektingen lik:

:P(y=j|\mathbf{x}) = \frac{e^{\mathbf{x}^\mathsf{T}\mathbf{w}_j}}{\sum_{k=1}^K e^{\mathbf{x}^\mathsf{T}\mathbf{w}_k}}

Dette kan sees på som sammensetningen (komposisjonen) av K lineære funksjoner \mathbf{x} \mapsto \mathbf{x}^\mathsf{T}\mathbf{w}_1, \ldots, \mathbf{x} \mapsto \mathbf{x}^\mathsf{T}\mathbf{w}_K og softmax-funksjonen (der \mathbf{x}^\mathsf{T}\mathbf{w} betegner det indre produktet av \mathbf{x} og \mathbf{w}).

## Eksempel
Hvis vi lar input være [1,2,3,4,1,2,3], vil softmax av det være [0.024, 0.064, 0.175, 0.475, 0.024, 0.064, 0.175]. Output har det meste av vekten der tallet *4* var i det opprinnelige input. Det er dette funksjonen normalt blir brukt til: å vektlegge den største verdien, og dempe verdier som er betydelig lavere enn maksimumsverdien.

## Kunstige nevrale nettverk
Softmax-funksjonen blir ofte brukt i det siste laget av nevrale nettverk brukt i klassifiseringsproblemer. Slike nettverk er vanligvis trent med kryssentropi/logistisk tap, noe som gir en ikke-lineær variant av multinomial logistisk regresjon.

Siden softmax-funksjonen tilordner en vektor og en bestemt indeks *j* til en reell verdi, må derivasjonen ta høyde for indeksen:

: \frac{\partial}{\partial q_k}\sigma(\textbf{q}, i) = \dots =  \sigma(\textbf{q}, i)(\delta_{ik} - \sigma(\textbf{q}, k))

Her brukes Kronecker-deltaet for enkelthets skyld (jamfør den deriverte av en sigmoid-funksjon, som blir uttrykt via funksjonen selv).

Multinomial logit er en sannsynlighetsmodell som bruker softmax-aktiveringsfunksjonen.

## Forsterkende læring
I feltet forsterkende læring brukes softmax funksjonen til å konvertere verdier til handlingssannsynligheter. Funksjonen som ofte brukes er:
:
P_t(a) = \frac{\exp(q_t(a)/\tau)}{\sum_{i=1}^n\exp(q_t(i)/\tau)} \text{,}

der handlingsverdien q_t(a) tilsvarer forventet belønning av en påfølgende handling a, og \tau kalles en temperaturparameter (jamfør statistisk mekanikk). For høye temperaturer (\tau\to \infty) har alle handlinger nesten samme sannsynlighet. Desto lavere temperaturen er, desto mer forventes belønninger å påvirke sannsynligheten. For en svært lav temperatur (\tau\to 0^+) vil sannsynligheten for en handling med høyest forventet belønning tendere mot 1.

## Softmax-normalisering
Sigmoidal- eller softmax-normalisering lar deg redusere påvirkningen av ekstreme verdier eller utliggere i data uten å fjerne dem fra datasettet. Det er nyttig når vi ønsker å ta med utliggere i datasettet mens vi fortsatt bevarer betydningen av data innenfor et standardavvik fra gjennomsnittet. Data blir ikke-lineært transformert ved hjelp av en av de følgende sigmoidal-funksjonene. 

Den logistiske sigmoid-funksjonen:
: x_i' \equiv \frac{1}{1+e^{-\frac{x_i - \mu_i}{\sigma_i}}} 

Den hyperbolske tangens-funksjonen, *tanh*:
: x_i' \equiv \frac{1-e^{-\frac{x_i - \mu_i}{\sigma_i}}}{1+e^{-\frac{x_i - \mu_i}{\sigma_i}}} 

Sigmoid-funksjonen begrenser rekkevidden av normalisert data til verdier mellom 0 og 1. Sigmoid-funksjonen er nesten lineær nær gjennomsnittet og har glatt ikke-linearitet på begge ytterpunktene, og sikrer at alle datapunkt er innenfor et begrenset område. Dette opprettholder oppløsningen for de fleste verdier innenfor et standardavvik over gjennomsnittet.

Den hyperbolske tangens-funksjonen, *[[Hyperbolske funksjoner|tanh]]*, begrenser rekkevidden av normalisert data til verdier mellom -1 og 1. Den hyperbolske tangens-funksjonen er nesten lineær nær gjennomsnittet, men har en stigning på halvparten av sigmoid-funksjonen. Som sigmoid-funksjonen har den glatt, monoton ikke-linearitet i begge ytterpunktene. Og, som sigmoid-funksjonen, er den fortsatt deriverbar overalt og tegnet (+/-) på den deriverte (stigningen) er upåvirket av normalisering. Dette sikrer at algoritmer for optimalisering og numerisk integrasjon kan stole på derivat for å estimere endringer i output (normalisert verdi) produsert av endringer i input i regionen i nærheten av ethvert lineæriseringspunkt.

## Forhold til Boltzmann-distribusjonen
Softmax-funksjonen er i tillegg sannsynligheten for at et atom blir funnet i en kvantetilstand med energi \epsilon_i når atomet er en del av et ensemble som har nådd termisk likevekt med temperatur T. Dette er kjent som Boltzmann-distribusjonen. Det forventede relative belegget til hver tilstand er e^{-\frac{\epsilon_i}{k_BT}} og dette er normalisert slik at summen over energinivåene blir til 1. I denne analogien er input til softmax-funksjonen den negative energien til hver kvantetilstand delt på k_BT.

## Referanser