Basato su Cosa dovremmo fare quando una domanda pubblicata su DataScience è un duplicato di una domanda pubblicata su CrossValidated? , Sto ripubblicando la mia risposta alla stessa domanda posta su CrossValidated ( /stats//a/311318/89653 ).
Nota: in questa risposta mi riferisco alla minimizzazione della perdita di allenamento e non discuto criteri di interruzione come la perdita di validazione. La scelta dei criteri di arresto non influisce sul processo / sui concetti descritti di seguito.
Il processo di allenamento di una rete neurale consiste nel trovare il valore minimo di una funzione di perdita , dove rappresenta una matrice (o più matrici) di pesi tra neuroni e rappresenta il set di dati di allenamento. Uso un pedice per per indicare che la nostra minimizzazione di verifica solo sui pesi (ovvero, stiamo cercando tale che sia minimizzato) mentre è fisso.LX(W)WXXLWWLX
Ora, se assumiamo che abbiamo elementi in (cioè, ci sono pesi nella rete), è una superficie in uno spazio dimensionale . Per fornire un analogo visivo, immagina di avere solo due pesi di neuroni ( ). Quindi ha una facile interpretazione geometrica: è una superficie in uno spazio tridimensionale. Ciò deriva dal fatto che per ogni data matrice di pesi , la funzione di perdita può essere valutata su e quel valore diventa l'elevazione della superficie.PWPLP+1P=2LWX
Ma c'è il problema della non convessità; la superficie che ho descritto avrà numerosi minimi locali, e quindi gli algoritmi di discesa del gradiente sono suscettibili di diventare "bloccati" in quei minimi mentre una soluzione più profonda / più bassa / migliore potrebbe trovarsi nelle vicinanze. È probabile che ciò accada se rimane invariato su tutte le iterazioni di addestramento, poiché la superficie è fissa per una data ; tutte le sue caratteristiche sono statiche, compresi i suoi vari minimi.XX
Una soluzione a questo è l'allenamento mini-batch combinato con lo shuffling. Mescolando le righe e allenandosi su un solo sottoinsieme di esse durante una data iterazione, cambia ad ogni iterazione ed è in realtà del tutto possibile che non vengano eseguite due iterazioni sull'intera sequenza di iterazioni ed epoche di allenamento sulla stessa identica . L'effetto è che il risolutore può facilmente "rimbalzare" da un minimo locale. Immagina che il solutore sia bloccato al minimo locale durante l'iterazione con l'addestramento del mini-batch . Questo minimo locale corrisponde a valutato con un particolare valore di pesi; lo chiameremoXXiXiLLXi(Wi). Nella successiva iterazione la forma della nostra superficie di perdita in realtà cambia perché stiamo usando , ovvero potrebbe assumere un valore molto diverso da ed è del tutto possibile che non corrisponda ad un minimo locale! Ora possiamo calcolare un aggiornamento gradiente e continuare con la formazione. Per essere chiari: la forma di sarà - in generale - diversa da quella di . Si noti che qui mi riferisco alla funzione di perdita valutata su un set di allenamento ; è una superficie completa definita su tutti i possibili valori diXi+1LXi+1(Wi)LXi(Wi)LXi+1LXiLXW, Piuttosto che la valutazione di tale perdita (che è solo uno scalare) per un valore specifico di . Si noti inoltre che se si utilizzano mini-batch senza mescolare, esiste ancora un certo grado di "diversificazione" delle superfici di perdita, ma ci sarà un numero finito (e relativamente piccolo) di superfici di errore uniche viste dal solutore (in particolare, vedrà lo stesso insieme esatto di mini-lotti - e quindi superfici di perdita - durante ogni epoca).W
Una cosa che ho deliberatamente evitato è stata una discussione sulle dimensioni dei mini-lotti, perché ci sono un milione di opinioni su questo e ha implicazioni pratiche significative (si può ottenere una maggiore parallelizzazione con lotti più grandi). Tuttavia, credo che valga la pena menzionare quanto segue. Poiché viene valutato calcolando un valore per ogni riga di (e sommando o prendendo la media; ovvero un operatore commutativo) per un determinato set di matrici di peso , la disposizione delle righe di non ha alcun effetto quando si utilizza full- discesa gradiente batch (ovvero, quando ogni batch è la completa e iterazioni ed epoche sono la stessa cosa).LXWX X