È possibile addestrare una rete neurale in modo incrementale?


23

Vorrei addestrare una rete neurale in cui le classi di output non sono (tutte) definite dall'inizio. Sempre più classi verranno introdotte in seguito in base ai dati in arrivo. Ciò significa che, ogni volta che presento una nuova classe, avrei bisogno di riqualificare la NN.

Come posso addestrare un NN in modo incrementale, cioè senza dimenticare le informazioni precedentemente acquisite durante le precedenti fasi di addestramento?

Risposte:


10

Vorrei aggiungere a ciò che è già stato detto che la tua domanda tocca un'importante nozione di machine learning chiamata transfer learning . In pratica, pochissime persone addestrano un'intera rete convoluzionale da zero (con inizializzazione casuale), perché è un tempo e relativamente raro avere un set di dati di dimensioni sufficienti.

Le ConvNets moderne impiegano 2-3 settimane per allenarsi su più GPU su ImageNet. Quindi è comune vedere persone rilasciare i loro checkpoint ConvNet finali a beneficio di altri che possono usare le reti per la messa a punto. Ad esempio, la libreria Caffe ha uno zoo modello in cui le persone condividono i loro pesi di rete.

Quando è necessaria una ConvNet per il riconoscimento delle immagini, indipendentemente dal dominio dell'applicazione, è consigliabile prendere in considerazione una rete esistente, ad esempio VGGNet è una scelta comune.

Ci sono alcune cose da tenere a mente quando si esegue l' apprendimento del trasferimento :

  • Vincoli da modelli predefiniti. Nota che se desideri utilizzare una rete predefinita, potresti essere leggermente vincolato in termini di architettura che puoi utilizzare per il tuo nuovo set di dati. Ad esempio, non è possibile estrarre arbitrariamente i livelli Conv dalla rete preinstallata. Tuttavia, alcune modifiche sono dirette: grazie alla condivisione dei parametri, è possibile eseguire facilmente una rete predefinita su immagini di dimensioni spaziali diverse. Ciò è chiaramente evidente nel caso dei livelli Conv / Pool poiché la loro funzione di avanzamento è indipendente dalla dimensione spaziale del volume di input (purché i passi si adattino).

  • Tassi di apprendimento. È comune utilizzare una frequenza di apprendimento più piccola per i pesi ConvNet che vengono perfezionati, rispetto ai pesi (inizializzati casualmente) per il nuovo classificatore lineare che calcola i punteggi di classe del nuovo set di dati. Questo perché ci aspettiamo che i pesi ConvNet siano relativamente buoni, quindi non desideriamo distorcerli troppo rapidamente e troppo (specialmente mentre il nuovo Classificatore lineare sopra di essi viene addestrato dall'inizializzazione casuale).

Ulteriori riferimenti se si è interessati a questo argomento: quanto sono trasferibili le funzionalità nelle reti neurali profonde?


Il trasferimento dell'apprendimento non è l'unico modo per eseguire l'apprendimento incrementale.
nbro,

7

Ecco un modo per farlo.

Dopo aver allenato la rete, è possibile salvare i suoi pesi su disco. Ciò consente di caricare questi pesi quando diventano disponibili nuovi dati e continuare l'allenamento praticamente da dove era stato interrotto l'ultimo allenamento. Tuttavia, poiché questi nuovi dati potrebbero includere classi aggiuntive, è ora possibile eseguire un pre-training o una messa a punto della rete con i pesi precedentemente salvati. L'unica cosa che devi fare, a questo punto, è far sì che gli ultimi layer si adattino alle nuove classi che sono state ora introdotte con l'arrivo del tuo nuovo set di dati, soprattutto includi le classi extra (ad esempio, se il tuo ultimo layer inizialmente c'erano 10 classi e ora ne hai trovate altre 2, come parte del tuo pre-allenamento / perfezionamento, lo sostituisci con 12 classi). In breve, ripeti questa cerchia:

Ripetere


se si adattano solo le nuove classi nell'ultimo livello (classi di addestramento + nuove classi) il modello non può essere adatto perché vogliamo allenarsi con le nuove classi (solo) e il modello prevede un array con la forma di (training + il nuovo classi, ).
Joel Carneiro,
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.