Il 0% ha trovato utile questo documento (0 voti)
4 visualizzazioni29 pagine

Capitolo 8: Al Sistema Ner-Voso Umano

Caricato da

alexdominico97
Copyright
© All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
4 visualizzazioni29 pagine

Capitolo 8: Al Sistema Ner-Voso Umano

Caricato da

alexdominico97
Copyright
© All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd

Capitolo 8

Artificial Neural Network

Le artificial neural network sono modelli matematici ispirati al sistema ner-


voso umano, che viene descritto attraverso una rappresentazione semplifi-
cata. Una artificial neural network è composta da neuroni artificiali, ispirati
da neuroni biologici. Il neurone artificiale è detto anche Percettrone. Tale
modello consiste, in una somma pesata che fa da input ad una funzione det-
ta funzione di attivazione; il valore calcolato dalla funzione è l’output del
neurone.

Più in dettaglio, ogni neurone può essere rappresentato come:


(a) Segnali di Input ( x1 , x2 , ..., xn ) : Sono i segnali che provengono dal-

76
l’ambiente esterno; il loro valore dipenderà dalle caratteristiche peculiari di
un particolare problema.
(b) Peso degli Archi ( w1 , w2 , ..., wn ): Specificano il peso per ogni segnale
di input xi ; il valore degli archi permetterà poi di quantificare la rilevanza di
ogni segnale.
(c) Aggregazione Lineare ( Σ ) : Restituisce come risultato un potenziale
d’attivazione, andando a sommare i vari segnali di input moltiplicati per i
rispettivi pesi.
(d) Bias ( θ ): Può essere visto come un peso aggiuntivo con valore sempre 1;
esso è utile per riuscire a determinare il punto di lavoro ottimale del neurone.
(e) Potenziale di attivazione ( u ): Risultato ottenuto dalla differenza tra
l’aggregazione lineare e il Bias.
(f) Funzione di Attivazione ( g ): Viene applicata al potenziale di at-
tivazione, permettendo la non linearità del risultato; limita il valore ad un
determinato range numerico.
(g) Segnale di Output ( y ): Risultato finale prodotto dal neurone; il suo
valore potrà essere utilizzato eventualmente da altri neuroni.
L’addestramento del Percettrone consiste nello scegliere gli opportuni pesi
w0 , w1 , ... , wn degli archi di connessione. Per l’apprendimento dei pesi viene
usata la discesa del gradiente (SGD), un algoritmo iterativo che in base al
gradiente calcolato converge ad una soluzione locale:

wi ← wi + ∆wi con ∆wi = η(t − o)xi

Dove:

• t è il valore obiettivo.

• o è l’output del Percettrone.

77
• η è una costante avente spesso valore tra 0 e 1 chiamata Learning Rate.

Attraverso la discesa del gradiente sono quindi calcolati i pesi del Percettro-
ne, determinando un modello matematico in grado di dividere li-
nearmente lo spazio. Per problemi più complessi viene utilizzato un altro
modello più complesso chiamato Multilayer Perceptron Network.

Funzioni di attivazione

Lo scopo delle funzioni di attivazione è quello di diminuire e restringere il


range di valori che il segnale in uscita può avere, e aggiungere la non linea-
rità all’output. La funzione di attivazione deve essere differenziabile, in
quanto i metodi di ottimizzazione dei pesi della rete come l’SGD si basano
sul gradiente, calcolato tramite delle derivate parziali. Ad esempio una delle
funzioni di attivazione più utilizzate è la sigmoid, che permette di limitare
l’output del Percettrone tra 0 e +1. In letteratura esistono altre funzioni di
attivazione, come la funzione Relu o la funzione Tanh, che rispettano tutte
il vincolo di differenziabilità.

Multilayer Perceptron Network

Una struttura più articolata di classificazione combina più Percettroni con-


nessi tra di loro in cascata con lo scopo di risolvere problemi più complessi.
Le Multilayer Perceptron Network (MLP) sono utilizzate per la risolu-
zione di problemi non linearmente separabili. È possibile definire una
MLP come segue:

78
• un insieme di n nodi d’ingresso (input layer) con la stessa struttura del
training set, collegati a tutti i neuroni del primo livello nascosto della
rete.

• Un insieme di neuroni artificiali organizzati in L ≥ 2 strati diversi di


cui:

– L - 1 strati nascosti, i cui neuroni saranno collegati, in base al-


la topologia della rete, solamente con lo strato immediatamente
successivo, o in altri casi anche con quello precedente.

– un unico strato di output costituito da K ≥ 1 neuroni, con ognuno


di essi restituirà un risultato diverso: yi ∈ R, i = 1, ..., K;, e.g.
valori relativi alle probabilità di appartenenza di un campione ad
una classe i nel caso di apprendimento supervisionato.

• un insieme di archi orientati e pesati (wi ) che rappresentano le connes-


sioni tra i neuroni dei vari strati. Inizialmente il loro valore sarà casuale
per poi cambiare durante l’esecuzione grazie alla fase di addestramento.

La figura mostra un esempio di rete multistrato feed-forward, composta da


