Implementazione di un sistema automatico di predizione con reti neuraliInserito da Francisco Yepes il Ven, 08/31/2007 - 11:36 |
La Figura 1 riporta l'architettura generica di un sistema automatico di analisi di serie di dati. La procedura inizia con la identificazione e preparazione, nel formato adeguato, di tutti i dati necessari per il problema. Per una ipotetica funzione del problema F(q) = f(q1, q2, ..., qn), ogni dato consiste nell'elenco delle variabili indipendenti del vettore q associate al valore/i della funzione o target F(q). L'insieme di tutti i dati o record costituisce il database dei dati del problema, i quali vengono stoccati in maniera efficiente attraverso un software appropriato, come un database relazionale. In questa fase vengono anche divisi i dati in diverse partizioni che poi daranno luogo ai set di addestramento e di verifica della rete neurale.

Figura 1. Architettura generica di un sistema automatico di analisi di serie di dati.
L'impiego della rete neurale ha lo scopo di mettere in evidenza la relazione funzionale tra dati in ingresso (input) e in uscita (output). Il processo di addestramento della rete neurale genera un risultato (un file di output) che contiene la struttura e l'elenco dei parametri matematici più adatti per il problema in considerazione. Questo file viene utilizzato da ogni istanza del problema, che è un record che contiene solo l'elenco delle variabili indipendenti del problema (e quindi privo del valore F(q)) per un determinato caso particolare. L'analisi di una istanza del problema attraverso il risultato dell'addestramento della rete genera il valore F(q) mancante, il che costituisce lo scopo dell'intera procedura.
Se i risultati numerici ottenuti per l'istanza in considerazione consentono una validazione oppure è possibile associare il valore della funzione F(q) ai valori del vettore q dell'istanza in un momento successivo, allora l'istanza può divenire parte integrante del set di dati del problema ed essere inserita nel database. Quando si è verificata una variazione significativa del numero di dati, allora è necessario un nuovo processo di addestramento.
Nell'architettura della Figura 1 possono essere identificati quattro elementi costitutivi:
- un database: per l'immagazzinamento e la estrazione di dati in maniera efficiente. La scelta ricade su un database di tipo relazionale, che consente la esportazione, inserimento e manutenzione di dati attraverso il linguaggio SQL e permette una organizzazione efficiente dei dati con riduzioni drastiche dei tempi di recupero delle informazioni. Inoltre, il database deve consentire l'accesso simultaneo di più utenti e supportare le transazioni. La scelta del database può avvalersi di diversi prodotti, commerciali o open-source, ma noi proponiamo MySQL. MySQL usa un linguaggio SQL conforme allo standard ANSI SQL92., versione 4 o superiore;
- un software di calcolo: contenente la rete neurale propriamente detta e il software correlato necessario per il suo funzionamento;
- un frontend: per la gestione dell'input e dell'output dei dati e che consenta l'utilizzo da parte di un utente medio. Il frontend deve avere due caratteristiche fondamentali (un modo efficiente di implementare queste due caratteristiche è attraverso un web server. Il web server è un programma che consente a client remoti di connettersi, attraverso opportuni protocolli di comunicazione e lanciare programmi in modo controllato, gestendo i problemi di sicurezza correlati e restituendo i risultati dell'elaborazione. E' possibile utilizzare anche protocolli cifrati, tramite l'uso di SSL integrato con i protocolli usuali, se devono viaggiare delle informazioni riservate o dati sensibili;):
- deve consentire un accesso remoto, cioè deve permettere l'accesso ai dati e alle procedure di calcolo attraverso postazioni geograficamente delocalizzate rispetto al sistema che contiene fisicamente i dati e le procedure di calcolo. Inoltre deve permettere l'accesso ai dati in modo simultaneo. Queste caratteristiche si configurano concretamente attraverso l'utilizzo/sviluppo adeguato di applicazioni client/server;
- deve essere multipiattaforma, cioè deve essere indipendente dall'architettura del sistema operativo.
- software di supporto: validazione dei dati, costruzione delle serie storiche in formato appropriato per l'utilizzo degli algoritmi di calcolo, generazione di grafici di risultati, statistiche, servizi di supporto, cluster per la parallelizzazione dei calcoli.
La configurazione remota multipiattaforma descritta non richiede alcun tipo di sviluppo dalla parte client dato che praticamente tutte le implementazioni dei sistemi operativi moderni installano dei programmi client che consentono la connessione e il dialogo con server remoti. Quindi, il software proposto nel presente articolo si riferisce esclusivamente ai componenti server necessari per il funzionamento dell'architettura della Figura 1. Questo fatto consente la scelta della piattaforma sulla quale implementare tutti i componenti. Si ritiene che un progetto scientifico come il presente possa essere messo in atto in maniera efficiente su un sistema GNU/ Linux, con le seguenti caratteristiche:
- Kernel 2.6;
- Software di lavoro da una distribuzione commerciale stabile;
- Web server: Apache, versione 2. Programmazione web dinamica attraverso lo standard CGI;
- Database: MySQL 4;
- Possono essere utilizzati programmi di calcolo per l'analisi dei dati come Maxima per quanto riguarda il calcolo simbolico e Octave e Scilab per il calcolo numerico;
- Nel caso si decida l'utilizzo di un cluster per la parallelizzazione dei calcoli, la scelta ricade in OpenMosix, nell'ultima versione stabile compatibile con il kernel del sistema.

