Perché ottimizzare la probabilità massima di registro anziché la probabilità


66

Nella maggior parte delle attività di apprendimento automatico in cui è possibile formulare alcune probabilità p che dovrebbero essere massimizzate, si dovrebbe effettivamente ottimizzare il registro probabilità logp invece della probabilità per alcuni parametri θ . Ad esempio, nella formazione di massima verosimiglianza, di solito è la verosimiglianza. Quando lo fai con un metodo gradiente, questo comporta un fattore:

logpθ=1ppθ

Vedi qui o qui per alcuni esempi.

Naturalmente, l'ottimizzazione è equivalente, ma il gradiente sarà diverso, quindi qualsiasi metodo basato sul gradiente si comporterà in modo diverso (specialmente i metodi del gradiente stocastico). C'è qualche giustificazione che il gradiente logp funzioni meglio del gradiente p ?


3
devi notare che di solito massimizziamo la probabilità di utilizzare derivati. D'altra parte, in molti casi viene applicata la condizione di indipendenza, il che significa che la probabilità è il prodotto di alcune funzioni di densità di probabilità iid. Inoltre, il prodotto con molti piccoli valori (nell'intervallo [0,1]) produce un valore molto piccolo. Ciò comporta una difficoltà di calcolo.
TPArrow

@AlejandroRodriguez controlla la mia risposta qui per maggiori dettagli.
Paul,

Risposte:


65

I metodi a gradiente generalmente funzionano meglio ottimizzando il rispetto a p ( x ) perché il gradiente del registro p ( x ) è generalmente più ben ridimensionato . Cioè, ha una dimensione che riflette in modo coerente e utile la geometria della funzione obiettivo, rendendo più semplice selezionare una dimensione del passo appropriata e ottenere l'ottimale in meno passaggi.logp(x)p(x)logp(x)

Per vedere cosa intendo, confrontare il processo di ottimizzazione del gradiente per e f ( x ) = log p ( x ) = - x 2 . In qualsiasi punto x , il gradiente di f ( x ) è f ( x ) = - 2 x . Se moltiplichiamo che entro 1 / 2p(x)=exp(x2)f(x)=logp(x)=x2xf(x)

f(x)=2x.
1/2, otteniamo l'esatta dimensione del passo necessaria per raggiungere l'ottimale globale all'origine, qualunque sia . Ciò significa che non dobbiamo lavorare troppo duramente per ottenere una buona dimensione del passo (o "tasso di apprendimento" nel gergo ML). Indipendentemente da dove sia il nostro punto iniziale, abbiamo appena impostato il nostro passaggio a metà del gradiente e saremo all'origine in un solo passaggio. E se non conosciamo il fattore esatto necessario, possiamo semplicemente scegliere una dimensione del passo intorno a 1, fare un po 'di ricerca di linee e troveremo una grande dimensione del passo molto rapidamente, una che funziona bene non importa dove x è. Questa proprietà è robusta per la traduzione e il ridimensionamento di f ( x ) . Durante il ridimensionamento f ( x )xxf(x)f(x)causerà un ridimensionamento graduale ottimale diverso da 1/2, almeno il ridimensionamento graduale sarà lo stesso, indipendentemente da cosa sia , quindi dobbiamo trovare solo un parametro per ottenere un efficiente schema di ottimizzazione basato sul gradiente.x

Al contrario, il gradiente di ha proprietà globali molto scarse per l'ottimizzazione. Abbiamo p ( x ) = f ( x ) p ( x ) = - 2 x exp ( - x 2 ) . Questo moltiplica il gradiente perfettamente gradevole e ben educato - 2 x con un fattore exp ( - x 2 ) che decade (più velocemente di) esponenzialmente come xp(x)

p(x)=f(x)p(x)=2xexp(x2).
2xexp(x2)xaumenta. A , abbiamo già exp ( - x 2 ) = 1.4 10 - 11 , quindi un passo lungo il vettore gradiente è di circa 10 - 11 volte troppo piccolo. Per ottenere un passo ragionevole verso l'ottimale, dovremmo ridimensionare il gradiente in base al reciproco, un'enorme costante 10 11 . Un gradiente così scalato è peggio che inutile ai fini dell'ottimizzazione: staremmo meglio semplicemente tentando un passo unitario nella direzione in salita piuttosto che impostare il nostro passo scalando contro p ( x )x=5exp(x2)=1.4101110111011p(x)! (In molte variabili diventa un po 'più utile poiché almeno otteniamo informazioni direzionali dal gradiente, ma il problema di ridimensionamento rimane.)p(x)

