• Non ci sono risultati.

2.3 Dettagli implementativi

2.3.3 Interfaccia Grafica

La libreria CLS Java API 1.0, come anticipato, fornisce anche una Graphical User Interface (GUI) per la configurazione ed il controllo del Learning Layer. il package LearningLayerAPI.gui, disponibile nella cartella WP2 del reposito- ry RUBICON, contiene tutte le classi necessarie per instanziare la GUI, ma

non `e ancora parte ufficiale del progetto ed `e fornita solamente in versione

beta per una visione preliminare delle proprie funzionalit`a. La GUI permette

all’utente di organizzare ed accedere al sistema di apprendimento distribuito, mediante metodi per modificare la configurazione del Learning Layer, con-

trollare la sua esecuzione e monitorare gli LNOutputs. La classe principale `e

gui.main.StartWindow che include l’implementazione del metodo main() per l’esecuzione dell’interfaccia. La GUI accede alla LN attraverso le CLS API: legge le predizioni dalla componente LNOutputs ed invoca metodi definiti in manager.supervisorInterface e manager.ControlInterface. Inoltre, si interfac- cia opzionalmente con uno sniffer per ricevere e pubblicare a runtime i valori presenti nelle connessioni sinaptiche e le letture correnti dei trasduttori. In- fine implementa un’interfaccia JDBC (package gui.database) che permette la connessione con un database PostgreSQL contenente informazioni riguardanti gli esperimenti eseguiti dalla LN, come il layout della LN, i dispositivi che la realizzano, i moduli di apprendimento e le connessioni sinaptiche associate. Mediante questo database, gli esperimenti possono essere memorizzati per una esecuzione/analisi futura. Uno screenshot della GUI `e visibile in figura 2.6 do- ve la struttura della LN `e rappresentata come un grafo in cui i nodi sono i vari

dispositivi e gli archi sono le connessioni sinaptiche. Ogni arco `e etichettato

dal nome simbolico dei neuroni connessi nei dispositivi sorgente e destinazione. Dato che le connessioni fra moduli possono essere in numero elevato, l’inter- faccia permette la selezione di un singolo dispositivo, focalizzandosi solo sulle proprie connessioni (il nodo rosso in figura 2.6).

La GUI fornisce un gestore dei dispositivi (device manager) dove l’utente

pu`o accedere a tutti i parametri di un modulo di apprendimento inserito in un

dispositivo. Il device manager `e attivato eseguendo un doppio click sul nodo

. Figura 2.6: screenshot della GUI

l’interfaccia o visualizzato in una nuova finestra. Attraverso il device manager,

l’utente pu`o modificare sia i parametri del modulo di apprendimento defini-

ti nella classe generics.EchoStateNetwork che la topologia di connessione con gli altri moduli di apprendimento. Le connessioni sinaptiche possono essere stabilite sia mediante il device manager sia disegnando una connessione fra 2 nodi nella finestra che mostra la LN, in entrambi i casi all’utente `e richiesto di specificare l’identificatore del neuroni di input e del neurone di output da con-

nettere. Inoltre un nuovo dispositivo pu`o essere aggiunto alla LN utilizzando

il pulsante (+) visualizzato nell’angolo in alto a sinistra della GUI. Comandi che modificano l’intera rete possono essere gestiti dal menu sulla destra della

GUI (figura 2.6): mediante questo menu `e possibile modificare il clock del-

l’intera rete, caricare o salvare una configurazione LN sui dispositivi presenti, abilitare/disabilitare la forward computation, resettare la LN per eseguirla con una configurazione differente e abilitare o disabilitare lo sniffer opzionale. Se lo sniffer `e attivo, `e possibile visualizzare gli outputs della Learning Network nella parte bassa della GUI.

. Figura 2.7: screenshot della GUI che mostra il device manager

Capitolo 3

Progettazione ed

implementazione di nuove

funzionalit`a del Learning Layer

Il sistema RUBICON presentato nei precedenti capitoli mostra alcune limita- zioni, con alcune caratteristiche non ancora implementate e sviluppate.

In questo capitolo verranno presentate le funzionalit`a aggiuntive implementate

durante lo svolgimento del lavoro di tesi: in 3.1 `e introdotta la funzionalit`a

di apprendimento distribuito su nodi dell’ecologia con capacit`a computazio-

nale eterogenea. Come descritto in 1.3.2, le capacit`a di apprendimento di

RUBICON sono limitate dalla scarsa memoria e potenza computazionale dei dispositivi coinvolti, appare quindi opportuno sviluppare un meccanismo di apprendimento su dispositivi a potenza computazionale elevata quando risulta

necessaria una complessa fase di apprendimento, che non pu`o essere eseguita

a bordo dei dispositivi presenti nell’ecologia per mancanza di risorse.

In 3.2 `e descritto il meccanismo di recovery per permettere al sistema di pre-

sentare caratteristiche di robustezza in caso di fallimenti inaspettati di alcu- ni dispositivi partecipanti all’ecologia ed eseguire un meccanismo di recovery quando un sensore termina inaspettatamente la sua esecuzione.

In 3.3 `e descritta la procedura di Cross Fold Validation realizzata per eseguire l’addestramento e la model selection di una rete neurale.

Infine in 3.4 `e presentata una nuova versione dell’interfaccia grafica utilizzata

da RUBICON, in cui sono incluse sia le precedenti che le nuove funzionalit`a

3.1

Sviluppo di un sistema di apprendimen-

to distribuito per dispositivi con capacit`a

computazionale eterogenea

Come descritto nella sezione 1.3.2, alcuni dispositivi inclusi nell’ecologia RU-

BICON hanno una limitata capacit`a di calcolo ed una limitata capacit`a di

memoria e possono essere alimentati a batteria, condizionando cos`ı le loro

funzionalit`a di apprendimento. Le ESN inserite su tali dispositivi hanno una

modesta grandezza del reservoir per soddifare i vincoli di memoria, a scapito

delle funzionalit`a di apprendimento. Talvolta `e richiesto un apprendimento

pi`u impegnativo, ad esempio quando `e necessario effettuare la localizzazione

di utenti e robots in vasti ambienti (5.1) oppure quando `e richiesta la classifi- cazione di eventi compositi (5.2).

Risulta quindi fondamentale implementare le funzionalit`a di apprendimento

su dispositivi con pi`u alta potenza, o in generale computazionalmente etero-

genei. Questo meccanismo dovr`a prevedere la comunicazione fra i vari nodi

dell’ecologia per gestire ed organizzare una fase di apprendimento distribuito.

Pi`u in dettaglio: dovr`a essere implementato un meccanismo di comunicazione

per la creazione, l’esecuzione e la coordinazione di moduli di apprendimento distribuiti su una rete eterogenea.

Il meccanismo implementato utilizza le funzionalit`a gi`a presenti nel sistema per

eseguire la fase di apprendimento. In particolare `e impiegato PEIS (2.1.1) per

fornire le informazioni coinvolte in questo processo ed `e creato un meccanismo

di comunicazione sinaptica mediante lo scambio di tuple fra i vari dispositivi.

Un nodo impiegato nella fase di apprendimento distribuito ospita una o pi`u

ESN e tutte le informazioni relative alle varie connessioni sfruttate.

Un modulo di apprendimento distribuito su di un dispositivo `e implementato

da un oggetto della classe learningnetwork.LearningModulePC e tutti i moduli presenti su un dispositivo sono mantenuti in un repository contenuto in un oggetto della classe learningnetwork.PCLMmanager che permette la creazione e la distruzione dei moduli tramite PEIS.

Documenti correlati