Come visualizzare / capire cosa sta facendo una rete neurale?


37

Le reti neurali sono spesso trattate come "scatole nere" a causa della loro struttura complessa. Questo non è l'ideale, in quanto è spesso utile avere una comprensione intuitiva del funzionamento interno di un modello. Quali sono i metodi per visualizzare il funzionamento di una rete neurale addestrata? In alternativa, come possiamo estrarre descrizioni facilmente digeribili della rete (ad es. Questo nodo nascosto funziona principalmente con questi input)?

Sono principalmente interessato a reti feed-forward a due livelli, ma vorrei anche ascoltare soluzioni per reti più profonde. I dati di input possono essere di natura visiva o non visiva.


1
Ecco un bell'esempio: playground.tensorflow.org
nobar

Risposte:


12

Le reti neurali sono talvolta chiamate "approssimatori di funzioni differenziabili". Quindi quello che puoi fare è differenziare qualsiasi unità rispetto a qualsiasi altra unità per vedere qual è il loro rapporto.

È possibile verificare anche la sensibilità dell'errore della rete rispetto a un input specifico.

Quindi, c'è qualcosa chiamato "campi ricettivi", che è solo la visualizzazione delle connessioni che vanno in un'unità nascosta. Ciò semplifica la comprensione di ciò che fanno particolari unità per i dati di immagine, ad esempio. Questo può essere fatto anche per livelli più alti. Vedere Visualizzazione delle funzionalità di livello superiore di una rete profonda .


13

Stimare l'importanza delle funzionalità aumentando in modo casuale ogni valore di una singola funzionalità e registrando come la tua funzione di fitness generale si degrada.

X1,io[0,1]run'nd(0,1)-0.5R2

Quindi classifica le tue caratteristiche in base al degrado delle funzioni di fitness e crea un bel grafico a barre. Almeno alcune delle funzionalità più importanti dovrebbero superare un controllo intestinale, data la tua conoscenza del dominio problematico. E questo ti consente anche di rimanere piacevolmente sorpreso dalle funzionalità informative che potresti non aspettarti.

Questo tipo di test di importanza delle funzioni funziona per tutti i modelli di black box, comprese le reti neurali e i grandi complessi CART. Nella mia esperienza, l'importanza delle funzionalità è il primo passo per capire cosa sta realmente facendo un modello.


1
Grazie per la risposta; questo è in realtà qualcosa che ho fatto e lo trovo molto utile. In questa domanda, però, sto cercando qualcosa di più all'interno della rete piuttosto che trattarlo come una scatola nera.
rm999,


1

Nell'autunno 2011 ho seguito il corso gratuito di Machine Learning online di Standford tenuto da Andrew Ng e abbiamo visualizzato una rete neurale che era un rilevatore di volti. L'output era un volto generico. Voglio menzionarlo per completezza, ma non hai menzionato questo tipo di applicazione, quindi non ho intenzione di scavare i dettagli. :)


L'università è Stanford. Posso trovare il corso Andrew Ng sul web. Ho sentito Dick DeVeaux tenere una conferenza sulle reti neurali sostenendo che i neuroni ne nascondono una parte di ciò che sta realmente accadendo. è solo un altro tipo di classificatore non lineare e se invece di guardarlo dalla prospettiva del diagramma sono meglio compresi scrivendo ciò che fanno algebricamente. Spero di ricordare questo diritto.
Michael R. Chernick,

De Veaux e Ungar, Una breve introduzione alle reti neurali del 1997: "le reti neurali sembrano essere ovunque in questi giorni, e almeno nella loro pubblicità sono in grado di fare tutto ciò che le statistiche possono fare senza tutto il clamore e il fastidio di dover fare qualsiasi cosa tranne comprare un software ".
denis,

0

Il metodo di seguito indicato è tratto da questo link , visitare il sito per maggiori dettagli.

Inizia con un'immagine casuale, ovvero fornisci arbitrariamente valori ai pixel. "Successivamente, eseguiamo un passaggio in avanti utilizzando questa immagine x come input per la rete per calcolare l'attivazione a_i (x) causata da x in alcuni neuroni i da qualche parte nel mezzo della rete. Quindi eseguiamo un passaggio indietro (eseguendo backprop) per calcolare il gradiente di a_i (x) rispetto alle precedenti attivazioni nella rete. Alla fine del passaggio all'indietro ci rimane il gradiente ∂a_i (x) / ∂x , o come cambiare il colore di ciascun pixel in aumentare l'attivazione del neurone I. Facciamo esattamente questo aggiungendo una piccola frazione αα di quel gradiente all'immagine:

x ← x + α⋅∂a_i (x) / ∂x

Continuiamo a farlo ripetutamente finché non abbiamo un'immagine x 'che causa un'elevata attivazione del neurone in questione. "

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.