logp(x)logp(x)p(x)f(x)


4
+1 Questa risposta fa apparire ed enfatizza i punti che arrivano al nocciolo della questione.
whuber

47

underflow

Il computer utilizza una rappresentazione in virgola mobile a cifre limitate delle frazioni, moltiplicando così tante probabilità è garantito per essere molto vicino allo zero.

Con , non abbiamo questo problema.log


3
+1 per la stabilità numerica: questa e la risposta di Yuril dovrebbero essere una!
Alec Teal,

1
È possibile calcolare il prodotto nello spazio log, quindi diventa una somma e quindi trasferirlo nuovamente. Oppure si calcola che è uguale a . Quindi, la stabilità numerica non è la domanda. logpθppθ
Albert,

1
Tieni presente che la hai citato è la moltiplicazione delle probabilità di tutti gli eventi nel campione e è l'elemento soggetto a underflow. pp
Uri Goren,

5
@Filip La terminologia in questo thread è in qualche modo sconsiderata. Stiamo discutendo le densità di probabilità , non le probabilità. Le densità sono arbitrarie: dipendono dalle unità di misura. Inoltre, per dimensioni del campione sufficienti, la densità di probabilità di qualsiasi campione semplice da un modello parametrico sarà infine inferiore a . In grandi problemi (con milioni di dati), le densità di probabilità sono abitualmente di o inferiori. Anche un campione di dimensioni dalla distribuzione normale standard ha quasi sicuramente una densità di probabilità inferiore a . 212721000000802127
whuber

4
@FilipHaglund: whuber è corretto, tuttavia, il fatto che la sua densità non sia l'osservazione cruciale qui. Potremmo anche discutere un processo discreto e parlare delle probabilità effettive (e in effetti l'OP non ha detto nulla che escluda questo caso). Ma stiamo parlando di probabilità per risultati molto specifici (ad esempio, un milione di osservazioni che vanno in un modo particolare). È improbabile un singolo risultato specifico, ma nell'inferenza bayesiana i rapporti di probabilità sono importanti, quindi dobbiamo sapere quanto è più grande una piccola probabilità da un'altra.
Meni Rosenfeld,

34
  1. Il logaritmo della probabilità di più probabilità congiunte semplifica la somma dei logaritmi delle probabilità individuali (e la regola di somma è più semplice della regola del prodotto per la differenziazione)

    log(iP(xi))=ilog(P(xi))

  2. Il logaritmo di un membro della famiglia delle distribuzioni esponenziali di probabilità (che include la normale onnipresente) è polinomiale nei parametri (ovvero la massima verosimiglianza si riduce ai minimi quadrati per le distribuzioni normali)

    log(exp(12x2))=12x2

  3. Quest'ultima forma è sia numericamente più stabile che simbolicamente più facile da differenziare rispetto alla prima.

  4. Ultimo ma non meno importante, il logaritmo è una trasformazione monotonica che preserva le posizioni degli estremi (in particolare, i parametri stimati nella massima verosimiglianza sono identici per la formulazione originale e quella trasformata in ceppi)


5
Il motivo 2 non può essere sottolineato abbastanza. Per massimizzare la probabilità logaritmica di un modello lineare con rumore gaussiano, è sufficiente risolvere un problema dei minimi quadrati, che equivale a risolvere un sistema lineare di equazioni.
Paul,

I motivi 1 e 3 descrivono semplicemente come calcolarlo. Puoi calcolarlo in quel modo e poi riconvertirlo (moltiplicandolo per ) per ottenere . In realtà è abbastanza comune calcolare nello spazio log per la stabilità numerica. Ma questo non spiega perché usi quel gradiente. Anche il motivo 4 non è un motivo per cui il gradiente è migliore. Puoi farlo anche con molte altre trasformazioni. Il motivo 2 è interessante ma non sono ancora del tutto sicuro del perché il gradiente di un polinomio sia migliore del gradiente di un'altra funzione. ppθlogp
Albert,

@Alberto la derivata di un polinomio è un polinomio di un grado inferiore (in particolare, quadratico diventa lineare), mentre gli esponenziali non si limitano a differenziarsi
TemplateRex

@TemplateRex: Sì, è chiaro. Ma sto chiedendo delle proprietà di convergenza in un metodo gradiente stocastico.
Albert,

25

È molto più facile prendere una derivata della somma dei logaritmi che prendere una derivata del prodotto, che contiene, diciamo, 100 moltiplicatori.


10
Inoltre riduci i potenziali problemi numerici quando i termini diventano molto piccoli o grandi.
Björn,

