Discesa gradiente

apprendimento profondo
matematica
discesa del gradiente
Discesa gradiente cover image

Introduzione

Immaginiamo di avere una funzione f(x)f(x) e di volerne trovare il minimo. Cosa faresti ?

Semplice vero? Dobbiamo solo risolvere la seguente equazione:

f(x)=0f'(x) = 0

Il fatto è che trovare la formula di ff' non è sempre facile poiché tendono ad essere estremamente complicate soprattutto nel deep learning dove abbiamo a che fare con funzioni complesse. Dobbiamo quindi trovare un altro metodo che possa fornirci il minimo di una funzione senza la necessità di trovare la formula della derivata ff'.

Costruiamo un po' di intuizione

Supponiamo di avere una funzione f con il grafico corrispondente:

Graph 1

Iniziamo con un punto casuale x0x_{0}. L'obiettivo è spostare questo punto e renderlo sempre più vicino a xx* in modo tale che f(f'(x*)=0) = 0. Quindi il problema può essere diviso in due parti:

  • In quale direzione dovremmo spostare il punto xx ? Sinistra o destra?

  • Di quanto dovremmo spostarlo?

La direzione

Costruiamo un po’ di intuizione per rispondere alla prima domanda. Dai un'occhiata al seguente punto:

Graph 2

Graph 3

Notare che:

  • quando il punto x0x_{0} è a destra del punto ottimo xx* la sua retta tangente va verso l'alto.

  • quando il punto x0x_{0} è a destra del punto ottimo xx* la sua retta tangente va verso il basso.

La direzione di una linea è determinata dal segno della sua pendenza:

  • Una linea sale \implica\implica che la pendenza aa è positiva.

  • Una linea scende \implica\implica che la pendenza aa è negativa.

Nota che: \

La pendenza della retta tangente di una funzione in un certo punto x0x_{0} non è maggiore della derivata in quel punto f(x0)f'(x_{0}):

tangent(x0):g(x)=f(x0).(xx0)+f(x0)tangent(x*{0}): g(x) = f'(x*{0}).(x-x*{0}) + f(x*{0})

Quindi, come risposta alla domanda "Dove dovremmo spostare x0x_{0}?":

  • f(x0)<0f'(x_{0}) < 0     \implies x0x_{0} a destra di xx*     \implies Dobbiamo spostare x0x_{0} a sinistra.

  • f(x0)>0f'(x_{0}) > 0     \implies x0x_{0} a sinistra di xx*     \implies Dobbiamo spostare x0x_{0} a destra.

I passaggi

Veniamo ora alla seconda domanda: Di quanto dovremmo spostare x0x_{0}?

Dai un'occhiata ai seguenti esempi:

Graph 4

Graph 5

Possiamo concludere che:

  • x0x_{0} è vicino a xx* => La pendenza della tangente è piccola => f(x0)f'(x_{0}) è piccola.

  • x0x_{0} è distante da xx* => La pendenza della tangente è grande => f(x0)f'(x_{0}) è grande.

Rispondendo ad entrambe le domande, abbiamo concluso che solo la conoscenza della derivata nel punto x0x_{0} può darci molte informazioni sulla direzione e la distanza del punto ottimo x0x_{0}.

Discesa gradiente

La discesa del gradiente è la formulazione delle risposte delle due domande precedenti. È un algoritmo iterativo di ottimizzazione che approssima il minimo xx* di una funzione a partire da un punto iniziale casuale x0x_{0}. L'algoritmo è indicato come segue:

xn+1=xnlr×dfdx_nx*{n+1} = x*{n} - lr \times \frac{\mathrm{d} f}{\mathrm{d} x\_{n}}

Dove:

  • dfdxn\frac{\mathrm{d} f}{\mathrm{d} x*{n}} non è altro che la derivata di ff nel punto xnx*{n}.

  • lrlr è una costante positiva che determina la grandezza dei passi.

Si noti che:

  • xnx_{n} è a destra di xx* => dfdxn>0\frac{\mathrm{d} f}{\mathrm{d} x_{n}} > 0 => xn+1=xnpositivox_{n+ 1} = x_{n} - positivo => xnx_{n} si sposta a sinistra.

  • xnx_{n} è a sinistra di xx* => dfdxn<0\frac{\mathrm{d} f}{\mathrm{d} x_{n}} < 0 => xn+1=xn+positivox*{n +1} = x*{n} + positivo => xnx_{n} si sposta a destra.

  • xnx_{n} vicino a xx* => dfdxn\frac{\mathrm{d} f}{\mathrm{d} x_{n}} vicino a 00 => Piccolo aggiornamento a xnx_{ n}.

##Quiz

  • Quando la discesa del gradiente interrompe l'iterazione:

  • Quando xnx_{n} è abbastanza piccolo.

  • Quando xnx_{n} è vicino a x0x_{0} .

  • Quando dfdx_n=0\frac{\mathrm{d} f}{\mathrm{d} x\_{n}} = 0 . XXX

  • Come scegliamo x0x_{0}:

  • Lo scegliamo a caso. XXX

  • Lo prendiamo nell'intorno di xnx{n}.

  • Dipende dal problema.

  • Perché abbiamo bisogno della discesa del gradiente:

  • Perché i computer non sono abbastanza potenti per calcolare le derivate.

  • Perché è estremamente difficile trovare le formule derivate dei modelli di deep learning. XXX

  • Perché le funzioni hanno più di un minimo locale.


Career Services background pattern

Servizi per le carriere

Contact Section background image

Rimaniamo in contatto

Code Labs Academy © 2025 Tutti i diritti riservati.