Preelaborazione, Autoassociatori e Reti Ricosive

Il software descritto in questa pagina disponibile sotto forma di eseguibili per Linux. I programmi sono compilati con Linux RedHat 6.0. Per i programmi di cui non sono disponibili direttamente i sorgenti, questi possono essere richiesti (scrivere a maggini@dii.unisi.it). I programmi "dovrebbero" essere ricompilabili anche per Windows.

  1. Generazione dei dati
  2. Simulatore per autoassociatori neurali
  3. Simulatore per reti neurali ricorsive

1. Generatore di dati

Il programma grafo12 permette di generare un insieme di esempi di logo a partire dall'immagine originale introducendo rotazioni, rumore impulsivo e macchie. Il programma genera il numero di esempi specificato aggiungendo ad ogni esempio rumore in modo casuale. A scelta il programma genera un file contenente gli esempi preelaborati in formato compatibile con i programmi di simulazione per gli autoassociatori o per le reti ricorsive.

Il programma si esegue come:

grafo12 NP NN N_EXAMPLES F_1 ... F_NP FN_1 ... FN_NN [options]

dove:

  •   NP il numero delle classi
  •   NN il numero delle classi negative (per gli autoassociatori)
  •   N_EXAMPLES il numero di esempi da generare
  •   F_1 ... F_NP sono i nomi dei file delle immagini dei logo delle classi 1..NP (in formato pnm)
  •   FN_1 ... FN_NN sono i nomi dei file delle immagini dei logo delle classi negative 1..NN (in formato pnm) per la generazione di files per gli autoassociatori

Le opzioni che possono essere specificate di seguito sono:

