Discesa del Gradiente

Indice dei Contenuti

Introduzione

La discesa del gradiente è un algoritmo di ottimizzazione iterativo che regola il vettore delle variabili \( \mathbf{x} = \begin{pmatrix} x_1 \\ x_2 \\ \dots \\ x_n \end{pmatrix} \) per trovare il minimo locale di una funzione differenziabile \( f(\mathbf{x}) \). A partire da una stima iniziale \( \mathbf{x}_0 \) del vettore \( \mathbf{x} \), utilizza il gradiente della funzione per fare passi verso il minimo, controllati dal tasso di apprendimento \( r \). Il processo continua fino a quando le variazioni nei valori di \( \mathbf{x} \) sono sufficientemente piccole, la magnitudine del gradiente è vicina a zero, o viene soddisfatto un altro criterio di arresto.

Formula di Aggiornamento della Discesa del Gradiente

L'idea centrale della discesa del gradiente è regolare iterativamente le variabili per trovare il minimo di una funzione. Questo aggiustamento è guidato dalla formula di aggiornamento: \[ \mathbf{x}_{k+1} = \mathbf{x}_k - r \nabla f(\mathbf{x}_k) \] dove \( \mathbf{x} \) è un vettore di variabili, \( r \) tale che \( r \gt 0 \) è il tasso di apprendimento, e \( \nabla f(\mathbf{x}_k) \) è il gradiente della funzione \( f \) in \( \mathbf{x} = \mathbf{x}_k \) tale che: \[ \nabla f(\mathbf{x}) = \begin{pmatrix} \dfrac{\partial f}{\partial x_1} \\ \dfrac{\partial f}{\partial x_2} \\ \dots \\ \dfrac{\partial f}{\partial x_n}\\ \end{pmatrix} \]
La formula di aggiornamento deriva dal concetto che il gradiente \( \nabla f(\mathbf{x}) \) punta nella direzione del maggiore incremento della funzione \( f \). Per minimizzare \( f \), ci muoviamo nella direzione opposta al gradiente. Il tasso di apprendimento \( r \) determina l'ampiezza dei passi che compiamo in questa direzione.

Descrizione Dettagliata della Discesa del Gradiente

1. Inizializzazione:
- Inizia con una stima iniziale per il vettore delle variabili \( \mathbf{x} \). Sia questo valore iniziale \( \mathbf{x}_0 \).
- Scegli un tasso di apprendimento \( r \), che controlla l'ampiezza dei passi verso il minimo.
2. Calcolo del Gradiente:
- Per la funzione \( f(\mathbf{x}) \), calcola il gradiente \( \nabla f(\mathbf{x}) \).
- Valuta questo gradiente al valore corrente di \( \mathbf{x} = \mathbf{x}_k \). Denota il gradiente all'iterazione \( k \) come \( \nabla f(\mathbf{x}_k) \).
3. Regola di Aggiornamento:
- Usa la formula di aggiornamento per regolare i valori di \( \mathbf{x} \): \[ \mathbf{x}_{k+1} = \mathbf{x}_k - r \nabla f(\mathbf{x}_k) \] - Qui, \( \mathbf{x}_{k+1} \) è il valore aggiornato di \( \mathbf{x} \) dopo una iterazione.
4. Iterazione:
- Ripeti il processo di calcolo del gradiente e aggiornamento dei valori di \( \mathbf{x} \) fino a quando non viene soddisfatto un criterio di arresto. Il criterio di arresto può essere:
- Un numero massimo di iterazioni. - La variazione dei valori di \( \mathbf{x} \) tra le iterazioni è inferiore a una soglia predefinita.
- La magnitudine del gradiente \( \|\nabla f(\mathbf{x}_k)\| \) è inferiore a una soglia predefinita.
5. Convergenza:
- Una volta soddisfatto il criterio di arresto, il valore di \( \mathbf{x} \) dovrebbe essere vicino al valore che minimizza la funzione \( f(\mathbf{x}) \).
Un calcolatore per visualizzare la discesa del gradiente è incluso e può essere utilizzato per acquisire una profonda comprensione dell'algoritmo.
Un altro Calcolatore della Discesa del Gradiente per indagare la convergenza è anche incluso.