Additive skip connection

Original article was published by Giuseppe Pio Cannata on Deep Learning on Medium


Come possiamo notare dalla Fig.2 il gradiente L /∂X è diviso in due componenti. La prima attraversa i weight layers ed è detta percorso di Plain. La seconda componente, detta percorso di Skip, non attraversa i weight layers evitando le derivate ∂z /∂a. Questo comportamento consente di retropropagare l’informazione in modo diretto ad ogni strato meno profondo [2]. Una considerazione su ∂A/∂H. In Fig.2 supponiamo che il valore della derivata sia unitario. La funzione ReLU ha una derivata unitaria per valori di input positivi e nulla per valori negativi. Nella pratica, considerando delle features maps, è improbabile che F(X,W)+X sia totalmente negativo tanto da annullare il gradiente.

Di quanti layers ho bisogno?

Lasciamo la matematica per un’istante e cerchiamo di dare una spiegazione intuitiva. L’ additive skip connection, conosciuto anche con il nome di blocco residuale, costituisce l’elemento fondamentale dell’architettura di rete ResNet (rete residuale). Il nome residuo è dovuto alla tecnica di apprendimento di un singolo blocchetto:

Formula 2

Il principio alla base di ResNet è il seguente:

Il modello con più layers dovrebbe essere in grado di performare almeno come un modello meno profondo

Il numero di layers in un rete neurale è un hyperparametro. Certo, esistono delle architetture già “pronte all’uso”, ma spesso accade di doverle modificare per adattarle al nostro problema. In accordo con quanto scritto qui , ciò che potremmo fare è aggiungere alcuni layers per provare a generalizzare ulteriormente. Bene, consideriamo la rete 1 con un numero di layers N a cui andiamo ad aggiungere una blocco residuale dopo l’ultimo strato. Cosi facendo otteniamo la rete 2 mostrata in Fig.3. Ovviamente la rete 2 ha una profondità maggiore della 1.

Fig.3: Rete neurale con aggiunta di un blocco residuale. Immagine tratta dal [3]

L’ additive skip connection fa queste due considerazioni:

  • W=0: se non imparo nulla di nuovo almeno ricordo il passato

Supponiamo che i pesi dei layers N+1 e N+2 siano nulli. In una CNN l’operazione di convoluzione produrebbe delle features maps vuote: i kernels non evidenziano nessuna caratteristica sull’input X producendo così features maps con pixels di valore 0. Questo accade quando la rete non riesce a generalizzare ulteriormente, o meglio, l’identità è ottima. Con l’utilizzo del blocco residuale, nonostante i layers N+1 e N+2 non riescano ad estrarre informazione, riusciamo comunque a non annullare l’output consentendo all’informazione X di procedere in avanti. Se avessimo utilizzato un blocco di Plain (come quello presentato in Fig.1), l’output della rete 2 sarebbe stato un insieme di valori nulli perdendo così le informazioni su X. Volendo avere un punto di vista differente possiamo dire che la rete 2, grazie al blocco residuale, performa come la rete meno profonda 1.

Ma cosa c’entra il residuo? In questo caso il blocco residuale cerca di mappare il suo input (l’identità) pur di non perdere informazione, o meglio, apprende il residuo:

Formula 3
  • W !=0: se imparo qualcosa il passato mi è comunque di aiuto

Supponiamo che i pesi dei layers N+1 e N+2 non siano nulli, per cui un’operazione di convoluzione produrebbe delle features maps non vuote. In questo caso l’identità X non è ottima poiché riusciamo ancora ad estrarre informazione. Bene, “perturbando” l’identità con quanto estratto in N+1 e N+2 aumentiamo la precisione dell’identità.

Cosa c’entra il residuo? In questo caso il blocco residuale impara a mappare la perturbazione, o meglio, il suo residuo.

Oltre il gradiente

Abbiamo analizzato sia da un punto di vista analitico che intuitivo i vantaggi per il gradiente nell’utilizzo dell’additive skip connection. Vorrei spendere ancora qualche parola su due punti importanti.

Features spaziali in profondità

Come sappiamo in una rete convoluzionale gli strati in prossimità dell’input estraggono features spaziali, al contrario i layers più in profondità estrarranno features semantiche. Nelle reti Plain come ad esempio VGG16 o VGG19 le informazioni spaziali difficilmente confluiranno in profondità nella rete. In questo modo perdiamo delle informazioni importanti che potrebbero consentire alla rete di lavorare meglio. Nelle reti residuali abbiamo modo di evitare questa perdita di informazione.

In Fig.4 è possibile confrontare le features maps estratte dalla rete Plain VGG19 con quelle estratte, allo stesso livello, nella corrispettiva rete residuale ResNet50. Come possiamo osservare, nelle features maps della ResNet50 oltre ad informazioni semantiche troviamo anche informazioni spaziali: i contorni sono ancora presenti in due delle quattro features maps presentate contrariamente a quanto accade per VGG19 che si concentra sulle parti del soggetto in input.