1. parametri per la definizione del rumore:

  •   -r $(max rotation angle) definisce il massimo angolo di rotazione (in radianti)
  •   -l $(max strip lenght) definisce la massima lunghezza di una striscia (in percentuale sulla larghezza dell'immagine)
  •   -a $(max strip height) definisce la massima altezza di una striscia (in percentuale sull'altezza dell'immagine)
  •   -d $(max blob dimension) definisce il diametro massimo delle macchie circolari
  •   -n $(number of contiguous blobs) definisce il numero di macchie circolari contigue usate per formare immagini composte
  •   -p $(percentage of pixels changed by impulsive noise) definisce la percentuale di rumore impulsivo (non usare valori superiori a 0.1!)

2. switch di generazione:

  •   -lt $(percentage of pattern inserted into the learning set) definisce la percentuale di pattern usati per l'apprendimento
  •   -au indica che devono essere generati anche i files per l'apprendimento degli autoassociatori
  •   -Oau indica che devono essere generati SOLO i files per l'addestramento degli autoassociatori
  •   -h indica che deve essere inserita l'intestazione richiesta dai programmi di BPTS per la definizione dei targets, dimesione degli ingressi, ecc..
  •   -m $(number of the maximum outdegree of the BPTS network) definisce il massimo outdegree (numero di figli di un nodo) nella estrazione dei grafi
  •   -v attiva il modo verboso
  •   -targets $(number of BPTS targets) specifica i vettori obiettivo per BPTS
  •   -outputs $(number of BPTS outputs) specifica il numero di uscite usate per le reti BPTS


Download dei sorgenti: grafo12-src.tgz (125Kb)
Download dell'eseguibile per Linux: grafo12-bin.tgz  (111Kb)
(L'archivio contiene anche le immagini in formato pnm dei 4 logo)

Per estrarre il file: gunzip -c <file> | tar xvf -

2. Autoassociatori neurali

I due programmi train e testpermettono rispettivamente di addestare ed utilizzare un autoassociatore neurale come classificatore. I programmi sono specializzati per questo compito e quindi hanno il minimo di opzioni. Entrambi i programmi utlizzano un formato di file comune per i dati di ingresso alla rete e per definire la struttura della rete stessa.

I programmi permettono di usare autoassociatori con struttura prefissata, ovvero con uno strato di ingresso, uno strato di neuroni nascosti (con la tangente iperbolica come funzione di uscita) ed uno strato di uscita con neuroni lineari. Le uniche variabili sono il numero di componenti di ingresso e il numero di neuroni nello strato nascosto.

a. Il file della rete (.ann)
Il file dati relativo ad un autoassociatore neurale un file ASCII che contiene le informazioni necessarie a definire la topologia della rete ed il valore dei pesi sulle connessioni. Sulla prima riga, il file contiene i due parametri che definiscono univocamente la struttura dell'autoassociatore: il numero di ingressi e il numero di neuroni nascosti. Sulle righe successive si trovano i pesi delle connessioni.

b. Il file degli esempi (.pat)
Il file degli esempi contiene, uno per riga, i vettori di ingresso per l'autoassociatore secondo il seguente formato:

<nome del pattern> c1 c2 ..... cN <classe>

dove il nome del pattern una stringa non contenente spazi che utilizzata per identificare l'esempio (non richiesto che sia univoca), c1 c2 ... cN sono le componenti del vettore di ingresso separate da spazi, classe un'etichetta che pu assumere i valori P (maiuscola necessariamente) ad indicare un esempio positivo o N (maiuscola necessariamente) ad indicare un esempio negativo.

c. I programmi
1. train viene eseguito specificando due parametri sulla linea di comando, il file iniziale della rete ed il file dei dati su cui effettuare l'apprendimento:

train file.ann file.pat

Il programma esegue l'apprendimento in modo automatico visualizzando sulla console prima tutte le distanze ingresso-uscita per gli esempi e poi, per ogni epoca, i seguenti parametri:

dove:

  • cm il costo medio (costo/numero di esempi)
  • g la massima componente del gradiente
  • lr il tasso di apprendimento (learning rate)
  • PmaxD la massima distanza ingresso-uscita per gli esempi positivi
  • Pok il numero di esempi positivi classificati correttamente (utilizzando una soglia di 5)
  • #P il numero totale di esempi positivi
  • NminD la distanza ingresso-uscita minima per gli esempi negativi
  • Nok il numero di esempi negativi classificati correttamente (distanza ingresso-uscita superiore a 5)
  • #N il numero totale di esempi negativi

La soglia a 5 usata per la classificazione del tutto arbitraria e serve solo per per dare un'idea di come funziona la classificazione in linea generale.
Il programma si arresta quando verificato uno dei seguenti criteri:

  • la massima componente del gradiente scende sotto una soglia (1e-30)
  • il costo normalizzato scende sotto un valore prefissato (0.001)
  • stato raggiunto il numero massimo di epoche (1000)
  • il learning rate sceso sotto un valore di soglia (1e-30)

Quando il programma termina viene salvata la rete addestrata nel file final.ann.

2. test viene eseguito specificando l'autoassociatore da usare come classificatore,  il file dati che contiene i vettori di ingresso che si vogliono classificare e la soglia sulla distanza ingresso-uscita usata per il test:

test file.ann file.pat soglia

Il risultato dell'esecuzione memorizzato nel file primo.pin cui sono riportate, una per riga, le distanze ingresso-uscita per ogni vettore del file dati. Il programma visualizza poi i risultati complessivi del test per gli esempi positivi e negativi presenti nel file dati.

3. genauto pemette di generare un autoassociatore con i pesi inizializzati in modo casuale nell'intervallo [-0.1,0.1]. Il programma viene eseguito con:

genauto ingressi Nnascosti seme

dove ingressi il numero di ingressi/uscite dell'autoassociatore, Nnascosti il numero di neuroni nascosti e seme il seme per il generatore casuale di numeri utilizzato per inizializzare i pesi della rete. Il risultato dell'esecuzione il file inizio.ann che definisce la rete generata.

Download degli eseguibili per Linux: autoNN-bin.tgz (15Kb)
Download dei sorgenti (C ANSI): autoNN-src.tgz    (7Kb)

Per estrarre i files: gunzip -c <file.tgz>  |  tar xvf -
 

3. Reti neurali ricorsive (BPTS)

Per simulare le reti neurali ricorsive sono utilizzati i programmi BPTSNetGen, BPTSTrain e BPTSSim. La struttura della rete e il valore dei pesi delle connessioni sono memorizzati in file di tipo .net. I dati sono memorizzati in file di tipo .gph . Il formato dei file dati descritto nel breve manuale fornito insieme ai programmi. In tale manulae anche descritto brevemente il funzionamento dei programmi.

Download degli eseguibili per Linux: BPTS-bin.tgz (51Kb)
Download dei sorgenti (C ANSI): BPTS-src.tgz (34Kb)

Per estrarre i files: gunzip -c <file.tgz>  |  tar xvf -


[Home] [MLP] [Autoassociatori Neurali] [Reti Neurali Ricorsive]