Il collo di bottiglia nell'applicazione pratica del deep learning


9

Dopo aver letto molti articoli di deep learning, una sorta di sensazione approssimativa è che ci sono molti trucchi nell'allenamento della rete per ottenere prestazioni migliori del normale. Dal punto di vista delle applicazioni del settore, è molto difficile sviluppare questo tipo di trucchi, tranne quei gruppi di ricerca d'élite in grandi aziende tecnologiche, ad esempio google o facebook. Quindi qual è il modo migliore per applicare gli algoritmi di apprendimento profondo in pratica. Ogni pensiero e suggerimento sarà molto apprezzato.

Risposte:


9

È vero, alcuni dettagli utilizzati per migliorare le prestazioni sono considerati trucchi e non saprai sempre se questi trucchi producono lo stesso miglioramento per i tuoi dati e la tua rete.

Alcune cose di cui avrai sicuramente bisogno:

  • Dati , molti
  • Le GPU ti permetteranno di eseguire esperimenti più velocemente e di provare più cose in un arco di tempo più breve.
  • Analisi della curva di apprendimento. Alla fine si tratta di prestazioni sul set di test, ma osservando sia il treno che le metriche di test è possibile identificare i motivi di prestazioni scadenti. Distorsione forte? Overfitting da troppi nodi nascosti?
  • La funzione di attivazione . Non credo sia un trucco sapere quale tipo di funzione di attivazione è necessaria. ReLU ha una caratteristica critica in quanto non si satura come sigmoidi e tanh. Un neurone con ReLU avrà più output di probabilità, ma non è necessario per i neuroni negli strati di medio livello. Il vantaggio che ottieni è mitigare la sparizione o l'esplosione dei gradienti e accelerare la convergenza.
  • Regolarizzazione . Potrebbe applicarsi come trucchi, ma se stai usando una delle principali librerie di deep learning puoi ottenere implementazioni standardizzate per la regolarizzazione tramite dropout.
  • Aumento dei dati. In pratica stai espandendo il tuo set di dati in modo sintetico senza il costo aggiuntivo dell'annotazione manuale. La chiave è aumentare i dati con trasformazioni che hanno senso. In modo che la rete possa vedere varianti dei dati che può incontrare durante la fase di test o quando viene distribuita nel prodotto. Per i dati visivi il ribaltamento orizzontale è banale e aggiunge molto guadagno. Il jitter dipende probabilmente dal tipo di dati e dal livello di rumorosità.
  • Immergersi nell'esplorazione dell'iperparametro può essere frustrante. Inizia con piccole reti e semplici procedure di allenamento. Reti più piccole sono più veloci da addestrare. Aggiungi altri livelli quando vedi segni di overfitting.
  • Buona l'inizializzazione . Le inizializzazioni casuali sono appropriate per valutare la capacità della rete di convergere, ma non porteranno necessariamente a prestazioni ottimali. Allo stesso tempo, continuare a ripetere l'iterazione potrebbe portare a un eccesso di adattamento della rete ai dati di addestramento. Se possibile, utilizzare una rete pre-addestrata che ha già appreso una rappresentazione e perfezionarla nel set di dati. Un pre-allenamento senza supervisione è un altro modo di procedere e può consentire alla procedura di allenamento supervisionata di iniziare da una posizione molto più promettente nello spazio di peso.
  • scrutinaretrucchi. Scopri cosa fa davvero il trucco. Un documento che descrive un piccolo dettaglio che è stato utilizzato per migliorare le prestazioni di una rete si concentrerà su quel nuovo aspetto. L'articolo potrebbe far parte di una sequenza di progetti su cui gli autori hanno lavorato. Il contesto del trucco potrebbe non essere sempre chiaro subito, ma per gli autori non è un trucco ma una tecnica che risolve un problema che avevano. A volte viene fuori una tecnica che viene trattata come un trucco e in seguito qualcuno ne analizzerà l'impatto e ne descriverà la funzione. Ad esempio, questo trucco equivale alla regolarizzazione L2 con cui più persone hanno familiarità. Possiamo decidere se provare questa nuova tecnica o attenerci alla regolarizzazione L2 che già conosciamo. Molti di questi trucchi provano a risolvere problemi di deep learning, come il rischio di overfitting, calcoli costosi, parametrizzazione eccessiva e pesi altamente ridondanti. Vale la pena prendersi il tempo per capire cosa fanno davvero questi trucchi. Comprendendo il problema che cercano di risolvere, possiamo giudicare l'applicabilità di diversi trucchi e scegliere quello che funziona bene con i vincoli che potremmo avere (ad es. Poca potenza di calcolo, piccolo set di dati)

2

Ecco un libro interessante Neural Networks: Tricks of the Trade , una versione aggiornata del 2012 del libro. Molti articoli di alcuni dei pionieri delle reti neurali.

ypx ha toccato magnificamente molte questioni pratiche con la formazione, quindi per toccare le altre questioni che hai sollevato: molti laboratori industriali d'élite pubblicano ancora i loro risultati. Ad esempio il team di Microsoft Research ha appena vinto ImageNet 2015 e ha pubblicato un rapporto tecnico che descrive il suo nuovo modulo deep net: Deep Residual Learning for Image Recognition , il team di Google ha anche pubblicato la sua architettura Inception, Going Deeper with Convolutions . In misura non banale c'è ancora una cultura nell'apprendimento automatico (per ora) della condivisione delle grandi innovazioni. Forse perché la chiave è l'accesso ai dati. Google e Facebook hanno semplicemente accesso ai dati che non abbiamo. Difficile dire quanto credito va all'innovazione algoritmica grezza e quanto va a enormi quantità di dati.

Per quanto riguarda cosa accadrà in futuro? Difficile da dire. È un problema che molte persone hanno sollevato dato il valore di queste aziende guidate dai dati e quanto competitivo sia il mercato. Ma per ora, penso che ci sia un buon equilibrio tra ciò che i laboratori di ricerca industriale condividono e non condividono. Capisco che non condividono la loro esatta implementazione del codice. Ma condividono alcune innovazioni molto nuove.

Trova ricercatori che pubblicano risultati importanti e leggono, leggono, leggono. Credo nell'AMA di Yann LeCun su Reddit, che ha affermato di essere un lettore vorace. Credo che questa sia la cosa più importante. E nella misura in cui è pratico, prova a ricreare i loro parametri di riferimento o applica il loro metodo a un set di dati che rientri nel tuo budget.

Penso a prescindere da dove ti trovi o quale sia la tua posizione nella vita, questo è il modo migliore per rimanere forte e continuare a sviluppare le tue abilità. Sii un lettore vorace e implementa le cose e costruisci l'intuizione. Personalmente non ho le risorse per partecipare alle competizioni ImageNet, ma la lettura di tutti gli articoli del gruppo ImageNet più performanti mi ha aiutato moltissimo.

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.