8
Al contrario, l'OP fornisce implicitamente un modo eccellente per calcolare la derivata di qualsiasi prodotto con funzioni non negative: moltiplicare la somma delle derivate dei registri per il prodotto stesso. (Questa moltiplicazione viene eseguita meglio in termini di logaritmi, il che elimina anche i problemi numerici citati nel commento di @ Björn.) Pertanto, "facilità" non offre alcun potere esplicativo reale, né affronta la domanda più significativa sul confronto dei gradienti .
whuber

10

Come regola generale, il problema di ottimizzazione più semplice e di base è l'ottimizzazione di una funzione quadratica. Puoi facilmente trovare l'ottimale di tale funzione, indipendentemente da dove inizi. Il modo in cui questo si manifesta dipende dal metodo specifico, ma più vicina è la tua funzione a un quadratico, meglio è.

Come notato da TemplateRex, in un'ampia varietà di problemi, le probabilità che vanno a calcolare la funzione di verosimiglianza provengono dalla distribuzione normale o sono approssimate da essa. Quindi, se lavori sul registro, otterrai una bella funzione quadratica. Considerando che se lavori sulle probabilità, hai una funzione che

  1. Non è convesso (la rovina degli algoritmi di ottimizzazione ovunque)
  2. Attraversa più scale rapidamente e quindi ha un intervallo molto ristretto in cui i valori della funzione sono indicativi di dove indirizzare la ricerca.

Quale funzione preferiresti ottimizzare, questa o questa ?

(In realtà è stato facile; in applicazioni pratiche la tua ricerca può iniziare così lontano dall'ottimale che i valori e i gradienti della funzione, anche se sei stato in grado di calcolarli numericamente, saranno indistinguibili da 0 e inutili ai fini dell'ottimizzazione algoritmo, ma trasformarsi in una funzione quadratica rende questo un gioco da ragazzi.)

Si noti che questo è completamente coerente con i problemi di stabilità numerica già menzionati. Il motivo per cui la scala del registro è necessaria per funzionare con questa funzione, è esattamente la stessa ragione per cui la probabilità del registro è molto meglio (per l'ottimizzazione e altri scopi) rispetto all'originale.

Potresti anche affrontarlo in un altro modo. Anche se non ci fosse alcun vantaggio nel registro (che esiste) - useremo comunque la scala del registro per derivazioni e calcoli, quindi quale motivo c'è per applicare la trasformazione exp solo per calcolare il gradiente? Potremmo anche rimanere coerenti con il registro.


@TemplateRex: il registro di una funzione positiva convessa (verso il basso) è convesso, ma non è vero il contrario. Le probabilità non sono convesse, quindi non hanno nulla da preservare, ma il registro è convesso. Guarda i grafici che ho collegato - exp (-10x ^ 2) è ovviamente non convesso, ma -10x ^ 2 lo è.
Meni Rosenfeld,

4

Usando aumentiamo la gamma dinamica dell'algoritmo di ottimizzazione. Il nelle applicazioni è di solito un prodotto di funzioni. Ad esempio, nella stima della massima verosimiglianza è il prodotto della forma , dove È la funzione di densità, che può essere maggiore o minore di 1, a proposito.lnppL(x|θ)=Πi=1nf(xi|θ)f(.)

Così, quando è molto grande, cioè ampio campione, la vostra funzione di verosimiglianza è di solito lontano da 1: o è molto piccolo o molto grande, perché è una funzione di potenza .nL(.)Lf(.)n

Prendendo un registro miglioriamo semplicemente la gamma dinamica di qualsiasi algoritmo di ottimizzazione, permettendogli di lavorare con valori estremamente grandi o piccoli allo stesso modo.


0

Alcune belle risposte sono già state fornite. Ma ne ho incontrato di recente uno nuovo:

Spesso, ti viene fornito un enorme set di dati di allenamento e definisci un modello probabilistico e vuoi massimizzare la probabilità di . Si presume che siano indipendenti, ovvero che hai Ora, fai spesso una sorta di allenamento stocastico (mini-batch) basato sul gradiente, cioè in ogni passaggio, per la tua perdita , ottimizzi per , ovvero Xp(x|θ)xX

p(X|θ)=xXp(x|θ).
LL(X|θ)XX
θ:=θxXL(x|θ)θ.
Ora, questi passaggi stocastici si accumulano additivamente. Per questo motivo, si desidera la proprietà che in generale Questo è il caso di
L(X|θ)=xXL(x|θ).
L(x|θ)=logp(x|θ).

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.