Perché le reti neurali necessitano di selezione / ingegneria delle caratteristiche?


14

Soprattutto nel contesto delle competizioni kaggle ho notato che le prestazioni del modello riguardano la selezione / ingegneria delle caratteristiche. Sebbene io possa comprendere appieno il motivo per cui si tratta degli algoritmi ML più convenzionali / di vecchia scuola, non vedo perché ciò avvenga quando si utilizzano reti neurali profonde.

Citando il libro di Deep Learning:

L'apprendimento profondo risolve questo problema centrale nell'apprendimento della rappresentazione introducendo rappresentazioni espresse in termini di altre rappresentazioni più semplici. L'apprendimento profondo consente al computer di costruire concetti complessi partendo da concetti più semplici.

Quindi ho sempre pensato che se "l'informazione è nei dati", una rete neurale sufficientemente profonda e ben parametrizzata acquisirebbe le caratteristiche giuste con un tempo di addestramento sufficiente.


4
il tuo cervello è ancora più potente di una macchina, quindi un piccolo aiuto da parte di un essere umano fa
molta

chi dice di aver bisogno della selezione / ingegneria delle funzionalità? puoi dare qualche riferimento? quando lavori con le immagini, funzionano praticamente end-to-end ...

@ user2137591 questo è il punto. Ho l'impressione che in letteratura le reti neurali siano spesso rappresentate come un passo avanti rispetto all'apprendimento automatico convenzionale poiché presumibilmente presentano funzionalità di ingegneria e selezione automaticamente (come suggerito da Goodfellow, Bengio, Courville nel libro Deep Learning). Questo è vero in molti compiti nel CV o nella PNL in cui credo che le informazioni siano ancora scarse. D'altra parte, nella scienza dei dati competitivi (Kaggle), dove sono disponibili molti dati rumorosi, una convinzione comune è che il fattore più importante nella costruzione di una soluzione competitiva sia trovare la "caratteristica magica".
Cefa il

Posso parlare per CompVis, dove non riesco a ricordare alcun progetto che esegua l'ingegnerizzazione delle funzionalità per alimentare successivamente le reti ... questo vale anche per i dati di immagini mediche, dove la qualità delle immagini è generalmente inferiore. forse questo è diverso in altri campi ... hai qualche documento o qualche fonte pubblicata a cui puoi fare riferimento al riguardo? Lo apprezzerei, grazie.

Risposte:


18
  • Che cosa succede se la rete "sufficientemente profonda" è intrattabilmente enorme, rendendo la formazione del modello troppo costosa (sommando le tasse AWS!) O perché è necessario distribuire la rete in un ambiente limitato dalle risorse?

  • Come puoi sapere a priori che la rete è ben parametrizzata? Può essere necessaria molta sperimentazione per trovare una rete che funzioni bene.

  • Cosa succede se i dati con cui stai lavorando non sono "amichevoli" con i metodi di analisi standard, come una stringa binaria comprendente migliaia o milioni di bit, in cui ogni sequenza ha una lunghezza diversa?

  • Che cosa succede se sei interessato ai dati a livello di utente, ma sei costretto a lavorare con un database che raccoglie solo dati a livello di transazione?

  • Supponiamo che i tuoi dati siano sotto forma di numeri interi come e il tuo compito è prevedere la somma delle cifre, quindi l'obiettivo in questo esempio è . È estremamente semplice analizzare ogni cifra in un array e quindi sommare l'array ("feature engineering") ma altrimenti impegnativo.3 , 5 , 18 , 712,32,486,73,5,18,7

Vorremmo vivere in un mondo in cui l'analisi dei dati è "chiavi in ​​mano", ma questo tipo di soluzioni di solito esiste solo in casi speciali. Molto lavoro è stato dedicato allo sviluppo di CNN profonde per la classificazione delle immagini - il lavoro precedente ha fatto un passo che ha trasformato ogni immagine in un vettore a lunghezza fissa.

L'ingegnerizzazione delle funzionalità consente al professionista di trasformare direttamente la conoscenza del problema in un vettore a lunghezza fissa adatto alle reti feed-forward. La selezione delle funzioni può risolvere il problema di includere così tante caratteristiche irrilevanti da perdere qualsiasi segnale, oltre a ridurre drasticamente il numero di parametri nel modello.


6

Le parole chiave qui sono priori e scala . Ad esempio, immagina di provare a prevedere l'età di una persona da una fotografia. Con un set di dati di immagini ed età, potresti formare un modello di apprendimento profondo per fare le previsioni. Questo è oggettivamente davvero inefficiente perché il 90% dell'immagine è inutile e solo la regione con la persona è effettivamente utile. In particolare, il viso della persona, il suo corpo e forse i suoi vestiti.

D'altra parte, è possibile invece utilizzare una rete di rilevamento oggetti pre-addestrata per estrarre prima i riquadri di delimitazione per la persona, ritagliare l'immagine e quindi passarla attraverso la rete. Questo processo migliorerà in modo significativo l'accuratezza del modello per una serie di motivi:

1) Tutte le risorse di rete (ovvero i pesi) possono concentrarsi sull'effettivo compito di previsione dell'età, invece di dover prima trovare la persona. Ciò è particolarmente importante perché il volto della persona contiene funzioni utili. Altrimenti, le funzioni più sottili di cui hai bisogno potrebbero perdersi nei primi livelli. In teoria una rete abbastanza grande potrebbe risolvere questo problema, ma sarebbe terribilmente inefficiente. L'immagine ritagliata è anche notevolmente più regolare rispetto all'immagine originale. Mentre l'immagine originale ha un sacco di rumore, è discutibile che le discrepanze nell'immagine ritagliata siano molto più fortemente correlate all'obiettivo.

2) L'immagine ritagliata può essere normalizzata per avere la stessa scala . Questo aiuta la seconda rete a gestire i problemi di ridimensionamento, perché nell'immagine originale, le persone possono verificarsi vicino o lontano. La normalizzazione preventiva della scala consente di garantire che l'immagine ritagliata contenga una persona che riempie l'intera immagine ritagliata (nonostante sia pixelata se fosse lontana). Per vedere come ciò può aiutare a ridimensionare, un corpo ritagliato che è metà della larghezza e dell'altezza dell'immagine originale ha 4 pixel in meno da elaborare, e quindi la stessa rete applicata a questa immagine avrebbe 4 volte il campo ricettivo della rete originale su ogni livello.

Ad esempio, nella competizione polmonare kaggle, un tema comune nelle soluzioni migliori era una sorta di pre-elaborazione sulle immagini polmonari che le ritagliava il più possibile e isolava i componenti di ciascun polmone. Ciò è particolarmente importante nelle immagini 3D poiché l'effetto è cubico: rimuovendo il 20% di ogni dimensione, si elimina quasi la metà dei pixel!


4

La mia intuizione su questo fenomeno è collegata alla complessità del modello da apprendere. Una rete neurale profonda può effettivamente approssimare qualsiasi funzione in teoria , ma la dimensione dello spazio dei parametri può essere davvero grande, come in milioni. Quindi, effettivamente trovare una buona rete neurale è davvero difficile. Mi piace pensare all'ingegnerizzazione delle funzionalità come a dare un vantaggio all'algoritmo, fornendo alcune informazioni aggiuntive sulla rappresentazione dei dati che è abbastanza buono in un certo senso. Naturalmente, questa non è una spiegazione formale, a questa domanda potrebbe essere davvero difficile rispondere con rigore scientifico.

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.