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.4⋅10−1110−11∼1011p′(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)