tre strati in totale: due nascosti, due ingressi e un uscita. Ne segue quindi la
spiegazione dei singoli livelli:
Input Layer: Responsabile della ricezioni di informazioni, segnali, caratte-
ristiche o misurazioni dell’ambiente esterno. Questi input poi vengono elabo-
rati, ovvero normalizzati entro i valori prodotti dalla funzione di attivazione.
Questa normalizzazione comporta una migliore precisione numerica per le
operazioni matematiche che la rete effettuerà.
Hidden Layer: I neuroni di questi strati sono responsabili dell’estrazione di

79
Figura 8.1: Multilayer Perceptron Network

pattern dal sistema analizzato; il loro scopo è quello di eseguire l’elaborazione


vera e propria dei dati.
Output Layer: Livello responsabile della produzione e presentazione del-
l’output finale risultante dall’elaborazione eseguita dai neuroni negli strati
precedenti.

Tipologie di architetture delle artificial neural

network

Le principali architetture delle artificial neural network, considerando la di-


sposizione dei neuroni, come questi sono interconnessi e come sono composti
i livelli, possono essere distinte tra ”feed-forward” e ”feedback”.
Le reti feed-forward possono essere suddivise anch’esse in due categorie: sin-
golo strato (single-layer feedforward architecture) e multiplo strato (multiple-
layer feedforward architecture). Nel primo caso la rete è composta da n nodi

80
d’ingresso e un singolo strato di neuroni che compongono il livello di output.
L’informazione si propaga sempre in maniera unidirezionale dai nodi di en-
trata a quelli di uscita. Per quanto riguarda invece le reti a multiplo strato, a
differenza delle prime sono composte da almeno 2 strati di neuroni nascosti
tra lo strato di input e quello di output. In entrambi i casi, il numero di neu-
roni dell’output layer sarà sempre uguale al numero di uscite yi della rete.
Per quanto riguarda le reti feedback invece, esse si distinguono dalle prece-
denti a causa della loro struttura ciclica. Questa caratteristica comporta un
grande impatto sia sulle performance sia sull’apprendimento della rete stes-
sa; data la loro struttura, le reti di questa tipologia sono costituite da pochi
strati. Un neurone di un determinato strato può avere sia connessioni con se
stesso, sia connessioni con qualsiasi altro neurone all’interno della rete.

L’addestramento

Analizziamo adesso la fase di addestramento nell’apprendimento supervi-


sionato, introducendo il problema di ottimizzazione matematica. Esso
consiste nel minimizzare una determinata funzione (chiamata ’funzione d’er-
rore’ o ’loss function’) che può essere di diverso tipo. Una delle più usate è
l’errore quadratico medio (MSE, Mean Squared Error), ma la scelta sul quale
applicare dipende strettamente dai parametri della rete. Di fatto, la fase di
addestramento di una rete consiste nel determinare il vettore w ∈ Rm otti-
male, ovvero quello che permetterà alla rete di fornire dei risultati più vicini
possibile a quelli effettivamente desiderati. La scelta dei parametri viene in
genere effettuata definendo prima il training set:

T = (xp , y p ), xp ∈ Rn , y p ∈ RK , p = 1, ..., P


81
e, come precedentemente accennato, risolvendo un problema di ottimizzazio-
ne matematica del tipo:
P
X
minm E(w) = Ep (w)
w∈R
p=1

in cui Ep è il termine di errore relativo al p-mo campione e misura la distanza


tra l’uscita desiderata y p e l’uscita y(xp ; w) fornita dalla rete. Definiamo
adesso la funzione di errore utilizzata, ovvero l’errore quadratico:

1
Ep (w) = k y(xp ; w) − y p k2 ,
2

Per il calcolo del vettore w ∈ Rm si utilizza una tecnica in due fasi chia-
mata backpropagation. Nella prima fase di propagazione in avanti (forward
propagation), gli input x1 , x2 , ..., xn attraversano l’intera rete livello per li-
vello fino alla produzione di ciascun output. Pertanto, la rete tiene conto
solo dei valori correnti inerenti ai pesi e ai bias dei neuroni, che rimango-
no invariati durante tutta l’esecuzione di questa fase. Successivamente gli
output che la rete ha calcolato sono comparati con i rispettivi valori deside-
rati, questa comparazione avviene grazie all’applicazione della loss function
che darà come risultato quanto ancora è ”distante” la rete dal fornire un
output accurato. Questo errore verrà poi propagato all’indietro in tutta la
rete; una volta avvenuta la propagazione inizia la seconda fase, quella di
aggiornamento dei pesi (backward propagation) mediante gradient descent.
L’obbiettivo di questa fase è quello di minimizzare il valore prodotto dalla
loss function; questo può avvenire modificando tutti i pesi wi in direzione
opposta al gradiente. Infatti esso indica la direzione di maggior crescita di
una funzione, e muovendoci in direzione opposta, riduciamo l’errore ad ogni
ciclo. In sintesi, la successiva applicazione delle due fasi precedenti consente

