• Non ci sono risultati.

Analisi delle CNN più avanzate

5.1.3 Esempio di calcolo dimensioni modello di AlexNet

Le dimensioni di un modello (file .caffemodel ) di una rete derivano dalla quan-tità di parametri allenabili che essa possiede. Verrà mostrato nel dettaglio come, una volta progettata una rete, calcolare all’incirca le dimensioni del modello risultante. Esattamente come per la sottosezione precedente, questo

tipo di calcoli viene mostrato solo in questo caso perchè la rete in questione ha un’architettura relativamente semplice. Viene invece omesso per le reti che si vedranno dopo, in quanto la loro architettura potrebbe rendere questi calcoli complicati e confusionari, oltre al fatto che il procedimento sarebbe in generale sempre lo stesso e quindi diventerebbe tutto ripetitivo.

Vediamo dunque i dettagli del calcolo:

• il primo layer convoluzionale applica 96 kernel di dimensioni 11 x 11 x 3. Si avranno dunque 96*11*11*3 weight e 96 bias, per un totale di 34,944 parametri.

• il secondo layer convoluzionale applica 256 kernel di dimensioni 5 x 5 x 96. Dunque si hanno 256*5*5*96 weight e 256 bias, per un totale di 614,656 parametri.

• il terzo layer convoluzionale applica 384 kernel di dimensioni 3 x 3 x 256. Quindi 384*3*3*256 weight e 384 bias, per un totale di 884,736 parametri.

• il quarto layer convoluzionale applica 384 kernel di dimensioni 3 x 3 x 384. Quindi 384*3*3*384 weight e 384 bias, per un totale di 1,327,488 parametri.

• il quinto layer convoluzionale applica 256 kernel di dimensioni 3 x 3 x 384. Risultano 256*3*3*384 weight e 256 bias, per un totale di 884,992 parametri.

• il primo layer FC possiede 4096 unità e viene collegato ad un volume 6 x 6 x 256. Risultano 4096*6*6*256 weight e 4096 bias, per un totale di 37,752,832 parametri

• il secondo layer FC possiede 4096 unità e viene collegato ad un volume 1 x 1 x 4096. Risultano 4096*1*1*4096 weight e 4096 bias, per un totale di 16,781,312 parametri

• il terzo layer FC possiede 1000 unità e viene collegato ad un volume 1 x 1 x 4096. Risultano 1000*1*1*4096 weight e 1000 bias, per un totale di 4,097,000 parametri

Come si può notare si ha un numero enorme di parametri allenabili, in totale 62,377,960 (più di 62 milioni di parametri), di cui più di 58 milioni (58,631,144 per l’esattezza) di essi derivanti solo dai 3 FC layer. Se si mol-tiplica il numero totale di parametri trovato per un fattore 4, dimensioni in

byte di un float (ringrazio Michael Figurnov che su Caffe Users mi ha ricor-dato di aggiungere questo fattore al calcolo), otteniamo il numero di Byte che in totale il modello di AlexNet occupa in memoria, ovvero 249,511,840. Dividendo tale numero per 1024*1024 si ottiene ovviamente il medesimo va-lore in MegaByte e cioè più o meno 238 MB, di cui circa 224 MB dai FC layer e i rimanenti 14 MB dai layer convoluzionali.

Risulta quindi ovvio che in generale i FC layer sono i layer che possiedono il più grande numero di parametri allenabili, nonostante la loro funzione sia comunque più semplice rispetto a quella di un normale layer convoluzionale.

5.2 Reti VGG

VGG [19] è il nome di un team di persone che hanno presentato le proprie reti neurali durante la competizione ILSVRC-2014. Si parla di reti al plurale in quanto sono state create più versioni della stessa rete, ciascuna possedente un numero diverso di layer. In base al numero di layer n con weight che una di queste reti possiede, ognuna di esse viene solitamente chiamata VGG-n. Esistono poi altre versioni delle reti VGG menzionati in Ken Chatfield et al. [21], ma verranno tralasciate in quanto molto simili.

Un particolare comune a tutte le versioni è il seguente: tutte queste reti risultano essere più “profonde” rispetto a quella di AlexNet. Per “profonde”, si intende il fatto che sono costituite da un numero di layer con parametri allenabili maggiore di AlexNet, in questo caso da 11 a 19 layer allenabili in totale. Spesso si considerano solo i layer allenabili dato che sono quelli che incidono di più nell’elaborazione e nelle dimensioni del modello, come visto nel paragrafo precedente. La struttura complessiva rimane tuttavia molto simile: sono sempre presenti una serie iniziale di layer convoluzionali ed una serie finale di FC layer, quest’ultima esattamente uguale a quella di Alex-Net. Ciò che cambia dunque è il numero di layer convoluzionali utilizzati, ed ovviamente i loro parametri. La figura 5.3 illustra tutte le varianti costruite dal team.

Ogni colonna, partendo da sinistra e andando verso destra, mostra una determinata rete VGG, dalla meno profonda alla più profonda. I termini in grassetto mostrano cosa è stato aggiunto in ciascuna versione rispetto a quella precedente. Non sono mostrati nella figura i ReLU layer, ma nelle reti ne esiste uno dopo ogni layer convoluzionale, come sempre.

Tutti i layer di pooling effettuano un pooling senza overlapping, cioè con estensione 2 x 2 e stride 2, ed utilizzano la funzione di MAX nelle varie selezioni.

Figura 5.4: Totale dei parametri delle reti VGG (in milioni)

