Soluzioni informatiche per l'impresa
Principale Servizi Soluzioni Supporto & Download Chi siamo Contatta
 
No computer has ever been designed that is ever aware of what it's doing; but most of the time, we aren't either.

Marvin Minsky

NNS

NNS è una libreria composta da una gerarchia di classi atte a simulare reti di Hopfield e reti neurali multilayer feedforward. E' completamente realizzata in C++ standard e si basa in modo sostanziale sulle STL.

Organizzazione

La libreria contiene nove classi i cui rapporti sono evidenziati nel seguente diagramma:

Rapporti gerarchici fra classi

L'utente utilizza solo quattro di queste classi:
pattern
per gestire l'Input/Output di tutte le reti neurali;
hopfield_net
per simulare reti di Hopfield;
multilayer_net
per simulare reti multilayer feedforward;
perceptron_net
per simulare il Perceptron.

PATTERN
Rappresenta sequenze di valori binari o bipolari (a seconda del contesto) di lunghezza arbitraria, ma costante ed è realizzato in modo da minimizzare l'occupazione di spazio (ogni valore viene codificato mediante un unico bit). I costruttori dell'oggetto ne permettono l'inizializzazione a partire da molti altri tipi di dato, in particolar modo:
tipi elementari
unsigned e unsigned long;
oggetti della libreria STL
vettori di oggetti bool, stringhe di caratteri, vettori di tipo valarray.
Inoltre è possibile l'inizializzazione mediante la sola dimensione del pattern. Gli altri metodi della classe servono per l'accesso e la manipolazione dei singoli valori (operator[], polarity, set), la conversione di tipo, l'effettuazione di modifiche globali (flip, corrupt) ed il calcolo di statistiche (size, average_hamming_distance).

HOPFIELD_NET
Permette di simulare una rete di Hopfield. Lo stato della rete è memorizzato in un array contenente una sola metà della matrice dei pesi (diagonale esclusa); altro spazio è riservato per registrare il numero di ricordi che si è tentato di inserire nella rete ed, eventualmente, nel caso se ne faccia uso, per la memorizzazione delle soglie dei neuroni. In definitiva per la descrizione di una rete di Hopfield di n neuroni si utilizza, nel caso peggiore, uno spazio proporzionale a ½·n·(n+1).
I principali metodi della classe sono descritti nella tabella seguente:
TIPONOMEDESCRIZIONE
COSTRUTTORE hopfield_net(size_t n) rete di hopfield priva di ricordi costituita da n neuroni
INFORMAZIONI hopfield_net(istream in) rete di hopfield precedentemente memorizzata nello stream in.
energy(pattern p) calcola l'energia dello stato p.
full true se la rete non può memorizzare altri ricordi.
load carico percentuale della rete.
stable(pattern p) true se lo stato p della rete è stabile.
basin_of_attraction(pattern p, …) calcola il bacino di attrazione dello stato p.
records(…) calcola l'insieme dei ricordi memorizzati nella rete.
find(pattern p) calcola il pattern evocato dalla rete quando le si presenta in ingresso il probe p. La modalità di attivazione è asincrona con minimizzazione dell'energia o casuale.
I/O insert(pattern p) memorizza un nuovo ricordo.
remove(pattern p) elimina un ricordo precedentemente memorizzato.
operator <<(…) memorizza lo stato della rete su file.

MULTILAYER_NET
Permette di simulare una rete multilayer feed forward (il numero di hidden layer è arbitrario ma non può variare nel tempo). Lo stato della rete è memorizzato in un vettore di matrici che descrivono le connessioni intra-strato ed i bias. Tutti i calcoli vengono effettuati mediante l'uso della classe di supporto cmatrix e della classe STL valarray in modo tale da permettere ai compilatori di ottimizzare il codice per microprocessori ad architettura vettoriale o con istruzioni SIMD.
I principali metodi della classe sono di seguito elencati:
TIPO NOME DESCRIZIONE
COSTRUTTORI multilayer_net(list l) inizializza una la rete in modo che abbia l.size() layer e che l'i-esimo layer sia costituito da l[i] neuroni.
multilayer_net(istream in) inizializza la rete mediante i dati memorizzati nello stream in.
INFORMAZIONI average_quadratic_error informazioni sui vari tipi di errore della rete dopo l'addestramento.
max_quadratic_error
max_error
fan_in(size_t i) connessioni pre-sinapsi e post-sinapsi di un neurone dell'i-esimo layer.
fan_out(size_t i)
Addestramento e simulazione train(list a) addestra la rete mediante le associazioni della lista a. Permette di specificare diverse condizioni di stop (mediante un'apposita classe stop_condition). Sono inoltre disponibili più opzioni per l'addestramento:
  • permutazione degli esempi di un'epoca per ridurre la probabilità di rimanere intrappolati in minimi locali;
  • modalità di calcolo approssimata per accelerare la convergenza.
operator[pattern p] calcola l'uscita della rete quando le si presenta in ingresso il pattern p.
I/O operator<<(…) registra la rete su file.
 
Mappa del sitoOpportunitàCollegamentiRiservatezzaNote legaliAccessibilitàW3C
Tutti i marchi ed i copyright in questa pagina sono di proprietà dei rispettivi proprietari. Per il resto © EOS (Pisa). Ultimo aggiornamento: 2011-2-26.