3.1 Introduzione alle CNN
3.1.2 Addestramento
L’addestramento di una rete neurale artificiale consiste in un problema di ottimizzazione glo- bale di una funzione che aggiorna i pesi dei neuroni nei vari strati; si minimizza una funzione che, tipicamente, `e: min x∈RmE(w) = P X p=1 Ep(w)
in cuiw sono i pesi, x gli input, P il numero totale di campioni e Ep`e l’errore relativo alp−mo campione, calcolato come la distanza tra l’uscita desiderata e l’uscita fornita dalla rete. `E pos- sibile utilizzare diverse metriche di errore; la pi `u utilizzata `e l’errore quadratico medio[55] che viene calcolato su un sottoinsieme dei dati disponibili, iltraining set.
Dal momento che lo scopo dell’addestramento `e modellare il processo di generazione dei dati, pi `u che farne un’interpolazione, la scelta dell’architettura, dei dati, la definizione della metrica di errore e la strategia di addestramento devono assicurare buone capacit`a di generalizzazio- ne[56, 57]. Per questo, `e opportuno che la complessit`a del modello, in termini di numero di parametri liberi, sia commisurata alla numerosit`a del dataset. Solitamente, si ricorre a tre strategie di addestramento:
1. Lastabilizzazione strutturale: consiste nello scegliere l’architettura addestrando una se- rie di reti a cui si aggiungono, o tolgono, strati, quindi numero di neuroni[58]. Per cia- scuna di queste reti, vengono determinati i pesi minimizzando l’errore sul training set; le prestazioni vengono, poi, confrontate attraverso unacross-validation valutando, cio`e, l’errore che ogni rete commette su un altro insieme di dati, ilvalidation set, non inclusi nel training set. Alla fine, si sceglie la rete che fornisce l’errore minimo sul validation set e, una volta addestrata, la rete viene testata su un terzo insieme di dati, il test set, non utilizzato n ´e per la scelta dell’architettura n ´e per la determinazione dei parametri. 2. Laregolarizzazione: consiste nell’aggiungere alla funzione di errore un termine di pe-
nalit`a sul singolo peso, cos`ı da restringere l’insieme entro il quale i parametri vengono scelti. La nuova funzione obiettivo diventa:
E(w) =
P
X
p=1
Ep(w) + γkwk
3. L’early-stopping: consiste nell’interruzione prematura del processo di minimizzazione della funzione d’errore. Si basa sull’idea di valutare periodicamente l’errore che la rete commette sul validation set, perch ´e pu `o aumentare se l’errore sul training set diven- ta troppo piccolo. In questo caso, potrebbe iniziare la fase di overfitting in cui la rete interpola i dati di training a discapito della capacit`a di generalizzazione.
Qualunque sia la strategia di addestramento scelta, talvolta `e necessario ripetere il processo di minimizzazione dell’errore con varie architetture o funzioni di errore; per questo, disporre di funzioni di ottimizzazione efficienti `e fondamentale per costruire una rete neurale. Le difficolt`a computazionali, infatti, potrebbero risiedere in:
• Forti non linearit`a della funzione di errore;
• Elevata dimensionalit`a del vettore dei pesi ed elevato numero di campioni nel training set;
• Presenza di minimi locali e non globali;
• Impossibilit`a di convergenza globale a partire da punti iniziali arbitrari, a cui si rimedia in parte introducendo il termine di regolarizzazione.
L’addestramento di una rete neurale si svolge tipicamente in due fasi: una diforward propa- gation e una di backward propagation.
3.1.2.1 Forward-propagation
Una rete neurale artificiale organizzata a strati, in cui ogni neurone riceve input solo dai neu- roni del livello precedente e propaga l’output solo ai neuroni degli strati successivi, si dice rete feed-forward. In un rete feed-forward, non vi sono auto-collegamenti o connessioni con neu- roni di uno stesso strato e la direzione del flusso di informazione va dall’ingresso all’uscita; si dice che la rete implementa unaforward propagation. La forward-propagation riduce il rischio di generare loop che ostacolino la rete nel produrre l’output.
L’elaborazione dell’informazione di ogni neurone degli strati compresi tra l’ingresso e l’uscita, chiamati strati nascosti (hidden layers), avviene in due fasi:
1. Una fase dipre-attivazione, in cui si esegue la somma pesata degli input;
2. Una fase diattivazione, nella quale la somma pesata viene passata ad una funzione di attivazione del neurone per trasmettere l’informazione allo strato successivo.
3.1.2.2 Aggiornamento dei pesi ebackward-propagation
L’aggiornamento dei pesi, allak-ma iterazione, avviene a partire dal calcolo del gradiente della funzione di errore (E), detta anche funzione costo o di perdita. Ad esempio, il metodo iterativo pi `u diffuso per l’ottimizzazione delle funzioni differenziabili `e il metodo di discesa stocastica
del gradiente che aggiorna i pesi seguendo la (3.5).
w
(k+1)= w
k− η∇E(w
k)
(3.5)
Lo scalareη rappresenta la velocit`a di apprendimento, il learning rate, la cui scelta pu`o in- fluenzare il training della rete; infatti, valori elevati spingono il gradiente in un minimo locale piuttosto che globale, valori bassi, invece, rallentano il raggiungimento della convergenza. Ol- tre al metodo di discesa del gradiente, esistono molte altre funzioni di ottimizzazione dei pesi della rete, come l’Adaptive Gradient (AdaGrad) oppure la Root Mean Square Propagation (RM- SProp).
Comunque, tutti i metodi iterativi per l’aggiornamento dei pesi rientrano in due classi: 1. Metodibatch in cui ad ogni passo i pesi vengono aggiornati utilizzando informazioni
relative o a tutti i campioni dell’insieme di training o a sotto-insiemi di esso.
2. Metodion-line in cui ad ogni passo i pesi vengono aggiornati tenendo conto soltanto di un singolo campione.
Al crescere del numero di pesi da aggiornare, il calcolo della derivata parziale della funzione gradiente, sebbene in s ´e non richieda un onere computazionale eccessivo, potrebbe rappresen- tare il collo di bottiglia del processo di ottimizzazione globale. Per questo motivo, l’algoritmo dibackpropagation calcola solo l’errore E allo stadio uscita della rete e lo retro-propaga ai pre- cedenti, fino a quello di input. Ad ogni strato, poi, solo i pesi dei neuroni attivati, quindi quelli non abbattuti dallo strato di attivazione precedente, vengono aggiornati dall’errore propagato; `
e evidente il risparmio computazionale che ne consegue.