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.
ย
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.
ย
Classificato come viso unicamente la figura a sinistra
ย
Archiettura
ย
La principale differenza nelle reti capsulari dunque consiste in unโarchitettura non profonda
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.
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
ย
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:
ย
ย
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 (
)
- Unโaltra versione della rete utilizza unโMLP (come Autoencoding) al fine di ricostruire lโimmagine di input (
)
La nostra funzione di perdita sarร dunque data da Loss Funcion =ย ย
Dove il termine p non รจ altro che un termine di penalizzazione al fine di non far incidere eccessivamente la seconda parte.
ย
ย
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
ย
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:
ย
ย
Grazie alla sua capacitร di ricostruzione possiamo non solo classificare ma segmentare oggetti anche sovrapposti (uno dei grandi limiti delle reti neurali convoluzionali)
ย