82
di adattare automaticamente i pesi e i bias dei neuroni in ciascuna iterazione,
con conseguente riduzione graduale della somma degli errori prodotti dalla
rete rispetto agli output desiderati. Di tutte le variabili considerate durante
l’esecuzione dell’algoritmo, l’unica libera (cioè che può essere scelta manual-
mente durante l’addestramento) è il learning rate η; variabile che determina
quanto velocemente la rete convergerà rappresentando quindi l’entità della
correzione effettuata sui pesi ad ogni iterazione. Nel caso in cui si scegliesse
un learning rate molto elevato la rete avrebbe pesi con valori troppo variabili
e di conseguenza non si effettuerebbe un corretto addestramento. Nel caso
in cui η fosse troppo basso, invece, si correrebbe il rischio di impedire alla
rete di migliorare la propria accuratezza. Essendo il learning rate un para-
metro non affatto costante, è pratica comune far variare η durante la fase di
apprendimento per evitare divergenze. L’aspetto più complicato del metodo
di discesa del gradiente, oltre alla criticità della scelta del learning rate, è
l’inizializzazione del vettore dei pesi wi , poiché questa tecnica converge al
più vicino minimo locale. Questo problema però si può risolvere andando a
scegliere un valore iniziale dei pesi molto basso; cosı̀ facendo si può anche
risolvere un altro dei problemi di questo metodo, ovvero la saturazione delle
funzioni d’attivazione. Qualora si arrivi in una zona in cui la funzione diventa
pressoché costante, la sua derivata sarà quasi nulla, portando ad una drasti-
ca riduzione della velocità di apprendimento causata della bassa correzione
dei pesi delle rete. Un metodo talvolta utilizzato è quello di interrompere la
minimizzazione della funzione d’errore prima del completamento di tutti i
cicli di addestramento (early stopping). Questa tecnica funziona tramite la
presa in considerazione di un validation set ausiliario. Durante il processo di

83
minimizzazione, viene valutato periodicamente l’errore che la rete commette
su questo set; se l’errore inizia ad aumentare, il processo di addestramento
termina, poiché questo aumento potrebbe indicare una tendenza della rete
all’overfitting. L’overfitting di un modello consiste nell’impossibilità di ge-
neralizzare accuratamente su nuovi dati, a causa di una ”aderenza” troppo
marcata del modello ai campioni di addestramento.

Difetti delle ANN

Il primo dei difetti delle ANN può essere accomunato al funzionamento a


”Black box”; a differenza di altri sistemi che permettono di esaminare passo
per passo le istruzioni che hanno portato al conseguimento di un determinato
output, una rete neurale può generare dei risultati che con un’alta probabilità
possono essere accettati, ma non è possibile analizzare in modo semplice i
passi che la rete ha effettuato per il calcolo di tali risultati. Inoltre, esse
sono effettivamente efficienti solamente se sia le variabili con cui lavorano,
cioè il dataset, sia la loro topologia sono scelte con cura. In caso di errori
durante la costruzione della rete, la rete potrebbe non raggiungere prestazioni
accettabili; ad esempio, con un numero eccessivo di neuroni la rete tenderebbe
a memorizzare i pattern non riuscendo più a generalizzare.

84
Appunti delle lezioni Pogg per ANN

Modello ispirato alle reti neurali umane, sono composte da neuroni artificiali
interconnessi tra di loro, che hanno la caratteristica di simulare le proprietà di
quelli biologici e delle sinapsi. La rete è composta da tanti neuroni artificiali
che eseguono complessi calcoli determinati dalle connessione tra i neuroni ed
il valore dei pesi.
É un modello adattivo, che modifica se stesso ai fini di raggiungere un certo
risultato. Addestrare una rete neurale significa trovare i valori ottimali della
matrice dei valori w ai fini di minimizzare l’errore. Un concetto di fondamen-
tale importanza è la funzione d’attivazione, che viene applicata per dare la
caratteristica di non linearità del risultato.
Ci basiamo sulle reti FeedForward, quindi abbiamo tanti archi di peso per
ogni neurone quanti sono i neuroni del livello successivo a quello che stiamo
considerando. Nel singolo percettrone, il nodo di output somma ogni valore
di input moltiplicandolo con il rispettivo peso del suo arco verso un altro
nodo. Una volta arrivati al nodo finale, si compara il risultato effettivo con
quello dato dal modello. Fondamentale il fatto che per applicare la backpro-
pagation devo per forza arrivare al livello di output, perchè solamente li posso
comparare il valore calcolato da me a quello reale. Vediamo l’addestramento
del percettrone:

1. Fase di inizializzazione dei pesi in maniera casuale.

2. Si considerano le differenze tra il risultato prodotto dalla rete neurale


e la classe di appartenenza di quel dato.

3. Si moltiplica il valore ottenuto con il learning rate.

85
4. Otteniamo la variazione che vogliamo assegnare a tutti i pesi della rete
per cercare di aumentare le performance del modello

5. Ripeti questi passaggi fin quando:

(a) Non abbiamo raggiunto il numero massimo di iterazioni che ci


eravamo prefissati (le Epoche)

(b) La differenza degli errori che riusciamo a trovare non scende sotto
una certa soglia

