• Non ci sono risultati.

In questa sezione `e descritto lo sviluppo della tecnica di apprendimento chia-

mata Cross−Fold Validation, tecnica per valutare come il risultato di un’analisi statistica generalizzer`a su un dataset indipendente. Tale tecnica `e utilizzata nel campo dell’apprendimento automatico per stimare l’accuratezza che un

modello predittivo avr`a in pratica. Una cross fold validation include il par-

tizionamento dei dati in sottoinsiemi complementari, verr`a eseguito l’appren-

dimento su di un sottoinsieme (chiamato Training set) e verr`a validato su un

altro sottoinsieme (chiamato Validation set).

Sono eseguiti cicli multipli di cross validation usando partizioni differenti, per quantificare l’effeto della varianza dei dati.

In particolare una k−fold validation consiste nella suddivisione del dataset to- tale (cio`e l’insieme di tutti i dati disponibili) in k parti di uguale numerosit`a e, ad ogni passo, la parte (1/k)-esima del dataset viene ad essere il validation da- taset, mentre la restante parte costituisce il training dataset. Cos`ı, per ognuna delle k parti si allena il modello, cercando in tal modo di ridurre i problemi di overfitting e di campionamento asimmetrico.

Supponendo di avere un modello con uno o pi`u parametri liberi ed un dataset

su cui `e allenato tale modello, il processo ottimizzer`a i parametri del modello per permettere a quest’ultimo di adattarsi ai dati in training il meglio possi- bile. Prendendo successivamente un insieme di dati indipendente ma simile a quelli utilizzati in training, generalmente il modello non si adatter`a a tali da-

ti. Questo comportamento `e chiamato overfitting ed `e probabile che avvenga

quando la grandezza del training set `e piccola o quando il numero dei para-

metri del modello `e molto elevato. La cross validation `e un modo di predirre

l’adattamento di un modello ad un ipotetico insieme di validation, quando non disponibile esplicitamente.

Di solito un algoritmo di apprendimento viene allenato usando un certo in- sieme di esempio (il training set), situazioni tipo in cui `e gi`a noto il risultato che interessa prevedere (il target). Si assume che l’algoritmo di apprendimento raggiunger`a uno stato in cui sar`a in grado di generalizzare. Tuttavia, soprat-

tutto nei casi in cui l’apprendimento `e stato effettuato troppo a lungo e con

campioni ridondanti, il modello potrebbe adattarsi a caratteristiche che sono specifiche solo del training set, ma che non hanno riscontro nel resto dei casi; perci`o in presenza di overfitting, le prestazioni (cio`e la capacit`a di adattarsi/- prevedere) sui dati di allenamento aumenteranno, mentre saranno peggiori sui dati non visionati.

La fase di apprendimento ha inoltre previsto la creazione e l’utilizzo di un meccanismo di model-selection per testare un certo numero di Echo State Net-

work diverse fra loro e per scegliere quella con migliore capacit`a predittiva.

Tale procedura crea un determinato numero di ESN a seguito della specifica di valori diversi per i parametri liberi. In particolare i parametri utilizzati nella procedura di Cross Fold Validation implementata, sono:

• Reservoir Dimension, • Readout Regularization, • Leaky Parameter.

A seguito della creazione delle varie ESN, `e diviso il dataset in Training set,

Validation set e Test set. Quest’ultimo `e inizialmente accantonato ed utiliz-

zato alla fine della procedura di validazione per testare la bont`a della ESN

ottenuta.

Le sequenze contenute nel Training set sono utilizzate per addestrare la rete neurale, mentre le sequenze del Validation set sono utilizzate per calcolare i

valori medi della funzione di valutazione. Tale funzione pu`o variare a seconda

del tipo di task da apprendere. In particolare per i task di regressione, dove gli output sono valori continui, `e utilizzato l’errore quadratico medio (in 5.1 ), mentre per i task di classificazione `e utilizzata l’accuratezza (5.2). Infine l’ESN risultante dalla procedura di model selection viene testata con le sequenze di dati contenute nel Test set, e viene fornita al sistema per un eventuale carica- mento su di un modulo di apprendimento.

3.4

Interfaccia Grafica

In 2.3.3 `e descritta la versione preliminare della GUI presente nel progetto RU-

BICON che successivamente `e stata modificata per includere la funzionalit`a di

apprendimento distribuito su dispositivi ad alta potenza computazionale (visi- bile in figura 3.4). In particolare, quando sono creati moduli di apprendimento distribuiti, sono visualizzati sulla GUI, mostrando l’identificatore minore di zero (N ET ID) ed inoltre `e inserito nella visualizzazione anche il sink, visua- lizzato con un nodo di diverso colore, in modo da poter creare graficamente connessioni sinaptiche dal sink ad un dispositivo distribuito sulla rete. Sulla GUI sono stati introdotti pulsanti aggiuntivi per impostare il numero di cicli

di clock utilizzati per controllare la possibile disconnessione di alcuni sensori (threshold ) e per avviare l’esecuzione dei vari thread coinvolti nel componente Learning Layer di RUBICON.

. Figura 3.4: screenshot della GUI a cui sono stati aggiunti pulsanti per specifi- care la quantit`a di output da visualizzare, il pulsante per far partire e fermare tutti i thread del LearningLayer, la casella di testo per specificare la demo da eseguire, il pulsante per iniziare e fermare l’esecuzione della demo di test ed una casella di testo in cui viene specificata la threshold per effettuare la recovery. Inoltre in rosso `e visibile il dispositivo sink a cui sono collegati due sensori.

Capitolo 4

Codice Sviluppato

In questo capitolo sono riportate e commentate alcune parti del codice realiz- zato particolarmente significative per la comprensione dell’intero progetto di tesi.

In 4.1 `e mostrato il codice dei moduli di apprendimento su PC, la creazio-

ne e l’implementazione del meccanismo di comunicazione sinaptica attraverso PEIS.

In 4.2 `e presentato il codice per realizzare il meccanismo di forward recovery,

utilizzato a seguito del fallimento di uno o pi`u sensori distributi nell’ambiente. Infine in 4.3 `e mostrato il codice realizzato per eseguire la procedura di Cross Fold validation, che compie una model selection sull’insieme di reti neurali create attraverso la specifica di un certo numero di parametri.

Documenti correlati