• Non ci sono risultati.

2.8 Principali tipologie di layer di una CNN

2.8.1 Convolutional layer

Questo è il tipo di layer principale e il suo compito è l’estrazione delle features salienti in grado di caratterizzare l’ingresso.

Fra i suoi parametri strutturali va indicato il numero di filtri da im- plementare al suo interno; più filtri si scelgono più sarà grande il numero di feature descriventi l’ingresso che la rete può apprendere in questo livel- lo. Vanno poi definite anche le dimensioni dei filtri e se questi si devono far traslare su tutta l’immagine oppure operandone un sottocampionamento (parametro di stride).

Ogni filtro è tridimensionale e la sua terza dimensione corrisponde sempre al numero di canali in ingresso al layer.

Durante la forward propagation si trasla (operazione di convoluzione) ciascun filtro lungo la larghezza e l’altezza del volume di input, producendo la mappa di attivazione (o anche detta feature map o activation map) bidi- mensionale relativa a quel filtro. Man mano che il kernel si sposta lungo le dimensioni della matrice, si effettua un prodotto scalare, fra i valori del filtro e quelli della porzione della matrice al quale è applicato. Se abbiamo a che fare con k filtri otterremo k feature map in uscita, che impilate formeranno il volume di output da dare in ingresso allo strato successivo.

L’obiettivo della rete sarà quello di apprendere i coefficienti dei filtri da applicare in modo da creare un’attivazione in concomitanza con la presenza di una qualche feature in una determinata regione spaziale dell’input.

A tal proposito citiamo che spesso invece che l’operazione di convoluzio- ne viene effettuato il calcolo della cross-correlazione; cioè spesso per motivi implementativi si preferisce non ribaltare il kernel del filtro da far trasla- re lungo l’immagine: basterà infatti che la rete apprenda i coefficienti in maniera speculare per ottenere il medesimo risultato.

A questo punto il volume di uscita di un layer convolutivo è costituito dall’incolonnamento di tutte le activation map calcolate durante il filtraggio.

Ciascun elemento di questo volume può essere interpretato come l’output di un neurone che osserva solo un piccola regione dell’input e che condivide i suoi parametri con gli altri neuroni nella stessa feature map (che è ricavata dall’applicazione dello stesso filtro).

In figura 2.6 viene rappresentato sinteticamente lo schema di funziona- mento di una rete composta da più strati convolutivi. Come si può vedere ciascun layer convolutivo trasforma un volume 3D di input in un volume 3D di output. Man mano che dal primo strato l’informazione si propaga verso l’uscita della rete, ciascuno strato contribuisce ad estrarre features sempre più astratte, fin quando all’ultimo livello si effettua la classificazione dell’immagine.

Figura 2.6: A sinistra: una classica rete neurale a 3 livelli con architettura stratificata FC. A destra: una rete costituita da strati convolutivi arrangia i suoi neuroni in tre dimensioni e da come uscita un vettore di score.

Receptive field

In questo contesto va introdotto il concetto di connettività locale, o di re- ceptive field : in pratica è come se ciascun neurone vedesse una porzione limitata del volume di input e desse in uscita una risposta relativa solo a questo campo di vista (fig. 2.7). Lo scopo quindi non è tanto quello di in- dividuare spazialmente una ben determinata feature, quanto verificare che essa sia presente o meno nell’ingresso.

2.8 Principali tipologie di layer di una CNN 33

Figura 2.7: Concetto di receptive field e depth column. Come si vede un neurone (cerchio blu sulla destra) osserva solo una porzione del volume di input.

Bisogna considerare infine come l’utilizzo di un receptive field limitato faccia diminuire considerevolmente il numero di pesi da addestrare rispetto al caso delle architetture fully connected, dove ogni neurone ha un peso che lo collega ad ogni uscita dello strato precedente.

Organizzazione dello spazio

È opportuno approfondire alcuni parametri utili per il dimensionamento degli strati convolutivi. I tre parametri che seguono determinano la dimen- sione del volume di output di un livello e dunque dell’input da aspettarsi nell’eventuale livello successivo.

• Depth del volume di output: è un parametro che controlla il numero di neuroni del layer convolutivo che sono connessi alla stessa regione dell’input. L’insieme di questi neuroni viene detto depth column. Un esempio è l’insieme di neuroni visto in figura 2.7 sulla destra. In pratica la depth column è data dal numero di filtri che usiamo nel livello convolutivo.

• Il parametro di stride invece indica il passo con cui spostare il recepti- ve field lungo ciascun piano dell’input. Ad esempio se si ha uno stride pari a 1 ci sarà una depth column di neuroni ogni unità spaziale della matrice di input.

In sostanza lo stride riflette il passo di sottocampionamento nell’opera- zione di convoluzione: l’utilizzo di uno stride maggiore può portare ad una riduzione dell’overlapping fra receptive field consecutivi e a volu- mi di uscita più piccoli; senza contare che sottocampionando diminuirà l’onere computazionale.

• Infine va considerato lo zero-padding. L’ operazione di convoluzione matematicamente richiederebbe che venga effettuato uno zero-padding lungo i bordi del volume di input, assumendo che all’infuori della fine- stra di osservazione (la matrice di input) l’ingresso valga zero. Tuttavia a volte nelle reti si preferisce non effettuare questa assunzione e valu- tare il risultato del filtraggio solo dove conosciamo veramente i valori dell’ingresso, effettuando la cosiddetta convoluzione di tipo valid. In pratica si decide di scartare parte dell’informazione relativa alle regioni di bordo assumendo che sia in un certo senso "incompleta".

Questo comporta la riduzione della dimensione dell’input: ad esempio in reti CNN particolarmente profonde a volte si adotta la strategia di effettuare n convoluzioni successive senza padding, ritagliando di stra- to in strato il bordo della volume in ingresso al nuovo livello, fino a ridurre l’intera immagine di input a un unico pixel in uscita dalla rete.

Utilizzo di layer convolutivi in una rete CNN

Di solito una CNN possiede una serie di layer convolutivi: i primi di questi, partendo dall’input layer ed andando verso l’output layer, servono per ot- tenere feature di basso livello, come ad esempio linee orizzontali o verticali, angoli, contorni vari.

Più si prosegue verso l’output layer della rete, più le feature diventa- no di alto livello, ovvero rappresentano figure anche piuttosto complesse in maniera sempre più astratta.

2.8 Principali tipologie di layer di una CNN 35

In sostanza, dunque, più layer convolutivi possiede una rete e più feature dettagliate essa riesce ad elaborare, a discapito però dell’aumento del numero di parametri da allenare (e di conseguenza sia dei tempi di calcolo, sia del rischio che la rete faccia overfitting).

Documenti correlati