a) L'ipotesi di partenza
L'obbiettivo era quello di costruire una rete che formasse propri
significati, per fare ciò, abbiamo applicato i concetti generali, esposti alla fine del
secondo capitolo.
Tale rete deve, quindi, decidere le proprie azioni in base alla situazione ambientale,
alla propria situazione interna (ma per semplificare si abbiamo provato una rete con un
solo scopo e quindi la sua situazione interna rimaneva costante) ed agli effetti delle
azioni passate.
Quest'ultimo obbiettivo implicava la necessità di implementare una sorta di rinforzo.
Gran parte degli sforzi li abbiamo così rivolti al tentativo di organizzare una rete
capace di autovalutare il risultato delle proprie azioni e rinforzare le azioni che davano
un risultato positivo.
La valutazione doveva essere di due tipi:
una implicita, fisica, data dalla risposta che automaticamente la rete produceva
in risposta ad una data stimolazione;
una emotiva, costituita da un'altra rete che valutava in termini di positivo e
negativo quello che sarebbe accaduto in seguito alla risposta che aveva prodotto la prima
rete (che chiameremo motoria). Questa valutazione non era fatta analizzando
sistematicamente gli effetti dei movimenti che si accingeva a compiere, ma basandosi
esclusivamente sull'esperienza precedente. Certamente è un'esagerazione definirla
emotiva, essa non riproduce tutta la complessità del fenomeno emotivo, non cambia il modo
di lavorare della rete motoria, non altera lo stato generale dell'automa, ma si limita a
rifiutare azioni giudicate ad effetto negativo. Comunque possiamo considerarla la forma
più semplice che riusciamo ad immaginare di valutazione emotiva, capace di distinguere
solo tra una situazione che è appetibile ed una che è pericolosa.
Abbiamo quindi tenuto costante (con piccole modifiche) la strutturazione generale
dell'automa, che prevedeva questa dipendenza delle azioni dalla situazione ed abbiamo
provato diverse leggi di apprendimento, cercando di fornirlo di un rinforzo delle azioni
che, in una certa situazione, erano valutate positivamente.
Inizialmente abbiamo tentato con l'ART2 (Grossberg, 1987)15
per categorizzare le situazioni, ma esso categorizza astraendo le
caratteristiche più grossolane e livellando le differenze minori, ciò non garantisce che
vengano raggruppate insieme le situazioni che richiedono le stesse risposte. Anzi piccole
differenze nelle situazioni possono richiedere grandi differenze nelle risposte e
viceversa.
Si è preferito allora associare situazioni e risposte con una legge di associazione
lineare. In entrambi i casi (come nei successivi) il rinforzo era costituito dalla
modifica dei coefficienti delle connessioni (secondo le rispettive leggi) solo nei casi in
cui le azioni si rivelano positive. Questo tentativo ha dato risultati ancora più
insoddisfacenti, non spostandosi in maniera rilevante da un comportamento casuale.
Abbiamo provato, allora a sostituire alla legge di associazione lineare la
back-propagation ed a implementare un minimo di indebolimento delle azioni negative.
Quest'indebolimento è stato ottenuto, in un primo tempo calcolando normalmente con la
backpropagation i differenziali delle connessioni, ma applicandoli con il segno inverso.
Successivamente abbiamo provato cambiando il segno della connessione tra il neurone dello
strato sensorio e dello strato associativo più attivi in occasione dell'azione valutata
negativamente. Ambedue questi accorgimenti hanno dato risultati insoddisfacenti (anche se
non sono stati valutati approfonditamente) e sono stati progressivamente abbandonati, ma
l'architettura generale dell'automa è risultata abbastanza efficace, dimostrando di
apprendere dall'ambiente così come ci proponevamo.
Abbiamo provato un numero difficilmente precisabile di versioni diverse, perché molte
erano tentativi che si rivelavano subito inefficienti, altre erano delle piccole
variazioni che non si possono considerare versioni diverse. In più anche la stessa
versione non è detto che apprenda allo stesso modo in due sessioni di apprendimento
diverse.
Non ci dilungheremo su molti cambiamenti relativi alle prime versioni, ma faremo solo
alcuni accenni ad essi ed inizieremo ad illustrare più approfonditamente le ultime
versioni.
Molti cambiamenti sono ispirati a considerazioni tratte dalla letteratura sugli automi,
indipendentemente dal sistema di apprendimento utilizzato, la cui importanza non è
fondamentale. Altri sono basati su considerazioni generali di carattere psicologico o
etologico.
Gli automi basati sugli algoritmi genetici, che si evolvono una generazione dopo
l'altra modificando la propria struttura (ma ve ne sono anche sempre più che evolvono
modificando il valore delle connessioni) possono essere considerati più propriamente
simulazioni dell'evoluzione e quelli che apprendono utilizzando altri meccanismi per
modificare le proprie connessioni, come simulazioni di apprendimento vero e proprio. Il
nostro tentativo comprende un pò entrambi i meccanismi, in quanto queste diverse versioni
possono essere considerati una sorta di evoluzione "guidata", un pò
"lamarkiana".
b) Struttura.
L'automa è formato da 5 elementi: un corpo di 3 elementi
allineati orizzontalmente ed un braccio di due elementi con la possibilità di ruotare il
primo intorno all'elemento allineato di sinistra ed il secondo intorno al primo elemento
ruotante.
FIGURA 1. Struttura dell'automa.
E' inserito in un ambiente discreto di 9 per 9 caselle in cui i margini sono collegati
così che uscire a destra porta a rientrare a sinistra ed uscire sopra a rientrare sotto
(superficie toroidale).
Si può muovere in questo ambiente di un passo per volta, in ogni direzione, potendo
inoltre combinare i suoi movimenti con quelli dei due elementi del braccio ruotante.
Quindi in ogni istante può decidere tra 9*3*3 = 81 (le 8 direzioni diverse in cui può
muoversi, più la possibilità di non muoversi, per le due direzioni di rotazione più la
non rotazione per ognuno dei due segmenti) diverse combinazioni di movimenti.
L'ambiente contiene elementi verso i quali muoversi (cibo) e da evitare (mine). In ogni
momento le 81 caselle sono occupate da 15 elementi positivi (cibo) e 15 negativi (mine),
oltre all'automa che occupa 5 caselle, in questo modo rimangono 46 caselle vuote.
Illustreremo gli altri aspetti dell'automa specificando le varie versioni, in quanto
sono state fatte diverse modifiche, provando delle varianti suggerite dalla letteratura o
da riflessioni generali di carattere psicologico.
Fino qui è evidente come si volesse semplicemente realizzare un agente situato che
fosse in grado di mostrare un comportamento un pò più complesso, del semplice inseguire
una preda.
D'altra parte non è consigliabile, per ora, tentare di realizzare automi troppo
complessi, date le limitazioni tecniche. Infatti, dovendo simulare il comportamento di una
rete su un sistema in realtà di tipo digitale, si ha una crescita esponenziale dei tempi
di calcolo con l'aumentare del numero dei neuroni. Così abbiamo avuto il grosso limite di
contenere il numero dei neuroni e quindi le possibilità dell'automa.
Comunque il nostro proposito era semplicemente quello di mettere alla prova l'ipotesi
che il significato sorge spontaneamente, nel modo indicato in precedenza, in determinate
circostanze.
Il nostro automa, pur in una situazione semplificata, deve affrontare un ambiente
continuamente mutevole che cambia sia in conseguenza delle sue azioni che
indipendentemente da esse. Le sue possibilità di movimento sono relativamente complesse,
potendo muovere non solo se stesso nelle otto direzioni classiche di una griglia, ma
avendo anche il controllo di un braccio mobile.
c) Versioni precedenti a quella finale e funzionamento.
RSIB7D e cenni alle versioni precedenti.
Questa versione dell'automa ha la possibilità di percepire tutte le caselle attigue al
secondo elemento ruotante ed agli elementi orizzontali per un totale di 20 caselle
"percepite". Il suo sistema nervoso è costituito di due reti a tre strati di
neuroni, una determina i suoi movimenti (rete motoria o principale) ed una prevede
gli effetti in termini di positività o negatività della situazione che ne seguirebbe
(deputata quindi a valutare la situazione dandole una significato emotivo e definita rete
previsione).
FIGURA 2. Primo strato di neuroni della rete
principale.
Il primo strato è costituito, nella prima rete, di 24 neuroni e nella seconda di 28 il
secondo di 20 neuroni in entrambe le reti ed il terzo di 8 nella prima e 10 nella seconda.
Come mostrato dalla figura i 24 recettori sono di tre tipi diversi: 8 percepiscono le
mine, 8 il cibo ed 8 se stesso.
Nelle prime versioni il primo strato era costituito da 60 neuroni, infatti ognuno era
sensibile allo stato di una casella. Questo sistema però è da una parte scomodo per la
nostra necessità di limitare, in queste simulazioni, il numero dei neuroni; e dall'altra
perché non corrisponde ai principi della percezione naturale. Il nostro automa dovrebbe
simulare il comportamento di un organismo fornito di un solo sistema percettivo di tipo
tattile. Nella realtà i recettori tattili si dividono in varie categorie che percepiscono
ognuno sensazioni di tipo diverso e ciò è riprodotto adeguatamente. Perché ci sia la
percezione di una certa sensazione tattile e quindi di un determinato oggetto, però, ci
dovrebbe essere la partecipazione di più recettori. Nel nostro caso, invece, avevamo
inizialmente una corrispondenza di uno a uno, che da un lato semplifica troppo la
situazione e dall'altra, probabilmente, ostacola l'emergenza di percezioni globali,
complesse. Per ottenere comunque qualcosa del genere, pur in un ambiente discreto, abbiamo
fatto in modo che ogni sensore percepisse lo stato di più caselle e che quindi, la
presenza di un dato oggetto in una determinata casella, dovesse essere ricavato con la
partecipazione dello stato di più recettori16.
Il primo strato della rete "previsione", è costituito da 24 neuroni aventi
le stesse funzioni di quelli del primo strato della rete principale (vedi FIGURA 2.),
più 4 neuroni che codificano il movimento che l'automa si accinge a fare.
Ogni neurone di ciascuno strato è collegato con tutti i neuroni dello strato
superiore. Il terzo strato della rete principale determina i movimenti. I primi due
"decidono" la direzione (destra/sinistra): se il primo ha un valore maggiore va
a sinistra se ha un valore maggiore il secondo a destra se hanno una differenza minore di
0,33 non si muove in nessuna delle due direzioni. Il movimento verso alto/basso viene
deciso dal settimo ed ottavo neurone (il settimo verso il basso, l'ottavo verso l'alto).
Il terzo ed il quarto determinano il verso di rotazione del primo elemento del braccio: se
ha un valore maggiore il terzo si ha una rotazione antioraria, se è maggiore il quarto la
rotazione sarà in senso orario, se hanno una differenza minore di 0,33 non c'è
rotazione. Lo stesso avviene per il quinto e sesto nei riguardi della seconda porzione di
braccio.
In questo modo l'uscita motoria è costituita da un vettore di otto elementi dato dai
valori assunti dallo strato di uscita della rete principale, ma il movimento è codificato
da un vettore di quattro componenti, ognuna delle quali può valere 1, -1, o 0 a seconda
che prevalga il primo, il secondo, o nessuno dei due neuroni della coppia relativa.
Il terzo strato della rete previsione esprime un giudizio sugli effetti dei movimenti
calcolati dall'altra rete: i primi cinque neuroni un giudizio positivo, gli altri cinque
negativo. La differenza tra i primi 5 e gli altri 5 determina se i movimenti in programma
sono buoni o cattivi.
Funzionamento
di RSIB7D.
Il tempo è discreto ed in ogni istante di tempo avvengono i
seguenti processi:
a. Il primo strato della rete principale assume i nuovi valori dati dalla situazione
attuale.
b. I valori del secondo e terzo strato vengono determinati, per ogni neurone, dalla
funzione di trasferimento sigmoidale:
dove e= 2.71828128459...., j wij .xj è la somma pesata degli ingressi al neurone xi,
essendo gli xj i neuroni dello strato superiore e wij le connessioni tra i neuroni xj ed
il neurone xi.
c. Dall'uscita motoria viene ricavato il vettore che codifica l'azione che l'automa si
accinge a compiere con la metodologia precedentemente esposta.
d. La seconda rete calcola la previsione sugli stessi valori di ingresso della prima
rete (sensori) più i quattro valori che codificano l'uscita motoria da essa calcolata. In
alcune versioni precedenti la previsione era calcolata, oltre che sullo stesso ingresso di
quella precedente, direttamente sugli otto dell'uscita della principale.
e. L'uscita della rete previsione è un vettore le cui prime cinque componenti danno
una misura della positività dell'effetto che risulterà da quell'azione e le altre cinque
della negatività. Sottraendo la somma delle uscite dei neuroni 6-10 alle uscite dei
neuroni 1-5 ottiene una valutazione dell'appetibilità o meno della situazione che si
produrrà con tale azione.
f. Quindi, se tale valore è positivo, compie quell'azione, se non lo è calcola
un'uscita casuale che viene anch'essa valutata dalla rete previsione.
g. Se la valutazione di questa nuova azione è migliore di quella calcolata dalla rete
principale verrà compiuta questa, altrimenti ne calcola un'altra casuale. Ciò viene
ripetuto per 3 volte, dopodiché, se non si è ancora trovata un'azione valutata come
migliore di quella iniziale, applica il programma motorio principale.
h. Per effetto dello spostamento possono esserci collisioni con oggetti
"mina" e oggetti "cibo", tali collisioni verranno conteggiate per
valutare l'effetto dell'azione compiuta. Gli oggetti incontrati sono tolti dallo schema e
ne vengono aggiunti altrettanti in altre caselle libere, scelte casualmente. In questo
modo rimane costante il numero di oggetti presenti e casuale la loro disposizione.
i. Vengono modificate le connessioni della rete previsione tramite la backpropagation
(Rumelhart et al. 1986) in base agli effetti delle azioni compiute. L'uscita desiderata è
data per le prime cinque componenti da un numero di 1 pari al numero di elementi
"cibo" incontrati e per le altre cinque dal numero di elementi "mina"
incontrati, le altre componenti sono 0.
j. Se gli elementi "cibo" incontrati sono stati più degli elementi
"mina" anche le connessioni della rete principale vengono modificate tramite la
backpropagation, l'uscita desiderata è, in questo caso, l'uscita prodotta (dalla rete
stessa o casualmente), ma con le differenze tra motoneuroni rinforzate.
FIGURA 3. Diagramma di flusso dell'automa RSIB7D.
La versione dell'automa che è stata descritta finora (RSIB7D) è stata provata in una
simulazione in cui utilizzava le stesse connessioni che si erano prodotte dopo 2222
iterazioni con la versione precedente (RSIB1D). Le due versioni differiscono nel numero di
neuroni del primo strato della rete previsioni. Infatti nella versione precedente (RSIB1D)
l'input era dato, oltre che dallo strato di entrata, da quello di uscita della rete
principale, invece che dalla codifica dell'azione che risultava dopo l'accentuazione delle
differenze tra le coppie di motoneuroni (e influenza dell'affaticamento) e dal ricavare un
valore per ogni coppia. Per cui in questa versione (RSIB7D) lo strato di input è di 28
neuroni invece che 32. Quindi non possiamo sorvolare sul contributo che hanno dato queste
prime iterazioni all'apprendimento successivo, ma non possiamo neanche assimilarle
completamente alle altre, ne parlerò quindi separatamente.
Il parametro di apprendimento principale è ovviamente l'osservazione del
comportamento. Possiamo essere soddisfatti del comportamento dell'automa quando vediamo
che effettivamente evita di passare sulle mine e si dirige verso il cibo compiendo anche
manovre complesse. Per comodità e per avere una valutazione più oggettiva abbiamo
utilizzato però anche un parametro numerico ottenuto facendo la differenza tra il numero
di mine e di cibi toccati e dividendo questo numero per il numero di iterazioni: cibi-mine/iterazioni.
Questo parametro, che chiameremo quoziente di apprendimento17, cresce solo se il
comportamento continua a migliorare, cioè se il numero di contatti cibi meno il numero di
contatti mine, aumenta in periodi di iterazioni uguali. Questo quoziente decresce non solo
se il comportamento è casuale (cioè il numero di cibi e di mine con cui ha avuto
contatti è più o meno simile), ma anche se questa differenza aumenta più lentamente che
in precedenza. Infatti tale quoziente misura il numero di cibi meno mine per iterazione
che l'automa cattura mediamente. Se il suo comportamento peggiora, cioè se questa media
si abbassa, ciò è rilevato subito dal quoziente di apprendimento, così come possiamo
essere sicuri che sta migliorando se continua ad aumentare, sia pure di poco.
La versione RSIB1D ha iniziato a mostrare primi segni di apprendimento dopo 300
iterazioni. Ad un certo punto, dopo oltre 700 iterazioni (e quando già l'apprendimento
sembrava procedere speditamente), non ha fatto più progressi. Infatti ha continuato ad
alternare due movimenti che lo facevano rimanere sempre allo stesso punto così che, non
incontrando nessun oggetto e non mutando le sue connessioni, non c'era nessuna
possibilità che la situazione si sbloccasse. Per evitare il ripetersi di simili
situazioni (ed aumentando il realismo della simulazione), sono state introdotte modifiche
al modo in cui vengono determinati i movimenti e l'ambiente. Dai valori prodotti come
uscita dalla rete principale viene ora sottratto un fattore affaticamento18. Inoltre, gli oggetti
introdotti casualmente, non rimangono sempre dove sono capitati fino al contatto con
l'automa, ma ogni tanto (mediamente circa una volta ogni tre iterazioni), uno degli
oggetti viene rimosso e collocato in un'altra casella casualmente. Queste due modifiche da
un lato hanno avuto un vantaggio pratico indubbio, infatti non si sono più ripetute
"fissazioni" sugli stessi movimenti, dall'altro hanno un valore teorico,
nonostante siano in forma molto rudimentale. Infatti quella che poteva sembrare una
semplificazione della realtà che rendesse più facile l'orientamento in essa, si è
rivelata dannosa così come indicato anche da Brooks (92). La mutevolezza della realtà,
che sembra essere un fattore secondario e della quale, con leggerezza, si era fatta
astrazione si è rivelata una caratteristica irrinunciabile dell'universo anche in una
situazione artificiale e già per molti altri aspetti semplificata. L'affaticamento, in
questa situazione, viene ad essere un abbozzo di una memoria a breve termine, introducendo
così un'altra forma di temporalità (oltre a quella data dal modificarsi delle
connessioni).
La simulazione con RSIB1D è stata interrotta perché la rete previsione mostrava di
basare le proprie previsioni solo sulla situazione (primi 24 sensori), dando poco valore
alle risposte che doveva valutare (quella principale e quella casuale). Poiché era stata
introdotta proprio per valutare quale delle due risposte attuare questo era un fatto molto
grave. Ciò probabilmente, dipendeva dal fatto che, risultando molto manipolata l'uscita
della rete principale prima di dar luogo a una vera e propria azione di risposta, finiva
per essere un'indicazione molto parziale di quello che sarebbe stato il movimento
selezionato, soprattutto dopo l'introduzione del fattore affaticamento (infatti, come
abbiamo detto, l'ingresso degli altri 8 sensori era costituito dall'uscita motoria della
rete principale prima che questi valori venissero modificati dall'affaticamento e
dall'esaltazione delle differenze). Per ovviare a questo inconveniente, l'ingresso della
rete previsione è ora dato dai quattro valori che risultano da questa elaborazione
ulteriore (oltre ai 24 che codificano la situazione e che costituiscono l'ingresso anche
della rete principale), invece che dagli otto che costituiscono l'uscita della rete
principale.
La simulazione con RSIB7D è iniziata (come accennato sopra) con le stesse connessioni
(tranne, ovviamente, quelle che non ci sono più per il ridotto numero di neuroni) con cui
è terminata quella precedente, per cui può essere anche considerata il suo seguito. In
effetti ha iniziato subito con buoni risultati, mostrando di discriminare abbastanza bene
già dopo un migliaio di iterazioni.
RSIB3E.
Anche se, come abbiamo visto, il comportamento di RSIB7D era soddisfacente e rispondeva
ai nostri scopi, un osservazione, di tipo etologico, rivelava che erano molti i casi in
cui si muoveva a caso, non avendo nel suo campo percettivo elementi per valutare la
situazione. Infatti, come abbiamo esposto, il suo campo percettivo era molto limitato
essendo limitato alle caselle ad esso aderenti.
Inoltre il braccio rimaneva spesso bloccato in alcune posizioni limite, completamente
girato da una parte o dall'altra. In queste posizioni solo una direzione poteva avere
effetto, così non poteva sperimentare gli effetti dell'altra direzione, rimanendo essa
ininfluente. In questo modo, che non è naturale, non si aveva quell'accoppiamento del
movimento con l'attività neuronale e non si aveva apprendimento. Per aggirare questo
ostacolo, abbiamo fatto in modo che il braccio avesse una posizione base che è quella di
massima estensione e, partendo da questa posizione, ritornasse sempre in essa a meno di
rotazioni in altre direzioni.
Modifiche effettuate:
Sono stati aggiunti due "occhi" (potendosi considerare la percezione che
aveva prima solo di tipo tattile). Abbiamo infatti aggiunto altri 6 sensori (2 sensibili
alle mine, 2 al cibo e 2 a se stesso). Ogni coppia è sensibile complessivamente a 15
caselle, ogni componente della coppia è sensibile a 9 caselle e 3 caselle sono
coincidenti.
Inoltre gli abbiamo aggiunto al primo strato anche la percezione dello stato del
proprio strato associativo nell'istante precedente a quello attuale19.
I neuroni dello strato associativo sono stati portati da 30 a 20 per ridimensionare il
numero di connessioni ed i calcoli necessari ad ogni iterazione. Infatti, come abbiamo
visto, al primo strato abbiamo aggiunto sia i sei nuovi sensori capaci di percepire a
distanza, sia un numero di neuroni pari a quelli dello strato associativo. Avendo ridotto
questi ultimi a 20, abbiamo incrementato il numero di neuroni del primo strato di 26
unità. Inoltre un numero eccessivo di neuroni associativi avrebbe avuto, inizialmente, un
peso troppo grande sul totale della percezione. In un secondo tempo la rete sarebbe stata
in grado di regolare il peso di questo contributo, ma poteva essere una complicazione
inutile.
Come prevedibile, data la complessità maggiore rispetto alla versione precedente,
questo automa apprendeva più lentamente. Ma, come desiderato, il comportamento era più
vario e continuava a migliorare, seppure lentamente, per tutto il tempo in cui l'abbiamo
tenuto sotto osservazione. Dopo 16000 iterazioni, quando aveva avuto 11500 contatti-cibo e
6900 contatti-mina con un indice di miglioramento di .28, abbiamo deciso di apportare
nuove modifiche.
Versione RSIB27E.
Rispetto alla versione precedente presenta solo due modifiche e degli aggiustamenti
minori.
Gli "occhi" sono stati cambiati i questo modo:
Abbiamo apportato questa modifica perché ci è sembrata più attinente allo scopo per
cui era stata introdotta una percezione a distanza nella versione precedente. Infatti il
proposito era quello di permettergli di decidere una direzione nelle situazioni in cui
mancavano elementi più prossimi. Dovendo decidere se andare da una parte o dall'altra è
più importante percepire grossolanamente su entrambi i lati, che un pò meglio da una
parte e per niente dall'altra.
I sei nuovi sensori (così come li avevamo introdotti nella versione precedente), come
abbiamo visto, erano collocati dallo stesso lato dell'organismo ed avevano un campo di
sensibilità parzialmente sovrapposto. Erano stati concepiti in questo modo per imitare,
in maniera molto grossolana, i campi visivi degli organismi reali, che sono in genere
parzialmente sovrapposti ed anche perché già in precedenza avevamo trovato più
efficienti dei sensori di questo tipo (quando, nelle prime versioni, avevamo scartato i
sensori che percepivano una singola casella). Ma in questo caso la situazione è molto
differente per diversi motivi. Prima di tutto il paragone con la visione negli organismi
reali non è proprio proponibile, quest'ultima si basa si meccanismi molto diversi. Se i
sensori principali, quelli che abbiamo messo dalle prime versioni, possono essere
paragonati a dei recettori tattili, questi nuovi possono essere considerati, con molta
approssimazione, dei sensori del calore. Immaginando che le mine siano percepite come
freddo ed il cibo come caldo, è conveniente che vada verso il caldo ed è più importante
sentire la temperatura in due lati tra cui scegliere che non individuare con più
precisione (sempre grossolanamente comunque), da dove proviene il calore o il freddo.
Sarebbe meglio ancora se potesse avere entrambe le capacità, ma avremmo dovuto aumentare
ancora il numero dei sensori, mentre abbiamo sempre cercato di limitarne il numero il più
possibile all'essenziale, ciò per ragioni pratiche di velocità di calcolo.
Un'altra modifica è stata apportata al modo di valutare il risultato di ogni azione.
E' chiaro che se ogni mina danneggia l'organismo (le chiamiamo mine ma potremmo
considerarle più appropriatamente delle sostanze nocive), la selezione avrà favorito
organismi che evitano le mine anche rinunciando a particelle di cibo, piuttosto che il
contrario. Quindi abbiamo cambiato la valutazione, in modo tale che considerasse
leggermente più negativo il contatto con una mina rispetto a quanto non considerasse
positivo il contatto con il cibo.
Anche questa versione è partita con le connessioni di RSIB7D come la versione
precedente, in modo che i risultati fossero confrontabili.
Dopo circa 4000 iterazioni il coefficiente di apprendimento era intorno allo 0.15
appena un pò migliore dello 0.1 del caso precedente. Per potersi valutare adeguatamente
era necessario comunque continuare la simulazione ancora a lungo (la precedente è stata
interrotta precocemente solo per provare queste modifiche).
Durante l'apprendimento di questa versione, abbiamo apportato altre modifiche
"tecniche" relative al modo di utilizzare la regola di apprendimento. Intorno
alle 14.000 iterazioni abbiamo introdotto una correzione della variabile h (eta) facendo
in modo che il suo valore decrescesse con l'incremento del numero delle iterazioni. Ciò
perché avevamo avuto l'impressione che i nuovi apprendimenti modificassero eccessivamente
le connessioni, facendo perdere parte delle conoscenze che dovevano essere ormai
acquisite.
Per questo stesso motivo, in seguito abbiamo introdotto un'altra correzione,
consistente nel diminuire il numero di backpropagation che venivano fatte per modificare
le connessioni dopo eventi significativi. Abbiamo ottenuto ciò, agendo sul valore
numerico che stabilisce quando la modifica delle connessioni tra una backpropagation e
l'altra può essere considerata ininfluente e si possono quindi interrompere. Questa
modifica, inoltre, velocizza di molto l'apprendimento a parità di tempi di calcolo, anche
se, come è ovvio, necessita di un numero maggiore di iterazioni. L'altra modifica (quella
che agiva sull'h) è stata invece rimossa perché, dopo un'iniziale apparente
miglioramento, rendeva in pratica ininfluenti le esperienze successive.
Se ne è dedotto comunque un valore di quel parametro più adeguato dopo un iniziale
apprendimento con il valore solito. Si è osservato che se all'inizio è buono un valore
di h pari a 0.6, in seguito, quando l'incremento del parametro di apprendimento accenna a
rallentare, è meglio portare questo parametro a 0.5 o 0.4, oppure partire fin dall'inizio
con quest'ultimo valore.
Dopo 50.000 iterazioni il coefficiente di apprendimento era di 0.345 e continuava
ancora a crescere, la rete previsione (o emotiva) faceva delle previsioni quasi sempre
giuste e l'osservazione rivelava un comportamento che corrispondeva quasi sempre a quello
che avrebbe fatto l'osservatore trovandosi nelle stesse condizioni. Nonostante il
risultato soddisfacente, abbiamo voluto provare un ultimo cambiamento.
Versione RSIB3B.
In questa versione abbiamo provato a semplificare ancora l'automa riducendolo
all'essenziale. Abbiamo tolto la percezione della memoria associativa ed altri due sensori
ritenuti inutili (la percezione del "calore" di se stesso). In questo modo
abbiamo dimezzato il numero di neuroni del primo strato portandoli da 56 a 28, per non
ridurre eccessivamente il numero delle connessioni abbiamo portato lo strato associativo
da 20 a 25 neuroni e quello dello strato previsione da 10 a 15.
Per il resto tutto è rimasto come alla fine della simulazione con la versione
precedente.
Sono state mantenute anche le modifiche apportate a RSIB27E durante il suo processo di
apprendimento, ad eccezione della modifica dell'h che è stato mantenuto fisso a 0.4.
Dopo 4.000 iterazioni, come è prevedibile data la sua maggiore semplicità e quindi la
necessità di un numero minore di iterazioni per apprendere la stessa cosa, il
coefficiente di apprendimento era intorno a 0.2, migliore quindi di quello ottenuto nelle
ultime due versioni precedenti.
Dopo circa 35.000 iterazioni il coefficiente di apprendimento aveva un valore di 0.4 e
continuava a crescere.
d) Funzionamento della versione finale.
Il funzionamento, date le modifiche che abbiamo illustrato
finora, risulta un pò diverso da quello che abbiamo proposto inizialmente (nel paragrafo
sul funzionamento di RSIB7D). Ci è sembrato opportuno quindi presentarlo di nuovo con le
modifiche.
a. Il primo strato della rete principale assume i nuovi valori dati dalla situazione
attuale. Per ciascuno dei 28 sensori viene calcolato un valore (1, 0) dato dalla presenza
o meno nel campo percettivo di ciascuno di ciò a cui è sensibile. Otto sensori si
attivano in caso di contatto con il cibo, otto in caso di contatto con le mine, otto in
caso di contatto con se stesso (braccio che percepisce corpo e viceversa), uno percepisce
il "calore" del cibo, uno il calore delle mine.
b. I valori del secondo e terzo strato vengono determinati, per ogni neurone, dalla
funzione di trasferimento sigmoidale. Un questo modo il terzo strato costituisce l'uscita
motoria prodotta dalla rete. Essa inizialmente è casuale, con il modificarsi delle
connessioni in seguito all'esperienza, diventa la risposta che l'automa "ritiene
adeguata" per quella situazione. 1
c. La seconda rete calcola la previsione sugli stessi valori di ingresso della prima
rete (sensori) più i quattro valori che codificano l'uscita motoria da essa calcolata.
d. L'uscita della rete previsione è un vettore le cui prime cinque componenti danno
una misura della positività dell'effetto che risulterà da quell'azione e le altre cinque
della negatività. Sottraendo la somma delle uscite dei neuroni 6-10 alle uscite dei
neuroni 1-5 ottiene una valutazione dell'appetibilità o meno della situazione che si
produrrà con tale azione.
e. Quindi, se tale valore è positivo, compie quell'azione, se non lo è varia
casualmente tre degli otto valori scelti casualmente. La nuova uscita viene valutata dalla
rete previsione allo stesso modo di quella prodotta dalla rete principale.
f. Se la valutazione di questa nuova azione è migliore di quella calcolata dalla rete
principale verrà compiuta questa, altrimenti ne calcola un'altra ripetendo lo stesso
procedimento su questa nuova. Ciò viene ripetuto per cinque volte, dopodiché, se non si
è ancora trovata un'azione valutata come migliore di quella iniziale, produce otto valori
casuali e li applica.
g. Per effetto dello spostamento possono esserci collisioni con oggetti
"mina" e oggetti "cibo", tali collisioni verranno conteggiate per
valutare l'effetto dell'azione compiuta. Gli oggetti incontrati sono tolti dallo schema e
ne vengono aggiunti altrettanti in altre caselle libere, scelte casualmente. In questo
modo rimane costante il numero di oggetti presenti e casuale la loro disposizione.
h. Vengono modificate le connessioni della rete previsione tramite la backpropagation
in base agli effetti delle azioni compiute. L'uscita desiderata è data dalla differenza
tra cibi e mine. La somma dei valori prodotti dalle prime cinque componenti meno quelli
delle altre cinque devono dare lo stesso risultato.
i. Se gli elementi "cibo" incontrati sono stati più degli elementi
"mina" anche le connessioni della rete principale vengono modificate tramite la
backpropagation. L'uscita desiderata è, in questo caso, l'uscita prodotta (dalla rete
stessa o casualmente), ma con le differenze tra motoneuroni rinforzate.
Risultati.
Anche se la situazione è molto semplice, lo spazio ed il tempo
sono discreti ed i tipi di elementi che è possibile incontrare sono solo tre (più la
possibilità della casella vuota), le situazioni che, teoricamente, si possono presentare
in entrata alla rete sono in numero sorprendentemente alto.
Per la precisione ogni recettore può registrare due valori (presenza o assenza
dell'elemento a cui è sensibile), quindi ad un automa come RSIB7D, che ha si possono
presentare 224 diverse situazioni (16.777.216), ad uno come RSIB3E ben 256 (che esprime un
numero a 16 cifre: 7,20576.1014), ad uno come RSIB3B 228 (cioè 268.435.456) se il sistema
si limitasse ad apprendere per prove ed errori le situazioni già incontrate e riuscisse a
compiere un apprendimento del genere ogni secondo (in realtà ne impiega diversi, data
l'implementazione poco efficiente, da una decina a diversi minuti nelle prime versioni),
avrebbe bisogno nel primo caso di 194 giorni, nel secondo di 2.284.931.318 anni, nel terzo
di 8 anni per apprendere tutte le situazioni (dovremmo anche ammettere che non si
ripresenti mai la stessa situazione e che in qualche modo gli venga proposta sempre, come
uscita desiderata, una risposta giusta). Se la rete si limitasse ad associare stimoli e
risposte l'apprendimento corretto sarebbe un'impresa così grande da risultare in
definitiva impossibile. Ma le caratteristiche delle reti neurali fanno si che, in realtà,
si realizzino generalizzazioni, per cui dopo ogni risposta migliora le prestazioni anche
in situazioni mai incontrate prima. E' come se gradualmente apprendesse i concetti
generali del comportamento più conveniente.
L'automa, infatti, non apprende meccanicamente, ma da significato fisico ed emotivo
alle situazioni e risponde ad esse in base al significato che da alle situazioni. Inoltre
la velocità di apprendimento, pur variando nelle varie versioni, non dipende direttamente
dal variare del numero delle entrate possibili, che, come abbiamo visto, varia moltissimo
da quella con 16.777.216 possibili entrate diverse ad uno come RSIB3E cui teoricamente
possono presentarsi ben 7,20576.1014 entrate diverse. Ciò ci da un ulteriore
dimostrazione del fatto che l'apprendimento non è ottenuto memorizzando meccanicamente le
varie situazioni incontrate, ma astraendo da esse dei principi generali, dei concetti, il
significato che ha la situazione per l'automa.