Cosa ha appena imparato la mia rete neurale? Di quali funzionalità si preoccupa e perché?


30

Una rete neurale apprende le caratteristiche di un set di dati come mezzo per raggiungere qualche obiettivo. Al termine, potremmo voler sapere cosa ha appreso la rete neurale. Quali erano le caratteristiche e perché gliene importava. Qualcuno può dare alcuni riferimenti sul corpo del lavoro che riguarda questo problema?

Risposte:


28

È vero che è difficile capire cosa stia imparando una rete neurale, ma c'è stato molto lavoro su questo fronte. Possiamo sicuramente avere un'idea di ciò che la nostra rete sta cercando.

Consideriamo il caso di una rete neurale convoluzionale per le immagini. Abbiamo l'interpretazione per il nostro primo livello che stiamo facendo scorrere i filtri sull'immagine, quindi il nostro primo livello nascosto corrisponde all'accordo tra piccoli pezzi dell'immagine e i nostri vari filtri. Possiamo visualizzare questi filtri per vedere qual è il nostro primo livello di rappresentazione:K

strato alexnet 1

Questa immagine è del primo strato di filtri da un AlexNet ed è presa da questo meraviglioso tutorial: http://cs231n.github.io/understanding-cnn/ . Questo ci consente di interpretare il primo livello nascosto come imparare a rappresentare l'immagine, costituito da pixel grezzi, come un tensore in cui ogni coordinata è l'accordo di un filtro con una piccola regione dell'immagine. Il livello successivo funziona quindi con queste attivazioni di filtro.

Non è così difficile capire il primo livello nascosto perché possiamo semplicemente guardare i filtri per vedere come si comportano, perché vengono applicati direttamente a un'immagine di input. Ad esempio, supponiamo che tu stia lavorando con un'immagine in bianco e nero (quindi i nostri filtri sono 2D anziché 3D) e hai un filtro simile a

[010141010].

Immagina di applicarlo a una regione 3x3 di un'immagine (ignorando il termine bias). Se ogni pixel avesse lo stesso colore, otterrai poiché si annullerebbero. Ma se la metà superiore è diversa dalla metà inferiore, diciamo, otterrai un valore potenzialmente elevato. Questo filtro, infatti, è un rilevatore di bordi, e possiamo capirlo applicandolo effettivamente alle immagini e vedendo cosa succede. Ma è molto più difficile capire gli strati più profondi perché l'intero problema è che non sappiamo come interpretare ciò a cui stiamo applicando i filtri.0

Questo articolo di Erhan et al (2009) concorda con questo: affermano che le prime visualizzazioni a strati nascosti sono comuni (e risale al 2009) ma visualizzare gli strati più profondi è la parte difficile. Da quel foglio:

Il principale risultato sperimentale di questa indagine è molto sorprendente: la risposta di un'unità interna alle immagini di input, in quanto funzione nello spazio dell'immagine, sembra essere unimodale, o almeno che il massimo si trova in modo affidabile e coerente per tutte le inizializzazioni casuali testate . Questo è interessante perché trovare questa modalità dominante è relativamente facile e visualizzarla fornisce quindi una buona caratterizzazione di ciò che l'unità fa.

Chris Olah et al ( https://distill.pub/2017/feature-visualization/ ) si basano su questo e discutono di come (1) in generale è possibile generare immagini che portano a grandi attivazioni al fine di avere un'idea di ciò che la rete sta cercando; oppure (2) acquisire immagini di input effettive e vedere come diverse parti dell'immagine attivano la rete. Quel post si concentra su (1).

Nell'immagine seguente, tratta da quell'articolo collegato di Olah et al., Gli autori discutono i diversi aspetti della rete che è possibile controllare. L'immagine all'estrema sinistra mostra il risultato dell'ottimizzazione dell'attivazione di un particolare neurone nello spazio dell'immagine di input e così via.

C. Olah et al

Consiglio vivamente di leggere questo articolo nella sua interezza se desideri una comprensione più profonda di questo, e leggendo i suoi riferimenti dovresti avere una grande comprensione di ciò che è stato fatto con questo.

Ora, ovviamente, questo era tutto per le immagini in cui noi come umani possiamo dare un senso agli input. Se stai lavorando con qualcosa di più difficile da interpretare, come solo un grande vettore di numeri, potresti non essere in grado di realizzare visualizzazioni così interessanti, ma in linea di principio potresti comunque considerare queste tecniche per valutare i vari neuroni, strati, ecc. .


2
+1 soprattutto per l'ultimo paragrafo. Personalmente penso che la gente della visione stia facendo delle visualizzazioni su questo gran numero di parametri.
Haitao Du,

ovviamente +1 per la lunga risposta ben scritta con riferimenti credibili.
Haitao Du,

1
@ hxd1011 grazie, e penso che Olah et al abbiano sottolineato in questo articolo che non è proprio giusto guardare a ciò che massimizza un singolo neurone poiché in realtà lo strato è come una base ed è più circa lo spazio che lo strato rappresenta che i vettori base esatta. Quindi, sebbene divertente da guardare, molte di queste visualizzazioni potrebbero non essere super penetranti
jld

1
Inoltre, un malinteso comune è che quando si prendono i filtri del primo strato, una patch di immagine che massimizzerà l'output di un dato neurone assomiglia esattamente a quel filtro. In realtà no, una patch che massimizza l'output di un neurone non assomiglia a niente che assomigli ai valori numerici del filtro, dal momento della sua convoluzione, non alla corrispondenza del modello. Ecco dove credo che risiedano esempi contraddittori.
Lugi,

Olah et al. post sul blog è bello, ma fanno un errore: "ottimizzano per la massima attivazione" (non esattamente quello, ma chiudono), trovano un'immagine che non assomiglia affatto alle immagini del set di addestramento e concludono che le CNN "vedono" diversamente da noi. Sebbene la conclusione sia ovviamente vera, il ragionamento è errato: la modalità di una distribuzione ad alta dimensione non assomiglia a un campione tipico di quella distribuzione. In altre parole, è proprio perché le CNN devono classificare i gatti, che la modalità di distribuzione non deve essere un gatto, ma un "gatto da incubo".
DeltaIV,

7

Neural Network è uno dei modelli di scatola nera che non darebbe regole "facili da capire" / o ciò che è stato appreso.

In particolare, ciò che è stato appreso sono i parametri nel modello, ma i parametri possono essere grandi: centinaia di migliaia di parametri è molto normale.

Inoltre, non è anche chiaro sulle importanti funzionalità apprese, puoi capire che il modello utilizza tutte le funzionalità, con molte operazioni complicate per ricavare i risultati, dove non è facile dire in un inglese semplice come il modello trasforma ogni funzione che lo utilizza.


In effetti, la rete neurale a uno strato (senza strato nascosto) con funzione logistica come funzione di attivazione è identica alla regressione logistica. La regressione logistica è molto ricca di interpretazioni. Ecco un esempio Ma con reti neurali complesse / livelli più nascosti, tale interpretazione non si applica.

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.