Softmax demistificante

Apr 15 2023
Come derivare la funzione softmax dai requisiti di progettazione dell'attività di classificazione?
Un approccio comune alla classificazione multiclasse consiste nell'utilizzare un classificatore binario separato per ogni classe. Ogni classificatore è responsabile del riconoscimento della propria classe associata.
Foto di Ramakant Sharda su Unsplash

Un approccio comune alla classificazione multiclasse consiste nell'utilizzare un classificatore binario separato per ogni classe.

Ogni classificatore è responsabile del riconoscimento della propria classe associata.

In primo luogo, si considerino le scelte progettuali alla base della costruzione di un singolo classificatore binario. Nel seguito, estenderemo il progetto a una raccolta di classificatori binari.

Come punto di partenza, prendi un'equazione lineare che prende un vettore di caratteristiche x e restituisce un output y che è una somma pesata delle caratteristiche di input e dei suoi parametri. L'output y è un numero reale che dovrebbe essere associato a una decisione: l'input x rappresenta un oggetto appartenente a una classe che dovrei rilevare ? La scelta più semplice è restituire il messaggio ' la mia classe' quando y assume un valore positivo e mantenere il classificatore inattivo quando y è negativo.

Classificatore binario: versione beta

Ma poi ci mancherebbero le informazioni sull'incertezza/fiducia dell'output del classificatore. Potremmo anche restituire il valore grezzo dell'output del classificatore y come misura della confidenza del classificatore nel risultato . Tuttavia, l'intervallo da -∞ a +∞ sarebbe scomodo per l'interpretazione, il confronto e la post-elaborazione.

Requisito di progettazione №1: output come probabilità

Invece, è meglio restituire un valore in un intervallo strettamente limitato che potrebbe essere interpretato come la probabilità p che l'input x rappresenti l'oggetto appartenente a ' my class '.

Pertanto, la domanda è come proiettare y su un valore p che potrebbe essere liberamente interpretato come una probabilità?

Inizialmente, questo valore dovrebbe appartenere all'intervallo <0,1>. Successivamente, 0,5 dovrebbe essere il punto di svolta della decisione. Infine, i valori superiori a 0,5 dovrebbero essere a favore del rilevamento positivo di una classe.

Da un punto di vista matematico, cerchiamo una funzione continua φ :

tale che 0 atterra a 0.5 , +∞ è proiettato a 1 e -∞ a 0 .

Classificatore binario: design migliorato

In questo caso, il modo più semplice è l'ingegneria inversa: inizia da p e torna a y . Una probabilità di classe p può essere facilmente proiettata da <0,1> a < 0 , +∞) intervallo utilizzando l'odds ratio:

La mappatura successiva dovrebbe lanciare i valori ottenuti a (-∞, +∞) . La scelta ovvia è la funzione logaritmica.

Quindi, le due estremità si incontrano qui. Siamo partiti da < 0 , 1 > interval e siamo arrivati ​​all'intervallo (-∞,+∞) , che si supponeva all'inizio fosse restituito da y :

Per ora, la base B del logaritmo rimane non specificata.

I passaggi successivi sono ripristinare la relazione con il desiderato p = φ ( y ):

Infine, arriviamo alla formula desiderata:

Ora, dobbiamo decidere il valore di B . Osserviamo il grafico che mostra le varianti della funzione φ per diversi valori di B .

Il minimo sembra essere B=2.71 . Sorprendentemente, un valore simile ha il suo simbolo e ed è chiamato base naturale. Quindi, per il logaritmo in base naturale, l'ultima formula assume la seguente forma:

Congratulazioni!

Abbiamo appena riscoperto la celebre funzione sigmoidea .

La domanda per te è : è davvero la scelta migliore? Cosa sarebbe successo se avessimo scelto un altro valore? Avremmo perso l'interpretazione probabilistica?

Considera anche questo : perché non usare una relazione non lineare tra y e x ? Ricordiamo che per derivare φ , abbiamo solo supposto che il valore di y risieda nell'intervallo (-∞,+∞) .

Quando si ha a che fare con molte classi (diciamo M ), assegniamo a ciascuna classe il proprio classificatore binario.

Se i classificatori operano in modo indipendente, può accadere che tutte le probabilità restituite non raggiungano 1 , il che rende errata l'interpretazione probabilistica del loro output. Questa è una sfida da affrontare adesso.

Requisito di progettazione №2: sommatoria a uno

Tutti i classificatori accettano lo stesso x . Il classificatore i -esimo calcola y_i . Vogliamo di nuovo fare una proiezione di y_i in p_i , ma questa volta in sincronia con tutti gli altri classificatori , in modo che

La sincronia tra classificatori riguarda l'accordo reciproco su come proiettare y_i calcolato in modo indipendente in p_i . Per un singolo classificatore, l'odd ratio coinvolgeva le probabilità di due output: ' la mia classe ' con probabilità p contro ' non la mia classe ' con probabilità 1-p . Più alto è il valore di y , più probabile è l'output ' my class '. Ora, invece dell'output ' not my class ' dovremmo essere più specifici e introdurre l'output ' your class '. Pertanto, la versione più generale sarebbe: ' my class ' con probabilità p_kcontro ' la tua classe ' con probabilità p_l . E maggiore è il mio output y_k rispetto al tuo output y_l , più probabile è ' my class ' rispetto a ' your class '.

Requisito progettuale №3: interrelazioni tra probabilità

Ecco la versione aggiornata dell'equazione (1):

Si noti che questo requisito è una versione estesa del requisito di progettazione №1.

Il compito è prendere entrambi i requisiti di progettazione №2 e №3, rappresentati dalle equazioni (2) e (3), e derivare una formula per tale funzione Φ _i che :

Abbiamo già deciso di utilizzare il logaritmo in base naturale e , quindi usiamolo per il resto delle nostre considerazioni:

Per utilizzare le informazioni contenute nell'equazione (2) applichiamo la sommatoria per entrambi i membri:

ed estrarre elementi che non variano con k prima dei segni di sommatoria. Si noti che, secondo l'equazione (2), la somma di tutte le probabilità è uguale a 1 :

Infine, arriviamo alla seguente funzione:

che può essere riscritta per i invece di l come:

Congratulazioni ancora!

In questo modo abbiamo finalmente riscoperto la famosa funzione softmax .

Pensieri finali

Spero che tu apprezzi il fatto che ci siamo fatti strada verso la funzione softmax in modo chiaro. Non abbiamo fatto ricorso a rivelazioni, vaghe analogie dalla scienza fisica o autorità lungo le nostre considerazioni. In questo articolo, la funzione softmax è il risultato di una linea retta di ragionamento che ha avuto origine in requisiti naturali posti per problemi multi-classe .

La mia intenzione è darti una sensazione più forte per le origini della funzione softmax nella risoluzione dei problemi di apprendimento automatico.

Ti consiglio di dare un'occhiata a un altro approccio molto stimolante alla derivazione di una funzione sigmoidea realizzato sul blog di Will Wolf .

Infine, considera tu stesso se tutto ciò potrebbe essere ottenuto in un altro modo: utilizzando classificatori operanti in modo indipendente, normalizzando tutti i p_i in seguito e quindi sostituendo p_i con valori normalizzati.

Riferimenti

[1] Gabriel Furnieres : Funzioni Sigmoid e SoftMax in 5 minuti . https://towardsdatascience.com/sigmoid-and-softmax-functions-in-5-minutes-f516c80ea1f9

[2] Will Wolf : derivare il Softmax dai primi principi .https://willwolf.io/2017/04/19/deriving-the-softmax-from-first-principles/