Perché i nodi di polarizzazione sono utilizzati nelle reti neurali?


29
  1. Perché i nodi di polarizzazione sono utilizzati nelle reti neurali?
  2. Quanti dovresti usare?
  3. In quali livelli dovresti usarli: tutti i livelli nascosti e il livello di output?

1
Questa domanda è un po 'ampia per questo forum. Penso che sarebbe meglio consultare un libro di testo sulle reti neurali, come Bishop Neural Networks for Pattern Recognition o Hagan Neural Network Design .
Sycorax dice di reintegrare Monica il

2
FTR, non credo sia troppo ampio.
gung - Ripristina Monica

Risposte:


24

Il nodo di polarizzazione in una rete neurale è un nodo che è sempre "attivo". Cioè, il suo valore è impostato su dai dati in un determinato modello. È analogo all'intercettazione in un modello di regressione e svolge la stessa funzione. Se una rete neurale non ha un nodo di polarizzazione in un determinato livello, non sarà in grado di produrre output nel livello successivo che differisce da (sulla scala lineare o il valore che corrisponde alla trasformazione di quando viene passato attraverso la funzione di attivazione) quando i valori della funzione sono .1000

inserisci qui la descrizione dell'immagine

Considera un semplice esempio: hai un percetron feed forward con 2 nodi di input e e 1 nodo di output . e sono funzioni binarie e impostate al loro livello di riferimento, . Moltiplica quei 2 per tutti i pesi che ti piacciono, e , somma i prodotti e attraverso qualsiasi funzione di attivazione che preferisci. Senza un nodo di polarizzazione, è possibile solo un valore di output, che può produrre un adattamento molto scarso. Ad esempio, utilizzando una funzione di attivazione logistica, deve esserex1x2yx1x2x1=x2=00w1w2y.5, che sarebbe terribile per classificare eventi rari.

Un nodo di polarizzazione offre una notevole flessibilità a un modello di rete neurale. Nell'esempio sopra riportato, l'unica proporzione prevista possibile senza un nodo di polarizzazione era , ma con un nodo di polarizzazione, qualsiasi proporzione in può essere adatta per i modelli in cui . Per ogni livello, , in cui viene aggiunto un nodo di polarizzazione, il nodo di polarizzazione aggiungerà parametri / pesi aggiuntivi da stimare (dove è il numero di nodi nel livello50%(0,1)x1=x2=0jNj+1Nj+1j+1). Un numero maggiore di parametri da installare implica che la formazione della rete neurale richiederà proporzionalmente più tempo. Aumenta anche la possibilità di overfitting, se non si hanno molti più dati che pesi da imparare.

Con questa comprensione in mente, possiamo rispondere alle tue domande esplicite:

  1. I nodi di polarizzazione vengono aggiunti per aumentare la flessibilità del modello per adattarsi ai dati. In particolare, consente alla rete di adattare i dati quando tutte le funzionalità di input sono uguali a e molto probabilmente diminuisce la distorsione dei valori adattati altrove nello spazio dati. 0
  2. In genere, viene aggiunto un singolo nodo di polarizzazione per il livello di input e ogni livello nascosto in una rete feedforward. Non aggiungeresti mai due o più a un dato livello, ma potresti aggiungere zero. Il numero totale è quindi determinato in gran parte dalla struttura della rete, sebbene possano essere applicate altre considerazioni. (Sono meno chiaro su come i nodi di polarizzazione vengono aggiunti alle strutture di rete neurale diverse da feedforward.)
  3. Principalmente questo è stato coperto, ma per essere esplicito: non aggiungerei mai un nodo di polarizzazione al livello di output; non avrebbe alcun senso.

La CNN è diversa in questo senso? da quando aggiungo distorsione ai miei livelli conv, le prestazioni (accuratezza) diminuiscono! e quando li rimuovo, in realtà va più in alto!
Rika,

@Hossein, non che io sappia, ma potresti fare una nuova domanda. Non sono un grande esperto lì.
gung - Ripristina Monica

Avrei ancora bisogno di nodi di polarizzazione se i miei input non andassero mai a 0?
alec_djinn,

1
@alec_djinn, sì. Quasi sicuramente il modello sarebbe distorto senza di loro, anche se non si avesse mai 0 per un valore di input. Per analogia, può essere utile leggere: quando è corretto rimuovere l'intercetta in un modello di regressione lineare?
gung - Ripristina Monica

1
@krupeshAnadkat, "Il nodo di polarizzazione in una rete neurale è un nodo che è sempre 'attivo'. Cioè, il suo valore è impostato su 1 senza tenere conto dei dati in un determinato modello." Quindi, se lo desideri, puoi connetterti, cambiando sempre il valore risultante del nodo su prima di moltiplicarlo per il peso, poiché un nodo di polarizzazione è un nodo il cui valore è sempre 1 . 1
gung - Ripristina Monica

2

Risposte semplici e brevi:

  1. Per spostare la funzione di input / essere più flessibile sulla funzione appresa.
  2. Un singolo nodo di polarizzazione per livello.
  3. Aggiungili a tutti i livelli nascosti e al livello di input, con alcune note a piè di pagina

In un paio di esperimenti nella mia tesi di master (ad es. Pagina 59), ho scoperto che il bias potrebbe essere importante per il primo strato (i), ma soprattutto agli strati completamente collegati alla fine sembra non avere un ruolo importante. Quindi uno può averli nei primi strati e non negli ultimi. Basta allenare una rete, tracciare la distribuzione dei pesi dei nodi di polarizzazione e potarli se i pesi sembrano essere troppo vicini allo zero.

Ciò potrebbe dipendere fortemente dall'architettura di rete / dal set di dati.


il nodo di polarizzazione avrebbe frecce collegate ad esso dal livello precedente? oppure contribuisce semplicemente al livello successivo moltiplicando il suo valore "1" per il peso nella somma ponderata passata all'attivazione. La risposta a questo farà risparmiare ore, per favore
aiutatemi

1
Il bias è solo un numero aggiunto per l'attivazione dei livelli successivi. Un modo per visualizzarlo è avere un 1valore costante nel livello precedente e un peso (un valore di polarizzazione) per ciascuno dei neuroni del livello successivo.
Martin Thoma,

2

Nel contesto delle reti neurali, la normalizzazione batch è attualmente lo standard di riferimento per la creazione di "nodi di bias" intelligenti. Invece di bloccare il valore di pregiudizio di un neurone, ti adatti invece alla covarianza dell'input del neurone. Quindi, in una CNN, applicheresti una normalizzazione batch solo tra il livello convoluzionale e il successivo livello completamente collegato (ad esempio, ReLus). In teoria, tutti i livelli completamente collegati potrebbero trarre vantaggio dalla normalizzazione in lotti, ma questo in pratica diventa molto costoso da implementare poiché ogni normalizzazione in lotti porta i propri parametri.

Per quanto riguarda il motivo, la maggior parte delle risposte ha già spiegato che, in particolare, i neuroni sono sensibili ai gradienti saturi quando l'input spinge l'attivazione all'estremo. Nel caso di ReLu questo verrebbe spinto a sinistra, dando un gradiente di 0. In generale, quando si allena un modello, si normalizzano prima gli ingressi alla rete neurale. La normalizzazione in batch è un modo per normalizzare gli input all'interno della rete neurale, tra i livelli.

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.