Icone color1 11

Reti Neurali Capsulari

Autore: Matteo Alberti

 

Le reti neurali convoluzionali ottengono grandi performance quando i dati in fase di test risultano esser molto simili a quelli utilizzati in fase di apprendimento ma, in caso di rotazioni, traslazioni o traasformazioni esse risultano soggette a scarsa capacità di generalizzazione. É commune prassi dunque andare a fornire al nostro training set attraverso data augmentation degli esempi di queste possibili variant ottenendo però l’effetto di far imparar mnemonicamente alla nostra rete (con la crescita computazionale legata alla maggior quantità di dati) piuttosto che aver un modello in grado di ben generalizzare una data situazione.

Negl’ultimi anni la ricerca nel campo della computer vision (per quanto riguarda il deep learning) si è focalizzato sul come aumentare la profondità di una rete aggiungendo più strati (layers) al fine di reaggiungere un maggior grado di astrazione (partendo dai primi strati convoluzionali in grado di estrarre piccolo forme, angoli o intensità di colore andiamo mano a mano a ricombinare semplici feauter in disegni sempre più complessi)

Per far ciò, al fine di tener sotto controllo il numero di parametri (ed i relativi tempi computazionali) utilizziamo un operatore, commune in tutte le reti profonde, ossia il pooling ( per la precisione la sua versione max-pooling) che ci permette di andar a ridurre il numero di parametri riducendo progressivamente la componente spaziale selezionando I valori più alti andando però a perdere le informazioni spaziali legate alle features estratte.

1

 

Dunque la ricerca sulle architetture di reti neurali si sta progressivamente focalizzando sull’obiettivo di apprendere come generalizzare meglio piuttosto che sul fornire dati sempre più processati. Un primo passo è stato fatto con le reti neurali capsulari dove, il nostro obiettivo risulta esser quello di ottenere un’Equivarianza (invarianza a rototraslazioni) andando a sostituire quell’operatore di pooling con una nuova struttura: il Dynamic Routing

 

 

Introduzione

Una capsula è un gruppo di neuroni. L’attività di un vettore di una capsula rappresenta i parametri di istanziazione quando un oggetto (o parte di esso) viene rilevato dalla rete. La lunghezza di tale vettore rappresenta la probabilità di esistenza della data classe mentre l’orientamento del vettore codifica informazioni spaziali (per esempio rotazioni e traslazioni) all’interno di una matrice di Posa.

 

Matrice di Posa: Una matrice di posa è uno strumento utilizzato nel rendering grafico dove la costruzione di un’immagine parte da una rappresentazione gerarchica di forme geometriche. Nel nostro caso l’obiettivo risulta esser un po’ l’obiettivo opposto; decostruire un’immagine nelle sue componenti di base di cui andremo a salvare la relativa posizione in riferimento alle altre features.

 

2.jpg

Quando una capsula al livello inferiore si attiva produce una predizione al possibile nodo di appartenenza alle capsule di livello superiore attraverso una matrice di trasformazione. Se una capsula di alto livello riceve sufficienti predizioni di appartenenza diviene attiva. Questo processo, chiamato dynamic routing, permette di sostituire il max pooling attraverso una selezione “intelligente” delle features da mantenere durante la fase di allenamento.

 

3

Classificato come viso unicamente la figura a sinistra

 

 

Archiettura

 

La principale differenza nelle reti capsulari dunque consiste in un’architettura non profonda

4

Andiamo ad analizzare i principali strati:

  • Il primo layer convoluzionale (256 kernels, 9×9, stride uguale ad uno, attivazione ReLu)

Nel primo strato convoluzionale andiamo a convertire le intensità dei pixels in features di basso livello di cui non ci importa di mantener la relativa posizione spaziale, anzi vogliamo utilizzare tutte quelle importanti proprietà di condivisione dei parametri utili per ridurre i tempi computazionali.

Il secondo strato dunque riceve in input le features estratte tramite convoluzione:

  • PrimaryCaps consiste in due strati nascosti

Il primo strato corrisponde al processo di rendering inverso prima descritto

Il secondo strato contrariamente è convoluzionale (32 capsule 8 dimensionali) dove ogni capsula rappresenta una features estratta dunque tramite una convoluzione con 9×9 kernels e stride uguale a due.

L’output della PrimaryCaps consiste dunque in 32x6x6 capsule 8 dimensionali.

  • DigitCaps

