Apprendimento profondo: come faccio a sapere quali variabili sono importanti?


20

In termini di gergo della rete neurale (y = Peso * x + bias) come faccio a sapere quali variabili sono più importanti di altre?

Ho una rete neurale con 10 input, 1 layer nascosto con 20 nodi e 1 layer di output con 1 nodo. Non sono sicuro di sapere quali variabili di input sono più influenti rispetto ad altre variabili. Quello che sto pensando è che se un input è importante, avrà una connessione altamente ponderata con il primo strato, ma il peso potrebbe essere positivo o negativo. Quindi quello che potrei fare è prendere il valore assoluto dei pesi dell'input e sommarli. Gli input più importanti avrebbero somme più elevate.

Quindi, ad esempio, se la lunghezza dei capelli è uno degli input, allora dovrebbe avere 1 connessione a ciascuno dei nodi nel livello successivo, quindi 20 connessioni (e quindi 20 pesi). Posso semplicemente prendere il valore assoluto di ogni peso e sommarli insieme?


3
Certamente puoi farlo, ma non è chiaro cosa significhi realmente oltre a "la somma di tutti i pesi per questa variabile su tutte le connessioni". Chiamarlo "importanza" è del tutto arbitrario.
Matthew Drury,

1
Voglio solo QUALSIASI informazione che suggerisca che una variabile è importante e penso che questo potrebbe essere un buon modo.
user1367204

Risposte:


16

Quello che descrivi è davvero un modo standard per quantificare l'importanza degli input neurali-netti. Si noti che affinché ciò funzioni, tuttavia, le variabili di input devono essere in qualche modo normalizzate. Altrimenti i pesi corrispondenti alle variabili di input che tendono ad avere valori maggiori saranno proporzionalmente più piccoli. Esistono diversi schemi di normalizzazione, come ad esempio sottrarre la media di una variabile e dividerla per la sua deviazione standard. Se le variabili non sono state normalizzate in primo luogo, è possibile eseguire una correzione sui pesi stessi nel calcolo dell'importanza, ad esempio moltiplicando per la deviazione standard della variabile.

.Ii=σij=1nhidden|wij|

Qui è la deviazione standard della i esima ingresso, ho i è l' i importanza esima di ingresso, w i j è il peso collegando il i esimo ingresso al j esimo nodo nascosto nel primo strato, e n nascosto è il numero di nodi nascosti nel primo livello.σiiIiiwijijnhidden

Un'altra tecnica consiste nell'utilizzare la derivata della mappatura della rete neurale rispetto all'input in questione, mediata rispetto agli input.

Ii=σi|dydxi|

Qui è l' i input, y è l'output e il valore di aspettativa viene preso rispetto al vettore degli input x .xiiyx


Funzionerebbe se uso solo le connessioni tra gli input e il primo layer nascosto (anziché utilizzare tutti i layer nascosti)?
user1367204

Dovresti usare solo il primo livello nascosto. Dopo uno strato, gli altri pesi non sono più legati a un input più di un altro. Ho modificato leggermente la risposta per chiarire questo.
Sam Marinelli,

Mi sono ricordato di un altro approccio e l'ho aggiunto alla risposta.
Sam Marinelli,

11

Una forza un po 'bruta ma efficace:

Prova a "eliminare" un input utilizzando una costante per una delle tue funzionalità di input. Quindi, addestrare la rete per ciascuno dei casi possibili e vedere come diminuisce la precisione. Gli input importanti forniranno il massimo beneficio alla precisione complessiva.


Questa è certamente una possibilità.
SmallChess,

6
C'è però una trappola: anche se una caratteristica è estremamente importante, se c'è un'altra caratteristica fortemente correlata alla prima, nessuna delle due sarà considerata importante dai tuoi criteri (la mancanza della prima è compensata dalla presenza di quest'ultima, mentre meno informativa ma più funzioni "uniche" appariranno più importanti in questo modo)
Firebug,

Questo a volte viene chiamato test di ablazione (più precisamente micro ablazione)
Veltzer Doron,

7

105

Per una rete poco profonda, questo fornisce un esempio di definizione dell'importanza variabile.

Per una rete davvero profonda, le persone non parlano troppo dell'importanza variabile. Perché gli input sono funzionalità di livello non elaborate, come i pixel di un'immagine.


Ho modificato il mio commento per riflettere ciò che intendevo dire. Volevo dire 20 nodi nel primo livello, non 5 nodi. Grande condivisione e grazie per aver distinto reti poco profonde / profonde.
user1367204,

9
@ hxd1011 non essere prude pedante, ma profondo significa più livelli non migliaia di unità nascoste :).
Rafael,

3

Il massimo che Ive ha trovato su questo elaborato è elencato in questo sito più specificamente si può guardare a questo . Se parli solo di modelli lineari, allora devi normalizzare i pesi per renderli interpretabili, ma anche questo può essere fuorviante su questo sul link menzionato. Alcune persone hanno provato a creare complesse funzioni di pesi per interpretare l'importanza degli input (di Garson, di Gedeon e di Milne) ma anche questo può essere fuorviante, puoi trovare di più su questo dopo aver fatto scorrere il primo link che ho citato. In generale, consiglierei di andare avanti interpretando i risultati con un granello di sale.

sarebbe d'accordo con la risposta di @ rhadar ma vorrei aggiungere quello invece di usare qualsiasi tentativo costante usando il valore medio per quell'input e non dimenticare di riqualificare la rete.

PS: scusa non ho potuto pubblicare più link o commentare qui non hanno molta reputazione.


1

Dato che hai:

  1. Un compito di classificazione
  2. Un modello addestrato
  3. Funzionalità normalizzate (tra 0 e 1)

Qualcuno ha provato:

  1. Azzerando i pregiudizi
  2. Passa ogni volta come caratteristiche un vettore caldo in cui tutte le funzioni sono zero tranne una.
  3. Esamina l'output.

In tal caso, penso che l'output sarebbe un numero che designa "l'importanza" della funzione poiché questo output rappresenterebbe anche l'output del percorso di questo segnale 1 all'interno della rete.

È come accendere una sola lampadina all'interno di un labirinto e misurare la luce che esce dall'uscita.


Non penso che questo sarebbe di grande aiuto. Quello che vorresti valutare è quanto la variazione di quell'input influirebbe sull'output (da solo o in combinazione con altre funzionalità)
elachell,
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.