Che cos'è la discesa del gradiente?
Applica la discesa del gradiente con watsonx.ai Iscriviti agli aggiornamenti sugli argomenti dell'AI
Illustrazione con collage di pittogrammi di nuvole, grafico a torta, pittogrammi grafici su quanto segue
Che cos'è la discesa del gradiente?

La discesa del gradiente è un algoritmo di ottimizzazione comunemente usato per addestrare i modelli dimachine learninge lereti neurali. Questo algoritmo addestra i modelli di machine learning riducendo al minimo gli errori tra i risultati previsti e quelli effettivi.

I dati di addestramento aiutano questi modelli ad apprendere nel tempo e la funzione di costo all'interno della discesa del gradiente funge specificamente da barometro, misurandone l'accuratezza ad ogni iterazione degli aggiornamenti dei parametri. Fino a quando la funzione non è pari o prossima allo zero, il modello continuerà a regolare i propri parametri per produrre l'errore più piccolo possibile. Una volta ottimizzati per quanto riguarda la precisione, i modelli di machine learning possono essere potenti strumenti per le applicazioni di AI e informatica.

IBM è stata riconosciuta come azienda leader da Gartner

Scopri perché IBM è stata nominata leader nel 2023 nel Gartner® Magic Quadrant™ for Cloud AI Developer Services.

Contenuti correlati

Registrati per ricevere l'ebook su Presto

Come funziona la discesa del gradiente?

Prima di approfondire la discesa del gradiente, può essere utile rivedere alcuni concetti della regressione lineare. Ricordiamo che la formula y = mx + b riportata di seguito si applica alla pendenza di una linea, in cuimrappresenta la pendenza ebè l'intercetta sull'asse y.

Ricordiamo inoltre che un grafico a dispersione si usava per le statistiche e che, per trovare la linea di adattamento migliore, era necessario calcolare l'errore tra l'output effettivo e l'output previsto (ŷ) usando la formula dell'errore quadratico medio. L'algoritmo di discesa del gradiente si comporta allo stesso modo, ma si basa su una funzione convessa.

Il punto di partenza è solo un punto arbitrario per valutare la prestazione. Da quel determinato punto di partenza, troveremo la derivata (o pendenza), e da lì possiamo usare una linea tangente per osservare la ripidità della pendenza. La pendenza fornirà informazioni sugli aggiornamenti dei parametri, ovvero i pesi e la distorsione. La pendenza in corrispondenza del punto di partenza sarà più ripida, ma procedendo con la generazione di nuovi parametri, la ripidità dovrebbe gradualmente diminuire fino a raggiungere il punto più basso della curva, noto come punto di convergenza.

Analogamente alla ricerca della linea di miglior adattamento nella regressione lineare, l'obiettivo della discesa del gradiente è minimizzare la funzione di costo o l'errore tra l'y previsto e l'y effettivo. Per fare ciò, sono necessari due punti dati: una direzione e un tasso di apprendimento. Questi fattori determinano i calcoli delle derivate parziali delle iterazioni future, consentendo di arrivare gradualmente al minimo locale o globale (cioè al punto di convergenza).

  • Il tasso di apprendimento(noto anche come dimensione del passo o alfa) è la dimensione dei passaggi compiuti per raggiungere il minimo. Si tratta in genere di un valore piccolo e viene valutato e aggiornato in base al comportamento della funzione di costo. Tassi di apprendimento elevati comportano passi più ampi, ma vi è il rischio di superare il minimo. Al contrario, un tasso di apprendimento ridotto presenta passi di piccole dimensioni. Sebbene abbia il vantaggio di una maggiore precisione, il numero di iterazioni compromette l'efficienza complessiva in quanto richiede più tempo e calcoli per raggiungere il minimo.
  • La funzione di costo (o perdita)misura la differenza, o errore, tra l'y effettivo e l'y previsto nella sua posizione corrente. Ciò migliora l'efficacia del modello di machine learning fornendo un feedback al modello in modo che possa regolare i parametri per ridurre al minimo l'errore e trovare il minimo locale o globale. Si ripete continuamente, muovendosi lungo la direzione della discesa più ripida (o del gradiente negativo) fino a quando la funzione di costo non è pari o prossima allo zero. A questo punto, il modello smetterà di apprendere. Inoltre, mentre i termini, funzione di costo e funzione di perdita, sono considerati sinonimi, tra loro esiste una leggera differenza. Vale la pena notare che una funzione di perdita si riferisce all'errore di un esempio di addestramento, mentre una funzione di costo calcola l'errore medio in un intero set di addestramento.
Tipi di discesa del gradiente

Esistono tre tipi di algoritmi di apprendimento della discesa del gradiente: discesa del gradiente batch, discesa del gradiente stocastica e discesa del gradiente mini-batch.

Discesa del gradiente batch