Difetto del percettrone: non può risolvere problemi i cui dati non sono
linearmente separabili (come l’OR esclusivo in logica Booleana).
Funzioni d’attivazione: Queste funzioni devono essere non lineari nell’in-
put, ovvero permettono di creare delle relazioni più complesse tra input ed
output durante l’addestramento. Se aggiungo funzioni non lineari posso ri-
solvere problemi anche più complessi.
Loss Function: Permette di calcolare quanto ancora il modello è distante dal
generare corretti risultati, un esempio di queste funzioni è l’errore quadratico
medio.
X
E= [Yi − f (wi Xi )]2
i

L’algoritmo che si utilizza per minimizzare la funzione d’errore è la Backpro-


pagation, che è associato al problema matematico della discesa del gradiente.
Funzionamento della BackPropagation:
Abbiamo gli input della rete neurale e, dato che stiamo svolgendo apprendi-
mento supervisionato, si conosce il risultato desiderato per ogni campione di
input preso in considerazione. Fissiamo quindi la matrice dei pesi per ogni
livello a valori casuali e per ogni record:

86
1. Applichiamo la Forward Propagation per calcolare il risultato della rete
neurale.

2. Si confronta il risultato prodotto dalla rete (che chiamiamo xi ) con


quello effettivo yi tramite la loss function scelta (errore quadratico me-
dio ad esempio) per renderci conto di quanto ”distante” è la rete a
fornirci risultati accettabili.

3. Calcoliamo la derivata del valore ottenuto rispetto xi e troviamo quan-


to è la variazione che si vuole applicare alla matrice dei pesi che con-
nettono il k-esimo livello finale con il k-1esimo (quindi l’ultimo livello
con il penultimo) per seguire la minimizzazione delle funzione d’errore.

4. Dopo i passi precedenti, si sono ottenuti i nuovi valori dei pesi per il
livello che stiamo considerando, si applica nuovamente il passo prece-
dente fin quando non si ritorna al livello di input, e quindi fin quando
tutti i pesi della rete non sono stati variati in accordo al valore calcolato
dalla Loss Funcion.

5. Applichiamo nuovamente la Forward Propagation per calcolare un nuo-


vo valore della rete che confronteremo nuovamente con quello desiderato

6. Se il valore risultate è ancora distante, o sono ancora presenti delle


epoche da effettuare, riapplicherà il processo di backpropagation.

Importante: Fondamentale ricordarsi che bisogna calcolare la derivata della


funzione d’errore rispetto ai pesi di un certo livello, e che la funzione d’atti-
vazione deve essere differenziabile.
N.B: Per trovare il minimo o il massimo di una funzione si deve fare la de-
rivata.

87
Si prende la funzione Costo e si cerca di minimizzarla tramite la discesa del
gradiente. Alcuni algoritmi utilizzano Learning rate adattivi.
Problemi della Backpropagation: Potremmo avere una convergenza mol-
to lenta e non è sempre garantita l’ottimalità del risultato, poichè la discesa
del gradiente converge al più vicino minimo locale, che non è garantito sia
anche il minimo globale.

Problemi delle reti neurali

• Funzionamento a Black Box.

• Non possiamo permetterci di avere valori mancanti nel Training e questi


devono essere tutti numerici. Se fossero presenti valori categorici si
dovrebbero attuare tecniche di trasformazione.

• Vanishing Gradient

Difficoltà di progettazione:

• Troviamo delle difficoltà nella scelta della giusta topologia e del numero
di neuroni da inserire in un certo livello. Il numero dei neuroni nel
livello di input dipende da quante feature sono caratterizzati i nostri
dati, i neuroni del livello di output dipendono dalla natura del nostro
problema, per i problemi binari ci basta 1 neurone nel suddetto livello,
per problemi con k − classi bisogna inserire k neuroni nel suddetto
livello (e funzione d’attivazione softmax).

88
• La decisione di come inizializzare i pesi non è sempre intuitiva, la tecni-
ca random comporta spesso buoni risultati ma non è sempre ottimale.

• Se la rete è troppo complessa si ha overfitting, se è troppo semplice


si ha underfitting. L’overfitting si verifica spesso o quando si utilizza
un dataset troppo piccolo, e questo comporta che la rete viene adde-
strata con pochissimi dati; quello che succede è che l’algoritmo impara
a memoria il dataset, associa una combinazione di parametri ad ogni
elemento del training set e quando si presenta un nuovo record al mo-
dello non ha capacità di generalizzazione perchè non è detto che associ
il record presentato ad uno memorizzato durante il training.

Vantaggi

• Nella pratica solo modelli che performano molto bene;

• La classificazione di un nuovo record è molto rapida (ma fase di adde-


stramento faticosa e che richiede molto tempo)

Funzioni d’attivazione: Funzioni utilizzate all’interno dei nodi che permet-


tono di aggiungere non linearità al problema. Un esempio di funzioni sono la
tangente iperbolica e sigmoide. Questa funzione viene associata ad un certo
livello, quindi ognuno di essi all’interno della rete ne può avere una diversa.
Hyperparametri: Parametri che vengono fissati dall’utente prima di inizia-
re la fase di training, vediamone alcuni:

