Passa al contenuto principale

AdaGrad

Prova Databricks gratis

La discesa del gradiente è il metodo di ottimizzazione più utilizzato nel machine learning e negli algoritmi di deep learning per addestrare un modello di machine learning.

Tipi di discesa del gradiente

Tipi di discesa del gradiente: discesa del gradiente in batch, discesa stocastica del gradiente e discesa del gradiente in mini batch. Nei moderni algoritmi di machine learning e deep learning vengono utilizzati tre tipi principali di discesa del gradiente.

Discesa del gradiente in batch

Il tipo più semplice di discesa del gradiente è quello in batch. Calcola l'errore per ogni esempio presente nel set di dati di addestramento, ma aggiorna il modello solo dopo che tutti gli esempi di addestramento sono stati valutati.

Discesa stocastica del gradiente

La discesa stocastica del gradiente calcola l'errore e aggiorna il modello per ciascun esempio nel set di dati di addestramento.

Discesa del gradiente in mini batch

Invece di esaminare tutti gli esempi, la discesa del gradiente in mini batch effettua una somma su un numero inferiore di esempi in base alla dimensione del batch ed esegue un aggiornamento per ciascuno di questi batch. La discesa stocastica del gradiente è un metodo comune per l'ottimizzazione, è concettualmente semplice e solitamente si può implementare in modo efficiente. Tuttavia, include un parametro (la dimensione del passo di discesa) che deve essere regolato manualmente e sono state proposte diverse opzioni per automatizzare questa operazione. Uno degli schemi di successo è AdaGrad. I metodi stocastici del subgradiente standard seguono perlopiù uno schema procedurale predeterminato che non tiene conto delle caratteristiche dei dati osservati. Al contrario, gli algoritmi di AdaGrad incorporano dinamicamente la conoscenza della geometria dei dati osservati nelle iterazioni precedenti per eseguire un apprendimento basato sul gradiente più informativo. AdaGrad è stato rilasciato in due versioni: Diagonal AdaGrad (che è la versione utilizzata nelle applicazioni pratiche) ha come caratteristica principale quella di mantenere e adattare un tasso di apprendimento per ciascuna dimensione; la seconda versione, nota come Full AdaGrad, mantiene invece un tasso di apprendimento per ciascuna direzione (ad esempio, una matrice PSD completa). L'algoritmo del gradiente adattivo (AdaGrad) è un algoritmo per l'ottimizzazione basata su gradiente. A livello di componenti, il tasso di apprendimento viene adattato ai parametri incorporando la conoscenza delle osservazioni passate.  Esegue aggiornamenti più grandi (con alti tassi di apprendimento) per quei parametri che sono legati a caratteristiche poco frequenti, e aggiornamenti più piccoli (con bassi tassi di apprendimento) per quelli legati a caratteristiche frequenti. Di conseguenza, è adatto quando si lavora su dati sparsi (NLP o riconoscimento di immagini). Ciascun parametro ha un proprio tasso di apprendimento che migliora le prestazioni sui problemi con gradienti sparsi.

Vantaggi dell'utilizzo di AdaGrad:

  • Elimina la necessità di regolare manualmente il tasso di apprendimento.
  • La convergenza è più rapida e affidabile rispetto alla semplice discesa stocastica del gradiente quando la scala dei pesi è disuguale.
  • Non è molto sensibile alle dimensioni del passo di discesa.

Risorse aggiuntive

Torna al Glossario