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 oย  apprendimento profondo ) 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.

2018/05/1.png

ย 

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)

ย 

Scroll to Top
Si informa che il giorno ๐ฏ๐ž๐ง๐ž๐ซ๐๐ขฬ€ ๐Ÿ‘ ๐Ÿ๐ž๐›๐›๐ซ๐š๐ข๐จ il sito sarร  fermo dalle ore 9.00 alle ore 18.00 per manutenzione straordinaria.