• Learning Rate: Il learning rate è il fattore di apprendimento di una


rete. Durante l’algoritmo di back-propagation viene calcolato, grazie

89
all’applicazione della loss function, quanto deve variare ogni peso al fine
di permettere alla rete un riconoscimento ottimo per quel determinato
pattern. Se venisse utilizzata direttamente questa variazione, la rete
apprenderebbe molto bene a riconoscere quel pattern, dando risultati
pessimi per gli altri. Perderebbe cioè tutta l’informazione che aveva
appreso dai pattern precedenti. Per evitare questo si utilizza un fattore
moltiplicativo η, il learning rate, che riduce la variazione ottima per
il pattern considerato. Facendo questo, la rete tenderà a convergere
lentamente all’ottimo, impostando i suoi pesi in un punto di equilibrio
che non favoriranno nessuno dei suoi target.

• Epoche: Numero di volte in cui l’algoritmo di apprendimento lavorerà


prendendo in input l’intero training set. É buona norma randomizzare
l’ordine in cui i dati vengono sottoposti alla rete in ogni epoca successiva
alla prima.

• Batch-Size: Ad ogni campione di input i pesi in memoria devono essere


aggiornati. Essendo numerosi, questa operazione impiegherebbe molto
tempo. Per velocizzare l’esecuzione del programma è stato pensato di
aggiornare i pesi della rete solo dopo un determinato numero di record,
il batch size. Il funzionamento è abbastanza semplice: vengono accu-
mulate in un vettore le variazioni dei pesi, per un numero di patterns
pari al batch size. Una volta esaminati un numero di patterns pari al
batch size, ne viene fatta la media e la si applica.

90
Capitolo 9

Reti neurali Convoluzionali

Problema: Riconoscere degli oggetti nelle immagini utilizzando le


MLP (e non le convoluzionali per adesso)
Voglio trovare la parola ”Ciao” in una traccia audio tramite MLP. Potrem-
mo allenare quest’ultima passando in input tutta la traccia, ma questo ci
darebbe il problema che ogni volta che voglio risolvere questo problema in
una differente traccia, questa dovrebbe essere necessariamente della stessa
lunghezza della prima, ovvero quella che la rete ha utilizzato per l’addestra-
mento. Ma non solo, la rete che trova ”ciao” nella prima parte della traccia
può non essere in grado di trovare ”ciao” in un altro punto, a meno che non
alleno la rete con tutti i possibili casi.
Problema numero 2: Riconoscere se l’immagine contiene un fiore. Ho biso-
gno di una rete che risponda si indipendentemente dalla posizione del fiore
nell’immagine (e che risponda no se il fiore non c’è). In molti problemi, non
è importante la posizione dell’oggetto, ma nelle MLP prendere una diversa
posizione corrisponde ad avere un input totalmente diverso che la rete po-
trebbe anche non riconoscere.

91
Soluzione al problema del trovare ”Ciao”: Applichiamo tante MLP
uguali tra di loro in tutte le possibili finestre (di lunghezza uguale) dell’im-
magine cosı̀ da fare in modo che se la parola ”Ciao” esiste, allora sicuramente
ALMENO una di queste rete risponderà in maniera positiva. Fatto questo,
mettiamo insieme (componiamo) i risultati e abbiamo varie scelte:

• Prendiamo il massimo degli output facendo un Or booleano, quindi se


almeno un risultato è 1 allora quello finale è sicuramente 1

• Compongo alla fine di tutte le reti un singolo percettrone con la fun-


zione d’attivazione softmax (o anche sigmoid) che mi permetterà di
risolvere il problema di classificazione binaria.

• Compongo alla fine un altra MLP

Tutto questo lo possiamo vedere anche come una singola rete che ha tante
sotto reti uguali ognuna che analizza una finestra diversa.
Ovviamente la stessa cosa la possiamo applicare per il problema della ricerca
del fiore, prima scansioniamo l’immagine usando una finestra di dimensione
appropriata e poi inviamo i dati raccolti su questa finestra ad una MLP.
Componiamo poi i risultati delle reti ottenute nelle varie scansioni fino ad
ottenere la rete neurale che ci darà l’effettivo risultato.

Fase di Training

Nella sezione precedente abbiamo definito la struttura della rete neurale MLP
che ci permette di risolvere problemi di questo tipo. Il problema è che que-
ste reti sono particolarmente grandi, che comunque possono assere allenate

92
con tecniche come la backpropagation, SGD o Adam. Ovviamente, come in
tutti i problemi, il dataset con cui le reti devono venir addestrate deve essere
composto da tantissimi esempi, con/senza fuori, con/senza ciao. Queste tipo
di reti sono chiamate Shared-Parameters e sono tutte composte da sotto reti
identiche che cercano lo stesso pattern. L’algoritmo di ottimizzazione (back-
propagation) viene modificato in modo tale da effettuare l’aggiornamento di
tutte le copie della rete al variare di un parametro in una delle sotto reti.
questo comporterebbe un carico di 256 256 3 = 196 608 pesi per singolo