Figura 2. Una rete neurale feedforward a interconnessione completa.
Questa configurazione può essere estesa e ampliata per aumentare l'efficienza e le prestazioni complessive della procedura. In questa sede, abbiamo individuato tre possibili potenziamenti:
- Utilizzo di metodi evoluzionistici nell'identificazione della rete neurale ottimale: i risultati di una rete neurale, oltre che dalla quantità e qualità dei dati utilizzati, dipendono dalla struttura della rete stessa (numero di neuroni e livelli. Si veda la Figura 2) e da una serie di parametri matematici che ne condizionano il comportamento. La ricerca della rete ottima, e cioè del numero di livelli e neuroni e dei valori dei parametri matematici più adeguati per un dato problema, richiede la esplorazione di un certo numero di possibilità ragionevoli. È possibile utilizzare tecniche evoluzionistiche, come algoritmi genetici o simulated annealing, che consentono una esplorazione intelligente dello spazio delle possibili configurazioni. Questi metodi consentono quindi la ricerca della rete ottimale per un problema dato consentendone l'implementazione all'interno della procedura automatizzata proposta nella Figura 1. L'aggiunta di un algoritmo genetico aumenta enormemente la qualità dei risultati ottenuti;
- Utilizzo di tecniche statistiche per pre-processare i dati prima dell'effettivo utilizzo della rete neurale: le tecniche di preprocessing sono utilizzate in genere per diminuire la quantità di dati da trattare. Alcune tecniche statistiche, come il Parallel Components Analysis (PCA) consentono di ridurre la dimensione del vettore dei parametri e quindi diminuire i tempi di calcolo successivi;
- La velocità di esecuzione dei calcoli può essere drasticamente incrementata se viene utilizzato un cluster di calcolo. Il cluster è un modo per parallelizzare, e cioè per realizzare simultaneamente in modo asincrono, le elaborazioni. Richiede l'utilizzo di più CPU (non necessariamente sulla stessa macchina) bilanciate attraverso un software appropriato, come OpenMosix. Inoltre, richiede uno sviluppo apposito delle applicazioni di calcolo, in maniera che possano sfruttare la presenza di più processori. L'asincronicità, necessaria per avere un vero calcolo parallelo, richiede lo sviluppo di applicazioni non strettamente sequenziali, il che può essere ottenuto col l'uso di tecniche multithreading. A questo riguardo, è conveniente che il sistema sia compatibile con lo standard POSIX1003.1c. I sistemi operativi proposti in questo documento sono aderenti a questo standard.
Questo articolo presenta una struttura che può essere utilizzata sia per i problemi di pattern recognition sia per l'analisi di serie temporali.
- Login o registrati per inviare commenti
- Versione stampabile