Tutti i layer convoluzionali utilizzano uno stride pari a 1. Si noti il fatto che rispetto ad AlexNet non vi sono layer convoluzionali con un receptive field piuttosto grande: qui tutti i receptive field hanno dimensioni 3 x 3, fatta eccezione per un paio di layer convoluzionali in VGG-16 aventi un receptive field 1 x 1. Si ricorda che un layer convoluzionale avente stride pari ad 1 non modifica le dimensioni spaziali dell’input, mentre modifica il valore della profondità che diventa uguale al numero di kernel utilizzati. Dunque in pratica i layer convoluzionali delle VGG non intaccano mai le dimensioni di larghezza e altezza dei volumi di input; solo i layer di pooling lo fanno.

L’idea di utilizzare una serie di layer convoluzionali con un receptive field più piccolo, che comunque complessivamente alla fine simulano un singolo layer convoluzionale con un receptive field più grande, è motivata dal fatto che in questo modo si utilizzano più layer ReLU invece di uno solo, incre-mentando dunque maggiormente la non linearità della funzione di attivazione e rendendola dunque più discriminante; inoltre serve per ridurre il numero di parametri utilizzati. Si consideri ad esempio una serie di 3 layer convo-luzionali con receptive field 3 x 3 x C, con C kernel in totale per ognuno: l’ammontare dei parametri per questa serie è pari a 3 ∗ (3 ∗ 3 ∗ C ∗ C) = 27C2. Con un singolo layer convoluzionale avente C kernel, ognuno di dimensioni 7 x 7 x C, come quello di AlexNet, si avrebbero invece 1 ∗ (7 ∗ 7 ∗ C ∗ C) = 49C2

parametri, molti di più rispetto a prima.

L’utilizzo invece dei layer convoluzionali 1 x 1 con stride 1 è una stra-tegia per aumentare anche in questo caso la non linearità della funzione di attivazione senza intaccare le dimensioni spaziali dei volumi e nemmeno la dimensione della profondità dato che ciascuna serie di layer convoluzionali ha lo stesso numero di kernel. Di fatto dunque le dimensioni dei volumi riman-gono esattamente le stesse fino all’applicazione di un layer di pooling; poi si procede con una nuova serie di layer convoluzionali con un numero maggiore di kernel. L’aumento della non linearità deriva dal fatto che dopo ogni layer convoluzionale c’è sempre un layer ReLU.

Nonostante forse si possa pensare che questa rete, con i vari stratagemmi visti, non possegga molti parametri, la tabella in figura 5.4 dice il contrario: essa mostra per ciascuna versione il numero totale approssimato di parametri allenabili posseduti (in milioni).

quanto, complessivamente e a parità di dataset, hanno prestazioni superiori in confronto ad essa. Il concetto principale dimostrato con le reti VGG (e non solo) è che più una rete neurale convoluzionale è profonda e più le sue pre-stazioni aumentano. E’ necessario però disporre di un hardware sempre più potente, altrimenti l’allenamento di una rete diventerebbe improponibile. Per le VGG sono state utilizzate ben 4 NVIDIA Titan Black con 6 GB di memoria ciascuna. Le VGG hanno dunque prestazioni migliori, ma necessitano di una notevole potenza hardware per l’allenamento ed inoltre utilizzano un numero di parametri molto elevato (figura 5.4): il modello ottenuto da VGG-19 ad esempio pesa circa 550 MB (dimensioni raddoppiate rispetto ad AlexNet). Le reti VGG più piccole hanno comunque un modello di circa 507 MB.

5.3 Network In Network

Ormai si dovrebbe avere intuito che in una rete neurale convoluzionale vi sono dei layer convoluzionali che effettuano dei prodotti fra i loro kernel ed i receptive field dell’input e che l’intero processo è sempre seguito da una funzione di attivazione non lineare (layer ReLU) prima del successivo layer convoluzionale. Questo perchè i filtri , cioè i kernel, dei layer convoluzionali sono lineari. Gli autori delle rete Network In Network (NIN) [17], che verrà ora illustrata, sostengono che l’utilizzo di un normale filtro convolutivo, il quale si può considerare un modello lineare generalizzato, abbia un livello di astrazione basso, cioè non rappresenti al meglio il classico sistema biologico a cui le reti neurali si ispirano. In pratica una convoluzione lineare è suffi-ciente, per quanto riguarda l’astrazione, quando gli input sono linearmente separabili. Tuttavia generalmente le rappresentazioni che ottengono un li-vello piuttosto alto di astrazione sono delle funzioni non lineari: dalla teoria classica delle reti neurali si ha infatti che la formazione di regioni decisionali complesse è possibile solo se la funzione di uscita dei neuroni è non linea-re. Secondo questo team, sostituire il modello di convoluzione lineare con un sistema più potente di approssimazione ad una funzione non lineare può innalzare il livello di astrazione della rete. Nella rete NIN il modello finora preso in considerazione viene sostituito con una micro-rete (ecco il motivo del nome della rete stessa), la quale di fatto costituisce un sistema generale di approssimazione ad una funzione non lineare. Nello specifico come micro-rete è stato scelto in questo caso il multilayer perceptron. NIN inoltre sostituisce la serie di FC layer con un global average pooling, tecnica che verrà vista fra poco nel dettaglio. La figura 5.5 mostra le sostanziali modifiche che NIN ha apportato ad una classica CNN.

Figura 5.5: Le novità di NIN