neurone, ovvero quasi 2 milioni di parametri per una semplice rete con un
singolo strato nascosto da dieci neuroni. L’architettura fully-connected risul-
ta perciò troppo esosa in questo contesto, comportando una quantità enorme
di parametri che condurrebbe velocemente a casi di sovradattamento. Inol-
tre, considerazione ancor più limitante, un’architettura di questo tipo fatica
a cogliere la struttura di correlazione tipica dei dati a griglia. Questo ha dato
vita alle CNN, che assumono che in input vengano dati proprio questo tipo
di strutture dati.

Dal punto di vista delle Neuroscienze

Nel corso del tempo è stato dimostrato che aree ristrette della retina influen-
zano l’attivazione di singole unità corticali. Sono chiamate Local Receptive

93
Fields. Esistono due livelli di comunicazione fra i neuroni, chiamate:

• S-cells

• C-cells

Entrambe rispondono a stimoli generati da strisce orientati di luce ma sono


influenzate diversamente dalla presenza di macchie. Nel 1980 c’è stato un
raffinamento del livello cognitivo, è stato dimostrato un ruolo diverso delle
S-cells e C-cells con diverse funzioni d’attivazione. Venne proposto un model-
lo cognitivo dell’interpretazione delle immagini basato su livelli. Più il livello
è profondo e più è grande il receptive field di ogni neurone. Il numero di pat-
tern complessi riconosciuti cresce al crescere del livello. In altre parole, nei
primi livelli vediamo particolari dettagli dell’immagine, e nell’ultimo riuscia-
mo a vedere pattern più complessi. Riconosciamo che è presente un volto, ma
prima notiamo gli ovali, poi vertici di un triangolo e alla fine magari abbiamo
riconosciuto la bocca.

La nascita delle reti convolutive (CNN)

La Convolutional Neural Networks (CNN) rappresenta un’architettura di rete


neurale artificiale di grande successo nelle applicazioni di visione artificiale
e ampiamente utilizzate anche in applicazioni che processano media come
audio e video. L’applicazione più popolare di rete neurale convoluzionale
resta comunque quella di identificare, da parte di un computer (e con una
certa probabilità), cosa un’immagine rappresenta. Tramite una rete neurale
convoluzionale il computer è in grado di classificare cosa un’immagine mostra
e identificare con buona probabilità il suo contenuto.

94
Architettura di rete neurale convoluzionale

Un’architettura di rete neurale convoluzionale può essere formata da:

• Livello di Input: Insieme di numeri che rappresentano l’immagine da


analizzare. Essa è rappresentata come un insieme di pixel. Ad esempio,
32 x 32 x 3 indica la larghezza (32), altezza (32) e profondità (3, i tre
colori Red, Green e Blue nel formato RGB) dell’immagine.

• Livello convoluzionale: Il suo obiettivo è quello di individuare sche-


mi, come ad esempio curve, angoli, circonferenze o quadrati raffigurati
in un’immagine con elevata precisione. Sono più di uno, e ognuno di es-
si si concentra nella ricerca di caratteristiche specifiche nell’immagine.
Maggiore è il loro numero e maggiore è la complessità della caratte-
ristica che riescono ad individuare. All’interno di questo livello si ha
comunque l’applicazione di una funzione d’attivazione per garantire la
non linearità del risultato. Mappe, Feature o Kernel sono tutti sinonimi,
e questo livello permette di trovarli.

• Livello di Pooling: Livelli che sintentizzano l’informazione attraverso


un certo criterio, come ad esempio calcolo del massimo (Max-Pooling

95
layer) o calcolo della media (Avg-Pooling layer) ai fini di ottenere l’in-
put per il livello convolutivo successivo. Sono di importanza cruciale
in quanto permettono di ridurre le dimensioni delle matrici durante
l’addestramento, in modo da diminuire numero di parametri e carico
computazionale, e di conseguenza controllare anche il sovradattamento.

• Livello Flatten: Ultimo livello che divide la parte di rete convolutiva


da quella MLP e ha la capacità di far passare da un livello composto
da k matrici ad un livello composto da n neuroni.

• MLP: Posta alla fine della CNN, connette tutti i neuroni del livello
precedente al fine di stabilire le varie classi identificative visualizzate
nei precedenti livelli secondo una determinata probabilità. Ogni classe
rappresenta una possibile risposta finale che il computer ti darà. Per-
mette di tradurre le feature estratte all’ultimo livello convolutivo in
record compatibile con l’input di una MLP. Possiamo anche affermare
quindi che una CNN è composta da due parti fondamentali, la parte
dei modelli convolutivi e la parte di classificazione vera e propria.

All’inizio si notano singoli dettagli, e mano a mano che si cresce di livello


si riescono a determinare caratteristiche più determinanti dell’immagine che
stiamo visualizzando.
I livelli addestrabili di tutta la rete sono quelli convolutivi e di tipo MLP, men-
tre i pesi nei livelli di Pooling/Sampling sono fissati, vengono scelti durante
la fase di progettazione della rete e rimangono fissi.

96
Alcuni parametri utili sono i seguenti:

Filtro: Matrice che rappresenta una caratteristica (feature) che il livello


