Introduzione
Immaginiamo di avere una funzione e di volerne trovare il minimo. Cosa faresti ?
Semplice vero? Dobbiamo solo risolvere la seguente equazione:
Il fatto è che trovare la formula di 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 .
Costruiamo un po' di intuizione
Supponiamo di avere una funzione f con il grafico corrispondente:
Iniziamo con un punto casuale . L'obiettivo è spostare questo punto e renderlo sempre più vicino a in modo tale che x*. Quindi il problema può essere diviso in due parti:
-
In quale direzione dovremmo spostare il punto ? 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:
Notare che:
-
quando il punto è a destra del punto ottimo la sua retta tangente va verso l'alto.
-
quando il punto è a destra del punto ottimo la sua retta tangente va verso il basso.
La direzione di una linea è determinata dal segno della sua pendenza:
-
Una linea sale che la pendenza è positiva.
-
Una linea scende che la pendenza è negativa.
Nota che: \
La pendenza della retta tangente di una funzione in un certo punto non è maggiore della derivata in quel punto :
Quindi, come risposta alla domanda "Dove dovremmo spostare ?":
-
a destra di Dobbiamo spostare a sinistra.
-
a sinistra di Dobbiamo spostare a destra.
I passaggi
Veniamo ora alla seconda domanda: Di quanto dovremmo spostare ?
Dai un'occhiata ai seguenti esempi:
Possiamo concludere che:
-
è vicino a => La pendenza della tangente è piccola => è piccola.
-
è distante da => La pendenza della tangente è grande => è grande.
Rispondendo ad entrambe le domande, abbiamo concluso che solo la conoscenza della derivata nel punto può darci molte informazioni sulla direzione e la distanza del punto ottimo .
Discesa gradiente
La discesa del gradiente è la formulazione delle risposte delle due domande precedenti. È un algoritmo iterativo di ottimizzazione che approssima il minimo di una funzione a partire da un punto iniziale casuale . L'algoritmo è indicato come segue:
Dove:
-
non è altro che la derivata di nel punto .
-
è una costante positiva che determina la grandezza dei passi.
Si noti che:
-
è a destra di => => => si sposta a sinistra.
-
è a sinistra di => => => si sposta a destra.
-
vicino a => vicino a => Piccolo aggiornamento a .
##Quiz
-
Quando la discesa del gradiente interrompe l'iterazione:
-
Quando è abbastanza piccolo.
-
Quando è vicino a .
-
Quando . XXX
-
Come scegliamo :
-
Lo scegliamo a caso. XXX
-
Lo prendiamo nell'intorno di .
-
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.