Perché dovremmo mescolare i dati durante l'allenamento di una rete neurale?


15

Nell'allenamento mini-batch di una rete neurale, ho sentito che un'importante pratica è quella di mescolare i dati di allenamento prima di ogni epoca. Qualcuno può spiegare perché il mescolamento ad ogni epoca aiuta?

Dalla ricerca su Google, ho trovato le seguenti risposte:

  • aiuta l'addestramento a convergere velocemente
  • impedisce qualsiasi pregiudizio durante l'allenamento
  • impedisce al modello di apprendere l'ordine della formazione

Ma ho la difficoltà di capire perché uno di questi effetti sia causato dal mescolamento casuale. Qualcuno può fornire una spiegazione intuitiva?

Risposte:


8

Per provare a dare un'altra spiegazione:

Una delle cose più potenti delle reti neurali è che possono essere funzioni molto complesse, che consentono di apprendere relazioni molto complesse tra i dati di input e output. Queste relazioni possono includere cose che non ti aspetteresti mai, come l'ordine in cui i dati vengono inseriti per epoca. Se l'ordine dei dati all'interno di ogni epoca è lo stesso, allora il modello può usarlo come un modo per ridurre l'errore di addestramento, che è una sorta di overfitting.

Per quanto riguarda la velocità: i metodi mini-batch si basano sulla discesa gradiente stocastica (e sui relativi miglioramenti), il che significa che si basano sulla casualità per trovare un minimo. Mescolare i mini-batch rende i gradienti più variabili, il che può aiutare la convergenza perché aumenta la probabilità di colpire una buona direzione (o almeno è così che la capisco).


1
Come può una rete neurale apprendere l'ordine in cui i dati vengono alimentati in ogni epoca?
Codice Papa

1
In una parola, non possono. Se si utilizza l'addestramento in mini lotti (cioè più di un lotto per epoca), un ordine particolare dei dati può influenzare l'allenamento, nel senso che allenandosi su un mini lotto in primo luogo il risolutore può entrare in una determinata regione (forse contenente un minimo locale ...) piuttosto che un altro. Ma dire che un NN feedforward "impara" sull'ordinamento dei dati non è proprio corretto perché ogni previsione è fatta indipendentemente da ogni altra previsione, e l'ordinamento all'interno di mini-batch, ovviamente, non avrà alcun effetto.
Josh,

6

Da un punto di vista molto semplicistico, i dati vengono inseriti in sequenza, il che suggerisce che almeno è possibile che l'ordine dei dati abbia un effetto sull'output. Se l'ordine non ha importanza, la randomizzazione certamente non farà male. Se l'ordine è importante, la randomizzazione aiuterà a smussare quegli effetti casuali in modo che non diventino sistematici. In breve, la randomizzazione è economica e non fa mai male e spesso ridurrà al minimo gli effetti di ordinazione dei dati.


6

Nota: in questa risposta mi riferisco alla minimizzazione della perdita di allenamento e non discuto criteri di arresto come la perdita di validazione. La scelta dei criteri di arresto non influisce sul processo / sui concetti descritti di seguito.

Il processo di addestramento 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.WXX WW XX(W)WXXWWX

Ora, se assumiamo che abbiamo elementi in (cioè, ci sono pesi nella rete), è una superficie in uno spazio dimensionale . Per dare 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.W P P + 1 P = 2 W XPWPP+1P=2WX

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.XXX

Una soluzione a questo è l'allenamento mini-batch combinato con lo shuffling. Mischiando 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 chiameremoX i X i X i ( W i ) X i + 1 X i + 1 ( W i ) X i ( W i ) X i + 1X i X W WXXiXiXi(Wi). Nella prossima iterazione la forma della nostra superficie di perdita cambia effettivamente 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+1Xi+1(Wi)Xi(Wi)Xi+1XiXW, 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 mischiare, 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). X W X XXWX X


Grazie per questa utile spiegazione. Dopo aver letto a fondo la tua risposta, ho due domande: 1. Hai detto che il mini-batch offre un grado di diversificazione limitata. Non capisco perché questo non sia sufficiente per evitare di rimanere nel minimo locale. Se un solutore si trova nei minimi locali della superficie di un lotto, è con alta probabilità non nei minimi locali della superficie del lotto successivo, quindi non dovrebbe bloccarsi. 2. In che modo il risolutore converge nella superficie della funzione di perdita mentre la superficie cambia sempre utilizzando lotti diversi?
Codice Papa