convoluzionale vuole identificare, ad esempio le curve o una linea retta. Ini-
zialmente per i primi livelli si dice che il filtro rappresenta una caratteristica
di basso livello perché identifica semplici oggetti come appunto curve o linee.
Per un livello convoluzionale il filtro identificherà le curve, per un altro linee
orizzontali, per un altro ancora circonferenze, e cosı̀ via negli ultimi livelli,
fino a formare figure complesse che rappresenteranno oggetti più complicati.
Identificata la caratteristica che il filtro identificherà nel livello convoluzio-
nale, si decide la dimensione del filtro e il numero di filtri da utilizzare nel
livello.
Passo (Stride): specifica il numero di pixel con cui si vuole traslare il filtro
ad ogni spostamento. Quando lo stride è pari ad uno significa che stiamo
muovendo il filtro un pixel alla volta, e di conseguenza viene scannerizzata
ogni possibile posizione dell’input. Valori più alti muovono il filtro con salti
maggiori, e pertanto viene generato un output di dimensioni minori.
Addestramento del livello convolutivo: L’addestramento di questo tipo
di livello consiste in due operazioni :

• Convoluzione: L’applicazione del filtro avviene in questo modo:


Nella formula applichiamo un filtro generico di dimensione d1, d2
:
d1 X
X d2
z(i, j) = f (k, l)M (i + j, j + k) + b
k=1 l=1

dove:

97
– Dove z(i, j) è l’output parziale della matrice, ovvero il singolo
valore di un quadratino

– f (k, l) è l’applicazione del filtro

– M (i + j, j + k) Punti del layer precedente

– il tutto applicato al variare di k ed l

• Applicazione della Funzione d’attivazione: Viene applicata ad


ogni elemento della matrice risultante, che diventa poi l’input per il
livello successivo.

La fase di training avviene grazie ad insieme di dati già etichettati come nel
caso delle MLP. Si deve poi definire la funzione d’errore (che si comporta in
maniera analoga a quelle conosciute, ovvero fa il confronto tra il valore pre-
detto dalla rete e quello effettivo) e si effettua il training attraverso variante
della discesa del gradiente, calcolato tramite la backpropagation.
Il problema delle reti convolutive è l’overfitting, perchè hanno tan-
tissimi parametri, e questo obbliga ad avere moltissimi record nel
dataset di input. Questo ha portato alla creazione, e successiva applicazio-
ne, dei layer di dropout specialmente in questo tipo di reti.
Considerazioni

• La dimensione della matrice output dipende dal passo con cui scansiono
l’immagine.

• L’applicazione del livello convolutivo in ogni caso, riduce la dimensione


dell’output.

• Nelle reti convolutive, ad ogni livello non si applica un unico filtro, ma se


ne vogliono applicare tanti perchè nello stesso livello voglio riconoscere

98
diversi componenti (più o meno primitive a seconda della profondità in
cui mi trovo).

• I filtri applicati li rappresento con una matrice. tridimensionale. La


profondità è data dal numero di filtri (mappe) che applico in un certo
livello. La lunghezza è data dal numero di livelli che inserisco, e l’altezza
è data dal numero di neuroni che utilizzo in un certo livello.

• Ogni livello convolutivo mantiene la stessa dimensione della mappa di


input solo se si utilizza un appropriato zero-padding.

Le dimensioni di un generico livello sono definite da:

• Dimensione del livello precedente N xN

• Dimensione dei filtri che sto applicando M xM

• Lo Stride S

• La dimensione dell’output sarà data da

(N − M )
+1
S

Da questa formula notiamo che si effettua sempre una divisione dell’in-


put (è come se fosse modulo M) quando applichiamo una convoluzione,
perchè ci sarà sempre una compressione dell’immagine.

Definizione dei parametri della rete (Hyperparameter) Parametri che


vanno scelti in base al problema trattato, e non variano durante l’addestra-
mento:

• Il numero di livelli convolutivi e per ognuno di essi bisogna specificare

99
– Numero di filtri da applicare e di che dimensione

– Stride di ogni filtro

• Quanti e quali livelli di Pooling vogliamo applicare e bisogna specificare:

– La dimensione di ogni livello di Pooling

– Stride per ogni livello

• Zero-Padding: Può risultare conveniente aggiungere un bordo di ze-


ri al volume di input, in modo cosı̀ da controllare le dimensioni del-
l’output ed evitare incongruenze durante le operazioni. Lo spessore di
questo bordo è determinato dall’iperparametro di zero-padding, ed è
spesso utilizzato per far combaciare la dimensione dell’input con quella
dell’output.

• Per la MLP finale bisogna scegliere il numero di livelli e neuroni per


ogni livello.

Pesi e Bias delle CNN

I parametri dei layer convolutivi e fully connected verranno imparati con


l’allenamento tramite tecniche basate sulla discesa del gradiente. I parametri
da dover trovare in una rete convolutiva, non sono i pesi dei neuroni, ma sono
i valori dei filtri, che variano sempre tramite la discesa del gradiente.

Apprendimento della rete

