La discesa graduale è probabilmente la strategia di ottimizzazione più riconosciuta utilizzata nell’apprendimento profondo e nell’apprendimento automatico. Gli scienziati dei dati la usano spesso quando c’è la possibilità di combinare ogni algoritmo con modelli di addestramento. La comprensione dell’algoritmo di discesa del gradiente è relativamente semplice e la sua implementazione è ancora più semplice. Parliamo del funzionamento interno della discesa a gradiente, dei suoi diversi tipi e dei suoi vantaggi.

Che cos’è la discesa a gradiente?

I programmatori utilizzano la discesa del gradiente come algoritmo di ottimizzazione quando addestrano i modelli di apprendimento delle macchine. Basandosi su funzioni convesse, la discesa del gradiente modifica iterativamente alcuni dei suoi parametri per ridurre al minimo una particolare funzione.
Gli scienziati dei dati usano la discesa del gradiente per trovare i valori dei parametri di una funzione che riducono il più possibile le funzioni di costo. Essi iniziano stabilendo i valori del parametro iniziale. La discesa del gradiente utilizza il calcolo per la regolazione iterativa dei valori per ridurre al minimo una specifica funzione di costo. È necessario sapere cosa sono i gradienti per comprendere appieno la discesa del gradiente.

Comprensione del gradiente

La funzione primaria di un gradiente è quella di misurare le variazioni di ogni peso rispetto alla variazione degli errori. Pensate ai gradienti come alla pendenza di una funzione. La pendenza sarà più ripida in base all’altezza del gradiente – è una condizione favorevole per i modelli che possono imparare velocemente. Tuttavia, il modello interromperà l’apprendimento se la pendenza diventa zero. Matematicamente parlando, un gradiente potrebbe essere meglio descritto come una derivata limitata per quanto riguarda i suoi input.
Pensate ad una persona bendata che vuole scalare la cima di una collina con il minimo sforzo. Molto probabilmente farà lunghi passi verso la direzione più ripida possibile. Tuttavia, i passi di questa persona diventeranno più piccoli per evitare il superamento. È possibile utilizzare la pendenza per descrivere matematicamente questo processo.
I gradienti che iniziano da X0 e terminano a X1 sono significativamente più lunghi di quelli che iniziano da X3 e terminano a X4. Perché? Perché la pendenza/pendenza della collina determina la lunghezza del vettore. Essa fornisce una rappresentazione ideale dell’analogia della collina discussa in precedenza, poiché diventa meno ripida man mano che la persona sale più in alto.

Come funziona la discesa graduale?

Piuttosto che salire su una collina, immaginate la discesa in pendenza come se scendesse sul fondo di una valle. Comprendere questa analogia è più semplice, poiché si tratta di un algoritmo di minimizzazione che riduce una funzione specifica. Cerchiamo di capire la discesa del gradiente con l’aiuto di un’equazione:
b rappresenta la posizione successiva dell’alpinista
a significa la sua posizione attuale
meno si riferisce alla parte di minimizzazione della discesa del gradiente
La gamma situata nel centro rappresenta un fattore di attesa
(Δf (a) ) indica la direzione di discesa più ripida

All’inizio potreste essere confusi da questa formula, ma è più semplice di quanto pensiate. Ci informa sulla prossima posizione che dobbiamo prendere: la direzione di discesa.

Perché il tasso di apprendimento è così importante?

È essenziale impostare i tassi di apprendimento ai valori appropriati per aiutare la discesa in gradiente a raggiungere i minimi locali. Quindi, sarebbe meglio non impostarli troppo alti o troppo bassi. È fondamentale perché raggiungere il minimo potrebbe diventare complicato con passi troppo lunghi. Pertanto, se impostiamo i tassi di apprendimento su valori più bassi, la discesa del gradiente potrebbe alla fine arrivare ai minimi locali. Tuttavia, potrebbe essere necessario un po’ di tempo.

Come garantire che funzioni in modo ottimale

