UNIVERSITÀ DEGLI STUDI DI MILANO Facoltà di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Esplorazione di architetture neurali wetware Relatore: Prof.ssa Rita PIZZI Correlatori: Prof. Angelo VESCOVI Prof. Giovanni DEGLI ANTONI Tesi di Laurea di: Francesca GREGORI Matr. n.566549 Anno Accademico 2001/2002 “Il cervello fabbrica ricordi che modificano il modo con cui penseremo in seguito. L'attività principale del cervello consiste, quindi, nell'apportare modifiche a se stesso." (Minsky, 1989) Indice Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1. I neuroni e le cellule staminali 1.1 Il neurone biologico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2 Le cellule staminali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.2.1. Le cellule staminali embrionali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.2.2. Le cellule staminali adulte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2. Interfaccia neuroni-silicio 2.1 I primi esperimenti di interfaccia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.2 L’esperimento del Max Planck di Monaco . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.3 Reti neuronali biologiche: crescita e sinapsi. . . . . . . . . . . . . . . . . . . . . . . . . 24 2.4 Risultati attuali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3. Le reti neurali artificiali 3.1 Le reti neuralli e la teoria del connessionismo . . . . . . . . . . . . . . . . . . . . . . . 28 3.2 Architettura di una rete neurale artificiale . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.2.1. Architettura dei collegamenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.2.2. Tipo di apprendimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.2.3. Algoritmo di apprendimento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.2.4. Tipo di utilizzo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.3 Implementazione degli algoritmi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 3.3.1. Rete di Kohonen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 I 3.3.2. Memoria associativa bidirezionale (BAM) . . . . . . . . . . . . . . . . . . . 49 3.3.3. Perceptrone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 3.3.4. Rete di Hopfield . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 4. Il progetto 4.1 La scheda di acquisizione dati. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 4.1.1. Caratteristiche tecniche. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 4.2 L’applicazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 4.2.1. Inizializzazione della scheda di acquisizione . . . . . . . . . . . . . . . . . 67 4.2.2. Acquisizione analogica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 4.2.3. Scrittura digitale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 4.3 Il circuito vivente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 4.3.1. Realizazione circuitale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 4.3.2. Il materiale biologico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 5. Gli esperimenti 5.1 Il modello di Kohonen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 5.1.1. Risultati ottenuti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 5.1.2. Confronto con il modello artificiale . . . . . . . . . . . . . . . . . . . . . . . . . . 86 5.1.3. Conclusioni. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Conclusioni e Sviluppi futuri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 Appendice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3 Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 9 Ringraziamenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 0 3 II Introduzione Negli ultimi anni sono stati condotti numerosi studi sull’impianto di microelettrodi applicati a circuiti elettronici e inseriti all’interno di tessuto nervoso a scopo di analisi dell’attività neuronale. Esistono, infatti, diverse interfacce commerciali che permettono di controllare il computer usando gli impulsi nervosi (bio-sensing). Il problema principale di queste protesi elettroniche, oltre alla ricerca del miglioramento delle loro prestazioni, è la giunzione fra tessuto nervoso ed elettrodi, che è soggetta al deterioramento delle funzionalità, e può comportare lo sviluppo di infezioni. Per questo motivo la soluzione che viene ricercata attualmente è quella di sostituire l’uso dei microelettrodi con una connessione diretta neuroni/chip sperimentata per la prima volta da alcuni ricercatori dell’istituto Max Planck di Monaco di Baviera. All’interno di lavori simili a quello appena citato è stato possibile studiare la struttura delle reti di neuroni biologici e il loro comportamento autoorganizzante. Questo tipo di ricerca puo’ fornire anche parametri utili per implementare in modo realistico i modelli informatici di reti neurali. Lo studio dell’interfacciamento diretto neuroni/chip sta diventando, quindi, di fondamentale importanza sia per lo sviluppo di protesi riabilitative, sia per l’analisi della dinamica neuronale a scopo di ricerca, sia per l’evoluzione della tecnologia robotica. L’obiettivo di questo lavoro consiste nell’esplorazione di architetture neurali basate sui modelli software e realizzate attraverso l’utilizzo di neuroni biologici connessi tra loro con del materiale conduttore. Utilizzando, quindi, un’interfaccia Introduzione 2 diretta tra neuroni e materiale conduttore sono state analizzate le funzionalità di alcune architetture neurali artificiali proposte in letteratura. Si è cercato di indagare sui meccanismi di apprendimento dei neuroni naturali e sul loro possibile utilizzo tecnologico. In questa tesi vengono presentati gli algoritmi neurali scelti tra quelli proposti in letteratura, per la loro affinità strutturale e comportamentale con le reti neurali biologiche. A partire dai suddetti algoritmi sono stati creati dei modelli circuitali di rete i cui nodi sono costituiti da materiale biologico contenente una certa percentuale di neuroni umani differenziati a partire da cellule staminali, mentre le connessioni tra i nodi sono state realizzate mediante conduttori. Nel corso degli esperimenti fatti si è studiato il comportamento complessivo della rete neurale ottenuta, sottoposta a particolari stimoli. Il lavoro è articolato nei seguenti capitoli: Capitolo 1 Descrizione introduttiva della struttura e del comportamento del neurone biologico e dei diversi tipi di cellule staminali dalle quali vengono ricavati i neuroni coinvolti negli esperimenti. Capitolo 2 Descrizione degli esperimenti di interfacciamento tra neuroni e chip con particolare attenzione a quello condotto al Max Planck Institute di Monaco. Capitolo 3 Dopo una breve introduzione alle reti neurali artificiali e una descrizione delle loro caratteristiche fondamentali, vengono presi in esame quei modelli di rete che sono stati implementati per essere successivamente testati sul circuito vivente. Per ognuno di essi è presentata la struttura classica e il modello realizzato per il problema in esame, oltre che i risultati ottenuti a livello software. Capitolo 4 Vengono descritte le fasi fondamentali del lavoro svolto: la realizzazione hardware dei circuiti; la coltura delle cellule staminali e l’applicazione creata per interfacciarsi con la periferica di acquisizione dei dati. Introduzione 3 Capitolo 5 Sono riportati e descritti gli esperimenti e i risultati ottenuti nel corso delle misurazioni effettuate. Gli algoritmi, realizzati su modelli classici di reti neurali, sono stati implementati nel linguaggio Java, mentre le misurazioni sul circuito sono state condotte mediante l’utilizzo di una scheda di acquisizione dati (Personal Daq 56 dell’IOTECH) che si interfaccia al Personal Computer grazie ad un’applicazione sviluppata in linguaggio Pascal ad oggetti in ambiente Delphi. Capitolo 1 Neuroni e cellule staminali 1.1 Il neurone biologico Il cervello umano è sicuramente la struttura più complessa dell’universo e può essere considerato come una enorme rete neurale. Circa cento miliardi di neuroni costituiscono i nodi di tale rete. Studiare la struttura biologica e la fisiologia del cervello è un compito tutt'altro che facile. Tuttavia a partire dall'inizio del nostro secolo sono stati fatti dei grandissimi passi in avanti in questo campo e sono stati raggiunti notevoli risultati studiando i danni e le disfunzioni riportate da persone cerebrolese. In questo modo i neuroscienziati sono riusciti a capire che tutte le attività intelligenti sono controllate dalla parte esterna del cervello chiamata corteccia cerebrale. La corteccia è a sua volta divisa in diverse regioni specializzate: ogni regione controlla una determinata facoltà cognitiva. I neuroscienziati, inoltre, sono riusciti a ricostruire la struttura cellulare del cervello e a capirne almeno in parte il funzionamento [Mar95]. La struttura di ogni neurone è complessa: dal corpo cellulare (soma), di dimensioni comprese tra i 5 e 100 micron, partono numerose propaggini, di due tipi diversi che corrispondono ai due diversi canali di comunicazione tra neuroni: gli assoni e i dendriti. Gli assoni rassomigliano a dei fili di lunghezza molto Capitolo 1 – Neuroni e cellule staminali 5 variabile (a partire da 0.1 millimetri fino a qualche metro) di sezione costante. Lungo ogni assone principale si possono avere più propaggini assoniche. I dendriti invece differiscono sensibilmente dagli assoni perchè tendono ad assottigliarsi all’allontanarsi dal corpo cellulare; la loro lunghezza varia molto meno di quella degli assoni (da 10 micron a 1 millimetro). Le funzioni degli assoni e dei dendriti sono molto differenti; mentre i dendriti convogliano l’informazione verso il corpo cellulare del neurone, gli assoni portano all’esterno il segnale prodotto dal neurone. I dendriti, pertanto, rappresentano i canali di input mentre gli assoni quelli di output. Il neurone è dotato di una membrana che separa l’ambiente intracellulare da quello extracellulare. In condizioni di riposo si stabilisce una differenza di potenziale elettrico fra l’interno e l’esterno della cellula, causata dalla differente composizione chimica tra queste due regioni: all’interno della cellula si ha predominanza di potassio, mentre all’esterno prevale il sodio (entrambi in forma ionica). Queste differenti concentrazioni sono dovute alle proprietà di semipermeabilità della membrana che, in assenza di perturbazioni elettriche, lascia fluire verso l’interno solo il potassio e rappresenta invece una barriera per il sodio. L’interno della membrana è a potenziale negativo rispetto all’esterno (la differenza di potenziale è di alcuni millivolts). Ogni neurone può ricevere dai neuroni ai quali è collegato un insieme di segnali di origine chimica o elettrica. La somma dei segnali provenienti dagli altri neuroni altera il valore del potenziale all’esterno del corpo cellulare; se questo supera un certo valore di soglia la permeabilità della membrana varia drasticamente, lasciando penetrare all’interno del corpo cellulare gli ioni di sodio e ciò crea un impulso di corrente, generato sulla superficie della cellula, che propaga l’informazione da un neurone ad an altro. Questo segnale caratteristico (detto spike) viene poi propagato lungo gli assoni. La tipica attività di un neurone consiste, quindi, nella trasmissione di una serie di impulsi elettrici. Tale serie rappresenta un segnale di una certa intensità, la cui frequenza costituisce un’ulteriore informazione. Capitolo 1 – Neuroni e cellule staminali 6 Si può modellare il neurone come un sistema a due stati: uno è quello di riposo; cioè quando la somma dei segnali che provengono dagli altri neuroni è minore di un certo valore di riferimento (soglia) allora il neurone non emette alcun segnale, cioè non propaga l’informazione che gli giunge; quando invece tale somma supera la soglia il neurone passa nello stato attivo e comincia a trasmettere l’informazione agli altri neuroni ai quali è collegato. La connettività del sistema è determinata dalle sinapsi che sono degli ispessimenti che si formano ai punti di contatto tra ramificazione assoniche e dendritiche di due neuroni. L’interazione di due neuroni collegati da una sinapsi può essere più o meno forte a seconda delle caratteristiche fisiche della connessione. In prima approssimazione si possono distinguere due tipi di connessioni; le sinapsi piuttosto sottili (dello spessore di circa 2 nanometri) e le sinapsi più spesse (fino a 50 nanometri). Le prime vengono dette sinapsi eccitatorie. Esse hanno una bassa resistenza (un valore basso della soglia) e ciò consente al segnale di propagarsi quasi intatto sino al dendrite del neurone ricevente che si attiva. Per le sinapsi spesse la situazione è più complessa; si tratta di sinapsi chimiche che, in certi casi, possono portare ad un innalzamento della soglia e pertanto ad inibire l’attivazione del neurone ricevente: esse vengono definite sinapsi inibitorie. Il discreto funzionamento del cervello anche in caso di lesioni (proprietà di robustezza del cervello) evidenzia il carattere non localizzato dell’elaborazione. Vari esperimenti hanno messo in evidenza la relazione tra l’azione di uno stimolo e l’efficacia delle connessione sinaptica; si è visto che questa varia se lo stimolo è somministrato ripetutamente. Sembra stabilito che solo le sinapsi relative a neuroni sensori stimolati dall’esterno tendono a rafforzarsi. Questo legame tra stimolo ed efficacia sinaptica è considerata la base per ogni tentativo di costruire una teoria dell’apprendimento. A tale proposito ha notevole rilevanza l’ipotesi di Hebb secondo la quale, se un neurone A ed un neurone B tendono ripetutamente ad essere eccitati simultaneamente, questa concordanza di fase induce ad un aumento delle sinapsi tra A e B (si dice che la sinapsi viene rafforzata). Secondo questa Capitolo 1 – Neuroni e cellule staminali 7 ipotesi solo la correlazione tra l’attività di due neuroni è responsabile del rinforzo delle sinapsi tra i due. Il tempo di commutazione di un neurone (acceso-spento) è di un microsecondo contro un nanosecondo di un elaboratore: solo che nel cervello le connessioni sono in gran numero e molto dense. La capacità di memoria del cervello è stimata in 4*1015 bit con una capacità di elaborazione di 4*1016 bit/secondo. E’ possibile comparare questi dati con il più avanzato computer: ASCI White (maggio 2000) costituito da 32768 processori POWER3-II a 375 megahertz ognuno dei quali esegue 4 calcoli in virgola mobile contemporanemente. Questa macchina ha una memoria locale di 16384 gigabyte e 195 terabyte (1.71*1015 bit) di memoria esterna su disco. La prestazione di picco del sistema è di 10 teraflop (1.28*1014 bit/secondo). La rete permette però di sfruttare solo una frazione di questa potenza teorica [Ani01]. Capitolo 1 – Neuroni e cellule staminali 1.2 8 Le cellule staminali Le cellule nervose, a differenza delle altre cellule dell'organismo umano, non vanno incontro a ricambio. Il rinnovamento dei neuroni comporterebbe anche la distruzione dei collegamenti neuronali e per questo motivo risulta attualmente impossibile poter prelevare cellule nervose dal tessuto cerebrale senza danneggiarlo. Un’importante scoperta scientifica avvenuta negli ultimi anni e tuttora in fase di studio riguarda l’isolamento e l’utilizzo delle cellule staminali, dalle quali è possibile creare nuovi neuroni per poterli utilizzare negli esperimenti di ricerca. Le cellule staminali non mostrano le caratteristiche tipiche di alcun tessuto particolare ma sono contraddistinte da due capacità: moltiplicarsi a volontà, dando vita a copie innumerevoli di se stesse; e differenziarsi in cellule di più tipi diversi. Quando una popolazione di staminali si divide, alcune cellule figlie sono ancora staminali, identiche alle madri, che mantengono intatta la riserva; altre figlie iniziano invece un ciclo di trasformazioni che le porterà a divenire cellule differenziate di un determinato tessuto. Anche le staminali, in realtà, sono molto diverse tra loro; differiscono nella capacità di proliferare, di produrre un tessuto oppure un altro, di rispondere a determinati segnali che ne guidano lo sviluppo. Non si tratta però di differenze che balzano all'occhio: viste al microscopio, queste cellule sono simili l'una all'altra. Le diversità sono più sottili e consistono nel corredo di proteine che ciascuna staminale produce in un dato momento della sua vita; le proteine sono necessarie per recepire determinati segnali e cambiare il proprio comportamento di conseguenza. La presenza di determinate proteine e l'assenza di altre contraddistingue ciascun tipo di staminale, proprio come la presenza dei prolungamenti contraddistingue le cellule nervose. Quando i ricercatori conoscono le proteine tipiche delle staminali di loro interesse, possono metterle in luce e identificare così le cellule. Una volta differenziate, le cellule perdono quasi del tutto la capacità di proliferare. Nei tessuti soggetti a un ricambio rapido, come l'epidermide o il Capitolo 1 – Neuroni e cellule staminali 9 sangue, per rimpiazzare le perdite resta anche nell'adulto una riserva di staminali, rispettivamente alla base della pelle e nel midollo osseo. Queste cellule, però, sono in grado di rigenerare solo il tessuto cui appartengono, o comunque una gamma ristretta di tessuti. E' chiaro comunque che, per conquistare una completa capacità rigenerativa, l'uomo non può contare sulle sue scarne doti naturali; occorre imparare a prelevare cellule staminali adatte a generare i tessuti da riparare, oppure "ringiovanire" le cellule già differenziate, restituendo loro la capacità di proliferare. Le cellule staminali dovrebbero poi essere indotte a svilupparsi nel senso voluto, fino a ottenere tessuti o addirittura interi organi da introdurre nel corpo per riparare la lesione. Questa possibilità è apparsa per la prima volta realizzabile quando, sul finire del 1998, due gruppi di scienziati [Th&Al] hanno annunciato di avere isolato e fatto crescere in laboratorio cellule staminali pluripotenti1, prelevate da embrioni e feti umani. Queste cellule, che si indicano come cellule staminali embrionali, sono state la prima fonte a cui si è potuto pensare di attingere. Restano però due grossi ostacoli da superare. Il primo è di natura tecnica: il fatto che queste cellule siano potenzialmente in grado di formare qualsiasi tessuto non vuol dire che, nel concreto, si sia capaci di farle differenziare a piacimento per ricavarne i tessuti desiderati. Il secondo è un ostacolo etico: per prelevare le staminali bisogna inevitabilmente distruggere l'embrione, il che, per chi lo ritiene già un individuo umano a pieno titolo, è inaccettabile. 1.2.1 Le cellule staminali embrionali Nel novembre del 1998, dopo almeno sei anni di tentativi, l'équipe di James Thomson, dell'Università del Wisconsin [Th&Al], ha reso noto di aver isolato e fatto crescere in laboratorio le staminali pluripotenti prelevate da embrioni umani. Ben prima che nella specie umana, le staminali erano state ricavate, nel 1981 1 Le cellule staminali pluripotenti mantengono le capacità proliferative durante tutta la vita dell'individuo e nell'adulto sono in grado di ripopolare il comparto delle cellule differenzianti in quei tessuti che presentano un alto ricambio dovuto a morte cellulare (ad esempio, l'epidermide) o alla continua produzione di cellule specializzate. Le cellule staminali pluripotenti sono presenti nell'embrione, nel feto ed in alcuni precisi distretti tissutali ben riconoscibili nell'individuo adulto. Capitolo 1 – Neuroni e cellule staminali 10 [EvK81], da embrioni di topo; l'esperienza accumulata con questi animaletti è stata preziosa per accertare in quale stadio dello sviluppo embrionale dei mammiferi sono presenti le staminali pluripotenti e come si possa convincerle a crescere in coltura senza che si differenzino. Per guidare lo sviluppo delle staminali in laboratorio, si impiegano le stesse sostanze che ne dirigono il destino all'interno dell'organismo. Durante lo sviluppo dell'embrione, ogni cellula viene spinta a differenziarsi verso un determinato destino piuttosto che un altro da una fitta serie di segnali che scambia ininterrottamente con le altre; i segnali sono molecole di varia natura e sono detti, nell'insieme, fattori di crescita. I fattori di crescita segnalano alle cellule che li ricevono quali geni esprimere o spegnere e dunque quali proteine produrre; al variare dei fattori che riceve, la cellula produce un insieme di proteine differente e man mano cambia forma, prende a funzionare in modo diverso; procede, cioè, lungo un determinato percorso di differenziamento. Sono stati individuati molti fattori di crescita che possono essere estratti dai tessuti o prodotti in laboratorio. Dopo innumerevoli tentativi, Thomson è infine riuscito a mettere a punto il cocktail giusto: nel brodo da lui utilizzato, le staminali di blastocisti umane ricevono un segnale che indica loro non di differenziarsi ma di restare pluripotenti. Va precisato che le sostanze che danno questo segnale restano in gran parte ignote; le staminali, infatti, devono essere coltivate in compagnia di un altro tipo di cellule (i fibroblasti di topo), che evidentemente producono fattori di crescita sconosciuti, ma indispensabili per evitare il differenziamento. A pochi giorni da Thomson, il gruppo statunitense guidato da John Geahart, della Johns Hopkins University di Baltimora, ha fatto un annuncio analogo. La fonte era diversa: gli abbozzi delle gonadi di feti di uno o due mesi; nei genitali dell'embrione infatti, come ha scoperto Geahart, alcune cellule restano pluripotenti molto più a lungo che nel resto del corpo. Sia le staminali di Thomson che quelle di Geahart hanno dimostrato proprietà molto simili e sono, dunque, linee di cellule staminali pluripotenti umane. Capitolo 1 – Neuroni e cellule staminali 11 Con due anni di ritardo si è affacciato sulla scena un terzo concorrente: il gruppo di Martin Pera e Alan Trounson, della Monash University di Melbourne in Australia, che è riuscito anch'esso a isolare e coltivare le staminali embrionali umane inserendosi nella corsa. La sfida è divenuta a questo punto di imparare a controllare il comportamento di queste cellule in laboratorio. Anche sotto questo profilo le ricerche sul topo sono state punti di partenza preziosi. Dalle staminali embrionali del topo sono state ricavate di volta in volta cellule nervose, muscolari, endoteliali (che rivestono l'interno dei vasi sanguigni) e del sangue. La chiave è sempre la stessa: il controllo delle condizioni in cui crescono le cellule. Giocando con il brodo di coltura, aggiungendovi questo o quel fattore di crescita e ponendo le staminali a contatto con un tipo di cellule o con un altro, si può orientarne il differenziamento. Le ricette si scoprono spesso per tentativi ed errori. A volte si parte da fattori di crescita noti e si cercano le dosi e le combinazioni giuste; in altre occasioni si sfrutta un brodo in cui crescono bene le cellule di un certo tipo. In un esperimento, per esempio, le staminali, messe nel brodo che si usa di norma per le cellule degli alveoli polmonari, si sono differenziate in tessuto polmonare. Riguardo alle cellule umane, gli studi sono proceduti in fretta. L'équipe australiana di Pera, partendo dall'osservazione fortuita che alcune staminali in coltura tendono spontaneamente a trasformarsi in cellule nervose o muscolari, ha per prima ottenuto in laboratorio neuroni umani. La Geron Corporation, un'azienda biofarmaceutica statunitense, dal canto suo, ha annunciato di aver prodotto i tre tipi principali di cellule nervose, nonché cellule del fegato e del muscolo cardiaco. Un'équipe israeliana dell'Università di Haifa, che aveva collaborato con Thomson, è riuscita a indirizzarne lo sviluppo in svariate direzioni grazie a varie combinazioni di fattori di crescita. Per il momento comunque il controllo sulle staminali embrionali, e specialmente su quelle umane, resta piuttosto scarso. Anche solo coltivarle è un'impresa: vari studiosi che le hanno ricevute da Thomson hanno faticato non poco per riuscire a farle crescere senza che perdessero le loro preziose Capitolo 1 – Neuroni e cellule staminali 12 caratteristiche. Non è ancora accertato, inoltre, se le cellule ottenute in vitro rispecchino davvero sotto ogni aspetto i tessuti a cui sembrano assomigliare. In definitiva le staminali embrionali sono potenti ma capricciose e restano difficili da domare. Più docile, forse al prezzo di una minor vivacità, è l'altro grande gruppo di cellule a cui si spera di ricorrere per la terapia riparativa: le staminali dei tessuti adulti, dette cellule staminali adulte. 1.2.2 Le cellule staminali adulte La visione tradizionale vuole che nell'adulto permangano solo pochi tipi di cellule staminali, limitate in sostanza ai tessuti soggetti a un forte ricambio. La stessa visione vuole inoltre che le staminali adulte, sebbene indifferenziate, abbiano ormai il destino segnato e non siano in grado di formare tessuti diversi da quello a cui appartengono; sono cioè multipotenti ma non pluripotenti. Entrambe le convinzioni sono state fortemente ridimensionate negli ultimi anni. Cellule staminali sono spuntate dai tessuti adulti più svariati, a partire da quello privo per eccellenza di capacità autoriparativa: il sistema nervoso centrale. Quando sono stati identificati i fattori che fanno crescere il tessuto nervoso, si è infatti constatato che dal tessuto cerebrale di topi adulti, messo in coltura con la giusta combinazione di fattori, si formano tutti i tipi principali di cellule nervose. Nel sistema nervoso centrale dei mammiferi adulti si trova quindi una riserva di cellule multipotenti, le staminali neurali, che in seguito, nel 1999, sono state individuate con precisione dal gruppo di Jonas Frisén, del Karolinska Institute di Stoccolma. Quale sia la loro funzione nessuno sa dirlo con certezza; evidentemente non hanno un grosso ruolo riparativo, visto che sono incapaci di entrare in azione per riparare le lesioni, e una delle ipotesi avanzate è che prendano parte ai processi della memoria e dell'apprendimento. Ancor più inattesa è stata la seconda sorpresa: la "trasformazione del cervello in sangue". All'inizio del 1999 un'équipe guidata da Angelo Vescovi, dell'Istituto neurologico Carlo Besta di Milano, ha reso noto che le staminali neurali sono in grado di differenziarsi in cellule mature del sangue. La dimostrazione è avvenuta nei topi. Gli animaletti sono stati irradiati, per distruggere le staminali Capitolo 1 – Neuroni e cellule staminali 13 emopoietiche del midollo osseo. Di norma, in questi casi, per ricostituire le cellule emopoietiche si trapianta un midollo sano. In questo esperimento, invece, i ricercatori hanno iniettato nel sangue dei topi un certo numero di staminali neurali, modificate geneticamente in modo da colorarsi di blu quando entrano a contatto con un reagente chimico ed essere quindi facilmente riconoscibili. Dopo qualche settimana, nel midollo dei topi sono state trovate staminali emopoietiche che si coloravano di blu: a dispetto di quanto si era sempre ritenuto, le staminali neurali sono state in grado di insediarsi nel midollo e di riconvertirsi, mettendosi a produrre cellule del sangue. Le staminali adulte, dunque, hanno il destino segnato solo fintanto che restano nel proprio tessuto e continuano a ricevere i segnali di differenziamento tipici del tessuto stesso. Ma la capacità di formare tessuti diversi non va del tutto persa e in un ambiente nuovo le cellule sono ancora sensibili a segnali diversi. Altri studiosi hanno mostrato capacità di trasformazione analoghe per altri tipi di staminali. Per vedere fino a che punto si spingesse tanta versatilità, lo svedese Frisén ha provato a iniettare le staminali neurali (modificate per colorarsi in blu) all'interno di embrioni molto precoci di topo, allo stadio di blastocisti. I topolini nati da questa manipolazione erano sani e identici a topolini normali e i loro tessuti apparivano del tutto normali al microscopio. Quando però venivano trattati con il reagente che colora di blu le staminali neurali, in alcuni casi si vedevano comparire strisce azzurre, non solo nel tessuto nervoso ma anche nell'intestino, nel fegato, nel cuore, nel rene e in altri tessuti. Le staminali introdotte si erano quindi integrate perfettamente in tutti questi tessuti, tanto che non si potevano distinguere dalle cellule originali del topolino se non dopo la colorazione. La gamma di vie di differenziamento possibili, dunque, è davvero ampia. Nell'uomo, per ovvi motivi, non si possono fare esperimenti simili. E’ stata raccolta qualche informazione con studi in coltura: Vescovi, per esempio, ha osservato che le staminali neurali umane, crescendo a contatto con i precursori delle cellule muscolari, si trasformano a loro volta in cellule muscolari ben differenziate [Dos02]. Capitolo 2 Interfaccia neurone-silicio 2.1 I primi esperimenti Il cervello e il calcolatore lavorano entrambi elettricamente; l’idea di provare ad interfacciare direttamente i due sistemi è una sfida intellettuale e allo stesso tempo tecnologica. Allo stadio attuale delle nostre conoscenze teoriche e della nostra tecnologia non siamo in grado di stabilire che cosa ci riservi il prossimo futuro, se dovremmo aspettarci tessuti cerebrali integrati nei computer oppure chip integrati direttamente nel nostro cervello. Una cosa però è certa: qualunque siano le ricerche svolte in questo campo, ci aiuteranno a capire meglio l’architettura del cervello e porteranno ad uno sviluppo di applicazioni mediche e scientifiche fino ad ora impensate. Già dai primi anni novanta sono state condotte con successo delle ricerche in tal senso, stabilendo per la prima volta un’interfaccia elettrica tra cellule nervose e microstrutture semiconduttrici e viceversa. In particolare sono stati utilizzati i neuroni delle sanguisughe, notoriamente grandi e quindi facili da manipolare, uniti a transistor disposti su una piastra di silicio [Fro02]. Dopo questi primi, rudimentali, passi iniziali sono state seguite due precise direzioni: Capitolo 2 – Interfaccia neurone-silicio 1. 15 “Verso il basso”, si è studiata la natura microscopica della giunzione neurone-silicio rispettandone la struttura e le sue proprietà elettriche, al fine di descrivere in modo corretto tale giunzione per ottimizzare l’interfaccia neuroelettronica. 2. “Verso l’alto”, si sono assemblati semplici sistemi ibridi che combinavano neuroni e reti neurali con dispositivi microelettronici semiconduttori. Qui lo scopo è stata la supervisione di numerosi neuroni in una rete definita da contatti non invasivi tra le cellule e il substrato semiconduttore, e questo è necessario per lo studio di processi dinamici distribuiti come l’apprendimento e la memoria. Oltre alla giunzone dei neuroni con il silicio e di tutte le sue implicazioni, sono stati svolti anche molti altri esperimenti differenti per scopo e natura. Nel 1999 sono stati condotti dal professor William Ditto e dai suoi collaboratori, presso l’università di Atlanta (Georgia), in collaborazione con l’università di Bordeaux (Francia), alcuni esperimenti volti a creare delle semplici computazioni attraverso i neuroni di sanguisughe. L’esperimento consisteva nel collegare due neuroni tra di loro ed entrambi ad un computer in grado di inviare dei segnali in modo selettivo ad ognuno di essi. La difficoltà maggiore nella gestione dei segnali neurali sta nel fatto che questi, nei sistemi biologici, non possono essere trattati come segnali digitali di tipo “acceso” o “spento”, quindi le istruzioni software che governano l’invio dei segnali utilizzano una branca della matematica nota come “teoria del caos”. Attraverso questa teoria Ditto è stato in grado di far compiere ai due neuroni una semplice addizione. In realtà, attraverso delle simulazioni al computer, Ditto e Sudeshna Sinha, presso l’Istituto di Scienze Matematiche di Madras (India), hanno mostrato come grandi gruppi di neuroni siano in grado di compiere moltiplicazioni e operazioni logiche. Capitolo 2 – Interfaccia neurone-silicio 16 Le porte aperte da Ditto sono estremamente affascinanti perché ci si prospetta un futuro in cui i biocomputer saranno in grado di trovare da soli, senza l’aiuto di nessun programmatore, le soluzioni adatte ai vari problemi e forse di sostituire in certi campi addirittura l’uomo. Recentemente, nel 2002, un team di ricercatori guidati da Catherine Schmidt dell’Università di Austin (Texas), è riuscito a posizionare un semiconduttore esattamente nel punto desiderato della superficie di una cellula nervosa umana, fatto di fondamentale rilevanza visto che fino ad ora le cellule nervose utilizzate erano solo quelle di topi, sanguisughe e lumache. Queste ricerche si spingono in due direzioni: 1. Venire in aiuto di chi soffre di problemi neurologici cronici e degenerativi, come epilessia e morbo di Parkinson. 2. Venire in aiuto di chi ha perso il controllo delle funzioni motorie, ad esempio conseguenze di un ictus. L’obiettivo finale è quello di usare soluzioni elettroniche per aggirare il danno inflitto a certe porzioni del cervello e permettere agli impulsi neurali di arrivare comunque a stimolare un muscolo oppure un braccio meccanico. E’ stato utilizzato un sistema di elettrodi inseriti nel cervello che hanno permesso di tradurre in istruzioni per calcolatori i segnali elettrici trasmessi dalle cellule neurali responsabili delle funzioni cognitive. Questi esperimenti, condotti a partire già dal 1998, hanno avuto l’obiettivo a breve termine di stabilire la possibilità di una linea di comunicazione con pazienti colpiti da paralisi totale. Solo di recente i ricercatori hanno aperto la strada alla messa a punto di congegni in grado di far svolgere a questi stessi pazienti semplici compiti di routine come accendere e spegnere la luce. Sono infatti riusciti a dimostrare che è possibile interpretare i messaggi neurali emessi dal cervello di una scimmia da laboratorio e usarli per controllare un braccio robotico connesso ad un computer. Nel 2000 un team di ricercatori della Northwestern University di Chicago, dell’Università dell’Illinois e dell’Università di Genova, hanno presentato il Capitolo 2 – Interfaccia neurone-silicio 17 risultato delle loro ricerche: la creazione di una strana creatura ibrida costituita da un corpo meccanico controllato dal cervello di un pesce. Sensori di luce alloggiati nel corpo meccanico forniscono al cervello gli stimoli esterni. Il tessuto cerebrale processa queste informazioni per generare dei segnali che vengono inviati al motore del robot per cambiare direzione in risposta agli stimoli dell’ambiente. Il robot possiede pochi neuroni prelevati dalla lampreda marina Petromyzon marinus, un vertebrato primitivo simile alle anguille. Per creare questo “animale artificiale”, come lo ha descritto Steve Grand1, i ricercatori hanno estratto il cervello e parte della corteccia sotto anestesia totale e l’hanno mantenuta in una soluzione salina ossigenata e refrigerata; hanno poi isolato un gruppo di poche cellule, note con il nome di cellule di Müller, responsabili dell’interazione tra i segnali provenienti dai sensori e i comandi inviati alle parti meccaniche, e utili per l’orientamento della lampreda stessa. I neuroni tuttavia non sono stati posti all’interno del corpo meccanico ma sono stati collegati ad esso con dei cavi. Di fronte ad alcuni stimoli luminosi il robot ha presentato diversi comportamenti: ha seguito la luce, ha evitato la luce, si è messo a “camminare” in circolo. La ricerca originariamente avrebbe dovuto studiare gli adattamenti delle cellule del cervello di fronte a degli stimoli che cambiano in continuazione, tuttavia Mussa-Ivaldi [Mus00] [Re&Al], lo scienziato italiano che ha partecipato all’esperimento, sostiene che capire come i neuroni comunichino con le macchine artificiali porterà sicuramente i suoi benefici. Dal 1999 un altro gruppo di ricercatori2 ha condotto degli esperimenti sulle “reti neurali coltivate”. Il loro scopo è stato quello di capire le correlazioni morfologiche dell’apprendimento e della memoria utilizzando sistemi di neuroni coltivati su di un substrato di silicio, sviluppato al Pine Lab. 1 2 Esperto di vita artificiale presso il Cyberlife Research di Somerset. Steve M. Potter, Devi Thota, Michael P. Maher, Jerry Pine. Capitolo 2 – Interfaccia neurone-silicio 18 I neuroni utilizzati vengono prelevati dall’ippocampo dei topi e vengono fatti crescere sulla piastrina: essi formano rapidamente delle sinapsi e sviluppano spontaneamente complessi schemi di connessione. Stimolando gruppi di neuroni con vari schemi di “potenziali d’azione simulati” si spera di osservare dei cambiamenti morfologici nelle reti di neuroni così coltivate, che possono indicare come i neuroni, nei cervelli viventi, cambiano per imparare qualcosa di nuovo. Questi segnali possono indurre cambiamenti nel numero o nella grandezza delle sinapsi, nella crescita dendritica, nella formazione di spine dendritiche o nella interazione con le cellule gliali. Studiando i fenomeni base di come l’attività elettrica influenza la morfologia neuronale, e come a sua volta questi cambiamenti influenzano le proprietà elettriche della rete stessa, si potranno avere preziosi parametri per lo studio delle reti neurali artificiali su computer. Questo permetterà di sviluppare sistemi di apprendimento artificiali che si avvantaggiano dell’adattamento intelligente presente nei sistemi biologici. Capitolo 2 – Interfaccia neurone-silicio 19 2.2 L’esperimento del Max Planck di Monaco Di particolare rilevanza sono gli ultimi esperimenti condotti da Peter Fromherz presso il Max Planck Institute of Biochemistry che mostrano come in questi ultimi anni si siano fatti passi da gigante nello studio e nell’implementazione, tuttavia ancora allo stato embrionale, di interfacce tra neuroni e chip in silicio. Il silicio è adatto a fungere da substrato elettronicamente conduttivo per tre ragioni: 1. Attualmente è disponibile una tecnologia molto avanzata e ben stabilita dei semiconduttori per fabbricare dispositivi elettronici microscopici. 2. Una crescita di una strato di biossido di silicio sopprime i processi elettrochimici che possono portare alla corrosione e al danneggiamento delle cellule. 3. I chip di silicio rivestiti di biossido di silicio sono perfetti substrati inerti per la coltura di cellule nervose. Le cellule nervose, che hanno un diametro di 10-100 µm, sono circondate da una membrana elettricamente isolante. Un sottile strato, spesso circa 5nm, separa l’elettrolite intracellulare dall’ambiente. La corrente elettrica attraverso la membrana è mediata da specifici canali proteici per il sodio e il potassio con una conduttanza di circa 10-100 pS. I neuroni e gli elettroliti sono conduttori di ioni, mentre il silicio è un conduttore di elettroni. Una volta soppressa la corrente di Faraday all’interno dell’interfaccia dal biossido di silicio, l’accoppiamento tra cellule e chip può essere raggiunto solo attraverso la polarizzazione elettrica. Tuttavia, quando una cellula nervosa cresce su di un supporto solido, non ci si deve aspettare che la membrana lipidica e il biossido di silicio formino un dielettrico coerente che possa perfettamente mediare un’interazione capacitiva. Le molecole delle proteine, che si protendono dalla membrana della cellula e che si depositano sul substrato, danno vita a una pellicola elettrolitica tra la Capitolo 2 – Interfaccia neurone-silicio 20 cellula e il chip: questo fenomeno disaccoppia elettricamente il chip e la cellula. Si crea allora una struttura a “sandwich” in cui un sottile strato conduttivo viene separato dagli ambienti conduttivi di silicio e citoplasma grazie a sottili pellicole isolanti di biossido di silicio e membrane lipidiche (Fig. 2.1). Fig. 2.1 - Modello di contatto cellula-semiconduttore La giunzione cellula-semiconduttore ha la natura fisica di un nucleo conduttore isolato. Le correnti elettriche e la diffusione degli ioni in questa struttura a “sandwich” governano la stimolazione e la registrazione dell’attività neuronale sul chip. L’eccitazione di una cellula nervosa è dovuta al potenziale d’azione e consiste in una veloce apertura dei canali di sodio con un concomitante flusso di corrente all’interno della cellula e in una ritardata apertura dei canali di potassio con un flusso di corrente diretto verso l’esterno. Durante un potenziale di azione, le correnti capacitive e ioniche scorrono attraverso la membrana del contatto. La corrente è spinta attraverso la resistenza del nucleo dando così origine nella giunzione ad un voltaggio extracellulare Vj(t) dipendente dal tempo. Se sufficientemente forte, questo stimolo è in grado di influenzare la membrana cellulare, in particolare può aprire i canali di ioni controllati dal voltaggio, in modo tale da ottenere eventualmente un potenziale d’azione. L’efficienza dell’accoppiamento neurone-silicio dipende dalla resistenza della giunzione e dalla corrente che attraversa la membrana cellulare collegata alla Capitolo 2 – Interfaccia neurone-silicio 21 stessa giunzione, ma non solo: è importante capire anche quale debba essere la distanza che separa il chip dalla cellula e quale sia la sua resistenza elettrica. La misurazione della distanza tra chip e cellula viene fatta attraverso una procedura denominata FLIC ( fluorescence interference contrast) che si basa su alcune proprietà del silicio, tra le quali quella di riflettere la luce visibile (Fig. 2.2). Fig. 2.2 - Fluorescence interference contrast (FLIC) Sono stati fabbricati chip in silicio con piazzole microscopiche di biossido di silicio (2,5 x 2,5 µm2, con un’altezza di circa 20 nm) su cui sono state coltivate cellule neurali per studiare il gap che divide la cellula dal chip. Negli esperimenti condotti si è potuto notare che la distanza misurata si attesta attorno ai 109 nm. Questa “grande” distanza è causata dalle forze entropiche delle molecole proteiche che sono ancorate alla membrana e sono usate per isolare il chip in modo da sviluppare la crescita cellulare. Sono state utilizzati diversi tipi di cellula e vari tipi di rivestimenti: il risultato migliore che si è ottenuto è di 40 nm. Per quanto riguarda invece la resistenza del gap tra cellula e chip, in base ad alcune misurazioni ed anche alla teoria questa si attesta attorno ai 10 MΩ. Capitolo 2 – Interfaccia neurone-silicio 22 E’ molto affascinante combinare in un singolo esperimento due fondamentali campi della scienza moderna, la tecnologia genetica e quella dei semiconduttori, e osservare la diretta interazione degli elementi fondamentali della dinamica del cervello e dei transistor: i canali di ioni nelle membrane e i canali di elettroni dei transistor. Un potenziale d’azione conduce una corrente elettrica attraverso la membrana della cellula e attraverso il gap che separa cellula e chip. Il voltaggio extracellulare Vj(t), che modula la struttura a banda del semiconduttore, nasce da una sovrapposizione di tutte le correnti, ioniche e capacitive, presenti nel contatto. La forma e l’ampiezza del segnale è controllata dall’accumulo e dal rilascio delle conduttanze di ioni (nella membrana) e dalla specifica conduttanza della giunzione. Monitorando l’attività dei neuroni di sanguisughe, lumache e topi, si possono osservare una certa varietà di segnali che possono in qualche modo essere compattati in tre classi (Fig. 2.3): 1. Il voltaggio extracellulare è proporzionale alla derivata prima del potenziale d’azione. Questa risposta di tipo A-type avviene quando tutte le conduttanze di ioni sono rilasciate nella giunzione e le correnti capacitive sono controllate. 2. Il voltaggio extracellulare è proporzionale al potenziale d’azione stesso. Questa risposta di tipo B-type è stata osservata quando una non specificata conduttanza prevale nel contatto in modo che una corrente ohmica attraverso la membrana e il gap controlli il voltaggio extracellulare. 3. Il voltaggio extracellulare assomiglia all’inversa della derivata prima del potenziale d’azione. Il segnale si presenta quando tutte le conduttanze di ioni pertinenti sono accumulate nella giunzione. Un intera classe di segnali (Ctype) è stata trovata per la selettiva accumulazione di vari canali di ioni nei neuroni delle sanguisughe e dei topi. Capitolo 2 – Interfaccia neurone-silicio 23 Fig. 2.3 - Le tre classi di segnali La stimolazione del neurone attraverso l’interfaccia elettrica senza la presenza di correnti di Faraday richiede un’alta capacità per area unitaria del chip, per far in modo di iniettare corrente sufficiente nella giunzione. Sono stati costruiti punti di stimolazione molto efficienti utilizzando silicio fortemente drogato con un sottile strato di biossido di silicio [Fro02]. I neuroni delle sanguisughe possono essere stimolati da un singolo voltaggio (un impulso) applicato ai punti di stimolazione sotto il neurone. Il meccanismo della stimolazione, tuttavia, non è ancora chiaro ed alcuni risultati ottenuti sono da interpretare. E’ noto che uno stimolo dà origine ad un voltaggio extracellulare Vj(t) con velocità esponenziale che si presenta nel gap tra la membrana e il chip. Quando si è in presenza di una giunzione B-type, come sempre accade con i neuroni delle sanguisughe, il voltaggio Vj(t) inietta una corrente nel neurone che ha come conseguenza la stimolazione del neurone stesso. Quando si è invece in presenza di una giunzione A-type, la stimolazione del neurone avviene tramite un voltaggio molto forte e improvviso applicato al chip. Capitolo 2 – Interfaccia neurone-silicio 24 2.3 Reti neuronali biologiche: crescita e sinapsi Una volta stabilita l’interfaccia elettrica di un singolo neurone, il passo successivo è quello di creare una vera e propria rete neurale biologica interfacciata con il chip. Se i neuroni potessero essere uniti tra di loro attraverso ben definite connessioni sul chip, sarebbe possibile studiare sperimentalmente le complete dinamiche delle reti neurali biologiche. Per la costruzione di piccole reti neurali biologiche sono stati utilizzati i neuroni degli invertebrati grazie alle loro grandi dimensioni, alla facilità di manipolazione e soprattutto all’efficienza delle giunzioni neuro-elettriche. I percorsi della matrice proteica extracellulare, dove far sviluppare le connessioni, sono stati creati con la fotolitografia UV [F&S91]. Posizionando una cellula in un’area di “partenza” si è osservato un preciso sviluppo delle biforcazioni secondo i pattern stabiliti [F&S94] (Fig. 2.4). Fig. 2.4 - Crescita dei neuriti sui pattern chimici Tuttavia sussistono due problemi fondamentali con la guida chimica qui utilizzata: 1. Inizialmente i neuriti seguono le guide chimiche tracciate, ma nelle fasi successive si accorciano ed escono dalle linee guida (Fig. 2.4). 2. I neuriti seguono tutti i pattern guida e non è possibile controllarne la crescita su un solo pattern oppure in una specifica direzione. Attualmente non si è in grado, facendo crescere i neuroni in coltura, di Capitolo 2 – Interfaccia neurone-silicio 25 ottenere delle connessioni sinaptiche tra i neuriti. Tuttavia alcuni piccoli passi in questa direzione sono stati fatti: sono stati isolati dei singoli neuroni di lucertola e sono stati fatti crescere su di un chip sotto certe condizioni [P&F00]; sono stati creati i pattern attraverso la fotolitografia e sono stati fatti crescere i neuroni uno di fronte all’altro: dopo l’incontro si è potuto vedere come si fosse creata una sinapsi tra i due neuriti. Purtroppo però per riuscire a creare una rete neurale in grado anche solo di fare semplicissime computazioni è necessario superare tutta una serie di problematiche: 1. La formazione della rete deve essere in qualche modo controllata durante la crescita dei neuroni. 2. La struttura di crescita della rete deve essere meccanicamente stabilita. 3. Le reti neurali create attraverso pattern chimici in definite posizioni devono essere assemblate. Il primo passo per l’interfacciamento tra una rete neurale e il chip è stata l’implementazione di un semplice circuito neuroelettronico con un neurone elettronicamente stimolato e uno per la registrazione delle risposte. Un ulteriore passo in avanti è stato quello di posizionare i neuroni sopra i punti di stimolazione e lasciarli crescere liberamente in modo da unire i loro neuriti attraverso dei collegamenti sinaptici. Tuttavia le forze di interazione dei neuriti hanno spostato le cellule dai punti di stimolazione e quindi l’interfaccia tra due neuroni è avvenuta in pochissimi casi. Per ovviare questo problema sono stati creati dei “picchetti” attorno ai punti di stimolazione, attraverso la fotolitografia (Fig. 2.5). Fig. 2.5 - Rete neurale Capitolo 2 – Interfaccia neurone-silicio 26 Lo scopo è quello di imprigionare il neurone in modo che le forze in gioco non possano spostarlo. Purtroppo anche se si riesce in qualche modo a controllare lo spostamento del neurone, non si può dire lo stesso della sua crescita. Al momento sembra impossibile cercare di creare una vera e propria topologia della rete neurale attraverso precise connessioni, considerando anche il numero dei neuroni che si potrebbe voler connettere. Una soluzione, parziale, potrebbe essere quella di creare una rete, diciamo, “caotica”, ossia lasciar crescere i neuroni liberamente sul substrato di silicio e studiarne dopo le risposte ad eventuali stimoli esterni. Per migliorare questo tipo di ricerca sarà necessario: per quanto riguarda i semiconduttori, costruire le microstrutture in grado da una parte di registrare le risposte dei neuroni tenendo conto del rumore e dall’altra di essere in grado di stimolare i neuroni in modo “corretto”. Per quanto riguarda invece le cellule, sarà necessario, sviluppare una tecnologia in grado di far crescere i neuroni in modo predicibile e controllato per poter creare reti neurali con precise caratteristiche topologiche [Fro02]. Capitolo 2 – Interfaccia neurone-silicio 27 2.4 Risultati attuali In conclusione è possibile affermare che la ricerca sull’interfaccia neurone-silicio sta facendo passi da gigante al punto che risulta difficile dare una precisa catalogazione di tutti gli esperimenti che sono stati fatti in questi ultimi anni, sia per scopo sia per natura. Ad esempio l’esperimento condotto da Fromherz al Max Planck di Monaco, tra l’altro uno dei pionieri in questo campo, pone la sua attenzione sugli aspetti prettamente fisici della giunzione tra cellula e silicio, studiandone i comportamenti dal punto di vista elettrico e, di sicuro, sarà la base per successivi e più complessi esperimenti, in cui si porrà soprattutto l’attenzione sulle cellule stesse e sul loro comportamento, in particolare sulla loro aggregazione e sulla possibilità di farle crescere secondo un determinato schema morfologico. Tuttavia ci sono molti altri team di ricerca che stanno portando avanti ricerche analoghe a quella di Fromherz, ma con scopi del tutto diversi: ad esempio le ricerche di Ditto volte a creare delle “computazioni biologiche”; le ricerche in campo medico di Catherine Schmidt o ancora la creazione fantascientifica di un cyborg da parte di Mussa-Ivaldi, Vittorio Sanguinetti e altri., e infine, ma non meno importanti, le ricerche di Potter per cercare di capire come gli aspetti morfologici del cervello possano influenzare l’apprendimento e la memoria. Capitolo 3 Le reti neurali artificiali 3.1 Le reti neurali e la teoria del connessionismo Le reti neurali artificiali sono il risultato delle prove effettuate per realizzare alcune simulazioni delle strutture nervose del tessuto cerebrale. Un neurone del tessuto cerebrale può essere visto come una cella (corpo cellulare) che ha molti ingressi (dendriti) e una sola uscita (assone): una rete neurale biologica è composta da molti neuroni i cui assoni vanno a collegarsi ai dendriti di altri neuroni tramite un collegamento (la cui forza varia chimicamente in fase di apprendimento e costituisce una "microinformazione") che viene chiamato sinapsi. Non sono ancora chiari i meccanismi di apprendimento del cervello degli esseri viventi e le reti neurali artificiali sono attualmente solo un sistema di trattamento dell’informazione in modo distribuito con algoritmi di apprendimento dedicati. Bisogna sottolineare però che le reti neurali hanno caratteristiche sorprendentemente simili a quelle del cervello umano, come la capacità di apprendere; la scarsa precisione associata all’alta elasticità di interpretazione dell’input e una buona capacità di generalizzazione. L’elasticità di interpretazione dell’input viene comunemente chiamata "resistenza al rumore" o "capacità di comprendere dati rumorosi": un sistema programmato ha bisogno di un input ben Capitolo 3 – Le reti neurali artificiali 29 preciso per dare una risposta corretta, mentre una rete neurale è in grado di dare una risposta abbastanza corretta ad un input parziale o impreciso rispetto a quelli utilizzati negli esempi di addestramento. [Mar95] La base cognitiva delle reti neurali artificiali è la teoria del connessionismo, la quale ritiene che i processi cognitivi siano fondati sull'interazione di moduli elementari molto semplici e che il comportamento, estremamente complesso, di un sistema formato da molti di questi moduli derivi dall'interazione tra questi. La teoria del connessionismo parte dalla considerazione che le reti artificiali sono in grado di apprendere dall'esperienza tramite semplice modulazione della forza delle connessioni tra le unità. Questa teoria, oltre ad avvicinare ovviamente questi sistemi a quelli biologici, risulta estremamente importante dal punto di vista teorico perché offre una convincente alternativa all'apprendimento basato sulla costruzione di regole esplicite: non vi è nessun "centro di costruzione di regole" nel sistema; semmai le regole emergono in una descrizione di livello più astratto, mentre ad un livello più basso tutta l'informazione è immagazzinata nelle connessioni tra le unità; i sistemi distribuiti possono generalizzare le loro prestazioni a casi sui quali non sono stati addestrati (ad esempio, una rete neurale che è stata addestrata a riconoscere caratteri di scrittura a mano, riconoscerà anche una scrittura che non ha mai "visto" prima, purché questa non sia troppo diversa dalle altre); i sistemi distribuiti riescono meglio proprio in quei compiti che richiedono la considerazione simultanea di un gran numero di variabili. In breve, il connessionismo ha avvicinato alla microstruttura (reti di neuroni) dei sistemi biologici, consentendo di assistere all'emergenza di fenomeni che finora avevano eluso il campo della simulazione artificiale. A partire dalla teoria del connessionismo, la cui prima formulazione risale ad un saggio di W. McCulloch e W. Pitt del 1943 [McP43], sono state realizzate numerose applicazioni delle reti neurali in vari domini: per esempio nella simulazione dei comportamenti elementari di specie inferiori, spesso associata alla costruzione di robot reali. In questo settore specifico il primo esperimento Capitolo 3 – Le reti neurali artificiali 30 importante è stato il Perceptron di Rosenblatt [Ros58]: un robot in grado di muoversi in un ambiente evitando gli ostacoli. Un altro settore in cui il paradigma connessionista ha avuto larga diffusione è quello dello studio e dell’emulazione dei processi soggiacenti alla percezione, ambito nel quale l’impostazione computazionale classica ha mostrato notevoli limiti. Capitolo 3 – Le reti neurali artificiali 31 3.2 Architettura di una rete neurale artificiale Una rete neurale artificiale può essere schematizzata come in Fig.3.1: x1 x2 . . . xn Funzione di attivazione w1 w2 Uscita a f Σ y wn Pesi θ Soglia Fig.3.1 – Schema di una rete neurale artificiale Esistono n canali di ingresso x1..xn a ciascuno dei quali è associato un peso. I pesi wi sono numeri reali che corrispondono al segnale prodotto dalle sinapsi. Se wi>0 il canale è detto eccitatorio, se wi<0 il canale è inibitorio. Il valore assoluto di un peso rappresenta la forza della connessione. L’uscita, cioè il segnale con cui il neurone trasmette la sua attività all’esterno è calcolato applicando la funzione di attivazione alla somma pesata degli ingressi. Indicando con n a = ∑ wi xi (3.1) i =1 la somma pesata degli ingressi si ottiene n y = f (a ) = f ∑ wi xi i =1 (3.2) La funzione di attivazione f (a) è detta anche funzione di trasferimento. Capitolo 3 – Le reti neurali artificiali 32 Nel modello di rete rappresentato in Fig.1 è stata inclusa anche una soglia (θ) che ha l’effetto di abbassare il valore in ingresso della funzione di attivazione. Quindi la 3.2 diventa: n y = f (a ) = f ∑ wi xi = θ i =1 In questo caso interpretando la soglia come il peso associato ad un ulteriore canale in ingresso x0, di valore sempre costante pari a -1 si può scrivere: n y = f (a ) = f ∑ wi xi i =0 con w0=θ La funzione di attivazione definisce l’uscita di un neurone in relazione al livello di attivazione (3.1) L’uscita può essere un numero reale, un numero reale appartenente ad un certo intervallo, oppure un numero appartenente ad un intevallo discreto (tipicamente {0,1} oppure {-1,+1}) Esistono diversi tipi di funzione di attivazione: • Funzione a soglia L’uscita di un neurone che usa una funzione di attivazione a soglia è: se a ≥ 0 se a < 0 1 y= 0 f(a) 1 0 a Fig. 3.2 – Funzione di attivazione a soglia Capitolo 3 – Le reti neurali artificiali • 33 Funzione lineare L’uscita di un neurone che usa una funzione di attivazione lineare è: f (a) = a f(a) 0 a Fig. 3.3 – Funzione di attivazione lineare • Funzione lineare a tratti L’uscita di un neurone che usa una funzione di attivazione lineare a tratti è: 0 se a ≤ −0,5 f (a) = a + 0,5 se − 0,5 < a < 0,5 1 se a ≥ 0,5 f(a) 1 -0,5 0 0,5 a Fig. 3.4 – Funzione di attivazione lineare a tratti Capitolo 3 – Le reti neurali artificiali • 34 Funzione sigmoide Assieme alla funzione di soglia, le funzioni sigmoidi sono tra le più usate. Un esempio di funzione sigmoide è la funzione logistica definita come: f (a) = 1 1 + exp(−a ) f(a) 1 -0,5 0,5 0 a Fig. 3.5 – Funzione di attivazione sigmoidale Si può osservare che mentre la funzione a soglia assume solo valori 0 e 1, una funzione sigmoide assume tutti i valori da 0 a 1. Notiamo, inoltre, che la funzione sigmoide è derivabile ovunque mentre la funzione a soglia non lo è. Le funzioni di attivazione viste finora assumono valori tra 0 e +1 (esclusa la funzione lineare). A volte è opportuno che la funzione di attivazione assuma valori tra –1 e +1. In particolare la funzione a soglia viene ridefinita così: + 1 f (a) = 0 − 1 se a > 0 se a = 0 se a < 0 Tale funzione è nota come funzione segno [Laz99]. Esistono molti tipi di reti neurali che sono differenziati sulla base di alcune caratteristiche fondamentali: • architettura dei collegamenti; • tipo di apprendimento; • algoritmo di apprendimento; • tipo di utilizzo; Capitolo 3 – Le reti neurali artificiali 35 3.2.1 Architettura dei collegamenti Le reti neurali si differenziano in base alla loro architettura, cioè in base al modo in cui i nodi si dispongono su uno o più strati: in particolare si distinguono reti a uno strato, reti a due strati e reti a tre o più strati. In questi ultimi due tipi gli strati esterni svolgono rispettivamente la funzione di strato di input e strato di output, un po' come nel cervello ci sono cellule che sono in contatto diretto con gli organi di senso e cellule che governano il movimento e l'emissione di messaggi vocali. Si possono identificare diversi tipi di architettura di rete. Di seguito ne vengono presentate alcune. Reti completamente connesse (non stratificate) Fig. 3.6 – Rete completamente connessa In una rete completamente connessa ogni neurone è connesso (in modo bidirezionale) con tutti gli altri. Le connessioni tra i neuroni di una rete completamente connessa sono rappresentate mediante una matrice quadrata W, di dimensione pari al numero di neuroni, il cui generico elemento wij rappresenta il peso della connessione tra il neurone i ed il neurone j Capitolo 3 – Le reti neurali artificiali 36 Reti stratificate Nelle reti stratificate si individuano degli strati di neuroni tali che ogni neurone è connesso con tutti quelli dello strato successivo, ma non esistono connessioni tra i neuroni all’interno dello stesso strato, né tra neuroni di strati non adiacenti. Il numero di strati ed il numero di neuroni per strato dipendono dallo specifico problema che si intende risolvere. Strato d’ingresso Strato di uscita Fig. 3.7- Rete stratificata Dato che nello strato di ingresso non avviene alcuna computazione (i neuroni di ingresso devono semplicemente passare allo strato successivo i segnali ricevuti dall’ambiente esterno), la rete nella figura precedente viene di solito considerata come una rete con un solo strato. Inoltre, dato che i segnali viaggiano dallo strato di ingresso verso lo strato di uscita, si parla di rete feedforward . Se nella rete ci fossero delle connessioni di ritorno (retroazione) avremmo delle strutture di tipo recurrent (o feedback); si tratta di reti dinamiche le cui uscite, opportunamente modificate, vengono retroazionate agli ingressi causando una sequenza di valori di uscità fino al raggiungimento della stabilità Nella Fig.3.8 viene mostrata una rete stratificata feedforward contenente uno strato nascosto , cioè uno strato i cui neuroni non comunicano direttamente con l’esterno. In generale, possono esserci uno o più strati nascosti. I neuroni Capitolo 3 – Le reti neurali artificiali 37 nascosti permettono alla rete di costruire delle opportune rappresentazioni interne degli stimoli in ingresso in modo da facilitare il compito della rete. Strato d’ingresso Strato nascosto Strato di uscita Fig. 3.8 – Rete stratificata con uno strato nascosto Le connessioni tra i neuroni di una rete stratificata sono rappresentate mediante tante matrici quante sono le coppie di strati adiacenti. Ogni matrice contiene i pesi delle connessioni tra le coppie di neuroni di due strati adiacenti [Laz99]. 3.2.2 Tipo di apprendimento Il corretto funzionamento della rete neurale dipende dall’architettura della rete (cioè dal numero di strati e dal numero di neuroni per strato), dalla funzione di attivazione dei neuroni e dai pesi. I primi due parametri sono fissati prima della fase di addestramento. Il compito dell’addestramento è quindi quello di aggiustare i pesi in modo che la rete produca le risposte desiderate. Uno dei modi più usati per permettere ad una rete di imparare è l’ apprendimento supervisionato, che prevede di presentare alla rete, per ogni esempio di addestramento, la corrispondente uscita desiderata. Di solito i pesi vengono inizializzati con valori casuali all’inizio dell’addestramento, poi si cominciano a presentare, uno alla volta, gli esempi Capitolo 3 – Le reti neurali artificiali 38 costituenti l’insieme di addestramento (training set1). Per ogni esempio presentato si calcola l’errore commesso dalla rete, cioè la differenza tra l’uscita desiderata e l’uscita effettiva della rete. L’errore è usato per aggiustare i pesi. Il processo viene ripetuto ripresentando alla rete, in ordine casuale, tutti gli esempi del training set finchè l’errore commesso su tutto il training set (oppure l’errore medio sul training set) risulta inferiore ad una soglia prestabilita. Dopo l’addestramento la rete viene testata controllandone il comportamento su un insieme di dati, detto test set , costituito da esempi non utilizzati durante la fase di training. La fase di test ha quindi lo scopo di valutare la capacità di generalizzazione della rete neurale. Diremo che la rete ha imparato, cioè è in grado di fornire risposte anche per ingressi che non le sono mai stati presentati durante la fase di addestramento. Ovviamente le prestazioni di una rete neurale dipendono fortemente dall’insieme di esempi scelti per l’addestramento. Tali esempi devono quindi essere rappresentativi della realtà che la rete deve apprendere e in cui verrà utilizzata. L’addestramento è in effetti un processo ad hoc dipendente dallo specifico problema trattato. Nel modello ad apprendimento non supervisionato, l’ambiente esterno non fornisce esempi di configurazioni da apprendere; viceversa, indipendentemente dal compito svolto, si forniscono al sistema parametri che danno una misura della qualità di rappresentazione richiesta alla rete. La rete esplora non i dati d’ingresso ma la struttura sottostante a questi dati: ad esempio calcola le correlazioni fra le configurazioni di ingresso e da esse organizza queste configurazioni in classi e categorie. La rete diventa capace di formare rappresentazioni interne in cui si codificano le caratteristiche tipiche dell'ingresso. 1 Insieme di dati preclassificati: {(x1,y1),(x2,y2)…(xn,yn)} dove xt =dati e yt=etichette e la coppia (xi,yi) è detta esempio del training set. Capitolo 3 – Le reti neurali artificiali 39 3.2.3 Algoritmo di apprendimento L’apprendimento della rete si esprime attraverso la seguente formula di aggiornamento dei pesi wij(t)=wij (t-1) + ∆wij (3.3) dove t il passo attuale e ∆wij è la variazione dei pesi che può essere ottenuta attraverso diverse leggi. La regola più usata per aggiustare i pesi di un neurone è la Delta rule o regola di Widrow- Hoff . Sia x = (x1 ,…,xn ) l’ingresso fornito al neurone. Se y’ ed y sono, rispettivamente, l’uscita desiderata e l’uscita neurale,l’errore è dato da d = y’-y La delta rule stabilisce che la variazione del generico peso wi . è: ∆wi = η δ xi (3.4) dove η è un numero reale compreso tra 0 e 1 detto learning rate . Il learning rate determina la velocità di apprendimento del neurone. La delta rule modifica in maniera proporzionale all’errore solo i pesi delle connessioni che hanno contribuito all’errore (cioè che hanno xi diverso da 0). Al contrario, se xi =0, wi non viene modificato poiché non si sa se ha contribuito all’errore. Il nuovo valore dei pesi è quindi: wi = wi + ∆wi (3.5) Un’altra legge comunemente usate è la Legge di Hebb, già citata nel capitolo 3 per il suo significato biologico. Siano x = (x1 ,…,xn ) l’ingresso fornito al neurone e y = (y1 ,…,ym ) l’uscita desiderata; la variazione dei pesi avverrà secondo la seguente legge ∆wij = xi y j (3.6) Capitolo 3 – Le reti neurali artificiali 40 3.2.4 Tipo di utilizzo Dal punto di vista del tipo di utilizzo possiamo distinguere tre categorie basilari: • memorie associative; • simulatori di funzioni matematiche complesse (e non conosciute); • classificatori. Memorie associative. Le memorie associative possono apprendere associazioni tra patterns (insieme complesso di dati come un insieme di pixels di una immagine) in modo che la presentazione di un pattern A dia come output il pattern B anche se il pattern A è impreciso o parziale (resistenza al rumore). Esiste anche la possibilità di utilizzare la memoria associativa per fornire in uscita il pattern completo in risposta ad un pattern parziale in input. Simulatori di funzioni matematiche. Sono in grado di comprendere la funzione che lega output con input in base a degli esempi forniti in fase di apprendimento. Dopo la fase di apprendimento, la rete è in grado di dare un output in risposta ad un input anche diverso da quelli usati negli esempi di addestramento. Ne consegue una capacità della rete di interpolazione ed estrapolazione sui dati del training set. Tale capacità è facilmente verificabile addestrando una rete con una sequenza di dati input/output proveniente da una funzione nota e risulta, invece, utile proprio per il trattamento e la previsione di fenomeni di cui non sia chiaro matematicamente il legame tra input e output. In ogni caso la rete si comporta come una "black box", poiché non svela in termini leggibili la funzione di trasferimento che è contenuta al suo interno. Di questo tipo fa parte la rete a retropropagazione dell’ errore o error back propagation che è quella attualmente più utilizzata per efficacia e flessibilità. Capitolo 3 – Le reti neurali artificiali 41 Classificatori. Con essi è possibile classificare dei dati in specifiche categorie in base a caratteristiche di similitudine. In questo ultimo tipo di rete esiste il concetto di apprendimento non supervisionato o "autoorganizzante", nel quale i dati di input vengono distribuiti su categorie non predefinite. L’algoritmo di apprendimento di una rete neurale dipende essenzialmente dal tipo di utilizzo della stessa, così come l’architettura dei collegamenti. Le reti multistrato prevedono ad esempio l’algoritmo a retropropagazione dell’errore o sono addestrate tramite algoritmi genetici. Capitolo 3 – Le reti neurali artificiali 42 3.3 Implementazione degli algoritmi Dovendo analizzare il comportamento di una rete di neuroni biologici, si è pensato in una prima analisi, di concentrarsi su una rete neurale artificiale basata sul modello di Kohonen, per la sua particolare proprietà di non prevedere una fase di addestramento; successivamente sono stati realizzati modelli software che implementano una rete di Hopfield, l’algoritmo del Perceptrone, e quello della memoria assciativa bidirezionale. Gli ultimi due richiedono una fase di addestramento utilizzando una serie di esempi preclassificati. 3.3.1 Rete di Kohonen Il primo tipo di rete neurale preso in considerazione è stato quello di Kohonen, sia per la sua semplicità architetturale sia perchè le reti realizzate secondo questo modello hanno una certa analogia con alcune strutture neurobiologiche e una buona capacità di auto-organizzazione. Per quanto riguarda l’analogia neurobiologica, si rivela che sulla corteccia del cervello (animale e umano) si vengono a formare in base all’autoapprendimento, mappe corticali tali che i neuroni vicini sono attivati da stimoli simili. Per quanto riguarda l’auto-organizzazione, le reti di Kohonen (dette anche SOM Self Organizing Map) apprendono senza la necessità di un supervisore, quindi senza richiedere un training set di esempi noti. Esse modificano autonomamente i propri pesi sinaptici, in funzione di stimoli esterni. Partendo da una situazione iniziale di non organizzazione, esse si auto-organizzano nel senso che, grazie ad interazioni semplici e puramente locali, evolvono verso l’emergenza di un ordine globale. [Cam97] Capitolo 3 – Le reti neurali artificiali 43 L’algoritmo. La SOM e’ stata sviluppata negli anni 80 da T. Kohonen sulla base di precedenti studi di neurofisiologia. La struttura di una rete di Kohonen consiste in uno strato di N elementi, detto strato competititvo. Ciascuno di questi riceve n segnali x1,…,xn che provengono da uno strato di input di n elementi, le cui connessioni hanno peso wij. Se lo strato competitivo e’ di tipo matriciale, i neuroni vengono collegati tra loro secondo uno schema quadrato, esagonale o romboidale. Se e’ di tipo vettoriale, i neuroni sono semplicemente connessi fra loro a formare una catena. Si determina l’intensità I dell’input di ciascun elemento i dello strato di Kohonen come segue: Ii = D(wi , x) D(wi,x) e’ una qualche funzione distanza, ad esempio quella euclidea, tale distanza è calcolata tra l’input e ciascun neurone dello strato competitivo. A questo punto viene messa in atto una competizione per valutare quale elemento ha la minore intensità di input (ossia quale wi e’ il piu’ vicino ad x). La SOM prevede a questo punto un meccanismo cosiddetto di inibizione laterale, che e' presente anche in natura sotto forma di trasformazioni chimiche a livello sinaptico. Nella regione corticale del cervello, infatti, neuroni fisicamente vicini ad un neurone attivo mostrano legami piu' forti, mentre ad una certa distanza da questo iniziano a mostrare legami inibitori. In questa architettura, ciascun elemento riceve sia stimoli eccitatori da parte degli elementi adiacenti (la cosiddetta neighborhood), sia stimoli inibitori da parte degli elementi piu' lontani, secondo la cosiddetta forma "a cappello messicano" (Fig. 3.9). Fig. 3.9 – Forma a cappello messicano. Capitolo 3 – Le reti neurali artificiali 44 L'esistenza della neighborhood e' utile per non polarizzare la rete su pochi neuroni vincenti. In tal modo vengono attivati solo gli elementi con distanza al di sotto di un certo valore, in casi restrittivi solo l'unità con minima distanza. A questo punto ha luogo la fase di apprendimento, secondo la cosiddetta "Winner Take All Law" (WTA). I dati di training consistono in una sequenza di vettori di input x e i pesi vengono modificati secondo la legge winew = wiold +η (x-wiold )zi (3.7) dove 0<η<1 e decresce lentamente nel tempo con una legge del tipo η (t) = η[1 - t/d] dove d e' un'opportuna costante. Essendo zi>0 solo per il neurone vincitore, i pesi dei neuroni vincenti ruotano sempre piu' verso gli stimoli vettorialmente più vicini, fino a sovrapporsi idealmente con essi. La SOM effettua così una quantizzazione vettoriale, ossia una mappatura da uno spazio a molte dimensioni in uno spazio con numero minore di dimensioni, conservando la topologia di partenza. In altre parole viene effettuata una forma di clustering di tipo Nearest Neighbor (NN), in cui ogni elemento dello strato competititvo viene a rappresentare la classe di appartenenza degli elementi di input. La classificazione NN classifica un pattern a seconda del più piccolo valore ottenuto fra tutte le distanze da un insieme di pattern di riferimento. Questo metodo è utile per separare classi rappresentabili da segmenti di iperpiani. Per questo motivo la SOM classifica bene pattern topologicamente ben distribuiti, ma si trova in maggiore difficoltà nel caso di distribuzioni non lineari. Inoltre appare evidente l'importanza della configurazione iniziale dei pesi, che deve essere il più possibile simile alla topologia di input. Capitolo 3 – Le reti neurali artificiali 45 Implementazione dell’Algoritmo. Dapprima è stato necessario determinare la configurazione della rete ed in particolare il numero (N) di neuroni dello strato di input e quello (K) dello strato di output. Essendo l’implementazione finalizzata alla realizzazione di un circuito composto da neuroni biologici e materiale conduttore è stato necessario concentrarsi su cosa si voleva che la rete facesse per trovare poi la minima configurazione possibile (con il minor numero di collegamenti tra i neuroni) per cui la rete riuscisse comunque a classificare nel migliore dei modi. La scelta della semplicità architetturale è dettata da esigenze implementative: un numero basso di neuroni comporta anche un numero basso di collegamenti tra di essi e quindi la realizzazione circuitale risulta semplificata. Si è pensato così di realizzare un modello di rete in grado di discriminare tra due diversi ingressi: 0 e 1; e dopo diversi tentativi si è riusciti a definire la minima configurazione che risulta formata da nove neuroni appartenenti allo strato di input e tre dello strato di output. Fig. 3.10 – Modello della rete E’ possibile considerare i dati in ingresso come semplici bitmap Capitolo 3 – Le reti neurali artificiali 46 1 1 1 1 0 1 1 1 1 Fig. 3.11 - Bitmap che raffigura il carattere “0” Fig. 3.12 - Rappresentazione numerica 0 1 1 0 0 1 0 0 1 Fig. 3.13 - Bitmap che raffigura il carattere “1” Fig. 3.14 - Rappresentazione numerica L’input x della rete è espresso come un vettore di 0 e 1 La bitmap che rappresenta il carattere 0 avrà una rappresentazione vettoriale del tipo [111101111] mentre la bitmap che rappresenta il carattere 1 avrà la seguente rappresentazione vettoriale:[000100111]. Il matrice dei pesi 9x3 racchiude i pesi dei ventisette collegamenti tra i neuroni e viene inizializzata a valori reali casuali. Il cuore dell’algoritmo è il seguente: Dapprima si stabilisce quale neurone dello strato competitivo dista di meno dall'input. //scelgo il neurone con distanza minima double min=dist[0]; int vincente=0; for (int j=0;j<=K-1 ;j++ ){ if (dist[j]<=min){ min=dist[j]; vincente=j; } } //min è il peso del neurone vincente j* Si stabilisce poi un certo intorno (bidimensionale o anche unidimensionale) del neurone vincente nello strato competitivo all'interno del quale i neuroni vengono variati allo stesso modo del neurone vincente. Tutti quelli esterni all’intervallo definito “di vicinato” rimangono invariati. Capitolo 3 – Le reti neurali artificiali 47 //aggiorno il vettore dei pesi int inizio,fine; if (vincente-vicini<0) inizio=0; else inizio=vincente-vicini; if (vincente+vicini>=K) fine=K-1; else fine=vincente+vicini; for (int i=0;i<=N-1 ;i++ ){ for (int j=inizio; j<=fine ;j++ ){ w[i][j]=w[i][j]+ (eta*(x[i]-w[i][j])); } } //aggiorno il vicinato e il parametro eta eta= eta* (1-1/d); if (vicini!=0)vicini--; Esecuzione. Come già espresso precedentemente la rete di Kohonen non prevede la fase di apprendimento; è stato necessario, dunque, affinchè la rete potesse riconoscere la bitmap in ingresso, simulare una sorta di addestramento facendo ciclare l’algoritmo più volte sullo stesso dato in modo che la rete si autorganizzasse per il particolare tipo di ingresso e la sua risposta convergesse ad un unico neurone vincente. Tale procedimento è stato effettuato per differenti ingressi. I parametri η e d sono stati inizializzati in modo da far convergere la soluzione non troppo velocemente, e senza farla ricadere in una situazione di indecisione (oscillazione). In particolare se η è maggiore di 1 l’algoritmo sbaglia più volte in fase di test e si verifica spesso che il neurone vincente è lo stesso per bitmap differenti. Come valore ottimale del parametro d si è scelto 0,5 poichè si è visto che per un valore maggiore le soluzioni convergevano troppo velocemente al nodo con minore distanza dall’input, mentre per valori troppo inferiori la soluzione ricadeva in uno stato di perenne oscillazione. Risultati. L’algoritmo di Kohonen fornisce in output il “nome” del neurone vincente, cioè di quel nodo della rete che si è maggiormente rinforzato del corso della computazione. Capitolo 3 – Le reti neurali artificiali 48 Si è verificato che durante i cicli di apprendimento delle “bitmap” l’algoritmo si assestava su un singolo nodo diverso per il caso dela bitmap 1 rispetto a quella raffigurante lo 0. Successivamente provando ad eseguire dei test dando in input un’immagine sconosciuta, l’algoritmo rispondeva correttamente, dando in uscita il “nome” dello stesso nodo che era risultato migliore nell’apprendimento. La fase di addestramento è stata forzata per far riconoscere tre diverse bitmap cercando di ottenere tre differenti risposte. Questo, però, non si è verificato a causa delle ridotte dimensioni della rete e nonostante la risposta in uscita fosse coerente con quanto prodotto in fase di apprendimento, si verificava che lo stesso neurone risultava vincente per più di una bitmap. Quindi la configurazione minima prescelta è funzionale limitatamente all’apprendimento di due bitmap. Capitolo 3 – Le reti neurali artificiali 49 3.3.2 Memoria associativa bidirezionale (BAM) Una memoria associativa è una memoria i cui i contenuti possono essere recuperati sulla base di informazioni parziali. Si è scelto questo modello come approccio successivo a quello di Kohonen poichè descrive in modo realistico ciò che avviene nel cervello, facendo delle associazioni di concetti in base ai contenuti. Questo algoritmo fornisce maggiori informazioni rispetto al precedente; non si limita ad indicare un unico nodo, ma utilizza i tre nodi dello strato di output per codificare la risposta corretta. Con l’algoritmo della memoria associativa la rete neurale potrebbe idealmente dare 32=9 risposte differenti al contrario delle tre dell’algoritno di Kohonen2. In una memoria associativa il recupero delle informazioni non implica la nozione di indirizzo; invece dell’indirizzo viene utilizzata una parte della stessa informazione da recuperare. Una caratteristica importante delle memorie associative è la capacità di recuperare l’informazione memorizzata anche in presenza di errori in ingresso. [But93] Con il termine memoria associativa si intende un dispositivo in grado di contenere informazioni sotto forma di associazione fra dati. Un sinonimo di memoria associativa può essere memoria accessibile per contenuto, il contrario è memoria accessibile per indirizzo. Una memoria associativa, dunque, effettua la classica associazione di idee. [Maz91] Una buona memoria associativa comporta l’idea di operare in presenza di dati incompleti o errati. Importante è anche la capacità di accedere alle informazioni memorizzate con prestazioni indipendenti dalla quantità di dati immagazzinati, in altre parole il tempo di accesso ad un’informazione deve essere lo stesso sia in una base di dati di poche righe che di migliaia. 2 3 corisponde al numero di nodi sullo strato di uscita e 2 sono i possibili stati (-1,1) di ciascun nodo. Capitolo 3 – Le reti neurali artificiali 50 Questo suggerisce l’ipotesi di un supporto di memoria che non comporti l’elencazione sequenziale dei dati, come avviene nei database, ma la sovrimposizione dei dati in una stessa struttura. Una rete neurale è particolarmente adatta per realizzare memorie associative poiché l’informazione risiede nell’insieme delle connessioni fra le varie unità e il singolo dato da memorizzare non è concentrato in celle di memoria ma è distribuito su una moltitudine di unità da qui il nome di memoria associativa distribuita. L’algoritmo. La Memoria associativa bidirezionale (BAM) è una delle memoria associative più semplici; essa è formata da due livelli di unità (X eY) con connessioni totali tra i due livelli e nessuna connessione all’interno del livello. Questo significa che ogni unità del livello X è connesso con ogni unità Y ma con nessun’altra di X. Sono indicate con N le unità del livello X e con K le unità del livello Y, ogni unità può assumere due valori: +1 e -1 e per questo vengono dette bipolari. La scelta tra { +1, -1} anziché {0,1} è dovuta al fatto che questo facilità le formule matematiche e migliora la capacità di memoria della rete. Le connessioni tra le unità sono bidirezionali e simmetriche, cioè wij=wji. La funzione di trasferimento T è un semplice gradino centrato sullo 0, cioè la soglia oltre la quale l’unità scatta è il valore di attivazione 0. Le formule che governano la rete sono + 1 xi = − 1 se Σ(wij yi ) < 0 se Σ(wij yi ) ≤ 0 (3.8) (3.9) + 1 yj = −1 se Σ(wij xi ) < 0 se Σ(wij xi ) ≤ 0 (3.10) (3.11) Capitolo 3 – Le reti neurali artificiali 51 La formula di apprendimento di una rete di questo tipo è la semplice formula di Hebb (3.6) Implementazione dell’algoritmo. Si è mantenuto lo stesso modello di rete realizzata per l’algoritmo di Kohonen composto da nove neuroni nello strato di input e tre nello strato di output e anche in questo caso l’algoritmo è stato testato sulla capacità di riconoscere le bitmap raffiguranti il carattere zero o uno. Il vettore dei pesi viene inizializzato a 0 e la fase di apprendimento si effettua utilizzando l’apposita procedura : void addestra (int[] x, int[] y){ this.x=x; this.y=y; for (int i=0; i<=N-1 ;i++ ){ for (int j=0;j<=M-1 ;j++ ){ w[i][j]=w[i][j]+(x[i]*y[j]); (Formula di Hebb) } } } La procedura riceve in ingresso il vettore con la bitmap da riconoscere e la risposta che deve associare a tale input. I vettori di input e di output hanno la dimensione dei corrispondenti strati della rete. Il test di una immagine non nota viene effettuato attraverso la seguente procedura: void esegui(int[] x){ int cambio=1; this.x=x; for (int j=0;j<=M-1 ;j++)y[j]=0; while (cambio!=0){ cambio=0; for (int j=0;j<=(M-1) ;j++ ){ A=0; for (int i=0;i<=(N-1);i++){ A=A+(w[i][j]*x[i]); } if (T(A)!=y[j]){ y[j]=T(A); cambio++; } } Capitolo 3 – Le reti neurali artificiali } int T(int A){ } 52 for (int i=0;i<=N-1 ;i++ ){ A=0; for (int j=0;j<=M-1;j++){ A=A+w[i][j]*y[j]; } if (T(A)!=x[i]){ x[i]=T(A); cambio++; } } if (A>0) return 1; else return -1; } La funzione T esegue la formula espressa in (3.8) (3.9) (3.10) (3.11). Esiste un ciclo principale che viene eseguito fino a che non ci sono più cambiamenti del vettore dei pesi. Il vettore y (che conterrà la risposta) viene inizializzato a zero. La procedura “esegui” riceve in input il vettore corrispondente alla bitmap da testare e cerca di riconoscere se appartiene ad una di quelle note. Ogni elemento del vettore dei pesi viene moltiplicato con l’input; il valore della sommatoria così ottenuta va ad aggiornare l’output secondo le regole (3.10) (3.11) Con la risposta creata e contenuta nel vettore y si tenta poi di effettuare riscostruzione dell’input. Esecuzione. La fase di addestramento si risolve con un’unica invocazione della procedura “apprendi” descritta nel precedente paragrafo. Il vettore dei pesi aggiornato da questa procedura contiene già valori che riescono a dare risultati corretti in fase di test anche se la bitmap prevista non risulta esattamente uguale a quella appresa. Per avvicinarsi alla bitmap dell’input è necessario eseguire più volte la procedura di apprendimento. Capitolo 3 – Le reti neurali artificiali 53 Risultati. Avendo utilizzato la medesima struttura di rete per tutti gli algoritmi la risposta dell’algoritmo di memoria associativa è la somma dello stato dei tre neuroni di output, quindi risponde y=[1,1,1] per riferirsi al carattere 1 e y=[-1,-1,-1] per riferirsi al carattere 0. Dopo aver fatto apprendere sia la bitmap corrispondente al carattere 0 sia al carattere 1 l’algoritmo è in grado di riconoscere se l’immagine sottoposta a verifica corrisponde ad una di quelle apprese. Esso, inoltre, riconosce le immagini anche se contengono del rumore Esempio L’algoritmo risponde “1” anche se in input si danno le seguenti bitmap: Fig. 3.15– Test classificati come “1” Oppure risponde “0” nei casi in cui, anche se incompleta o affetta da disturbo, l’immagine si avvicina a quella dello zero. Fig. 3.16 – Test classificati come “0” Capitolo 3 – Le reti neurali artificiali 54 3.3.3 Perceptrone Il perceptrone fu proposto da Rosenblatt (1958-1962) per il riconoscimento e la classificazione di forme o “patterns”. Esso riconosce se una generica forma, presentata in input, appartiene oppure no ad una determinata classe F; inoltre apprende il riconoscimento della classe F partendo da una configurazione casuale di pesi sinattici, modificandoli opportunamente nel corso di una serie di presentazioni in input sia di esempi positivi (forme di classe F), sia di esempi negativi (forme non-F). [Cam97] L’algoritmo. L’algoritmo è molto semplice. Dapprima si inizializza il vettore dei pesi a zero. I dati memorizzati nel vettore dei pesi permettono di predirre l’etichetta della nuova istanza: ∧ y = sgn(wx) dove w rappresenta la matrice dei pesi sinattici e x il vettore contenente i dati da classificare e ∧ y è la predizione dell’etichetta da assegnare al dato x Se questa predizione è errata, cioè è diversa dall’etichetta y passata in input in fase di apprendimento, allora viene aggiornato il vettore dei pesi secondo la regola w = w + yx (3.12) Se la predizione è corretta il vettore dei pesi rimane invariato; e il processo riparte dal successivo esempio. L’uso più comune dell’algoritmo del perceptrone consiste nell’apprendimento di un training set di esempi precedentemente classificati su cui l’algoritmo continua a ciclare. Il ciclo termina nel momento in cui non sono necessari ulteriori cambiamenti del vettore dei pesi. Block (1962), Novikoff (1962), Minsky and Papert (1969) hanno dimostrato che se i dati sono linearente separabili, allora l’algoritmo del perceptrone dopo aver commesso un numero finito di errori ciclando sul training Capitolo 3 – Le reti neurali artificiali 55 set convergerà ad un vettore in grado di classificare correttamente tutti gli esempi. (Teorema di convergenza del Perceptrone). Implementazione dell’algoritmo. L’algoritmo del Perceptrone effettua l’elaborazione avvalendosi di una rete con un certo numero di nodi in ingresso, ma con un unico nodo di uscita che può assumere valore pari a “1” se la classificazione è avveuta correttamente o “-1” se si è commesso un errore. Nel presente lavoro però esiste il vincolo di mantenere la stessa struttura di rete realizzata per i precedenti algoritmi, che prevede la presenza di tre neuroni sullo strato di uscita. E’ stato necessario dunque creare una matrice dei pesi anzichè un vettore e nella fase di aggiornamento viene analizzato lo stato di ogni singolo neurone di output controllando se il suo valore supera quello della soglia; in caso affermativo tutti i collegamenti dallo strato di input al nodo in esame vengono aggiornati secondo la regola espressa in 3.12 for (int j=0;j<K ;j++ ){ if (output[j]!=risposta[j]){ System.out.println("aggiorno vettore dei pesi"); for (int i=0;i<N;i++) { w[i][j]=w[i][j]+(risposta[j]*input[i]); ho_cambiato=true; } } } Il vettore output racchiude la soluzione predetta mentre il vettore risposta contiene la risposta effettiva che l’algoritmo dovrebbe restituire per quel particolare ingresso. La fase di apprendimento è inserita all’interno di un ciclo che continua fino a quando non ci sono più aggiornamenti della matrice dei pesi. Lo stesso confronto espresso in 2.9 viene effettuato in fase di classificazione di un elemento non noto. Capitolo 3 – Le reti neurali artificiali 56 for (int i=0;i<N;i++){ for (int j=0;j<K ;j++ ){ ris[j]=ris[j]+(w[i][j]*test[i]); } } for (int j=0;j<=K-1 ; j++){ if (ris[j]>soglia) output[j]=1; else output[j]=-1; System.out.println(output[j]); } Il vettore test rappresenta il dato da classificare; nel vettore ris si ricostruisce la risposta utilizzando il vettore dei pesi aggiornato in fase di apprendimento e dopo aver effettuato il confronto con la soglia si costruisce la risposta finale dell’algoritmo (output). Il valore della soglia viene stabilito in modo empirico e il suo ordine di grandezza dipende dal formato dei dati ingresso. Esecuzione. E’ stato creato un training set di esempi formato da alcune possibili configurazioni delle bitmap da riconoscere. Si è scelto dunque quali bitmap potessero essere classificate come “1” e quali come “0”. E’ stato effettuato quindi il ciclo sull’insieme di esempi; tale ciclo termina quando la matrice dei pesi non viene più aggiornata. Nella fase di apprendimento sono state classificate come “1” le seguenti bitmap: Fig. 3.17 – Apprendimento delle bitmap“1” Sono state classificate come “0” le seguenti bitmap: Fig. 3.18 – Apprendimento delle bitmap “0” Capitolo 3 – Le reti neurali artificiali 57 Risultati. Anche per l’algoritmo del perceptrone la risposta è stata forzata in modo da essere uguale a [1,1,1] quando la bitmap testata viene classificata come “1“ e [-1,-1,-1] quando la bitmap testata non è riconosciuta come “1” cioè, nel nostro caso è “0”. Vengono qui riportati alcuni test effettuati con le relative risposte: [1,1,1] [-1,-1,-1] [-1,-1,-1] Fig. 3.19 – Test sull’algoritmo del perceptrone [-1,-1,-1] Capitolo 3 – Le reti neurali artificiali 58 3.3.4 Rete di Hopfield Quasi contemporaneamente alla publicazione dell’algoritmo di retropropagazione il fisico J.J. Hopfield in una serie di articoli dal 1982 al 1985 (l'ultimo in collaborazione con D.W. Tank, [Ta&Ho]) presentò un modello di reti neurali ad alta connessione che porta ora il suo nome e che rappresentò un'altra forte motivazione per la ripresa delle ricerche nell'area del connessionismo. La rete di Hopfield permette di memorizzare dei vettori e richiamarli successivamente. È inoltre di particolare rilevanza la robustezza della rete; cioè se viene presentato un vettore “vicino” ad uno di quelli memorizzati, quest’ultimo viene necessariamente richiamato. L’algoritmo. La rete consiste di n neuroni a connessione totale, senza autoconnessioni come mostrato in fig. 3.19 Fig. 3.20 –Schema di una rete di Hopfield con 6 neuroni Detto wij il peso della connessione tra il neurone i ed il neurone j si ha che wij = w ji per i ≠ j wij = 0 per i = j Inoltre ad ogni neurone i è associata una soglia θi. Capitolo 3 – Le reti neurali artificiali 59 Al tempo t il neurone i si trova in uno stato binario + 1 si (t ) = − 1 Il potenziale al quale si trova il neurone i al tempo t è ovviamente Pi = ∑ ( wij s j ) − θ i i≠ j La legge di attivazione del neurone i è 1 si (t + 1) = − 1 se Pi ≥ 0 se Pi < 0 (3.13) Tale legge di attivazione viene usualmente applicata in modo asincrono, cioè sequenzialmente. La sequenza può inoltre essere una sequenza random. Supponiamo ora che i pesi wij siano stati assegnati e sia s (t ) = ( s1 (t ),..., s n (t )) Alla rete è associata una funzione E, denominata energia per un’analogia formale con l’energia meccanica, che diminuisce monotonicamente nel tempo t. [Cam97] E (s) = − 1 ∑ wij si s j + ∑j θ i S j 2 i≠ j Allora si ha δE = − Pi δs i Pertanto: • se Pi > 0, per la 3.13 si ha: 2 ∆si = si (t + 1) − si (t ) = 0 e quindi ∆E = δE ∆si = − Pi ∆si ≤ 0 δs i Capitolo 3 – Le reti neurali artificiali • 60 se Pi < 0, − 2 ∆si = si (t + 1) − si (t ) = 0 e anche in questo caso ∆E = δE ∆si = − Pi ∆si ≤ 0 δs i Ne segue che E è una funzione non crescente dello stato del sistema come conseguenza della legge di attivazione 3.13; il sistema evolve verso uno stato caratterizzato da un’energia minima. Viene descritto ora il procedimento per scegliere i pesi wij in modo da memorizzare m forme distinte. E’ necessario normalizzare le m forme in m vettori binari ortogonali sk, con k=1,..., m, e tali che s k st = nδ kt Una scelta possibile per i pesi wij è la seguente: j = 1,...n θj =0 m i≠ j wij = ∑ s ki s kj 1 k = wii = 0 (3.14) La 3.14 può anche essere scritta più sinteticamente nella forma m wij = ∑ ( s ki s kj − nδ ij ) k =1 infatti si può verificare che m wij = ∑ ( s ki s kj − nδ ij ) = nm − nm = 0 k =1 Capitolo 3 – Le reti neurali artificiali 61 Con la scelta 3.14 risulta n 1 m E ( s ) = − ∑ ( s k s ) 2 − ∑ s ki2 si2 2 k =1 i =1 Quindi E(s) risulta limitata inferiormente nell’insieme degli stati. Più precisamente E (s) ≥ − n2m 2 in quanto |sk s| < n. Le m forme memorizzate s1,...,sm corrispondono ai minimi locali della funzione E(s). La rete funziona perciò nel modo seguente. Essendo E(s) non crescente, se ad essa viene presentato un vettore s', “leggermente” diverso da sl, la dinamica della rete dopo un certo tempo essa si rilasserà sul minimo locale più prossimo a s' cioè sl . In base ad esperimenti si vede che se N è il numero di neuroni, si possono memorizzare m = 0.14N forme. [Ani00] Implementazione dell’algoritmo. L’architettura realizzata per implementare gli algoritmi descritti precedentemente, non è adatta per rappresentare una rete di Hopfield. E’ stato necessario, dunque, definire un nuovo modello circuitale in cui ogni nodo della rete viene connesso a tutti gli altri. Il nuovo modello è rappresentato in fig. 3.21. Fig. 3.21 - Modello della rete di Hopfield Capitolo 3 – Le reti neurali artificiali 62 La rete non prevede strati di input e di output distinti, tutti i nove nodi (neuroni) che la compongono ricevono contemporaneamente i segnali di ingresso ed emettono quelli di uscita. Il numero di neuroni è tale da poter rappresentare le bitmap 0 e 1 nello stesso formato (matrice 3x3) utilizzato per gli algoritmi precedenti. La matrice dei pesi viene inizializzata secondo la 3.14 in modo da poter riconoscere la bitmap che descrive il carattere 0 e quella che descrive il carattere 1. for (i=0;i<=N-1;i++ ){ for (j=0;j<=N-1;j++ ){ somma=0; if (i==j) w[i][j]=0; else { for (int k=0;k<=numpat-1;k++) somma = somma +(p[k][i]*p[k][j]); w[i][j]=somma; } } } La fase di test viene eseguita calcolando il potenziale di ogni neurone e in base al suo valore se ne prevede lo stato al tempo (t+1), se questo è differente dal precedente viene modificato il vettore dei pesi e si ricalcola nuovamente il potenziale per il nuovo stato, altrimenti il ciclo termina pochè si è giunti alla configurazione di minima energia. while ((uguali(preRisp,risp)!=true) || (primo!=false)){ primo=false; //Viene salvato lo stato precedente for (int h=0;h<=N-1 ;h++ ){ preRisp[h]=risp[h]; } for (i=0;i<=N-1 ;i++ ){ for (j=0;j<=N-1 ;j++){ //viene calcolato il potenziale di ogni neurone pot[i]=pot[i]+(w[i][j]*pat[j]); } //viene disegnato lo stato futuro if (pot[i]>0) risp[i]=1; else if (pot[i]<0) risp[i]=-1; Capitolo 3 – Le reti neurali artificiali 63 else risp[i]=pat[i]; } //si aggiorna il valore della matrice dei pesi for (i=0;i<=N-1;i++ ){ for (j=0;j<=N-1;j++ ){ if (i==j) w[i][j]=0; else w[i][j] = w[i][j]+(pot[i]*pot[j]); } } } Esecuzione. L’output della rete consiste nella configurazione dei nove neuroni della rete. La particolarità della rete è quella di portare l’input ad uno dei possibili stati che ha imparato a riconoscere. In questo modo se una bitmap contiene del rumore viene ripulita e l’uscita corrisponde all’immagine originale. L’uscita è data dallo stato dei nove neuroni che compongono la struttura. Risultati ottenuti La rete raggiunge la configurazione propria della bitmap “0” anche ricevendo i seguenti input: La rete raggiunge la configurazione propria della bitmap “1” anche ricevendo i seguenti input: Capitolo 4 Il progetto 4.1 La scheda di acquisizione dati L’interfacciamento tra il circuito neurale composto da cellule biologiche e le applicazioni software necessarie per l’elaborazione dei segnali provenienti dal suddetto circuito è stato realizzato con l’ausilio di un dispositivo di acquisizione dati. Il dispositivo che si è scelto è il Personal Daq/56 dell’IOTECH. Fig. 4.1-Dispositivo Personal Daq/56 Esso è un apparecchio per l’acquisizione dei dati che si avvale dell’utilizzo della porta USB. Tanto più il dispositivo si avvicina al punto della misurazione, maggiore sarà l’esattezza dei dati ottenuti, poichè meno inquinati dal rumore; per questo motivo l’apparecchio può essere situato fino a cinque metri di distanza dal computer al quale è collegato. Capitolo 4 – Il progetto 65 Il collegamento tra il Personal Daq e il Personal Computer avviene attraverso la porta USB che è in grado di garantire sia l’alta velocità di comunicazione sia l’alimentazione al dispositivo. E’ possibile utilizzare più dispositivi Personal Daq collegati tra loro in cascata a seconda del numero di segnali che si devono trattare contemporaneamente. Negli esperimenti sviluppati nel corso del lavoro che si sta descrivendo, è stato necessario analizzare un massimo di otto canali, quindi è bastato un unico dispositivo. La scheda di acquisizione è dotata di due porte digitali ognuna composta da otto canali dai quali si possono inviare i segnali provenienti dal computer verso l’esterno; e da due porte analogiche, ciascuna formata da cinque canali differenziali (o dieci asimmetrici), dai quali, invece, è stato possibile acquisire i segnali elettrici provenienti dal circuito esterno. 4.1.1 Caratteristiche tecniche Il collegamento con USB Il collegamento con la porta USB risulta ideale per le applicazioni di acquisizione dati. Attraverso esso è possibile sia fornire l’alimentazione alla periferica collegata sia disporre di un’alta velocità di trasferimento dei dati che permette l’acquisizione in tempo reale senza avere la necessità di aggiungere una memoria supplementare nel dispositivo di acquisizione. Il collegamento USB sostiene i dati di trasferimento fino a 12 Mbytes al secondo. Isolamento ottico Il dispositivo Personal Daq/56 è isolato otticamente dall’elaboratore che lo ospita. Uno sbalzo di tensione eventualmente applicato alla scheda di acquisizione, non avrà dunque nessun effetto sul personal computer e ciò permette di effettuare misure più esatte e non intaccate da un eventuale rumore. Capitolo 4 – Il progetto 66 Intervalli di input E’ possibile selezionare gamme di valori differenti per ogni canale di acquisizione. Un canale, ad esempio, può essere utilizzato per la tensione (volt) ed un altro per la temperatura. Il software associato al Personal Daq imposta automaticamente le unità di misura appropriate per il tipo di parametro selezionato. L’intervallo massimo della tensione di input varia tra -10 V e +20 V L’intervallo minimo di tensione di input varia tra -31 mV e +31 mV. Configurazione Analogica degli input Il dispositivo Personal Daq comprende dieci canali per l’acquisizione di input analogici che possono essere utilizzati tutti in modo asimmetrico, in modo differenziale o come come combinazione degli input asimmetrici e differenziali con, al massimo, dieci collegamenti. Il numero di canali dell'entrata analogica può essere aumentato utilizzando uno o più moduli di espansione. Esistono due tipi di moduli di espansione: il primo tipo permette di aggiungere venti input asimmetrici (o dieci differenziali), un secondo tipo aggiunge quaranta input asimmetrici (oppure venti differenziali). Input/Output digitale Ognuno dei canali digitali può essere programmato come canale d’ingresso o come canale di uscita. Le linee digitali possono essere acquisite come componenti di un’eventuale sequenza analogica e possono essere lette oltre cento volte al secondo; le linee di uscita possono essere aggiornate in qualunque momento dell’acquisizione. [Daq01] Capitolo 4 – Il progetto 67 4.2 L’applicazione Poichè il software DaqView associato al dispositivo hardware non prevede la possibilità di impostare sequenze cicliche di invio di segnali digitali di output, è stato necessario creare un’applicazione “ad hoc” per le nostre necessità. Per realizzare le procedure che implementano l’interfaccia e la gestione della scheda di acquisizione si sono utilizzate le funzioni di gestione della periferica contenute nel file pdaqx.dll L’applicazione è stata realizzata nel linguaggio Pascal ad Oggetti in ambiente Delphi. Sono state implementate soltanto le funzionalità di supporto alle misurazioni realmente eseguite e descritte nel capitolo successivo. 4.2.1 Inizializzazione della scheda di acquisizione L’inizializzazione della periferica stabilisce un canale di comunicazione tra l’applicazione e la scheda di acquisizione dati. L’apertura di tale canale fa sì che nessun’altra applicazione possa interfacciarsi con la periferica prima che sia avvenuta la sua chiusura. L’inizializzazione è realizzata attraverso la sezione di codice che segue. daqGetDeviceCount(@deviceCount); daqGetDeviceList(@deviceList[0], @deviceCount); UnitData.handle := -1; for deviceIndex := 0 to (deviceCount) do begin daqGetDeviceProperties(deviceList[deviceIndex].daqName, @deviceProps); if ((deviceProps.deviceType = PersonalDaq55) or (deviceProps.deviceType = PersonalDaq56)) then begin UnitData.handle := daqOpen(deviceList[deviceIndex].daqName); break; end; end; La procedura daqGetDeviceCount rileva quante periferiche sono collegate e ad ognuna di esse la procedura daqGetDeviceList assegna un nome. Capitolo 4 – Il progetto 68 Se il valore del parmetro handle restituito dalla suddetta procedura è -1 la periferica ha generato un errore e l’applicazione viene terminata, in caso contrario il dispositivo viene aperto attraverso la procedura daqOpen creando il canale di comunicazione per lo scambio di dati che rimmarrà attivo fino a che non si esegue la procedeura daqClose. 4.2.2 Acquisizione analogica La finestra dell’applicazione che gestisce la lettura dei segnali provenienti dal circuito esterno è rappresentata in fig.4.2 Fig. 4.2- Schermata dell’acquisizione E’ possibile impostare il numero di canali analogici da cui si desidera acquisire dati, la frequenza di lettura, espressa in Hz, e il numero di scansioni per la frequenza impostata; la combinazione di questi ultimi due parametri determina la durata della lettura. Esiste inoltre la possibilità di specificare il nome del file in cui salvare i risultati dell’operazione di acquisizione. Capitolo 4 – Il progetto 69 Se la sequenza di istruzioni di inizializzazione è avvenuta con successo nel seguito del programma ci si riferirà al dispositivo di acquisizione dati attraverso il suo handle impostato in fase di inizializzazione. Vengono ora descritte le principali istruzioni che permettono la lettura sui canali analogici. Inizialmente è necessario impostare una serie di parametri utili per configurare il tipo di acquisizione. L’acquisizione viene settata per poter leggere da zero a scancount (numero di scan impostati dall’utente) daqAdcSetAcq(UnitData.handle, DaamNShot, 0, ScanCount); La frequenza di acquisizione viene assegnata uguale al valore freq determinato dall’utente. daqAdcSetRate(UnitData.handle, DarmFrequency, DaasPostTrig, freq, @actualRate); Successivamente viene configurato un buffer buf per la memorizzazione dei dati analogici letti. daqAdcTransferSetBuffer(UnitData.handle, buf, scanCount, DatmWait); Infine, la procedura daqAdcArm(UnitData.handle); attiva la possibilità di effettuare il trasferimento di dati; solo quando viene invocata la procedura daqAdcTransferStart(UnitData.handle); il suddetto trasferimento ha effettivamente inizio. 4.2.3 Scrittura digitale La finestra dell’applicazione che gestisce l’invio di segnali digitali verso il circuito esterno è rappresentata in fig. 4.3. Capitolo 4 – Il progetto 70 Fig. 4.3 - Schermata dell’invio di bitmap Attraverso tale interfaccia è possibile disegnare il tipo di bitmap che si desidera inviare alla scheda; impostare il numero di cicli della sequenza scelta, il tempo di attesa (in ms) tra due sequenze successive e il nome del file in cui salvare la configurazione inviata. Anche se le bitmap sono rappresentate da nove celle in realtà soltanto otto di esse risultano significative per la descrizione dell’immagine. La cella centrale che corrisponderebbe al canale nove viene ignorata, per semplicità; considerare otto canali (un byte) semplifica notevolmente i calcoli. La seguente sezione di codice esegue l’invio dei segnali sul dispositivo Personal Daq/56 collegato. for i:=1 to contBitmap do begin daqIOWrite(UnitData.handle, DiodtPDaqDigIO, DiodpPDaqPort1, 0, DioepP1, digVal[i]); delay(intervallo); daqIOWrite(UnitData.handle, DiodtPDaqDigIO, DiodpPDaqPort1, 0, DioepP1, 0); delay(intervallo); end; Capitolo 4 – Il progetto 71 La procedura daqIOWrite invia contemporaneamente sugli otto canali digitali della porta DiodpPDaqPort1 la bitmap digVal[i] Il ciclo viene eseguito per tutte le bitmap “disegnate” dall’utente; i segnali che descrivono una bitmap vengono inviati per il tempo (in ms) specificato dalla costante intervallo. Capitolo 4 – Il progetto 72 4.3 Il “circuito vivente” 4.3.1 Realizzazione circuitale La connessione diretta neuroni-PC ha comportato una serie di problemi non facilmente risolvibili con i pochi mezzi attualmente a disposizione. Il problema principale è stata la perfetta realizzazione di un interfacciamento neurone/elettrodo, indispensabile per estrarre ed inviare i segnali elettrici necessari. Il problema della giunzione tra neurone ed elettrodo, è di fondamentale importanza: i materiali utilizzati devono essere biocompatibili con l’ambiente di coltura dei neuroni, e gli stessi devono attecchire in modo solidale all’elettrodo per avere la massima conducibilità. Inizialmente, si è provato a creare colture di neuroni su un supporto di Kapton (film in polyimide utilizzato per cavi in avionica) equipaggiato d’elettrodi in lega di tungsteno. Il suddetto materiale risultava biocompatibile con la coltura ma le grosse dimensioni degli elettrodi impedivano ai neuroni di innestarsi in modo efficace, probabilmente per problemi d’elettrolisi i neuroni migravano lontano dagli elettrodi. Si sono provati altri materiali quali dei PCB (printed circuit board) utilizzati in elettronica per la connessione dei vari componenti, ma i risultati sono stati deludenti poiché la non trasparenza del supporto impediva il controllo al microscopio della cultura. Successivamente è stato reperito un supporto idoneo allo scopo (Fig. 4.6). Esso è costituito da un disco in vetro dove sono riportati dei piccoli elettrodi in tungsteno. Ogni singolo elettrodo è connesso tramite una sottile pista isolata ad una piazzola adibita al collegamento esterno del sistema. Capitolo 4 – Il progetto 73 Il disco comprende quattro parti, ognuna delle quali è a sua volta suddivisa in cinque piccole aree contenenti circa tredici elettrodi ciascuna (Fig. 4.4). Fig. 4.4 – Sezione di un’area del supporto hardware. Approssimativamente il numero totale degli elettrodi presenti sull’intero disco ammonta a circa 300 connessioni. La distanza tra gli elettrodi (Fig. 4.5) varia in funzione del layout presente in ogni singola area, mediamente tale distanza si aggira tra i 70 e 100 µm. Fig. 4.5 - Elettrodi presenti on ogni area Primo esperimento Il primo esperimento condotto riproduce la rete neurale necessaria per implementare l’algoritmo di Kohonen. In questa fase del lavoro ci si è concentrati su una sola area di quelle presenti sul supporto, isolandola da tutto il resto; per far ciò è stato necessario costruirle attorno una vaschetta di plastica entro la quale è stata disposta la coltura dei neuroni (Fig. 4.6). Capitolo 4 – Il progetto 74 Fig. 4.6 - Supporto Hardware per la coltura. Dei novantacinque elettrodi presenti nell’area delimitata dalla vaschetta, ne sono stati selezionati otto, utilizzati come input, tre come output e tre come ground. Tutti gli elettrodi sono stati collegati, tramite fili di rame isolato, ad una morsettiera che è servita per la successiva connessione ai circuiti esterni (Fig. 4.7) Fig. 4.7 – Schema circuitale della rete di Kohonen L’intero circuito e i fili necessari per i collegamenti sono stati protetti tramite la deposizione di un particolare silicone. Questa operazione è essenziale per proteggere tutte le connessioni elettriche dai liquidi della coltura dei neuroni, e Capitolo 4 – Il progetto 75 impedire che alcuni materiali o sostanze tossiche (es. lo stagno e relativo disossidante utilizzato per la saldatura dei conduttori) vengano a contatto con la coltura uccidendo così le cellule. Tutti i materiali utilizzati si sono rivelati idonei allo scopo. Tramite la morsettiera, solidale con il supporto della coltura, si sono connessi i fili necessari per portare e ricevere i segnali elettrici dalle apparecchiature esterne. Gli otto conduttori, connessi agli input, sono stati collegati ad un generatore di pattern, costruito appositamente per stimolare elettricamente i neuroni costituenti la rete da sperimentare, mentre i tre conduttori di output sono stati collegati agli ingressi analogici della scheda per l’acquisizione dei dati che, a sua volta, è stata connessa ad un computer per la registrazione e l’analisi dei segnali provenienti dal circuito vivente. Il cuore del generatore di pattern è costituito da un microprocessore della STM programmato per ottenere in uscita delle word di otto bit. Le uscite del microprocessore sono connesse ad un circuito elettronico che genera una tensione positiva costante di 30 mV necessaria per stimolare i neuroni senza danneggiarli (Fig. 4.8). Fig. 4.8 – Microprocessore per l’invio dei segnali Capitolo 4 – Il progetto 76 Secondo esperimento Sulla base dei risultati precedenti si è andati realizzando un secondo esperimento. Per questo scopo si è utilizzato sempre lo stesso supporto per realizzare la giunzione dei neuroni con il mondo esterno e su di esso sono state sono state installate quattro vaschette per le colture in modo da realizzare più esperimenti contemporaneamente (Fig. 4.9) Fig. 4.9 Supporto hardware per il secondo esperimento È stata rimossa la morsettiera e sostituita con un connettore con 40 pin. Il cavo di collegamento è un conduttore flat a 40 conduttori schermato contro le emissioni EMI. Fig. 4.10 – Schemi circuitali del secondo esperimento Capitolo 4 – Il progetto 77 In fig. 4.10 è descritta la configurazione circuitale delle quattro aree del suppporto hardware di fig. 4.9. La prima area ha permesso di rifare l’esperimento descritto precedentemente; la terza è stata realizzata per un esperimento di non località quantistica e la quarta è utilizzata solo per prove di conducibilità dei liquidi di coltura; la seconda area, invece, è destinata a ricreare una rete di Hopfield: sono stati selezionati nove elettrodi tra quelli presenti, e sono stati collegati al connettore, otto di essi rappresenteranno i canali verso cui inviare e ricevere i segnali sui nodi della rete di Hopfield, mentre uno è necessario per depolarizzare il circuito. Il circuito elettronico del generatore di pattern è stato completamente rifatto (fig. 4.11). Tale circuito non necessita di un microprocessore, ma riceve i pattern direttamente dalla porta digitale della scheda d’acquisizione e fornisce in uscita le corrette tensioni da inviare ai neuroni. Per evitare il problema dell’elettrolisi ogni bit generato è preceduto da un impulso negativo avente lo scopo di depolarizzare l’elettrolita della cultura. È stato migliorato il generatore di tensione costante che prevede in uscita, su ogni singolo segnale, un circuito operazionale che si preoccupa di generare gli impulsi necessari. La nuova configurazione circuitale consente di mantenere costante la tensione d’uscita mantenendola perfettamente squadrata e livellata. E’ possibile variare la tensione in uscita, sia positiva sia negativa separatamente, da un minimo di 5 mV ad un massimo di 100 mV. Fig. 4.11 – Circuito elettronico per il controllo della tensione Capitolo 4 – Il progetto 78 4.3.2 Il materiale biologico Anche se fino a questo momento si è parlato di neuroni per indicare la materia biologica utilizzata negli esperimenti, è doveroso fare alcune precisazioni. All’interno della vaschetta costruita attorno al circuito elettrico (Fig. 4.6) è stato inserito un liquido all’interno del quale sono presenti una certa percentuale di cellule nervose: neuroni, astrociti e oligodendrociti. Le suddette cellule nervose sono state ricavate a partire da cellule staminali prelevate da tessuti cerebrali di feti che hanno subito aborti spontanei. [Gr&Al] Le cellule staminali sono state poste in una soluzione progettata ad “hoc” per favorirne il differenziamento e dopo alcuni giorni quando, seppur non ancora mature, possono dirsi cellule nervose, vengono inserite in un liquido di coltura: un composto organico basato su siero bovino con ph neutro che contiene delle sostanze indispensabili per il nutrimento delle cellule. E’ da notare che a causa degli strumenti messi a disposizione per questi esperimenti, non è stato possibile collocare le cellule esattamente nei punti desiderati; in sostanza, le architetture elettriche realizzate hanno costituito una sorta di letto sul quale sono state depositate le cellule che hanno potuto, così, creare collegamenti tra loro al di là di quelli elettrici. Tuttavia si ritiene che questo non snaturi gli esiti degli esperimenti per i seguenti motivi: • Nel modello di rete presentato da Kohonen i neuroni disposti sullo strato competivo sono tra loro connessi e stabiliscono delle relazioni di vicinato tali per cui un segnale che arriva ad uno solo di essi si propaga anche in un certo intorno. I segnali d’uscita, inoltre, vengono prelevati da un elettrodo ben preciso il quale, fornisce l’attività delle cellule realmente poste su di esso. • Nel modello di Hopfield i neuroni sono tutti interamente interconnessi quindi, le connessioni che si stabiliscono tra le cellule nervose corrispondono alle connessioni presenti nel modello software. Capitolo 5 Gli esperimenti 5.1 Il modello di Kohonen Il primo esperimento condotto è stato finalizzato all’analisi del circuito che realizza il modello proposto da Kohonen e descritto in 3.3.1. Si è predisposta una sequenza di input con i quali stimolare il circuito. Al fine di rendere più realistico il confronto con i risultati ottenuti via software anche la rete hardware è stata testata sull’acquisizione di bitmap che descrivono i caratteri 0 e 1. Carattere 0 Carattere 1 Le nove celle che formano la bitmap corrispondono ai nove collegamenti sullo strato di input della rete e quindi ai nove canali sulla porta digitale della scheda di acquisizione dati secondo il seguente schema: 1 8 7 2 9 6 3 4 5 Dove i numeri da 1 a 9 rappresentano il canale/neurone di input della rete. Capitolo 5 – Gli esperimenti 80 In realtà il canale contrassegnato con il numero nove sarà sempre lasciato al valore zero; questo permette di lavorare soltanto con otto canali (1 byte) che dal punto di vista dell’elaborazione semplifica notevolmente il lavoro. CARATTERE 0Æ {1,1,1,1,1,1,1,1} CARATTERE 1Æ {0,0,0,0,1,1,1,1} Poichè l’algoritmo classico di Kohonen ha la capacità di classificare esattamente anche pattern affetti da rumore, è stata predisposta una configurazione di bitmap che il modello software aveva riconosciuto correttamente. Bitmap riconducibili al carattere “0” {01110111} {01111111} {11111101} Bitmap riconducibili al carattere “1” {00001110} {00000111} {00011110} Sui nodi di input del circuito sono stati inviati i pattern sopra descritti in diverse configurazioni e a differenti frequenze e sono stati misurati i segnali di uscita sui tre nodi dello strato di output. Capitolo 5 – Gli esperimenti 81 Le misurazioni sulle uscite sono state eseguite contemporaneamente rispetto all’invio dei segnali d’ingresso. E’, inoltre, utile specificare che l’invio di un bit zero sul canale equivale a non inviare nulla, mentre mandare un bit uno significa far passare una tensione di 0,35 V. 5.1.1 Risultati ottenuti Dapprima si è misurato l’output del circuito prima di sottoporlo a stimoli particolari. Le uscite sui tre canali sono rappresentate in fig.5.1 Misurazione libera delle cellule nervose 0,1 0,08 0,06 0,04 V 0,02 0 -0,02 -0,04 1 5 9 13 17 21 25 29 33 37 41 45 49 53 57 61 65 69 73 77 81 85 89 93 97 -0,06 -0,08 Numero di letture Canale 1 Canale 2 Canale 3 Fig. 5.1 – Grafico del comportamento delle cellule senza stimolazioni Per avere la certezza che tali segnali rappresentassero l’attività dei neuroni, e non un possibile comportamento conduttivo del liquido di coltura in cui sono inserite le cellule, è stato necessario verificare il comportamento del solo siero per la coltura, privato delle cellule nervose. I risultati ottenuti da tale misurazione sono riportati in fig.5.2 Capitolo 5 – Gli esperimenti 82 Liquido di coltura prima di subire stimolazioni 0,1 0,08 0,06 0,04 V 0,02 0 -0,02 1 9 17 25 33 41 49 57 65 73 81 89 97 105 113 121 129 137 145 153 161 169 177 185 193 -0,04 -0,06 -0,08 Numero di letture Canale 1 Canale 2 Canale 3 Fig. 5.2 – Grafico del comportamento del liquido di coltura senza stimolazioni Confrontando i risultati si deduce che i segnali di fig.5.1 rappresentano effettivamente l’attività elettrica dei neuroni. Successivamente il circuito è stato sottoposto a particolari stimolazioni durante le quali sono stati inviati sui canali di input i pattern rappresentanti le bitmap sopra descritte. In fig.5.3 sono riportate le risposte all’invio della prima sequenza. L’invio dei segnali è avvenuto ad una frequenza di 1 Hz, mentre la lettura è avvenuta a 4 Hz, quindi sono state necessarie quattro letture per poter leggere ogni pattern inviato. I dati sulle ascisse rappresentano il numero di scansioni effettuate dal dispositivo di acquisizione dati, cioè, il numero di volte in cui sono avvevute delle letture sui canali. Dalla lettura 4 alla 7 si può notare l’uscita dei tre canali mentre viene data in input una bitmap zero. Dalla lettura 8 alla 11 si può notare l’uscita dei tre canali mentre viene data in input una bitmap uno. Dalla 12 alla 22 si ha la risposta all’invio delle tre bitmap che l’algoritmo software ha classificato come zero e tra 23 e 34 quella per le tre bitmap classificate come uno. Capitolo 5 – Gli esperimenti 83 Prima stimolazione 0,1 0,08 0,06 0,04 0,02 40 37 34 31 28 25 22 19 16 13 10 1 7 0 -0,02 4 V -0,04 -0,06 -0,08 Canale 1 Canale 2 Canale 3 Numero di letture Fig. 5.3 – Risposta all’invio della prima sequenza Nella fig. 5.4 sono raccolte le risposte all’invio della stessa sequenza rappresentata in fig 5.3, avvenuta però con una frequenza di 2 Hz e ripetuta ad intervalli regolari. La frequenza di lettura è rimasta del valore di 4 Hz quindi per identificare un pattern sono sufficienti due scansioni. Dalla lettura numero 6 alla numero 7 si ha la risposta all’invio di una bitmap “zero”; dalla 8 alla 9 è stata inviata una bitmap “uno”, dalla numero 10 alla numero 15 ha ricevuto tre possibili pattern “uno”, mentre dalla 16 alla 21 tre possibili “zero”. Come si può notare dal grafico il ciclo riprende poi ad intervalli regolari. Seconda stimolazione 0,1 0,08 0,06 V 0,04 0,02 0 -0,02 1 6 11 16 21 26 31 36 41 46 51 56 61 66 71 76 81 86 91 96 101 -0,04 -0,06 -0,08 Numero di letture Fig. 5.4 – Risposta all’invio della seconda sequenza Canale 1 Canale 2 Canale 3 Capitolo 5 – Gli esperimenti 84 La stessa sequenza di pattern è stata inviata numerose volte con frequenze differenti. Tutti i segnali d’uscita sono stati registrati e hanno mostrato un comportamento analogo a quello appena descritto: l’uscita in prossimità di bitmap graficamente simili assume valori piuttosto vicini. Tali risultati sono consultabili nell’Appendice. In fig. 5.5 è descritta la risposta del circuito all’invio di sei bitmap raffiguranti l’immagine “zero”. Il segnale d’uscita sui tre canali in risposta all’input è visualizzato nelle zone di più bassa tensione (dallo scan 9 al 24, dal 44 al 59, ecc.). Ricordando che la bitmap zero è elettricamente rappresentata da 11111111, al suo invio viene mandata nel circuito una tensione alta rispetto agli altri pattern, eppure la risposta è costituita dai segnali più bassi. Stimolazione con sole bitmap "0" 0,1 0,08 0,06 V 0,04 0,02 -0,04 Numero di letture 193 185 177 169 161 153 145 137 129 121 113 105 97 89 81 73 65 57 49 41 33 25 17 -0,02 9 1 0 Canale 1 Canale 2 Canale 3 Fig. 5.5 – Risposta all’invio di sole bitmap “0” A rendere ancora più singolare quanto appena detto si aggiunge il fatto che il comportamento del solo liquido di coltura è totalmente differente. Essendo un composto organico, si comporta come un conduttore e in corrispondenza dei pattern zero risponde con valori di tensioni più alti che negli altri casi (Fig. 5.6) Capitolo 5 – Gli esperimenti 85 Liquido stimolato con bitmap 0 0,9 0,8 0,7 0,6 V 0,5 0,4 0,3 0,2 0,1 0 1 14 27 40 53 66 79 92 105 118 131 144 157 170 183 196 209 222 235 248 261 274 287 300 Canale 1 Canale 2 Canale 3 Numero di letture Fig. 5.6 – Risposta all’invio di sole bitmap “0” sul liquido di coltura Al termine dell’esperimento si è misurato nuovamente lo stato dei tre segnali di uscita senza sottoporre il circuito a nessun tipo di input per verificare se le stimolazioni hanno influito o meno sullo stato dei neuroni. In fig. 5.7 è riportata la risposta dei neuroni dello strato di output. Cellule nervose dopo le stimolazioni 0,14 0,12 0,1 V 0,08 0,06 0,04 0,02 0 1 6 11 16 21 26 31 36 41 46 51 56 61 66 71 76 81 Numero di letture 86 91 96 Canale 1 Canale 2 Canale 3 Fig. 5.7 – Comportamento finale delle cellule senza stimolazioni Si può notare che l’andamento del segnale risulta molto diverso rispetto a quello di fig.5.1 misurato nelle stesse condizioni. Ciò ha fatto pensare, in una prima analisi, che le cellule nervose avessero, in qualche modo, trattenuto l’informazione e che un nodo (il canale 1) si fosse rinforzato più degli altri nel Capitolo 5 – Gli esperimenti 86 corso delle stimolazioni. Questa considerazione potrebbe apparire un po’ azzardata poichè anche il liquido di coltura, dopo aver subito una serie di stimolazioni assume l’andamento descritto in fig. 5.8. Liquido di coltura dopo le stimolazioni 0,14 0,12 0,1 0,08 V 0,06 0,04 0,02 0 1 5 9 13 17 21 25 29 33 37 41 45 49 53 57 61 65 69 73 77 81 85 Numero di letture 89 93 97 Canale 1 Canale 2 Canale3 Fig. 5.8 – Comportamento finale del liquido senza stimolazioni Tuttavia mentre il liquido di coltura ritorna ad avere un comportamento simile a quello precedente le stimolazioni (fig. 5.2), lo stesso non si può dire per il composto contenente le cellule nervose. 5.1.2 Confronto con il modello artificiale Lo stesso tipo di input è stato inviato anche in ingresso all’algoritmo software. La matrice che rappresenta i valori che i neuroni hanno come loro potenziale di partenza viene inizializzata a valori reali casuali. La fig. 5.9 riporta il numero di volte in cui, l’algoritmo arriva a convergere verso un unico nodo. Si può notare che per qualsiasi valore random di inizializzazione il nodo che si rafforza maggiormente nella computazione è lo stesso che al termine degli esperimenti sul circuito risultava avere il potenziale maggiore. Capitolo 5 – Gli esperimenti 87 Risultati software 6000000 5000000 4000000 Numero di 3000000 Vittorie 2000000 1000000 0 Canale 1 Canale 2 Canale 3 Canali Fig. 5.9 – Grafico dei risultati software 5.1.3 Conclusioni Alla fine dell’esperimento i neuroni sono risultati ancora tutti vivi, dimostrazione che le tensioni e correnti calcolate sono corrette. Si è constatato che la frequenza più bassa ha dato i peggiori risultati (cfr. Appendice pag. 96), poiché le correnti elettriche circolanti nella coltura generano fenomeni d’elettrolisi, e molto probabilmente anche perché le velocità di “trasmissione” dei neuroni sono superiori. La presenza dell’oscillatore al quarzo del microprocessore unito al clock generato dal microprocessore stesso, installato sullo circuito del generatore di corrente, creano un leggero rumore di sottofondo che si propaga alla rete. I cavi che portano i segnali dalla morsettiera della rete alla scheda d’acquisizione non sono schermati e, visti i deboli segnali in gioco, raccolgono ulteriore rumore ambientale. Conclusioni e Sviluppi futuri Per quanto un’analisi completa dei segnali registrati esuli dagli scopi di questa tesi, è importante fare alcune considerazioni emerse da uno studio preliminare dei risultati. Sono stati presi in esame i segnali di output ricavati dalla misura dei neuroni prima degli stimoli, durante l’apprendimento e al termine, nella cosiddetta fase di “testing”. Tali segnali sono stati elaborati utilizzando la Recurrence Quantification Analysis. Questo strumento di analisi non lineare si basa sullo studio di serie temporali ricostruite con delay-time embedded, ossia estese in uno spazio multi-dimensionale. Si ottiene così uno spazio delle fasi in cui la serie temporale è il sistema dinamico da analizzare. Una volta ricostruita la serie si possono usare dei Recurrence Plots per mostrare quali vettori, nello spazio ricostruito, sono lontani o vicini tra loro. Vengono calcolate le distanze euclidee tra tutti gli accoppiamenti tra i vettori e queste vengono poi codificate attraverso dei colori. Essenzialmente, il Recurrence Plot è una tabella di codici di colori, in cui i colori caldi (giallo, rosso ed arancio) possono essere associati con le piccole distanze fra i vettori, mentre i colori freddi (azzurro, nero) possono essere usati per mostrare le grandi distanze. Per segnali random la distribuzione dei colori è completamente uniforme. Quanto più deterministico è il segnale, tanto più strutturato sarà il Recurrence Plot. In pratica il determinismo del segnale è dato dall’ampiezza delle porzioni di spazio in cui il sistema si sofferma più a lungo rispetto alla casualità. Conclusioni e Sviluppi futuri 89 Dalla suddetta analisi si sono ottenuti i risultati mostrati in fig. a, fig. b, fig. c. e fig.d. La prima immagine descrive lo stato di organizzazione di un canale prima di ricevere degli stimoli. Essa è costituita da colori freddi e disorganizzati che segnalano la mancanza di autosimilarità e quindi di autoorganizzazione della serie temporale. La fig. b, calcolata sul segnale ottenuto in fase di stimolazione con il ciclo di pattern descritto in precedenza, è a sua volta disorganizzata anche se con un andamento molto diverso da quello del canale di output prima della stimolazione. Nella fig. c, invece, che corrisponde al segnale emesso da un canale di output in fase di “testing” con il pattern zero, si vedono ampie bande uniformi di colore giallo e rosso, mentre i colori freddi sono limitati agli estremi del diagramma. La fig. d rappresenta, infine, il Recurrence Plot di un canale di output dopo la fine della somministrazione dei pattern. In questo caso le bande di colori caldi si sono ulteriormente allargate, a dimostrazione di un altissimo grado di autoorganizzazione. E’ evidente da questa analisi che l’introduzione di stimoli organizzati ha modificato il segnale proveniente dalle cellule aumentandone il contenuto informativo in misura rilevante. Quel che è più importante, è che l’organizzazione del segnale di output permane anche dopo la cessazione dello stimolo, lasciando aperta la possibilità di interpretare questo evento come una forma di apprendimento o memorizzazione. Conclusioni e Sviluppi futuri 90 Fig.a – Prima delle stimolazioni Fig. b – Durante una stimolazione Fig. c – Durante la presentazione Fig. d – A riposo dopo la stimolazione di un pattern “appreso” Gli elementi raccolti invece dall’analisi qualitativa dei segnali registrati emergono soprattutto dal confronto fra il comportamento del solo liquido di coltura e quello del composto completo. Il liquido di coltura si è comportato come un conduttore, lasciando passare verso le uscite gran parte della tensione applicata agli ingressi, ma è ugualmente possibile rilevare che nel composto completo di cellule nervose le tensioni in gioco risultano più basse e, in particolare, quando il solo liquido risponde con valori “alti” di Conclusioni e Sviluppi futuri 91 tensione, il composto fornisce in uscita i suoi valori più bassi; ciò dipende probabilmente dal valore di soglia che fa sì che le cellule nervose si attivino solo in particolari condizioni. Questo comportamento può far pensare ad una possibile capacità dei neuroni di immagazzinare la tensione (informazione) applicata agli ingressi per rilasciarla poi in un secondo momento. Inoltre, al termine delle stimolazioni l’uscita che descrive l’attività delle cellule non presenta più un andamento oscillatorio tra valori positivi e negativi come, invece, faceva all’inizio dell’esperimento, ma varia con oscillazioni via via sempre meno ampie fino a diventare impercettibili su alcuni valori di tensione diversi per i tre canali e comunque molto più bassi di quanto non faccia il solo liquido di coltura. Anche quest’ultimo, dopo essere stato sottoposto agli stimoli, presenta in uscita valori diversi per i tre canali, che però appaiono molto simili a quelli misurati prima degli input. Va infine sottolineato che a valori graficamente simili, cioè quando vengono inviate bitmap che si assomigliano, corrispondono valori simili nonostante le tensioni applicate agli ingressi non siano molto differenti. In definitiva le considerazioni sopra riportate concordano nell’evidenziare che se da una parte le reazioni del solo liquido di coltura sono sostanzialmente prevedibili, quelle delle cellule nervose sembrano suggerire che una sorta di informazione si sia aggiunta all’interno delle cellule e permanga dopo la cessazione dello stimolo elettrico. E’ importante sottolineare che i risultati dell’analisi qualitativa concordano con quelli portati dalla Recurrence Quantification Analysis, e portano quindi a poter affermare con un certo grado di affidabilità che dopo la presentazione dei pattern i neuroni hanno assunto un comportamento altamente organizzato che non era presente in precedenza; i canali di output, inoltre, presentano caratteristiche fra loro differenti il cui significato sarà da indagare nei successivi esperimenti. Conclusioni e Sviluppi futuri 92 Il lavoro svolto nell’ambito di questa tesi è la prima fase di una ricerca più ampia che si renderà necessaria per interpretare le misure già effettuate e per portare avanti altri esperimenti. Attualmente sono in corso gli esperimenti atti a testare il comportamento della rete di Hopfield implementata in questo lavoro di tesi e di altri circuiti predisposti per ricercare effetti quantistici a livello neuronale. Nel prossimo futuro verranno migliorati sia i supporti per la crescita cellulare che i metodi di misurazione, monitorando più a lungo ciascun segnale e minimizzando le interferenze. Potrà inoltre essere incrementato il numero di connessioni in modo da permettere di testare l’apprendimento su più tipi di pattern e di creare reti sempre più complesse. Contestualmente verrà portata avanti l’analisi dei segnali raccolti, attraverso metodi standard, tecniche non lineari e reti neurali artificiali, alla ricerca di una possibile interpretazione del contenuto informativo conservato nei segnali di output. Se sarà possibile determinare dalle analisi effettuate la natura del meccanismo di apprendimento neuronale, si aprirà allora concretamente la via per creare reti viventi sempre più estese e complesse, in modo da renderle realmente funzionali a scopi computazionali e clinici. Appendice Segnale inviato: una sequenza degli otto pattern. Frequenza scrittura: 0,5 Hz Frequenza lettura: 4 Hz Channel: Scan1: Scan2: Scan3: Scan4: Scan5: Scan6: Scan7: Scan8: Scan9: Scan10: Scan11: Scan12: Scan13: Scan14: Scan15: Scan16: Scan17: Scan18: 0 0,00275 0,03816 0,00346 0,03601 0,00588 0,00937 0,0094 0,01082 0,00934 0,00912 0,01163 0,00962 0,02087 0,01939 0,02107 0,01964 0,01992 0,02059 1 0,03692 0,08448 0,03654 0,08448 0,03544 0,00938 0,0092 0,00909 0,00908 0,00944 0,00923 0,0091 0,01676 0,02582 0,01614 0,02479 0,01724 0,02454 Scan19: Scan20: Scan21: Scan22: Scan23: Scan24: Scan25: Scan26: Scan27: Scan28: Scan29: Scan30: Scan31: Scan32: Scan33: Scan34: Scan35: Scan36: Scan37: 2 -0,0637 0,07344 -0,0615 0,08449 -0,0605 0,01141 0,00927 0,00924 0,00915 0,00913 0,00922 0,00919 0,02568 0,00928 0,02482 0,01125 0,02788 0,01141 0,02055 0,00899 0,00895 0,01118 0,00914 0,0106 0,00911 0,00892 0,00922 0,01109 0,0105 0,01121 0,00924 0,01143 0,00931 0,00907 0,00916 0,01032 0,00912 0,01682 0,00893 0,00903 0,00895 0,01045 0,00897 0,00916 0,00975 0,00912 0,00919 0,0105 0,00946 0,00911 0,00906 0,00904 0,00919 0,00911 0,01098 0,00932 0,02673 0,01074 0,00896 0,00906 0,00913 0,00925 0,00896 0,00915 0,00899 0,00956 0,00935 0,00933 0,01072 0,00918 0,01225 0,00915 0,00927 0,00916 0,01198 0,00907 0,0092 0,00919 0,00911 0,02904 0,02648 0,03076 0,02983 0,0306 0,02992 0,03247 0,02862 0,03352 0,02746 0,03224 0,02217 0,03203 0,02633 0,028 Scan38: Scan39: Scan40: Scan41: Scan42: Scan43: Scan44: Scan45: Scan46: Scan47: Scan48: Scan49: Scan50: Scan51: Scan52: Scan53: Scan54: Scan55: Scan56: 0,01 0,0096 0,00918 0,00987 0,02815 0,02925 0,02559 0,02666 0,0301 0,0281 0,02787 0,02662 0,02443 0,02722 0,02384 0,02615 0,02677 0,02826 0,01644 0,00918 0,0109 0,0096 0,01003 0,02478 0,02839 0,02469 0,0291 0,02803 0,02971 0,02977 0,0263 0,02391 0,02539 0,02847 0,0267 0,02778 0,02362 0,01684 Scan57: Scan58: Scan59: Scan60: Scan61: Scan62: Scan63: Scan64: Scan65: Scan66: Scan67: Scan68: Scan69: Scan70: 0,01045 0,02825 0,01434 0,02665 0,00904 0,02755 0,06498 0,04149 0,08448 0,02968 0,08448 0,0228 0,08448 0,01846 0,02545 0,01701 0,02376 0,01581 0,02645 0,01595 0,03493 0,0684 0,00607 0,06597 -0,0028 0,06585 -0,0088 0,06663 0,01644 0,01746 0,0169 0,01772 0,01834 0,01838 0,05655 0,0336 0,04713 0,02502 0,04693 0,01828 0,04819 0,01089 Terza stimolazione 0,1 0,08 0,06 0,04 V 0,02 0 -0,02 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 -0,04 -0,06 -0,08 Numero di letture 93 Canale 1 Canale 2 Canale 3 Channel: Scan1: Scan2: Scan3: Scan4: Scan5: Scan6: Scan7: Scan8: Scan9: Scan10: Scan11: Scan12: Scan13: Scan14: Scan15: Scan16: Scan17: Scan18: Scan19: Scan20: Scan21: Scan22: 0 0,01449 0,01186 0,00921 0,00931 0,02824 0,01084 0,03033 0,01407 0,00896 0,00912 0,00925 0,0109 0,00916 0,01186 0,00922 0,00906 0,00991 0,0096 0,02689 0,02801 0,02932 0,02777 1 0,01006 0,00917 0,01152 0,00969 0,01675 0,02555 0,0154 0,02787 0,01205 0,00907 0,00902 0,00913 0,01136 0,01199 0,0092 0,00905 0,01031 0,00948 0,0252 0,03236 0,0224 0,03071 Scan23: Scan24: Scan25: Scan26: Scan27: Scan28: Scan29: Scan30: Scan31: Scan32: Scan33: Scan34: Scan35: Scan36: Scan37: Scan38: Scan39: Scan40: Scan41: Scan42: Scan43: Scan44: Scan45: 2 0,00953 0,01259 0,00974 0,00941 0,02039 0,01774 0,02082 0,01615 0,00894 0,01185 0,00932 0,00979 0,00905 0,01029 0,00898 0,00913 0,00976 0,01114 0,02983 0,02381 0,03156 0,0211 0,02932 0,0294 0,02917 0,02585 0,02231 0,0165 0,01974 0,06957 0,05644 0,05701 0,05254 0,01154 0,00912 0,00915 0,01471 0,02018 0,01574 0,01991 0,00914 0,00998 0,0091 0,00886 0,01087 0,0231 0,03187 0,02693 0,03139 0,01251 0,02427 0,01384 0,03001 0,06488 0,01836 0,05289 0,01192 0,00921 0,00962 0,01546 0,01668 0,01601 0,01652 0,00905 0,01134 0,009 0,00928 0,00937 0,02955 0,02317 0,02923 0,02095 0,02571 0,00849 0,02155 0,08442 0,01115 0,07974 0,00393 0,00926 0,00929 0,01144 0,01688 0,01304 0,01621 0,01259 0,00898 0,00906 0,00949 0,00916 0,00909 0,00964 0,00906 0,01163 0,00925 0,01043 0,00915 0,03068 0,02632 0,03023 0,02126 0,03135 0,02319 0,02978 0,00879 0,02467 0,00888 0,02514 0,07795 0,05499 0,07825 0,00982 0,01074 0,00952 Scan46: Scan47: Scan48: Scan49: Scan50: Scan51: Scan52: Scan53: Scan54: Scan55: Scan56: Scan57: Scan58: Scan59: Scan60: Scan61: Scan62: Scan63: Scan64: Scan65: Scan66: Scan67: Scan68: Appendice Segnale inviato: un ciclo di sequenze degli otto pattern. Frequenza scrittura: 1 Hz Frequenza lettura: 4 Hz 0,00966 0,01146 0,01156 0,00949 0,0131 0,00949 0,02115 0,03202 0,02222 0,03022 0,0224 0,03197 0,02188 0,0261 0,01134 0,02502 0,00915 0,02109 0,08446 0,00553 0,00922 0,00995 0,00928 0,00919 0,00913 0,00916 0,00916 0,00903 0,0092 0,02702 0,02187 0,02371 0,02042 0,02365 0,01876 0,02664 0,01135 0,01759 0,00942 0,08047 0,08002 0,02706 0,0791 0,01058 0,00934 0,00949 Scan69: Scan70: Scan71: Scan72: Scan73: Scan74: Scan75: Scan76: Scan77: Scan78: Scan79: Scan80: Scan81: Scan82: Scan83: Scan84: Scan85: Scan86: 0,00913 0,01934 0,01414 0,01605 0,00902 0,00898 0,01108 0,0089 0,01187 0,00904 0,00918 0,00923 0,00907 0,00902 0,01127 0,02284 0,02491 0,02129 0,01047 0,00884 0,02488 0,00859 0,00895 0,01132 0,00898 0,01135 0,009 0,01109 0,00907 0,01167 0,01148 0,00918 0,01071 0,01696 0,02875 0,0232 0,00916 0,022 0,00881 0,02446 0,00942 0,00995 0,00908 0,0099 0,00958 0,00914 0,00914 0,00905 0,00916 0,00906 0,01152 0,03046 0,01628 0,02707 Quarta stimolazione 0,1 0,08 V 0,06 0,04 0,02 0 1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 Numero di letture 52 55 58 61 64 67 70 73 76 79 82 85 Canale 1 Canale 2 Canale 3 94 0 -0,0113 0,07729 -0,0112 0,07487 -0,0102 0,07265 -0,0084 0,06957 -0,008 0,06681 -0,0071 0,0639 -0,0052 0,06133 -0,003 0,05875 -0,0011 0,05635 0,00163 0,00954 0,00921 0,00938 0,01208 0,01338 0,0091 0,00923 0,00959 0,00922 0,01095 0,01065 0,00914 0,00947 0,00917 0,01111 0,00925 0,0092 0,01137 0,00923 1 0,08084 -0,0449 0,08013 -0,0469 0,07911 -0,0676 0,07703 -0,0662 0,07567 -0,0642 0,07345 -0,0619 0,07042 -0,0584 0,06753 -0,0557 0,06398 0,00587 0,06069 0,009 0,00945 0,00913 0,01196 0,00918 0,01153 0,01095 0,00909 0,00954 0,00924 0,00942 0,00964 0,00935 0,00927 0,00924 0,0091 0,0091 0,0091 0,00917 2 0,08447 0,08447 0,08447 0,04727 0,08447 0,04812 0,00871 0,05263 0,08447 -0,0056 0,08447 -0,0236 0,08447 0,06022 0,08447 -0,0134 0,08447 0,06688 0,0798 0,00917 0,00916 0,00914 0,00917 0,00921 0,00909 0,00913 0,00912 0,00916 0,01158 0,00922 0,00924 0,00956 0,0092 0,00935 0,01152 0,00918 0,00904 0,00948 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 0,00945 0,00938 0,00914 0,00921 0,00933 0,00915 0,01146 0,00907 0,00913 0,00841 0,0088 0,01419 0,00883 0,01919 0,00864 0,0132 0,00974 0,01679 0,00877 0,01473 0,00884 0,01652 0,00885 0,01745 0,00915 0,01558 0,00909 0,01348 0,00891 0,01593 0,00889 0,01479 0,00899 0,01821 0,00927 0,01672 0,0103 0,01984 0,00914 0,00944 0,00925 0,00915 0,00909 0,00921 0,01 0,0092 0,00914 0,00912 0,00956 0,01123 0,01141 0,01306 0,01066 0,015 0,01097 0,01768 0,01226 0,01874 0,00962 0,01393 0,0116 0,01621 0,00937 0,01562 0,01028 0,0167 0,00878 0,01635 0,00876 0,01532 0,00871 0,01546 0,00878 0,01698 0,00897 0,01349 0,00883 0,00919 0,00922 0,00912 0,00992 0,0092 0,00938 0,00914 0,0092 0,00918 0,00918 0,00909 0,01243 0,00889 0,01115 0,0093 0,01195 0,00892 0,01091 0,00897 0,0124 0,01206 0,01324 0,01102 0,01091 0,01104 0,01047 0,01142 0,0093 0,01336 0,01048 0,01504 0,00862 0,01083 0,00853 0,01667 0,00865 0,01799 0,00878 0,01547 0,00908 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 0,00906 0,00916 0,00909 0,00914 0,01074 0,00916 0,00909 0,00914 0,00931 0,00908 0,01188 0,00943 0,01186 0,0092 0,00924 0,00919 0,0091 0,00901 0,00908 0,00956 0,00915 0,01165 0,01082 0,00937 0,00922 0,0116 0,0102 0,0091 0,01099 0,00917 0,00919 0,0092 0,00915 0,00914 0,00918 0,0092 0,00917 0,00918 0,00954 0,0129 0,00972 0,0091 0,01121 0,00941 0,01164 0,00913 0,01023 0,01232 0,01083 0,00923 0,00942 0,00924 0,00917 0,00905 0,00903 0,0113 0,0091 0,00951 0,00904 0,00934 0,00905 0,00901 0,00924 0,00913 0,01189 0,00918 0,00906 0,0115 0,011 0,0092 0,0091 0,01227 0,01157 0,00915 0,00968 0,01 0,00916 0,00955 0,0091 0,00907 0,01153 0,0091 0,00915 0,00999 0,01197 0,00997 0,0092 0,00925 0,01175 0,00923 0,01166 0,00916 0,00967 0,00911 0,00915 0,00915 0,0107 0,00915 0,0091 0,00914 0,01062 0,00937 0,00906 0,00915 0,00986 0,00916 0,00912 0,00922 0,00923 0,00916 0,00953 0,01097 0,00921 0,01052 0,01052 0,00988 0,00917 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 0,01375 0,01308 0,0134 0,00929 0,01004 0,00913 0,00914 0,00939 0,01111 0,0092 0,01154 0,00943 0,01109 0,00937 0,01041 0,01055 0,01108 0,00914 0,00979 0,01048 0,00917 0,00994 0,00925 0,00934 0,00964 0,00911 0,00906 0,00913 0,00922 0,00919 0,00919 0,00925 0,00924 0,00921 0,0119 0,00913 0,00913 0,00924 0,00952 0,01268 0,00915 0,00909 0,00919 0,00956 0,01185 0,0091 0,00907 0,00919 0,00925 0,00915 0,00914 0,00923 0,00918 0,00924 0,00923 0,00926 0,00915 0,00916 0,00927 0,00945 0,00911 0,00916 0,0092 0,00899 0,00915 0,0091 0,00918 0,00915 0,00921 0,00926 0,00972 0,00908 0,00952 0,01121 0,01159 0,0098 0,00909 0,00907 0,00911 0,00908 0,01106 0,00917 0,01142 0,00913 0,00985 0,00912 0,00917 0,01009 0,01167 0,00918 0,00922 0,00915 0,01097 0,0092 0,00999 0,00977 0,00924 0,00912 0,00924 0,00953 0,00916 0,0091 0,00964 0,00925 0,01134 0,0092 0,00949 0,00908 0,00911 0,00925 0,00918 0,00922 0,01043 0,00919 0,00925 0,00921 0,00961 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 0,0111 0,0092 0,00912 0,00911 0,00919 0,01129 0,0095 0,01675 0,01361 0,01684 0,01541 0,01998 0,01667 0,01961 0,01644 0,01919 0,01738 0,01842 0,01669 0,01812 0,01759 0,01791 0,02005 0,0178 0,02104 0,01705 0,02308 0,01736 0,02429 0,01701 0,023 0,01665 0,02717 0,01707 0,02776 0,01701 0,02928 0,01669 0,00915 0,00919 0,00938 0,00917 0,00912 0,00921 0,01156 0,01009 0,02654 0,01169 0,02883 0,01613 0,02887 0,01573 0,02524 0,01509 0,029 0,0175 0,02505 0,01569 0,02239 0,01631 0,02629 0,01609 0,02217 0,01855 0,02299 0,01873 0,02221 0,01932 0,02096 0,01928 0,02063 0,02021 0,02055 0,02385 0,01991 0,02132 0,0094 0,01055 0,01 0,00921 0,00917 0,00947 0,00915 0,02405 0,01062 0,02546 0,00853 0,0254 0,00893 0,02818 0,00969 0,0284 0,01027 0,02894 0,0111 0,0269 0,0131 0,02563 0,01496 0,02912 0,01606 0,02603 0,01603 0,02832 0,01615 0,02351 0,01589 0,02384 0,01643 0,02398 0,0183 0,02528 0,01667 0,02049 95 Ch: 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: Appendice Segnale inviato: una sequenza degli otto pattern. Frequenza scrittura: 0,25 Hz Frequenza lettura: 4 Hz Appendice Quinta stimolazione 0,1 0,08 0,06 0,04 0,02 V 0 -0,02 1 7 13 19 25 31 37 43 49 55 61 67 73 79 85 91 97 103 109 115 121 127 133 139 145 151 157 163 169 175 181 187 193 -0,04 -0,06 -0,08 Numero di letture Canale 1 Canale 2 Canale 3 OSSERVAZIONE: Nei segnali mostrati nel grafico la variazione del segnale in risposta ai differenti input non è evidente. Ciò è causato dalla bassa frequenza di trasmissione che con molta probabilità è troppo inferiore alla velocità di trasmissione delle cellule nervosa. 96 Appendice Segnale inviato: due sequenze degli otto pattern. Frequenza scrittura: 2 Hz Frequenza lettura: 4 Hz Channel: Scan1: Scan2: Scan3: Scan4: Scan5: Scan6: Scan7: Scan8: Scan9: Scan10: Scan11: Scan12: 0 0,01738 0,0196 0,00932 0,00904 0,00935 0,01154 0,01039 0,02273 0,01636 0,02782 0,01649 0,01767 1 0,02405 0,00953 0,00909 0,01026 0,00997 0,00912 0,01157 0,01063 0,02936 0,01219 0,02892 0,00887 Scan13: Scan14: Scan15: Scan16: Scan17: Scan18: Scan19: Scan20: Scan21: Scan22: Scan23: Scan24: Scan25: 2 0,00887 0,0223 0,00917 0,00898 0,00955 0,00926 0,00909 0,02711 0,01 0,02763 0,01046 0,01619 0,0091 0,07528 0,06539 0,07006 0,06583 0,06547 0,06403 0,0622 0,03663 0,05849 0,00912 0,01673 0,00936 0,01647 0,06501 0,05331 0,06694 0,04133 0,08348 0,02636 0,08448 0,07808 0,07748 0,00925 0,00927 0,01419 0,00955 0,05207 0,06831 0,05026 0,08022 0,0845 0,08347 0,0845 0,02881 0,00919 0,00921 0,0096 0,00898 Scan26: Scan27: Scan28: Scan29: Scan30: Scan31: Scan32: Scan33: Scan34: Scan35: Scan36: Scan37: Scan38: 0,01117 0,00911 0,00908 0,00913 0,01063 0,00918 0,01753 0,0122 0,01548 0,00971 0,01212 0,05072 0,07142 0,0115 0,00903 0,00923 0,00975 0,00959 0,00957 0,00911 0,02284 0,0086 0,01173 0,00895 0,08102 0,0586 0,00906 0,00916 0,01168 0,00978 0,00939 0,00895 0,0265 0,00878 0,02261 0,00912 0,00844 0,04737 0,07737 Scan39: Scan40: Scan41: Scan42: Scan43: Scan44: Scan45: Scan46: Scan47: Scan48: Scan49: Scan50: 0,05718 0,0789 0,05698 0,07527 0,06539 0,07281 0,06429 0,06972 0,06705 0,06736 0,06631 0,06303 0,06896 0,06373 0,06112 0,06898 0,05412 0,07623 0,04826 0,07495 0,04338 0,08335 0,03883 0,08424 0,05763 0,0682 0,06341 0,07861 0,06497 0,0336 0,06966 0,03029 0,07785 0,02725 0,08024 0,0845 Sesta stimolazione 0,1 0,08 0,06 V 0,04 0,02 0 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 Numero di Letture 31 33 35 37 39 41 43 45 47 49 Canale 1 Canale 2 Canale 3 97 Ch 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 0 0,01207 0,00884 0,00935 0,01713 0,01899 0,02231 0,06575 0,01047 0,00924 0,00909 0,01136 0,02563 0,01564 0,01512 0,05773 0,00933 0,00929 0,00917 0,00908 0,01829 0,01121 1 0,02626 0,01044 0,00905 0,01318 0,03012 0,00879 0,01322 0,01053 0,02117 0,00921 0,00906 0,00996 0,02849 0,00894 0,06638 0,00917 0,00916 0,0092 0,00912 0,01043 0,02574 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 2 0,01037 0,00985 0,00909 0,02873 0,0156 0,01731 0,06521 0,00921 0,00903 0,01144 0,01137 0,0274 0,01098 0,01368 0,06731 0,0107 0,00999 0,01146 0,00923 0,02456 0,01206 0,01223 0,00939 0,01073 0,01136 0,00917 0,00916 0,01783 0,01578 0,05639 0,00916 0,00833 0,00959 0,00911 0,01126 0,01642 0,00898 0,05796 0,0093 0,00876 0,00907 0,00902 0,01208 0,00896 0,0091 0,00892 0,00929 0,00911 0,0096 0,00942 0,01324 0,03927 0,00919 0,00903 0,0092 0,00913 0,00905 0,01015 0,01253 0,04743 0,01075 0,00903 0,00906 0,00925 0,01755 0,00861 0,00918 0,00865 0,01098 0,01082 0,00908 0,02499 0,00901 0,08428 0,0092 0,00882 0,00948 0,01153 0,00896 0,02253 0,00983 0,08378 0,00936 0,00895 0,00912 0,0113 0,00972 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 0,01685 0,00978 0,05826 0,00918 0,00898 0,00908 0,00933 0,01613 0,014 0,00885 0,05607 0,00972 0,00902 0,0092 0,00925 0,01694 0,01087 0,04113 0,00914 0,00902 0,01272 0,00913 0,01152 0,00829 0,054 0,00906 0,00921 0,00936 0,00921 0,01787 0,00858 0,00847 0,04624 0,00911 0,00921 0,00913 0,00922 0,01726 0,01156 0,05656 0,00912 0,00885 0,0094 0,00919 0,01433 0,00909 0,08412 0,00924 0,00905 0,00919 0,01146 0,00886 0,0163 0,00917 0,00956 0,01165 0,00924 0,00947 0,01189 0,00887 0,00858 0,03374 0,00917 0,00916 0,00921 0,00908 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: Appendice Segnale inviato: un ciclo di sequenze degli otto pattern. Frequenza scrittura: 4 Hz Frequenza lettura: 4 Hz 0,00941 0,01204 0,01042 0,05483 0,00977 0,00889 0,01143 0,00929 0,00896 0,0142 0,00898 0,05817 0,00921 0,00885 0,00927 0,01004 0,00893 0,01426 0,009 0,0557 0,01012 0,00918 0,00927 0,01359 0,00905 0,05656 0,00922 0,00933 0,00918 0,00934 0,00944 0,01377 0,00901 0,05739 0,00944 0,00903 0,0092 0,00916 0,01404 0,01287 0,00896 0,05954 0,01138 0,01098 0,00918 0,00883 0,00887 0,0394 0,00912 0,00905 0,01143 0,00913 0,01396 0,01013 0,00892 0,03968 0,00943 0,00913 0,00976 0,00908 0,01324 0,00883 0,00895 0,03743 0,00906 0,00922 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 0,00909 0,0092 0,00876 0,01365 0,01606 0,00919 0,00929 0,01043 0,00936 0,01156 0,00883 0,00904 0,0301 0,0092 0,00942 0,01245 0,01125 0,03665 0,00923 0,00899 0,00918 0,00917 0,00922 0,01383 0,00926 0,0551 0,00924 0,00996 0,01415 0,00892 0,05631 0,00923 0,0091 0,00913 0,00936 0,00919 0,0123 0,00906 0,05702 Settima stimolazione 0,1 0,08 V 0,06 0,04 0,02 0 1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 Num ero di letture 58 61 64 67 70 73 76 79 82 85 88 91 94 97 100 Canale 1 Canale 2 Canale 3 98 Bibliografia Referenze citate nel testo: [Ani01] A. Anile, www.dmi.unict.it/~anile/mathapp/retineuro/retineuro.html, (Maggio 2001) [B&F02] Brigitte Bels and Peter Fromherz, Transistor array with an organotypic brain slice: field potential records and synaptic currents, European Journal of Neuroscience, vol 15, pp. 999-1005, (2002) [BoFr02] Paolo Bonifazi and Peter Fromherz, Silicon Chip for Electronic communication between nerve cells by non-invasive interfacing and analog-digital processing, Advanced Material, n. 17, (Settembre 2002) [But93] Giorgio C.Buttazzo, Introduzione al Calcolo Neurale (2000) [Cam97] Silvio Cammarata, “Reti neuronali. Dal Perceptron alle reti caotiche neuro-fuzzy”, (1997) [Daq01] Personal Daq User’s Manual USB Data Acquisition Modules, (2001) [Dos02] http://www.lesionispinali.org/ricerca_file/dossier/dossier27_3.html, (Marzo 2002) [EvK81] Evans e Kaufman, Nature 292, 154-6, (1981) [F&S94] Fromherz P and Schaden H, Defined neuronal arborisations by guided outgrowth of leech neurons in culture Eur J Neuroscience n.6, (1994) [Fro02] Electrical Interfacing of Nerve Cells and Semiconductor chips, Chemphyschem, vol 3, pp. 276-284, (2002) Bigliografia 100 [FSc98] Yoav Freund, Robert E. Schapire, Large Margin Classification using the perceptron Algorithm, Machine Learning (1998) [Gr&Al] Angela Gritti, Barbara Rosati, Marzia Lecchi, Angelo L. Vescovi e Enzo Wanke, Excitable properties in astrocytes derived from human embryonic CNS stem cells, European Jurmal of Neuroscience, vol 12, pp 3549-3559, (2000) [JMF00] Martin Jenker, Bernt Muller, Peter Fromherz, Department of Neurophysics, Max Planck Institute for Microelectronics, 29 Settembre (2000) [Laz99] Beatrice Lazzerini, Introduzione alle reti neurali artificiali [Mar95] Luca Marchese, Reti neurali su personal computer + fuzzy logic, (1995) [Maz91] Alessandro Mazzetti, Reti neurali artificiali. Introduzione ai principali modelli e simulazione su personal computer, (1991) [McP43] W. Mc Culloch e W. Pitt, A Logical Calculus of the Ideas Immanente in Nervous Activity, Bulletin of Mathemátical Biophysics, vol. 5, pp. 115-133, (1943) [Mus00] Reger, B, Fleming, KM, Sanguineti, V, Simon Alford, S, MussaIvaldi, FA. Connecting Brains to Robots: The Development of a Hybrid System for the Study of Learning in Neural Tissues. Artificial Life VII, Portland, Oregon, (August 2000). [P&F00] Prinz A and Fromherz P, Electrical synapses by guided growth of cultured neurons from the snail Lymnaea stagnalis Biol. Cybern., (2000) [Par99] D. Parisi, Mente, “I nuovi modelli della vita artificiale”, Il mulino, p. 80 (1999) [Re&Al] Reger, B, Fleming, KM, Sanguineti, V, Simon Alford, S, MussaIvaldi, FA. “Connecting Brains to Robots: An Artificial Body for Studying the Computational Properties of Neural Tissues” Artificial Life 6: 307-324, (2000) [Ros58] Rosenblatt, The perceptron: a probabilistic model for information storage and organization in the brain. Psychological Review, n. 65, pp. 386-408, (1958) [S&F98] R. Schatzthhauer and P. Fromherz, Neuron-silicon junction with voltage-gated ionic currents, European Journal of Neuroscience, vol Bigliografia 101 10, pp. 1956-1962, (1998) [Ta&Ho] D.W. Tank and J.J. Hopfield, Neural architecture and biophysics for sequence recognition in Neural Models of Plasticity, Academic Press, 363-377, (l989) [Th&Al] Thomson et al., Science 282 1145-7, (1998) [Z&F01] Zeck and Fromherz, Noninvasive neuroelectronic interfacing with synaptically connected snail neurons on a semiconductor chip. Proceedings of the National Academy of Sciences, 98, 10457-10462, (2001) Altri articoli pertinenti: Akin T, Najafi K, Smoke RH and Bradley RM, A micromachined silicon electrode for nerve regeneration applications, IEEE Trans Biomed Eng n.41, pp. 305-313 Michigan USA, (1994) Borkholder DA, Bao J, Maluf NI, Perl ER and Kovacs GT, Microelectrode arrays for stimulation of neural slice preparations J, Neuroscience Methods n. 77, pp.6166, (1997) Bove M, Martinoia S, Grattarola M and Ricci D, The neuron-transistor junction: Linking equivalent electric circuit models to microscopic descriptions Thin Solid Films n. 285 pp.772-775, (1996) Braun D. and Fromherz P., Fast Voltage Transients in Capacitive Silicon-to-Cell Stimulation Detected with a Luminescent Molecular Electronic Probe. Physical Review Letters n. 86 (13), pp. 2905-8 (2001) Breckenridge LJ, Wilson RJA, Connolly P, Curtis ASG, Dow JAT, Blackshaw SE and Wilkinson CDW, Advantages of using microfabricated extracellular electrodes for in vitro neuronal recording J Neuroscience Research, n.42 pp. 266276, (1995) Egert U, Schlosshauer B, Fennrich S, Nisch W, Fejtl M, Knott T, Muller T and Hammerle H, A novel organotypic long-term culture of the rat hippocampus on substrate-integrated microelectrode arrays, Brain Resource Protoc, n.2, pp. 22942, (1988) Jenkner M and Fromherz P, Bistability of membrane conductance in cell adhesion observed in a neuron transistor, Phys Rev Lett n. 79 pp. 4705-4708 (1997) Bigliografia 102 Jimbo Y. and Robinson H.P.C., Propagation of spontaneous synchronized activity in cortical slice cultures recorded by planar electrode arrays, Bioelectrochemistry n. 5, pp.107-115,(2000) Maher MP, Dvorak-Carbone H, Pine J, Wright JA and Tai YC, Microstructures for studies of cultured neural networks, Med Biol Eng Comput n. 37, pp. 110-8 Caltech USA, (1999) Maher MP, Pine J, Wright J and Tai YC, The neurochip: a new multielectrode device for stimulating and recording from cultured neurons, Neuroscience Methods n. 87, pp. 45-56 Caltech USA, (1999) School M, Sprössler C, Denyer M, Krause M, Nakajima K, Maelicke A, Knoll W, Offenhässer, Ordered networks of rat hippocampal neurons attached to silicon oxide surfaces, Neuroscience Methods, n. 104 pp. 65-75(2000) Thomas C. A., Springer P.A. Jr., Loeb G. E., Berwald-Netter Y. and Okun L. M., A miniature microelectrode array to monitor the bioelectric activity of cultured cells, Exp. Cell Res., n. 74 pp. 61-66, (1972) Vassanelli S and Fromherz P, Transistor records of excitable neurons from rat brain, Appl Phys A(66) pp. 459-63 , (1998) Vassanelli S and Fromherz P, Transistor probes local potassium conductances in the adhesion region of cultured rat hippocampal neurons, Neuroscience n. 19, pp. 6767-73, (1999) Wilson, R.J., L. Breckenridge, S.E. Blackshaw, P. Connolly, J.A.T. Dow, A.S.G. Curtis, and C.D.W. Wilkinson, Simultaneous multisite recordings and stimulation of single isolated leech neurons using planar extracellular electrode arrays, Neuroscience Methods, n.53, pp. 101-110 (1994) Ringraziamenti …alla professoressa Rita Pizzi per la disponibilità e l’entusiasmo che ha dimostrato nel corso di questo lavoro, …a Danilo Rossetti e a Fabrizio Gelain per il loro prezioso contributo e per l’interessante scambio professionale; … al dott. Antonio Malgaroli, professore di fisiologia presso l’Università Vita e Salute del San Raffaele, per aver fornito la strumentazione necessaria per svolgere gli esperimenti; …agli amici dell’Università perché hanno saputo rendere straordinario ogni giorno passato insieme in questi anni; …a tutti i miei Amici che in tempi e modi diversi mi hanno aiutato a crescere; …alla mia famiglia per aver sempre creduto in me; … ad Andrea per la gioia e la tranquillità che sa trasmettermi; …GRAZIE di cuore!