Condividi:

Condividi su facebook
Condividi su twitter
Condividi su linkedin
Condividi su whatsapp
Condividi su telegram

Cos’è il Gradient Descent (GD)? Beh sicuramente se sei all’inizio del tuo percorso questa è una domanda che ti starai ponendo.

Siccome è importante che tu lo sappia se vuoi conoscere bene gli algoritmi, in questo articolo cercherò di farti capire cos’è la discesa del gradiente e successivamente ti mostrerò anche due delle varianti del GD.

Cos’è il Gradient Descent?

Il Gradient Descent è un algoritmo di ottimizzazione che viene usato nell’apprendimento automatico e ci aiuta ad individuare il valore minimo di una funzione costo J (se non sai cos’è una funzione costo ecco qui un articolo per approfondire).

Questo tipo di algoritmo funziona a “passi” ovvero, partendo da un punto si deve arrivare step by step ad un altro punto (definito local minima). Tutto questo processo è chiamato discesa del gradiente perché l’algoritmo deve trovare la via migliore per scendere ed arrivare al punto minimo.

Ecco qui due delle varianti del Gradient Descent: il Stochastic GD e il mini-batch GD.

Stochastic Gradient Descent

Il Stochastic Gradient Descent (SGD) si differenzia dal normale GD perché in questo caso si calcolano i gradienti su un solo esempio di allenamento alla volta, piuttosto che sull’intero training set.

Differentemente dalla discesa del gradiente classica, nel SGD si usa solo 1 esempio di allenamento prima di aggiornare i gradienti. Per questo motivo lui è più veloce solo nel caso in cui il training set è molto grande.

Un’unica pecca di questa variante di ottimizzazione è che ma i parametri tenderanno ad oscillerare verso il minimo piuttosto che convergere dolcemente.

Ecco un esempio:

gradient descent

Una delle cose da notare è che l’implementazione del SGD richiede 3 cicli for in totale:

  1. Sul numero di iterazioni
  2. Sugli esempi di addestramento m
  3. Sui livelli (per aggiornare tutti i parametri, da (W[1], b[1]) a (W[L], b[L]))

Mini-batch GD

Il Mini-batch GD è quello che ottiene i risultati migliori.

Questo è molto più veloce rispetto ai tipi di discesa del gradiente menzionati prima perché non utilizza né l’intero set di allenamento, né un solo esempio di allenamento per eseguire ogni aggiornamento.

I mini-batch sono piccoli lotti ottenuti dall’intero set di allenamento e proprio grazie a questa caratteristica si effettua un loop sui mini-batch invece di fare un loop su ogni singolo esempio di train.

gradient descent

In sintesi

  • La differenza tra la normale discesa del gradiente, mini-batch gradient descent e stochastic gradient descent è il numero di esempi che si usa per eseguire uno step di aggiornamento.
  • Bisogna sintonizzare un iperparametro di apprendimento alfa.
  • Un mini-batch ben settato, di solito performa meglio del GD e del SGD (in particolare quando il set di allenamento è grande).
Condividi su facebook
Condividi su twitter
Condividi su linkedin
Condividi su whatsapp
Condividi su telegram
Antonio Furioso

Antonio Furioso

Fondatore di Neuragate. Credo molto in quello che le immagini possono comunicare, per questo sono fortemente attratto dalla Computer Vision. Mi piace tutto quello che è nuovo. La curiosità è quella che mi spinge oltre le aspettative e a fare sempre di più.

Iscriviti
Notificami
guest
0 Commenti
Inline Feedback
Vedi tutti i commenti