- Perché i nodi di polarizzazione sono utilizzati nelle reti neurali?
- Quanti dovresti usare?
- In quali livelli dovresti usarli: tutti i livelli nascosti e il livello di output?
Risposte:
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 .
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 essere, 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 livello). 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:
Risposte semplici e brevi:
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.
1
valore costante nel livello precedente e un peso (un valore di polarizzazione) per ciascuno dei neuroni del livello successivo.
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.