Domanda iperparametri deep learning?

gerasia

Utente Electrum
30 Gennaio 2018
288
72
52
176
salve a tutti, mi sto trovando ad allenare una rete di deep learning (un autencoder precisamente).
Vorrei chiedervi se siete a conoscenza di qualche euristica per fittare gli iperparametri in maniera ottimale senza andare alla cieca
 
salve a tutti, mi sto trovando ad allenare una rete di deep learning (un autencoder precisamente).
Vorrei chiedervi se siete a conoscenza di qualche euristica per fittare gli iperparametri in maniera ottimale senza andare alla cieca
Di metodi per fittare i parametri in maniera ottimale ne esistono infiniti e di regola non vanno alla cieca, devi scegliere in base alle tue esigenze.
Li puoi dividere in due categorie: quelli non basati sul gradiente che non richiedono che la funzione di costo sia continua e derivabile, e quelli che lo sono.
I tre citati da @Deus Ex Machina (Grid Search, Radom Search e Bayesian optimization non richiedono la derivabilità). GridSearch è un metodo bruteforce, all'aumentare del numero dei parametri la complessità aumenta esponenzialmente. Per piccoli dataset puoi usarlo altrimenti scartalo. RandomSearch invece è sempre una variante del GridSearch ma a differenza di GridSearch che riparte ogni volta da capo provando ogni singolo parametro, pesca a caso dalla tabella e sebbene sia meno complesso non ti assicura che si avvicini abbastanza ai parametri ottimali, per questo esistono varianti ottimizzate dello stesso.
Bayesian optimization invece è più interessante e viene usato moltissimo, non ha bisogno di una funzione obbiettivo: dall'analisi degli iperparametri si crea un modello statistico basato sulla distribuzione di probabilità a priori e si tira fuori una funzione di costo e i parametri che la minimizzano tramite il modello creato. Dunque a differenza dei due metodi precedenti, l'analisi e la scelta degli iperparametri non è casuale o iterativa ma segue una logica che permette di ottenere quante più informazioni possibili in base al modello. Come puoi capire questo è piuttosto potente, ma allo stesso tempo può risultare molto pesante e soprattutto non è semplicissimo implementarlo.
Può succedere invece che la tua funzione sia differenziabile rispetto i parametri e qui puoi usare metodi basati sulla discesa del gradiente, qui ne trovi una infinità e sono quasi tutti basati sulla discesa del gradiente (i più famosi sono AdaGrad, Adam e kSGD se hai studiato i filtri di Kalmann).

Se sei uno studente universitario posso consigliarti un po' di roba che ho studiato per la tesi e che potrebbe essere interessante se vuoi approfondire alcuni aspetti dell'argomento.
 

Allegati

  • Autoencoder Evaluation and ...pdf
    296.6 KB · Visualizzazioni: 2