La discesa del gradiente batch riassume l'errore di ciascun punto in un set di training, aggiornando il modello solo dopo aver valutato tutti gli esempi di training. Questo processo viene definito epoch di training.

Sebbene questo batch offra efficienza di calcolo, può comunque richiedere tempi di elaborazione lunghi per set di dati di addestramento di grandi dimensioni, in quanto deve ancora memorizzare tutti i dati. Anche la discesa del gradiente batch di solito produce una convergenza e un gradiente di errore stabili, ma a volte quel punto di convergenza non è quello ideale, trovando il minimo locale rispetto a quello globale.

Discesa del gradiente stocastica

La discesa del gradiente stocastica (SGD) esegue un'epoch di training per ogni esempio all'interno del set di dati e aggiorna i parametri di ogni campione di training uno alla volta. Poiché è necessario contenere un solo esempio di training, sono più facili da memorizzare. Sebbene questi aggiornamenti frequenti possano offrire più dettagli e maggiore velocità, possono comportare perdite nell'efficienza computazionale rispetto alla discesa del gradiente batch. I suoi frequenti aggiornamenti possono dare luogo a gradienti rumorosi, ma questo può essere utile per sfuggire al minimo locale e trovare quello globale.

Discesa del gradiente mini-batch

La discesa del gradiente mini-batch combina i concetti della discesa del gradiente batch e della discesa del gradiente stocastica. Suddivide il set di dati di training in batch di piccole dimensioni ed esegue gli aggiornamenti su ognuno di questi batch. Questo approccio rappresenta un equilibrio tra l'efficienza computazionale della discesa del gradiente batch e la velocità della discesa del gradiente stocastica.

Problemi nella discesa del gradiente

Sebbene la discesa del gradiente sia l'approccio più comune per i problemi di ottimizzazione, questa presenta una serie di problemi. Alcuni di questi includono:

Minimi locali e punti di sella

Per i problemi convessi, la discesa del gradiente può trovare facilmente il minimo globale, ma quando emergono problemi non convessi, la discesa del gradiente può faticare a trovare il minimo globale, laddove il modello ottiene i risultati migliori.

Ricorda che quando la pendenza della funzione di costo è pari o prossima allo zero, il modello smette di apprendere. Anche alcuni scenari oltre il minimo globale possono produrre questa pendenza, ovvero i minimi locali e i punti di sella. I minimi locali imitano la forma di un minimo globale, in cui la pendenza della funzione di costo aumenta su entrambi i lati del punto corrente. Tuttavia, con i punti sella, il gradiente negativo esiste solo su un lato del punto, raggiungendo un massimo locale su un lato e un minimo locale sull'altro. Il suo nome si ispira a quello della sella di un cavallo.

I gradienti rumorosi possono aiutare il gradiente a sfuggire ai minimi locali e ai punti di sella.

Gradienti che scompaiono e che crescono

Nelle reti neurali più profonde, in particolare nellereti neurali ricorrenti, possiamo anche riscontrare altri due problemi quando il modello viene addestrato con discesa del gradiente e retropropagazione.

  • Gradienti che scompaiono:questa situazione si verifica quando il gradiente è troppo piccolo. Man mano che ci spostiamo all'indietro durante la retropropagazione, il gradiente continua a ridursi, facendo sì che gli strati precedenti della rete apprendano più lentamente rispetto agli strati successivi. Quando ciò accade, i parametri dei pesi si aggiornano fino a diventare insignificanti, ovvero pari a 0, con conseguente algoritmo che non sta più apprendendo.
  • Gradienti che crescono:questo accade quando il gradiente è troppo grande, con conseguente creazione di un modello instabile. In questo caso, i pesi del modello diventeranno troppo grandi e alla fine verranno rappresentati come NaN. Una soluzione a questo problema consiste nel ricorrere a una tecnica di riduzione della dimensionalità, che può aiutare a minimizzare la complessità del modello.
  •  
Soluzioni correlate
Tecnologie basate sull'AI

Dai workflow del business all'esercizio IT, l'automazione basata su AI è la soluzione a tutto tondo perfetta per te. Scopri come si stanno trasformando le aziende leader.

Esplora le tecnologie basate sull'AI
Risorse Un algoritmo di discesa del gradiente stocastica efficiente e distribuito per applicazioni di deep learning

IBM Research propone un algoritmo di discesa del gradiente stocastica distribuito e sincrono in massa che consente l'aggregazione sparsa del gradiente da parte dei singoli utenti.

Implementa XGBoost in R

Implementa alberi decisionali potenziati dal gradiente usando l'algoritmo XGBoost per eseguire un'attività di classificazione.

Fai il passo successivo

Addestra, convalida, adatta e implementa le funzionalità di AI generativa, foundation model e machine learning con IBM watsonx.ai, uno studio aziendale di nuova generazione per builder AI. Crea applicazioni AI in tempi ridotti e una minima quantità di dati.

Esplora watsonx.ai Prenota una demo live