
Inottimizzazione eanalisi numerica, il metodo didiscesa del gradiente (detto anchemetodo del gradiente, oppuremetodo della massima discesa, o anchedella discesa più ripida; in inglesegradient descent osteepest descent) è una tecnica che consente di determinare i punti dimassimo e minimo di una funzione di piùvariabili. In particolare, il metodo va alla ricerca di punti che soddisfano condizioni di ottimalità (condizioni necessarie, sufficienti, necessarie e sufficienti all'ottimo).
Il metodo fu sviluppato, e pubblicato nel 1847, dalmatematicofranceseAugustin-Louis Cauchy nel tentativo di risolvere il problema della determinazione dell'orbita di uncorpo celeste a partire dalle sueequazioni del moto[1].
Si supponga di voler minimizzare la funzione e si scelga come soluzione iniziale il vettore. Allora
e, muovendosi in unintorno di:
Questi calcoli mostrano che, per individuare dei punti -vicini a - in corrispondenza dei quali la funzione assume un valore minore di, conviene spostarsi lungo direzioni che abbiano la prima e la terza componente più piccole o seconda componente più grande. Inoltre esistono delle direzionipreferenziali lungo le quali la funzione decresce più velocemente (per esempio scegliere una coordinata più piccola è preferibile rispetto a far diminuire).
La procedura può essere iterata partendo da un nuovo punto, ad esempio, fino a individuare un minimo per. L'esempio mostra che una procedura che aggiorni la soluzione in modo iterativo sulla base delle informazioni disponibililocalmente può portare a individuare un punto di minimo per la funzione assegnata.
Con riferimento al seguente problema diottimizzazione non vincolata,
il metodo del gradiente è una tecnica iterativa per la risoluzione di problemi di ottimizzazione non vincolati in cui a ogni passo, supposto diverso da zero, si sceglie come direzione di ricerca quella corrispondente a, ovvero la direzione dell'anti-gradiente (si ricordi a tal proposito che ogni generico vettore, con, identifica unadirezione).
In particolare, il nome disteepest descent method deriva proprio da questa scelta. Non è difficile dimostrare infatti che la direzione dell'anti-gradiente è la direzione che minimizza (massimizza in modulo) il valore della derivata della funzione nel punto rispetto a qualsiasi altra direzione a norma euclidea unitaria. Si noti soprattutto il riferimento alla particolare norma utilizzata. Una direzione è ottima per una particolare norma presa in considerazione.
Possiamo dunque affermare che a ogni iterazione la direzione è soluzione al seguente problema (vincolato)
La dimostrazione è immediata.
L'importanza di tale scelta in realtà risiede in altro. Si noti infatti che a ogni iterazione, si ha che (angolo ottuso tra i due vettori), questo garantisce che se si fa uso di tecniche di ricerca unidimensionali nella scelta del passo lungo la direzione dell'anti-gradiente, si riesce a dare all'algoritmo proprietà di convergenza globali.
Se l'algoritmo ne fa uso, allora a ogni iterazione, lo stato di aggiornamento della successione di punti prodotta diventa
dove corrisponde alla lunghezza del passo di discesa.
Esempi di tecniche di ricerca unidimensionali sono quelli che soddisfano le condizioni di accettabilità di Wolfe (sufficiente riduzione, sufficiente spostamento)
Ancora una volta è lasciata al lettore la possibilità di dare una interpretazione geometrica alla seconda condizione, condizione di sufficiente spostamento.
Si osservi tuttavia che l'algoritmo non garantisce convergenza a punti di minimo globale; in realtà non assicura nemmeno che il punto così trovato sia un punto di minimo locale. Tuttavia, se aggiungiamo a ipotesi di convessità su tutto il suo dominio di definizione, allora non solo si ha convergenza a un punto di minimo locale ma tale punto è anche un punto di minimo globale per la funzione (unico nel caso di stretta convessità).
Lo schema generale per l'ottimizzazione di una funzione mediante metodo del gradiente è il seguente:
Una volta descritto il metodo, il prossimo passo è studiarne la rapidità di convergenza. In particolare diamo un risultato (facilmente dimostrabile) circa la rapidità di convergenza (Q-convergenza) della successione di punti al punto.
Di conseguenza la prima ipotesi che si fa nello studio della rapidità di convergenza del metodo è la validità del seguente limite
Se le ipotesi prima enunciate sono valide, ovvero l'algoritmo fa uso di tecniche di ricerca unidimensionale, e in particolare si assicura l'unicità delpunto stazionario per la funzione, il limite sopra indicato converge.
Supponiamo allora di voler minimizzare la seguente funzione quadratica strettamente convessa
con matrice simmetrica definita positiva, e si indichino il suo autovalore massimo e minimo rispettivamente con e.
Tramite semplici passaggi algebrici, si arriva a dimostrare che
dando al gradiente rapidità di convergenza Q-lineare.
Si noti come dipende dal rapporto tra il massimo e il minimo autovalore della matrice. Questo spiega perché il metodo non funziona bene nel caso di matrici mal condizionate.
Un caso particolare di applicazione del metodo del gradiente consiste nella risoluzione disistemi lineari. Si può usare il metodo ordinario o alcune varianti.
Si supponga di risolvere un sistema lineare della forma
dove è unamatrice simmetrica edefinita positiva. Per le proprietà di la soluzione di tale problema è equivalente alla procedura diminimizzazione dellaforma quadratica associata:
Infatti:
da cui
Per la funzione si ha che ladirezione di massima discesa nel punto è:
coincidente con il residuo del sistema lineare. Dunque ladirezione di discesa scelta a ogni iterazione è.
Inoltre vale la seguente relazione:
si ricava
L'algoritmo del metodo del gradiente per la risoluzione di sistemi lineari è dunque
In aritmeticafloating point la condizione delciclo while può essere valutata verificando che la norma del residuo non sia più piccola di una tolleranza impostata dall'utente.
In molti casi è possibile accelerare la velocità di convergenza dell'algoritmo migliorando le proprietà dicondizionamento della matrice. Si introduca a tal fine una matrice diprecondizionamentosimmetrica edefinita positiva.
Lo schema risolutivo in questo caso diventa[3]:
Ilmetodo del gradiente coniugato costituisce una variante del metodo del gradiente in cui viene effettuata una scelta diversa, ma particolarmente conveniente nel caso di sistemi linearisimmetrici edefiniti positivi, per le direzioni di discesa. Tale scelta garantisce la convergenza del metodo (in aritmetica esatta) in un numero di iterazioni pari al più alla dimensione del sistema da risolvere.
È possibile dimostrare che l'errore commesso alla-esima iterazione del metodo del gradiente soddisfa la seguente stima[3]:
dove
indica il numero dicondizionamento innorma di e è lanorma indotta da.
Nel caso precondizionato vale la stessa stima con
Si riporta un esempio di possibile implementazione del metodo del gradiente nella versione precondizionata compatibile con i linguaggi di programmazioneOctave eMATLAB.
function[xk]=grad_prec(A, b, x0, nmax, toll)xk=x0;iter=0;while((norm(rk)>=toll)&&(iter<nmax))rk=b-A*xk;zk=P\rk;alphak=zk'*rk/((A*zk)'*zk);xk=xk+alphak*zk;iter=iter+1;endifiter==nmaxwarning('Convergenza non raggiunta in nmax iterazioni!');endend
Quando lafunzione obiettivo è troppo costosa da calcolare a ogni iterazione, ma può essere scomposta in una somma di molti addendi (per esempio, la somma del costo calcolato su ogni singolo record in undataset), il gradiente può essereapprossimato stocasticamente restringendo la somma su un sottoinsieme di addendi a ogni iterazione, metodo noto comediscesa stocastica del gradiente.
La discesa del gradiente è ampiamente utilizzata instatistica eapprendimento automatico per l'addestramento tramiteapprendimento supervisionato di modelli comereti neurali artificiali emodelli grafici. Il principio è noto comeregola delta, e consiste nel valutare il modello su un input il cui corrispondente output esatto sia noto, e correggere ciascun parametro del modello in una quantità proporzionale (ma di segno opposto) rispetto al suo contributo all'errore sul risultato. L'algoritmo usato nelle reti neurali per implementare questo principio è noto comeretropropagazione dell'errore, che consiste in un'applicazione della discesa del gradiente, essendo il contributo di ciascun parametro all'errore del modello dato dalladerivata parziale della funzione di perdita rispetto al parametro stesso.
La regola, classificabile fra i metodi per l'apprendimento supervisionato, può essere applicata a reti neurali di tipoin avanti (cioè con propagazione unidirezionale dei segnali, in inglesefeedforward) e permette di calcolare la differenza tra i valori di output che la rete ottiene e quelli che invece dovrebbe apprendere. La regola deve essere applicata a reti che usano unità di output ad attivazione continua e differenziabile ed è l'elemento fondamentale dell'algoritmo diretropropagazione dell'errore (backpropagation), alla base dell'approccio connessionista.
Data una retein avanti con le proprietà sopra descritte, l'obiettivo che ci si prefigge è minimizzare la diversità tra i valori di attivazione delle unità di output della rete (ottenuti sommando i segnali provenienti dalle diverse unità di input moltiplicati per l'efficacia, opesi sinaptici delle connessioni in ingresso), e i valori della risposta desiderata. Tale diversità viene quantificata attraverso unafunzione di perdita. La funzione obiettivo che si vuole minimizzare è ilvalore atteso della perdita (in pratica la perditamedia sui dati).
Per applicare il metodo del gradiente, la funzione di perdita deve essere derivabile rispetto ai valori di output. Una scelta adatta a problemi diregressione è loscarto quadratico medio tra e (valutato per tutte le unità di output e per tutti i pattern d'apprendimento); per problemi diclassificazione si può utilizzare ladivergenza di Kullback-Leibler o equivalentemente l'entropia incrociata.
Nella fase di addestramento, variando i pesi sinaptici (parametri del modello) si può aumentare o diminuire la funzione obiettivo; laprestazione della rete saràfunzione delle variabili, e sarà massima quando si raggiunge il minimo della funzione obiettivo, il che si ottiene applicando il metodo del gradiente e aggiornando iterativamente i valori dei pesi sinaptici.
Poiché nelle applicazioni pratiche le dimensioni dei modelli e dei relatividataset usati nell'addestramento sono molto grandi, in pratica si fa generalmente uso delladiscesa stocastica del gradiente per l'addestramento delle reti neurali e di altri modelli statistici e di apprendimento automatico.
Altri progetti