Come già descritto precedentemente, nel livello MLP, devono essere appresi
tutti i pesi ed i bias di ogni percettrone, stessa cosa nei livelli convolutivi con

100
il valore dei filtri.
Dato Kj numero di mappe del livello J e sia Lj xLj la dimensione dei filtri,
abbiamo Kj (Kj − 1L2j + 1) parametri da apprendere dove:

• Kj è che per ogni mappa devo fare:

• Kj − 1 Numero di mappe del livello precedente

• L2j è la dimensione dei filtri

• +1 è il bias: Il bias serve a far compiere una traslazione sull’asse delle


ascisse alla funzione di uscita.

Livelli di Dropout

Parametro (non livello vero e proprio) definito in percentuale che viene ag-
giunto sia a reti MLP che Convolutive per permettere di ignorare determinati
nodi in un certo layer durante l’addestramento. Questo fa si che il numero di
connessioni che vengono utilizzate, e quindi il numero di parametri che devo-
no essere addestrati in una certa epoca cala drasticamente. Questo permette
di evitare l’overfitting, poichè ad ogni passo si tengono in considerazione un
numero ristretto di collegamenti.
Prof: Si applica alla parte MLP della rete neurale. Permetto la disattivazione
di alcuni nodi, e di conseguenza vengono disattivati tutte le loro connessio-
ni. Questo ci permette di ridurre, in maniera molto significatica, il numero
di parametri della parte Fully connected della rete, che contribuisce di più
al numero di parametri da dover apprendere. Questo ci permette di trovare
dei modelli robusti, che anche se hanno a disposizione un certo numero di
parametri, cercano di risolvere il problema utilizzandone molti meno, quindi

101
la rete che verrà costruita sarà più robusta e la possibilità di fare overfitting
si riduce sensibilmente.

Riassunto lezioni precedenti prof

Queste reti sono chiamate tridimensionali perchè ad ogni layer convolutivo si


applicano più filtri. Quindi per ogni livello abbiamo la profondità del livello
che è determinata dal numero di mappe che descrivono l’input, quindi nel
caso standard di un immagine a colori, avremmo le tre mappe RGB. Nel caso
di un immagine in bianco e nero c’è un unica mappa. Poi per ogni livello si
stabilisce quante mappe mettere in base al problema trattato. Alcune cose le
avevo già scritte, basta guardare sopra.

9.1 Inception NON LA CHEDE ALL’ESA-

ME

Approssimare una parte di rete sparsa con una densa, ovvero si eseguono
parallelamente filtri e si concatenano i risultati, il tutto seguito da un layer
di Max Pooling. L’idea quindi è quella di avere una combinazione di output
di layer convolutivi di varie dimensioni. Applichiamo allo stesso livello più
layer convolutivi in parallelo e i risultati di tutti questi layer vengono conca-
tenati per produrre l’output, e quindi l’input per il layer successivo. Tutti i
filtri in blu dell’immagine, compreso quello di Max pooling vengono tutti ap-
plicati contemporaneamente. Il risultato viene concatenato fisicamente una
dietro l’altra e la matrice ottenuta dopo la concatenazione dei vari filtri viene

102
passata in output. Questo ci permette di focalizzare l’attenzione su diverse
immagini contemporaneamente.
L’idea dell’inception è quindi quella di capire fin da subito quali sono le ca-
ratteristiche salienti dell’immagine in un singolo livello. I filtri che vengono
applicati in parallelo sono di dimensione differente, quindi le caratteristiche
che permettono di captare saranno diverse anch’esse. Si parte sempre da pun-
ti/linee per arrivare a percepire forme più complesse, ma grazie all’inception
si può fare tutto in un unico livello, grazie all’applicazione di più filtri in
modo parallelo. Li applichiamo in parallelo cosı̀ l’output sarà direttamente
la soluzione. Il beneficio principale è quello di incrementare il numero delle
unità/filtri ad ogni passo senza esplosione di complessità computazionale.

Similarità tra i modelli

CNN e MLP sono simili su molti aspetti:

• Sono costituite da neuroni che possono apprendere

• Ogni neurone riceve degli input e calcola un output

• L’intera rete esprime una singola funzione di score differenziabile. Que-


sta è la regola più importante.

103
• Hanno un’unica score function differenziabile

• Utilizzano gli stessi algoritmi di apprendimento

Le reti convolutive vengono usate perchè permettono di ottenere eccellenti


risultati perchè riescono a lavorare tramite le dimensioni reali dell’immagine,
se usassimo una MLP si dovrebbe trasformare la matrice di input in vettore
di input e quindi perdere subito l’informazione bidimensionale. Usano meno
parametri (pesi) di una fully connected. Sono progettate per essere invia-
rianti rispetto alla posizione degli oggetti sulla scena. Questo potrebbe essere
un vantaggio se dobbiamo cercare un particolare soggetto, perchè indipen-
dentemente dalla posizione la rete lo riconosce. Però sottopongono l’analisi
dell’immagine ad un problema differente, il Picasso Problem: Dato che la po-

sizione non è rilevante, per alcuni modelli l’immagine sopra potrebbe essere
esattamente la stessa.

104

Potrebbero piacerti anche