25 Febbraio 2007
Deliri complessi, parte quattro: Ecological Neural Networks e complessità
Anche una semplice rete neurale ecologica, come ad esempio quella che abbiamo utilizzato per modellizzare il sistema nervoso degli organismi delle simulazioni presentate in questo lavoro, può essere vista come un sistema complesso. Complessità che deriva in particolare da alcune caratteristiche, che andrò a ora spiegare nel dettaglio.
impossibilità di prevedere il comportamento complessivo della rete, ovvero il valore di attivazione dei suoi neuroni di output al presentarsi di un certo pattern di input. Mi rendo conto del fatto che questo punto possa essere controverso e presti effettivamente il fianco a facili critiche. Ciò che avviene all’interno di una rete neurale deriva infatti da precise quanto semplici regole matematiche che agiscono a livello locale. Quello che fa ciascun neurone (eccezion fatta per quelli di input) non è nient’altro che calcolare la somma pesata dei vari contributi ricevuti in ingresso ed applicare quindi a questa somma una certa funzione di trasferimento, prima di trasferire i risultato dell’elaborazione ad altri neuroni. Le regole d’interazione locali, nel momento in cui si definisce arbitrariamente l’architettura di una rete neurale, sono note a priori. Ma, in maniera più che proporzionale al crescere del numero di neuroni e di connessioni, diminuisce l’immediatezza di “comprensione”, da parte di un osservatore. Seppur in linea teorica, avendo ovviamente a disposizione tutti i dati necessari, sarebbe dunque possibile prevedere con esattezza l’output di una rete neurale, tale compito si rivela nella pratica impossibile. Ad esempio, già con una rete come la nostra, composta da 4 neuroni di input, 9+2 nello strato intermedio e 2 di output, il numero totale di connessioni sinaptiche che entrano in gioco è 76. Impossibile, per una mente umana “normale”, riuscire a dedurre l’uscita della rete semplicemente osservando il pattern in ingresso. Il problema, benché analiticamente risolvibile, deve necessariamente essere affrontato attraverso tecniche risolutive “numeriche”. In sostanza, anche il conoscere alla perfezione tutte le regole d’interazione locali non ci fornisce indicazioni utili per capire quale sarà il comportamento della rete nel suo complesso.
Non-linearità delle interazioni che hanno luogo a livello locale. Questa non è una caratteristica comune a tutte le reti neurali, dato che le funzioni di trasferimento dei singoli neuroni possono anche essere di tipo “puramente” lineare. Nella pratica, tuttavia, ciò che si fa solitamente è includere all’interno di una rete anche funzioni di trasferimento non-lineari. Tale abitudine nasce dai lavori pionieristici di Hornik, Stinchcombe e White , che già nel 1989 dimostrarono come fosse possibile, attraverso un percettrone multi-strato (MLP, multi-layer perceptron), purché dotato di una sufficiente quantità di unità neurali e con almeno un layer caratterizzato da funzioni di trasferimento non-lineari, approssimare qualsiasi tipo di funzione. E la non-linearità è proprio una delle caratteristiche “classiche” dei sistemi complessi. E’ da essa, ad esempio, che si genera la cosiddetta “dipendenza sensibile dalle condizioni iniziali” e, da qui, il suo possibile effetto manifesto, ossia il “butterfly effect”. Inoltre, la non-linearità accentua quanto sottolineato nel punto precedente, riguardo alla non-prevedibilità del comportamento complessivo della rete.
Emergentismo e gerarchia di livelli. Anche ammesso (ma non concesso) che quanto sottolineato nel primo punto sia fondamentalmente sbagliato e che il funzionamento di una rete neurale sia classificabile tra i fenomeni di tipo “deterministico” e “prevedibili” (una rete neurale, d’altronde, è un modello computazionale assolutamente deterministico in termini matematici, per quanto le sue “dimensioni” ne impediscano una comprensione immediata), la questione sulla “prevedibilità” può comunque essere spostata su di un altro piano. O meglio, parlando in termini gerarchici, su di un altro livello. Le reti neurali ecologiche utilizzate nell’ambito dell’Embodied Cognitive Science, oltre ad essere dotate di un certo livello di “fisicità” (embodiment), come conseguenza concreta di tale proprietà sono infatti caratterizzate dal fatto di essere situate all’interno di un certo contesto ambientale (situatedness). Il risultato delle interazioni che avvengono all’interno della rete neurale, ovvero la percezione dell’input sensoriale e la sua successiva elaborazione, si traducono, ad un livello “superiore”, in un comportamento motorio. Un comportamento emergente, generato da decine, centinaia o addirittura migliaia di interazioni che avvengono a livello locale, all’interno della rete.
Vale ancora il discorso fatto in precedenza. La corrispondenza tra output della rete neurale e risposta motoria dell’organismo è “hardwirata” da parte di chi progetta il modello simulativo. Dunque, pur non venendo ancora meno il rigido determinismo di fondo, vi è ad ogni modo un livello di complicazione aggiuntivo: se già era difficile riuscire a determinare l’output della rete neurale dato un qualsiasi pattern di input, ora è necessario fare ancora qualcosa in più, ossia tradurre anche questo output nel corrispondente effetto motorio. Nel nostro modello, la gamma di comportamenti motori che può adottare l’organismo è molto semplice e limitata. Esso può infatti spostarsi in avanti di una casella, ruotare il corpo di 90° in senso orario, ruotare di 90° in senso anti-orario, oppure rimanere fermo. Essendo poi i neuroni di output di tipo di booleano, l’opera di “traduzione” non è per niente difficile.
Ma immaginiamo di dover compiere l’operazione inversa. Saremmo in grado, osservato un certo comportamento dell’organismo, di risalire al pattern di attivazione dell’intera rete neurale che ha generato tale comportamento? La risposta questa volta è tanto secca quanto priva di ambiguità. No, non potremmo. Potremmo determinare in maniera molto semplice il pattern di attivazione delle unità di output, data la relazione di cui sopra, ma non quello delle unità intermedie. Svariati patterns d’attivazione dell’hidden layer, tutti più o meno diversi l’uno dell’altro, generano infatti il medesimo pattern di output. Ciò che fa la rete, d’altronde, è proprio operare una classificazione sui vari patterns di input e rispondere ad essi con il comportamento motorio più appropriato, previa trasformazione dei valori in ingresso, attraverso relazioni di tipo non-lineare, in eterogenei patterns di attivazione delle unità nascoste. Ancora una volta, dunque, quello descritto è un classico esempio di fenomeno dove anche la perfetta conoscenza di ciò che accade in maniera manifesta ad un certo livello (in questo caso, il comportamento motorio), non ci fornisce informazioni precise, ma solo qualche indicazione di massima, su ciò che accade a livello più basso (ossia, all’interno della rete neurale). Al tempo stesso, anche il conoscere alla perfezione il meccanismo di funzionamento delle interazioni che avvengono a livello locale, internamente alla rete, non ci dice molto sul comportamento motorio dell’organismo, che “emerge” come fenomeno complesso.
Questo, per ciò che riguarda le caratteristiche tali da rendere una rete neurale embodied un sistema complesso. Ma nel nostro lavoro vi sono anche un altro paio di implicazioni, potenzialmente interessanti nell’ottica della complessità, che andrò ora ad illustrare. Per trattare dei punti che seguono (e questo è il motivo per il quale ho preferito separarli concettualmente dai precedenti), occorre però abbandonare la prospettiva della singola rete neurale e considerare come “sistema” l’intera popolazione di reti neurali che evolve attraverso algoritmo genetico.
Causalità circolare. Nel paragrafo precedente abbiamo già accennato a questo concetto, le cui origini sono riconducibili alla cibernetica , con riferimento alla singola rete neurale ecologica. Se osserviamo il nostro lavoro da una prospettiva più ampia, indagando il rapporto che c’è tra il singolo organismo e la popolazione cui appartiene, possiamo però individuare un ulteriore tipo di causalità circolare.
Nel nostro modello, il comportamento dell’organismo, inteso come sequenza di azioni motorie che lo portano a perseguire un certo obiettivo, viene valutato dall’algoritmo genetico, che attribuisce alla sua performance una valutazione quantitativa. Se la valutazione ottenuta dal singolo organismo risulta essere relativamente migliore rispetto a quelle fatte registrare dai suoi conspecifici, l’architettura neurale si riproduce, diffondendosi nella generazione successiva. In caso contrario, l’architettura incriminata scompare dalla popolazione. L’agire dell’organismo su di una certa scala temporale, quella della sua vita, ha dunque ripercussioni che si manifestano su intervalli temporali più lunghi, ovvero quelli dell’evoluzione genetico/biologica della sua specie. Un organismo con un particolare “modo di comportarsi”, che nel momento in cui vive risulta essere il più “adatto” all’ambiente, condiziona il futuro evolversi della specie cui appartiene. Il singolo organismo influenza la traiettoria evolutiva della sua intera specie. Ma, alle generazioni successive, sono proprio queste nuove proprietà della specie ad influenzare lo schema comportamentale degli organismi. La relazione causale non è dunque lineare, ma circolare.
Discorso analogo potrebbe essere fatto anche se, in aggiunta all’algoritmo genetico, l’evoluzione comportamentale degli organismi procedesse anche con il ricorso ad algoritmi di apprendimento per rinforzo. A mutare sarebbe soltanto la scala temporale di riferimento, con l’aggiunta di un ulteriore livello di complessità. In quel caso, infatti, i singoli individui, nel corso della loro vita, in una prima fase imparerebbero dai loro “maestri”, per poi comportarsi nel modo appreso con l’aggiunta di qualche più o meno significativa differenza rispetto allo schema appreso. Le performance dei singoli organismi, mediate dal ruolo dei maestri durante la fase di apprendimento, determinerebbero la convergenza genetica della popolazione verso un certo schema comportamentale, il quale, una volta affermatosi, influenzerebbe il comportamento dei singoli.
Resilience. Una rete neurale, una volta “evoluta ”, risulta essere estremamente sensibile ad eventuali modifiche, anche leggere, dei pesi sinaptici che la caratterizzano. In generale, questa sensibilità alle perturbazioni diviene tanto più marcata quanto più la rete si “specializza” nell’esecuzione del/dei task cui è dedicata. Le perturbazioni, d’altro canto, sono il meccanismo fondamentale su cui si basano gli algoritmi evolutivi. E’ soltanto attraverso modifiche, casuali o “direzionate” che siano, dell’architettura globale o dei singoli pesi sinaptici, che si manifestano i progressivi miglioramenti di performance delle reti neurali. Il risultato concreto, però, è che il singolo organismo risulta essere estremamente fragile: il suo comportamento, anche e soprattutto se molto efficiente, può diventare del tutto inefficiente da un momento all’altro, in seguito ad un cambiamento anche apparentemente irrilevante del suo sotto-sistema neurale Ma così non è per l’intera popolazione, per il sistema nel suo complesso. L’evoluzione biologica, infatti, non ha luogo tanto su scala individuale, quanto piuttosto al livello dell’intera popolazione. Così, se nel passaggio da una generazione all’altra alcuni schemi comportamentali possono scomparire, altri, prima più inefficienti, possono perfezionarsi, prendendo il loro posto. In questo modo, comportamenti efficienti non scompaiono dalla popolazione. Il sistema, in altri termini, è robusto.
Comments(2)



argh…se Lane martedì mi passa le str…ehm, il paper che ho scritto arrivo anch’io, facciamo a gara per il post meno letto della blogosfera italiana!
io potrei batterti perchè lo scrivo in inglese…
have fun!
Hihihi… io voglio uno scontro alla pari, però… abbi anche tu il coraggio di pubblicare le cose che scrivi, prima ancora di revisionarle…