Di quanti dati hai bisogno per una rete neurale convoluzionale?


14

Se ho una rete neurale convoluzionale (CNN), che ha circa 1.000.000 di parametri, quanti dati di addestramento sono necessari (supponiamo che stia facendo una pendenza stocastica)? C'è qualche regola empirica?

Note aggiuntive: quando ho eseguito la discesa gradiente stocastica (ad es. 64 patch per 1 iterazione), dopo ~ 10000 iterazioni, l'accuratezza del classificatore può raggiungere un valore approssimativo costante. Questo significa che non sono necessari molti dati? Come i dati 100k-1000k.

Risposte:


11

Al fine di capire se più dati saranno utili o meno, è necessario confrontare le prestazioni dell'algoritmo sui dati di addestramento (cioè i dati utilizzati per addestrare la rete neurale) con le sue prestazioni sui dati di test (ovvero i dati che la rete neurale ha fatto non "vedere" in allenamento).

Una buona cosa da controllare sarebbe l'errore (o la precisione) su ogni set in funzione del numero di iterazione. Esistono due possibilità per il risultato di questo:

1) L'errore di addestramento converge a un valore significativamente inferiore rispetto all'errore di test. In questo caso, le prestazioni dell'algoritmo miglioreranno quasi sicuramente con più dati.

2) L'errore di addestramento e l'errore di test convergono all'incirca allo stesso valore (con l'errore di training probabilmente ancora leggermente inferiore all'errore di test). In questo caso, i dati aggiuntivi da soli non aiuteranno il tuo algoritmo. Se hai bisogno di prestazioni migliori di quelle che stai ottenendo a questo punto, dovresti provare ad aggiungere più neuroni ai tuoi livelli nascosti o ad aggiungere più livelli nascosti. Se vengono aggiunte abbastanza unità nascoste, scoprirai che il tuo errore di test diventerà notevolmente più elevato dell'errore di addestramento e più dati ti aiuteranno a quel punto.

Per un'introduzione più approfondita e utile su come prendere queste decisioni, consiglio vivamente il corso Coursera di Andrew Ng , in particolare le lezioni di "Valutazione di un algoritmo di apprendimento" e "Bias vs. varianza".


3

La risposta ingenua è che sono sempre necessari più dati. L'iterazione sullo stesso set di dati che dice più epoche ti aiuta a "perfezionare" il risultato, ma non migliora il risultato quanto avere più dati.

Ad esempio, sto addestrando una convnet per eseguire la modellazione delle frasi e per verificare se ho bisogno di più dati, ho provato a dividere il set di dati di allenamento in un sottoinsieme più piccolo e ho provato a testarlo.

Usando l'intero set di dati e la formazione per 10 iterazioni ho ottenuto una precisione del 93% sul mio benchmark e continua a migliorare. Invece quando ho ripetuto il 10% del set di dati per 100 iterazioni ho ottenuto un 85%.

Quindi cerca sempre di avere più dati, ma se non puoi, fare più epoche può essere un buon compromesso, ma alla fine il tuo modello converge meglio se hai alimentato la rete con dati sempre nuovi.


1
Grazie per la tua risposta! Sì, so più dati hai, meglio sarai, ma poi esattamente quanti dati hai bisogno sono ciò di cui non sono sicuro. Perché non sempre puoi avere più dati. Ad esempio, ho bisogno di assumere qualcuno per fare annotazioni ed etichette, voglio capire quando dovrei smettere ...
RockTheStar

vuol dire che se ho un piccolo set di dati il ​​mio modello non converge?
samsamara,

3

Immagino che la cosa più importante sia che i campioni nei tuoi dati siano ben distribuiti, perché non importa quanti dati hai, più dati sarebbero sempre migliori. Dopotutto, se cerchi di imparare a distinguere tra le immagini di cani e gatti, non puoi aspettarti che il tuo modello funzioni bene se le dai solo immagini di gatti.

Come suggerito nella risposta di Kevin L , ha senso considerare la differenza tra errore di allenamento ed errore di prova. Se i dati dei test sono indipendenti dai dati di allenamento, ciò fornisce un'indicazione del grado di generalizzazione del modello con i dati non disponibili. Qualcosa a cui vorrei aggiungere è il fatto che una grande differenza tra errore di allenamento e test ti dice solo che il tuo modello non si generalizza bene, cioè ti stai adattando troppo ai dati di allenamento. Più dati probabilmente aiuteranno, perché ora la rete deve anche modellare i punti dati extra, quindi non può più adattarsi così tanto. Tuttavia, potrebbe essere più utile cambiare il tuo modello in modo che generalizzi meglio. Questo capitolo di un libro eccellente spiega quali tipi di regolarizzazione esistono e come possono essere applicati nelle reti per ottenere una migliore generalizzazione.

Se stavi cercando una misura più quantitativa, di recente ho trovato questa domanda su quora. Si tratta di un codificatore automatico, ma immagino che dovrebbe essere applicabile anche al tuo esempio. Non ho idea se questo sia corretto (per favore fatemi sapere), ma potrei ragionare sul fatto che, ad esempio per MNIST, si potrebbe sostenere che si tenta di ridurre le immagini con un massimo di 28 * 28 * 8 * 10 000 = 62 720 000 bit entropia a dieci classi in codifica one-hot con 10 * 10 * 10 000 = 1 000 000 bit di entropia. Poiché siamo interessati solo a 1 000 000 bit di entropia in uscita, possiamo dire che con 1 000 000 parametri, ogni parametro rappresenta un singolo bit, che è 1e-4 bit per campione. Ciò significa che avresti bisogno di più dati. Oppure hai troppi parametri, perché ad esempio con 100 parametri, hai 10 000 bit per parametro e quindi 1 bit per campione. Tuttavia,


Grazie per il tuo suggerimento Penso che oggigiorno le persone escoglino una strategia diversa per ridurre il numero di dati per un compito specifico.
RockTheStar,

0

Un altro metodo generalmente utilizzato per capire se la tua rete ha appreso abbastanza funzionalità è quello di visualizzare i filtri iniziali. Se la rete è ben addestrata, dovrebbe visualizzare un filtro uniforme. Un filtro rumoroso generalmente indica che la rete non è stata sufficientemente addestrata o che è stata sovrautilizzata. Per maggiori informazioni leggi questa pagina .

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.