apprendimento profondo per compiti non immagine non PNL?


12

Finora ci sono molte applicazioni interessanti per l'apprendimento profondo nella visione artificiale o nell'elaborazione del linguaggio naturale.

Com'è in altri campi più tradizionali? Ad esempio, ho variabili sociodemografiche tradizionali e forse molte misurazioni di laboratorio e voglio prevedere una certa malattia. Sarebbe un'applicazione di deep learning se avessi molte osservazioni? Come potrei costruire una rete qui, penso che tutti i livelli di fantasia (convoluzionali ecc.) Non siano davvero necessari ?! Basta approfondire?

Nel mio set di dati specifico, ho provato alcuni algoritmi di apprendimento automatico comuni come foreste casuali, gbm ecc. Con risultati contrastanti per quanto riguarda l'accuratezza. Ho un'esperienza di apprendimento profondo limitata con il riconoscimento delle immagini.


1
Potrebbe essere meglio guardare un approccio diverso, ad esempio XGBoost, a seconda di quanto sono "molte osservazioni". Puoi chiarire se il tuo obiettivo è specificamente quello di provare approcci di apprendimento profondo o di ottenere la massima precisione?
Neil Slater

@NeilSlater il mio obiettivo sarebbe quello di ottenere una precisione maggiore rispetto a metodi consolidati come xgboost, se ciò fosse possibile in tal caso
spore234

1
È possibile, ma nella mia esperienza non è probabile a meno che tu non abbia davvero molti dati.
Neil Slater

Matlab fornisce documentazione su "Suggerimenti e trucchi per l'apprendimento profondo". Ho avuto la stessa domanda e la pagina ha fornito una guida molto utile su buoni esempi. ad esempio potrebbe essere necessario eseguire la sequenza / sequenza / classificazione delle serie temporali / regressione utilizzando l'apprendimento approfondito.
Sami Navesi,

Risposte:


10

Sì, puoi utilizzare tecniche di apprendimento profondo per elaborare dati non di immagine. Tuttavia, altre classi di modelli sono ancora molto competitive con le reti neurali al di fuori dell'elaborazione del segnale e delle attività correlate.

Per utilizzare approcci di deep learning su dati non di segnale / non di sequenza, in genere si utilizza una semplice rete multistrato feed-forward. Non sono necessari livelli convoluzionali o livelli di pooling. L'architettura migliore oltre a quella deve essere esplorata con convalida incrociata e può richiedere molto tempo per essere scoperta poiché gli NN profondi richiedono molto calcolo per allenarsi.

Nella mia esperienza nel tentativo di utilizzare reti neurali profonde (-ish, in genere ~ 5 strati) nelle competizioni di Kaggle:

  • Il dropout è ancora molto efficace per la regolarizzazione e il miglioramento della precisione

  • La normalizzazione dell'input - in genere significa 0, deviazione standard 1, è importante

  • Le funzioni di attivazione del livello nascosto possono fare la differenza. Sebbene ReLU riduca alcuni problemi con i gradienti che svaniscono, nella mia esperienza è meno robusto con dati non di segnale e vorrete qualche altra forma. Se hai solo pochi livelli, allora sigmoid o tanh funzionano ancora bene. Altrimenti, esamina le perdite di ReLU, PReLU, ELU e altre varianti di ReLU che tentano di correggere i suoi problemi con neuroni "morti".

  • Utilizza gli ottimizzatori progettati per l'apprendimento approfondito, come Adam, Adagrad o RMSProp

  • Utilizzare un approccio di inizializzazione del peso che funziona con l'apprendimento profondo, come Glorot.

  • Prendi in considerazione l'utilizzo dei livelli di normalizzazione batch. Non è qualcosa con cui ho molta esperienza, ma ho visto altre persone fare bene con questo approccio.

Nonostante tutto, XGBoost può sistematicamente e facilmente battere NN profonde con il minimo sforzo di messa a punto e allenamento a confronto (a seconda ovviamente del problema e dei dati che hai). Se la precisione è tutto per te, è possibile - anche se non garantito - che un insieme di NN profonde e altri modelli come XGBoost funzioneranno meglio di entrambi.


1

Una rete può essere appropriata ai fini della classificazione. Per questo, devi essere in grado di definire un set di formazione e un set di test dei tuoi dati che rappresentano i dati che la rete verrà richiesta di classificare in produzione. Ciò determina se è possibile ottenere una rete funzionante male, ragionevole o buona.

Considero i termini "apprendimento profondo" come fuorvianti: una rete non impara, puoi solo addestrarla.

Supponendo che sia possibile creare un set di addestramento e test, ad alto livello è possibile utilizzare a

  • Multistrato: se i tuoi dati non hanno ordine e le strutture hanno una posizione fissa.

  • Reti ricorsive: se l'ordine dei dati è importante per la classificazione

  • Convoluzione: se i tuoi dati hanno strutture come nelle immagini ma non c'è una posizione fissa.

Ottenere una buona configurazione, come il numero di livelli, richiede tentativi ed errori; è una specie di magia nera.

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.