Un modo eccellente per garantire le funzioni di discesa dei gradienti in modo ottimale è quello di organizzare la funzione dei costi mentre l’ottimizzazione è in corso. Inserire le ripetizioni dell’importo sull’asse X, e il valore della funzione di costo entrerà nell’asse y. Vi aiuterà a vedere il valore della funzione di costo dopo l’iterazione di ogni discesa del gradiente e vi permetterà anche di individuare la precisione del tasso di apprendimento. Potete anche provare vari valori e tracciarli insieme.
La funzione di costo si ridurrà dopo ogni iterazione se la discesa del gradiente funziona in modo ottimale. La discesa del gradiente converge quando non è in grado di ridurre la funzione di costo e rimane sullo stesso livello.la quantità di iterazioni che la discesa del gradiente richiede per la convergenza varia drasticamente. A volte ci vogliono cinquanta iterazioni, altre volte potrebbe arrivare a due o tre milioni. Ciò causa difficoltà nella stima delle iterazioni in anticipo.
Alcuni algoritmi possono informare automaticamente se c’è stata una convergenza nella discesa del gradiente. Tuttavia, sarebbe meglio stabilire in anticipo una soglia di convergenza, che è anche piuttosto difficile da stimare. È un motivo significativo per cui le trame semplici sono le migliori per i test di convergenza.

Diversi tipi di gradiente di discesa

Troverete tre tipi di discesa a gradiente ben noti. Vediamoli da vicino:

Discesa a gradiente discontinuo

Conosciuta anche come discesa del gradiente di vaniglia, la discesa del gradiente di vaniglia in batch calcola gli errori per ogni esempio nel set di dati di allenamento. Tuttavia, lo fa solo dopo che ogni esempio di allenamento passa attraverso una rigorosa valutazione. È giusto confrontare questo processo con un ciclo. Alcuni individui si riferiscono anche ad un’epoca di addestramento.
La discesa a gradiente in lotti ha diversi vantaggi. La sua efficienza computazionale, in particolare, è estremamente utile in quanto sviluppa una convergenza stabile e un gradiente di errore stabile. Detto questo, anche la discesa a gradiente batch ha alcuni svantaggi. A volte, il suo gradiente di errore stabile può risultare in uno stato di convergenza sfavorevole. Inoltre, ha anche bisogno della presenza del dataset di addestramento nel suo algoritmo e nella sua memoria.

Discesa graduale stocastica

SGD fornisce aggiornamenti per i singoli parametri per ogni esempio di addestramento. Esso aiuta a fornire attenzione ad ogni esempio, assicurando che il processo sia privo di errori. A seconda del problema, ciò può aiutare SGD a diventare più veloce rispetto alla discesa di gradiente in batch. I suoi regolari aggiornamenti ci forniscono dettagliate percentuali di miglioramento.
Detto questo, questi aggiornamenti sono computazionalmente costosi, specialmente quando li si confronta con l’approccio utilizzato per la discesa a gradiente in batch. Inoltre, la frequenza dell’aggiornamento può causare gradienti rumorosi e potrebbe impedire la diminuzione del tasso di errore. Invece, il tasso di errore salta e diventa problematico a lungo termine.

Discesa Gradiente Mini-Batch

Gli scienziati dei dati usano la discesa a gradiente in mini-batch come metodo di partenza. Perché? Perché è una miscela perfetta dei concetti di discesa stocastica a gradiente e di discesa a lotti. Suddivide i set di dati (addestramento) in lotti ed esegue un aggiornamento per ogni lotto, creando un equilibrio tra l’efficienza del BGD e la robustezza dell’SCD.
I popolari mini-batch variano tra i cinquanta e i duecentocinquantasei, ma come molti altri metodi di machine learning, non ci sono regole chiare in quanto varia da un’applicazione all’altra. La gente lo usa come opzione per l’addestramento delle reti neurali. È anche un tipo di discesa a gradiente popolare all’interno del paesaggio dell’apprendimento profondo.