Simulazione di presa oggetti e riconoscimento colori
Descrizione
In questa simulazione si insegneranno alla rete due diversi compiti da
eseguire con lo stesso input visivo (task1: presa dell'oggetto e task2:
riconoscimento del colore dell'oggetto).
Con la Simulazione 1 ci proponiamo di insegnare alla rete ad afferrare gli
oggetti in modo adeguato - esattamente come facciamo nella vita quotidiana.
Per questo nella Simulazione 1 vengono proposti 4 pattern di addestramento
(vedi figura) e la rete (dotata di una mano) deve riuscire ad afferrare
l'oggetto "visto" in maniera corretta a seconda delle dimensioni dello stesso.
Nella Simulazione 2 vengono proposti alla rete 2 diversi compiti: con il
Task 1 la rete ha lo stesso compito della Simulazione 1, mentre con il Task
2 la grandezza degli oggetti diventa irrilevante per il compito e la rete
ha il compito di "categorizzare" i 4 oggetti in due gruppi distinguendoli
in base al colore.
Per questo nella Simulazione 2 vengono proposti 8 pattern di addestramento:
i primi 4 sono identici a quelli della Simulazione 1 (task 1), negli altri
4 la rete ha il compito di riconoscere i colori degli oggetti (task 2).
Nel
secondo task la rete deve rispondere, come nel task 1, con un output di
tipo motorio ma con una codifica diversa: con una "presa grande" nel caso
l'oggetto sia di colore nero e con una "presa piccola" nel caso in cui
l'oggetto sia di colore grigio, indipendentemente dalle dimensioni
dell'oggetto.
Gli angoli verdi nella figura qui sotto definiscono come l'oggetto deve essere preso.
Una rete neurale verrà addestrata inizialmente per 2.000 generazioni ad eseguire correttamente il task 1 (4 output per la presa dell'oggetto).
Nel task 2 al set di addestramento della rete (già addestrata per afferrare l'oggetto) vengono aggiunti ulteriori 4 pattern per eseguire il task 2 (riconoscimento colore). In questo task per altre 2.000 generazioni la rete è sottoposta ad apprendimento su entrambi i compiti (presa oggetto e riconoscimento colore).
I task vengono assegnati alla rete aggiungendo, oltre ai due tipi di input esistenti (input visivo e input propriocettivo) un ulteriore input (costituito da 2 neuroni) sotto lo strato del layer hidden, così codificati:
La struttura su cui vengono eseguite le simulazioni è definita come nella figura qui sotto:
La simulazione con il software
Per eseguire la simulazione con il software è necessario costruirsi i 4 pattern del task 1 e i 4 del task 2 o scaricare i pattern già costruiti da questi link:
Per chi avesse problemi a scaricare direttamente i due file qui sopra, può scaricare il file zip: Pattern task1 e task2 zippati
Salvare i pattern scaricati (o creati) in una directory da cui poterli recuperare successivamente.
Procedere ora con i seguenti passi:
1) Inizializzazione: lanciare il software, andare nella sezione "Procedure" e cliccare su "INIZIALIZZA" per creare l'ambiente di simulazione.
2) Non modificare i valori di default "report frequency" = 100 , "1 Task Generation" = 2000 e "2 Task Generation" = 2000
3) Impostare la directory di lavoro e i pattern che saranno utilizzati durante la simulazione. La directory di lavoro deve essere una directory completamente vuota, cioè ad esclusivo uso del software per salvare i log della simulazione che saranno elaborati in un secondo momento. I pattern da impostare sono invece i due file che avete scaricato qui sopra: indicate al software il percorso in cui sono stati salvati e il nome del file.
4) Impostare i seed con cui fare le simulazioni. Ad ogni seed corrisponde un intero ciclo di simulazione (task 1 e task 2).
L'uso di un seed permette la ripetitività dell'esperimento. A seed uguali corrispondono infatti risultati uguali.
L'idea già esposta a lezione è quella di dividerci blocchi di seed in modo da evitare di fare lo stesso lavoro due volte.
5) Ora è possibile cominciare la simulazione cliccando sul tasto "AVVIO". Il motore comincerà dal primo seed e avanzerà automaticamente seguendo l'ordine impostato fra tutti i seed che sono selezionati.
Note sull'uso del software
- il tasto "TERMINA" resetta l'ambiente di simulazione: se lo si preme i seed fino a quel momento eseguiti sono salvi eccetto il seed in corso d'opera. Per tale seed si dovrà ricominciare dall'inizio l'intero ciclo.
- per interrompere momentaneamente la simulazione senza perdere il seed che al momento si sta utilizzando premere "PAUSA". Per riprendere il processo da dove si era rimasti premere "RIPRENDI".
Mettere in pausa il processo è utile per eseguire altri lavori che richiedono memoria/tempo macchina (che vengono occupati dal software di simulazione) o per spegnere il computer (in modalità "Stand By"). Tale modalità, nei pc che ne sono predisposti, non chiude infatti l'applicazione e permette di riprendere la simulazione dal punto lasciato.
N.B. Spegnere il computer (senza utilizzare la modalità "Stand By"), uscire dal software (chiudendo l'applicazione) o premere il tasto "TERMINA" hanno tutte le stesse conseguenze: dover riprendere il lavoro fatto dal seed che era in esecuzione che non aveva raggiunto le 2000 generazioni del task 2.
Considerando che un'intera simulazione su ogni seed richiede circa un'ora e mezza circa (i tempi variano a seconda del computer) dovreste lanciare la simulazione quando avete la possibilità di tenere il pc acceso (se non usate PAUSA/RIPREND) almeno il tempo di finire un ciclo.
Quando completate i seed ricordatevi quelli che avete fatto (esiste anche un file di log "Report.log" nella directory di lavoro che tiene traccia dei seed completati):
se eseguite la simulazioni in più passi (chiusura e apertura pc), reimpostate i seed mettendo solo quelli che non avete ancora fatto ogni volta che inizializzate la simulazione con "INIZIALIZZA".
Usate comunque sempre la stessa directory di lavoro.
Per qualsiasi dubbio o informazione usiamo il newsgroup! :)
|