L’ultimo strato va a riprodurre in forma vettoriale quello che nelle reti convoluzionali faceva FC-Layer ossia andiamo a ridurre il numero di neuroni (in questo caso di capsule) fino ad ottenerne uno per ogni classe del target

 

Riassumendo le principali innovazioni:

  • Rimpiazzare i neuroni con le capsule
  • Sostituzione del max-pooling con il dynamic routing
  • Nuova funzione di attivazione
  • Architettura non profonda

 

 

Funzione di attivazione

 

Come introdotto precedentemente vogliamo che l’activity vector prodotto da una capsula rappresenti la probabilità di esistenza della data feature. Necessitiamo quindi di una nuova funzione di attivazione che non vada più a lavorare con scalari ma con vettori:

.

La seguente funzione, definita “squashing” non fa altro che normalizzare in nostro vettore fra zero ed uno mantenendo invariato l’orientamento del vettore stesso.

Questo ci permette non solo l’Equivarianza ma, nel caso di face-detection, per esempio, possiamo saper se e di quanti gradi il viso risulti ruotato.

5

Dynamic Routing

 

Dynamic Routing non è solo un max-pooling che seleziona il numero di connessioni in maniera più intelligente, esso ci permette di preservare, come descritto in precedenza, la “gerarchia fra le parti”

 

Il Dynamic Routing quindi è un processo iterativo, nella fase di forward, che connette capsule con attività simili

 

2.jpg 1

In ogni iterazione ogni capsula produce una matrice di moltiplicazioni con l’output delle capsule precedenti andando a selezionare unicamente quelle con prodotto scalare maggiore ed orientamento simile, andando ad analizzare:

 

5 1

 

1) Capsule a livello l ed il loro output  , r numero di iterazioni del routing

2)  coefficiente temporaneo necessario per iterazione inizializzato a zero

4)  è peso per capsule di «basso livello», utilizzo del softmax per ottenere uno scalare non negativo con somma ad uno.  Prima iterazione  è uguale per tutte le capsule essendo inizializzato da

5) Per ogni capsula di «alto livello» calcoliamo una combinazione lineare dei dati di input pesati con i coefficienti  ossia andiamo a sommarli e ridimensionarli

6) Applichiamo la funzione di squash per «normalizzare» ad 1 e preservar l’orientamento del vettore

 

 

Allenamento di una rete capsulare

 

Una volta fissato il forward pass attraverso il dynamic routing andiamo ad allenare la nostra rete attraverso una doppia funzione di perdita.

  • La prima parte viene allenata attraverso backpropagation come nelle classiche CNN dunque alleniamo i pesi in modo da massimizzare la norma della capsula relativa alla classe di target (L^i _\mu)
  • Un’altra versione della rete utilizza un’MLP (come Autoencoding) al fine di ricostruire l’immagine di input (L^i _p)

La nostra funzione di perdita sarà dunque data da Loss Funcion =  L^i = L^i_\mu + \rho L^i_p

Dove il termine p non è altro che un termine di penalizzazione al fine di non far incidere eccessivamente la seconda parte.

 

2.jpg 2

 

Questo funzione di autoencoding risulta possibile in quanto all’interno di ogni capsula finale (una per ogni classe del target) sono codificate tutte le informazioni per ricostruire l’immagine. Dunque possiamo creare una sorta di funzione discriminativa che vada a comparare i dati di input con il terget ricostruito mediante le informazioni delle matrice di posa)

 

Accuratezze raggiunte

1 1

 

Oltre alla classica Accuratezza, risulta interessante andare a valutare le proprietà intrinseche di questo modello:

Parametri CNN : 35.4 M (Deep)

Parametri Capsnet (8.2 M)

 

Il numero di parametric risulta sensibilmente minore grazie alla minor quantità di dati. Esso però diverge molto con large-dataset in quant il meccanismo non risulta ancora ottimizzato

 

Robustezza alle Trasformazioni Affini:

CNN 66%

CapsuleNet 79%

 

Alta capacità discriminatoria su oggetti sovrapposti:

 

2.jpg 3

 

Grazie alla sua capacità di ricostruzione possiamo non solo classificare ma segmentare oggetti anche sovrapposti (uno dei grandi limiti delle reti neurali convoluzionali)

 

0 commenti

Lascia un Commento

Vuoi partecipare alla discussione?
Fornisci il tuo contributo!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *