Riduzione della perdita: discesa del gradiente stocastico

Nella discesa del gradiente, un batch è l'insieme di esempi che utilizzi per calcolare il gradiente in una singola iterazione di addestramento. Finora abbiamo dato per scontato che il batch rappresenti l'intero set di dati. Quando si lavora su scala Google, i set di dati spesso contengono miliardi o addirittura centinaia di miliardi di esempi. Inoltre, i set di dati di Google spesso contengono un numero enorme di funzionalità. Di conseguenza, un batch può essere enorme. Un batch di grandi dimensioni può causare tempi di calcolo molto lunghi anche per una sola iterazione.

È probabile che un set di dati di grandi dimensioni con esempi campionati in modo casuale contenga dati ridondanti. Infatti, la ridondanza aumenta con l'aumentare delle dimensioni del batch. Una certa ridondanza può essere utile per eliminare i gradienti di rumore, ma batch enormi tendono a non avere un valore predittivo molto più elevato rispetto a batch di grandi dimensioni.

E se potessimo ottenere il gradiente giusto in media per molto meno calcolo? Scegliendo esempi casuali dal nostro set di dati, potremmo stimare (anche se rumoroso) una media grande partendo da una molto più piccola. La discesa del gradiente stocastico (SGD) porta questa idea al massimo: utilizza solo un singolo esempio (una dimensione batch pari a 1) per iterazione. Dato un numero sufficiente di iterazioni, SGD funziona ma è molto rumoroso. Il termine "stocastico" indica che l'esempio che comprende ogni batch viene scelto in modo casuale.

Discesa del gradiente stocastico mini-batch (SGD mini-batch) è un compromesso tra l'iterazione full-batch e l'SGD. Un mini-batch è in genere compreso tra 10 e 1000 esempi, scelti in modo casuale. L'SGD mini-batch riduce la quantità di rumore in SGD, ma è comunque più efficiente del full-batch.

Per semplificare la spiegazione, ci siamo concentrati sulla discesa del gradiente per una singola funzionalità. Non c'è da preoccuparsi: la discesa del gradiente funziona anche su set di caratteristiche che contengono più caratteristiche.