QNA > L > L'ordine Dei Dati Di Allenamento È Importante Quando Si Addestrano Le Reti Neurali?

L'ordine dei dati di allenamento è importante quando si addestrano le reti neurali?

Il processo di addestramento di una rete neurale consiste nel trovare il valore minimo di una funzione di perdita [math]ℒX(W)[/math], dove [math]W[/math] rappresenta una matrice (o più matrici) di pesi tra neuroni e [math]X[/math] rappresenta il dataset di allenamento. Uso un pedice per [math]X[/math] per indicare che la nostra minimizzazione di [math]ℒ[/math] avviene solo sui pesi [math]W[/math] (cioè, stiamo cercando [math]W[/math] tale che [math]ℒ[/math] è minimizzato) mentre [math]X[/math] è fisso.

Ora, se assumiamo di avere [math]P[/math] elementi in [math]W[/math] (cioè, ci sono [math]P[/math] pesi nella rete), [math]ℒ[/math] è una superficie in uno spazio [math]P+1[/math]-dimensionale. Per dare un'analogia visiva, immaginiamo di avere solo due pesi di neuroni ([math]P=2[/math]). Allora [math]ℒ[/math] ha una facile interpretazione geometrica: è una superficie in uno spazio tridimensionale. Questo deriva dal fatto che per ogni data matrice di pesi [math]W[/math], la funzione di perdita può essere valutata su [math]X[/math] e quel valore diventa l'elevazione della superficie.

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 rimanere "bloccati" in quei minimi mentre una soluzione più profonda/bassa/migliore può trovarsi nelle vicinanze. Questo è probabile che si verifichi se [math]X[/math] è invariata in tutte le iterazioni di allenamento, perché la superficie è fissa per una data [math]X[/math]; tutte le sue caratteristiche sono statiche, compresi i suoi vari minimi.

Una soluzione a questo è l'allenamento mini-batch combinato con lo shuffling. Mescolando le righe e addestrando solo un sottoinsieme di esse durante una data iterazione, [math]X[/math] cambia ad ogni iterazione, ed è in realtà abbastanza possibile che non ci siano due iterazioni nell'intera sequenza di iterazioni di addestramento e di epoche che vengano eseguite esattamente sulla stessa [math]X[/math]. L'effetto è che il solutore può facilmente "rimbalzare" fuori da un minimo locale. Immaginate che il solutore sia bloccato in un minimo locale all'iterazione [math]i[/math] con il mini-batch di allenamento [math]Xi[/math]. Questo minimo locale corrisponde a [math]ℒ[/math] valutato ad un particolare valore dei pesi; lo chiameremo [math]ℒXi(Wi)[/math]. All'iterazione successiva la forma della nostra superficie di perdita cambia effettivamente perché stiamo usando [math]Xi+1[/math], cioè, [math]ℒXi+1(Wi)[/math] può assumere un valore molto diverso da [math]ℒXi(Wi)[/math] ed è abbastanza possibile che non corrisponda ad un minimo locale! Possiamo ora calcolare un aggiornamento del gradiente e continuare l'addestramento. Per essere chiari: la forma di [math]ℒXi+1[/math] sarà -- in generale -- diversa da quella di [math]ℒXi[/math]. Si noti che qui mi sto riferendo alla funzione di perdita [math]ℒ[/math] valutata su un insieme di allenamento [math]X[/math]; è una superficie completa definita su tutti i possibili valori di [math]W[/math], piuttosto che la valutazione di quella perdita (che è solo uno scalare) per un valore specifico di [math]W[/math]. Si noti anche che se i mini-batch sono usati senza rimescolamento c'è 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 esatto insieme di mini-batch -- e quindi superfici di perdita -- durante ogni epoca).

Una cosa che ho deliberatamente evitato è una discussione sulle dimensioni dei mini-batch, perché ci sono un milione di opinioni su questo e ha significative implicazioni pratiche (una maggiore parallelizzazione può essere raggiunta con lotti più grandi). Tuttavia, credo che valga la pena menzionare quanto segue. Poiché [math]ℒ[/math] viene valutato calcolando un valore per ogni riga di [math]X[/math] (e sommando o prendendo la media; cioè, un operatore commutativo) per un dato insieme di matrici di peso [math]W[/math], la disposizione delle righe di [math]X[/math] non ha alcun effetto quando si usa la discesa a gradiente full-batch (cioè, quando ogni batch è l'intera [math]X[/math], e iterazioni ed epoche sono la stessa cosa).

Di Clovis

Come scaricare Kik sul mio Chromebook senza usare BlueStacks :: Quali sono i tipi di sistemi operativi utilizzati negli smartphone e nei tablet?
Link utili