Capitolo 8: Al Sistema Ner-Voso Umano
Capitolo 8: Al Sistema Ner-Voso Umano
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:
Dove:
• t è il valore obiettivo.
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
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.
79
Figura 8.1: Multilayer Perceptron Network
network
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
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
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.
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:
85
4. Otteniamo la variazione che vogliamo assegnare a tutti i pesi della rete
per cercare di aumentare le performance del modello
(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
86
1. Applichiamo la Forward Propagation per calcolare il risultato della rete
neurale.
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.
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.
• 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.
Vantaggi
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.
90
Capitolo 9
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:
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.
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
94
Architettura di rete neurale convoluzionale
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.
• 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.
96
Alcuni parametri utili sono i seguenti:
dove:
97
– Dove z(i, j) è l’output parziale della matrice, ovvero il singolo
valore di un quadratino
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.
98
diversi componenti (più o meno primitive a seconda della profondità in
cui mi trovo).
• Lo Stride S
(N − M )
+1
S
99
– Numero di filtri da applicare e di che dimensione
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:
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.
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.
103
• Hanno un’unica score function differenziabile
sizione non è rilevante, per alcuni modelli l’immagine sopra potrebbe essere
esattamente la stessa.
104