Il vantaggio della diversificazione è ancora lì senza mescolare, ma non è così significativo come quando si usa il mescolamento perché vede costantemente la stessa sequenza di superfici di perdita, mentre se usiamo il mescolamento probabilmente non vede mai la stessa superficie di perdita esatta più di una volta. Per quanto riguarda i criteri di arresto, ho generalmente scritto il mio in modo tale che una volta che la riduzione percentuale media della perdita su un determinato numero di iterazioni è inferiore a una certa tolleranza, l'allenamento si interrompe.
Josh,

2
Forse non ho davvero risposto alla tua domanda sui minimi locali così bene. In teoria, tutte queste superfici di perdita dovrebbero mostrare un certo grado di somiglianza poiché si presume che la distribuzione della probabilità della risposta (in base ai predittori del modello) sia costante sull'intero set di dati di addestramento. Quindi, se un minimo è abbastanza profondo, dovrebbe comparire in un gran numero di mini-batch, quindi è improbabile che il risolutore ne rimbalzi. Ma se il minimo è fondamentalmente solo "rumore", questa strategia dovrebbe funzionare abbastanza bene e consentire al modello di continuare l'allenamento.
Josh,

Grazie. La tua seconda risposta rende chiaramente comprensibile il motivo per cui l'NN converge nonostante le diverse superfici. Per quanto riguarda la mia prima domanda, è corretto affermare che avere la stessa sequenza avrebbe solo una maggiore possibilità che un "rumore" si ripeta in molte delle superfici di perdita dei lotti rispetto a quando si usa il mescolamento? Questa è l'unica spiegazione che posso dare perché è ancora possibile rimanere bloccati nei minimi locali quando si usano mini lotti senza mescolare.
Codice Papa

@CodePope Penso che sia giusto. Inoltre, una volta che la perdita è stata molto ridotta dall'inizio dell'allenamento, i gradienti saranno piuttosto piccoli e potrebbe anche essere possibile che il solutore rimanga sostanzialmente bloccato in un "anello" poiché continua a vedere la stessa sequenza di superfici di perdita. Si prega di notare che questa è una spiegazione speculativa basata sulla mia esperienza piuttosto limitata, quindi se hai un serio interesse teorico in questo è meglio consultare un esperto.
Josh,

4

Immagina che le tue ultime etichette minibatch abbiano effettivamente più rumore. Quindi questi lotti tireranno i pesi appresi finali nella direzione sbagliata. Se mescoli ogni volta, diminuiscono le probabilità che gli ultimi lotti siano sproporzionatamente rumorosi.


1

Quando si allena la propria rete utilizzando un set di dati fisso, ovvero dati che non vengono mai mescolati durante l'allenamento. È molto probabile che si ottengano pesi molto alti e molto bassi come 40,70, -101.200 ... ecc. Questo significa semplicemente che la tua rete non ha appreso i dati di allenamento ma ha appreso il rumore dei dati di allenamento. Custodia classica di un modello overfit. Con tale rete otterrai informazioni dettagliate sui dati che hai utilizzato per la formazione. Se si utilizzano altri input per testarlo, il modello andrà in pezzi. Ora, quando mescoli i dati di allenamento dopo ogni epoca (iterazione dell'insieme generale), dai semplicemente input diversi ai neuroni in ogni epoca e questo regola semplicemente i pesi, il che significa che è più probabile che tu ottenga pesi "inferiori" più vicini allo zero e ciò significa che la tua rete può effettuare generalizzazioni migliori.

Spero fosse chiaro.


1

Ecco una spiegazione più intuitiva:

Quando si usa la discesa del gradiente, vogliamo che la perdita venga ridotta in una direzione del gradiente. Il gradiente viene calcolato dai dati di un singolo mini-batch per ogni ciclo di aggiornamento del peso. Ciò che vogliamo che accada è che questo gradiente basato su mini-batch è all'incirca il gradiente della popolazione, perché si prevede che ciò produca una convergenza più rapida. (Immagina di alimentare la rete con 100 dati di classe 1 in un mini-batch e 100 di dati di classe 2 in un altro, la rete passerà con il mouse. Un modo migliore è di alimentarlo con 50 class1 + 50 class2 in ciascun mini-batch.)

Come raggiungere questo obiettivo poiché non è possibile utilizzare i dati sulla popolazione in un mini-batch? L'arte della statistica ci dice: mescolare la popolazione e i primi pezzi batch_size di dati possono rappresentare la popolazione. Questo è il motivo per cui dobbiamo mescolare la popolazione.

Devo dire che non è necessario mescolare se si dispone di un altro metodo per campionare i dati dalla popolazione e assicurarsi che i campioni possano produrre un gradiente ragionevole.

Questa è la mia comprensione. Spero che sia d'aiuto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.