John von Neumann Computer e cervello Traduzione di Paolo Bartesaghi Sito & eStore – www.ilsaggiatore.com Twitter – twitter.com/ilSaggiatoreED Facebook – www.facebook.com/ilSaggiatore © 1958 by Yale University Press © renewed 1986 by Marina V.N. Whitman Foreword to the Second Edition © 2000 by Yale University Foreword to the Third Edition © 2012 by Ray Kurzweil Originally published by Yale University Press © il Saggiatore S.r.l., Milano 2014 Titolo originale: The Computer & the Brain L’OPERA – Le analogie tra macchina e uomo, artificio e natura, computer e cervello, in un saggio pionieristico che, a metà degli anni cinquanta, ha anticipato e condizionato gli sviluppi delle scienze informatiche, biologiche e filosofiche. Una frattura, lo spartiacque tra due ere. Con la visione e l’approccio del matematico, John von Neumann, l’autore della Teoria dei giochi (1944), mette a confronto le capacità computazionali delle macchine e quelle del più affascinante e misterioso organo umano. I termini costitutivi del suo discorso sono transistor e neuroni, rapidità di trasmissione delle informazioni, velocità di elaborazione dei dati, porte logiche e sinapsi. In Computer e cervello von Neumann dà concretezza al modello di Turing, progettando macchine universali, «computer» in grado di plasmare le proprie attività in funzione dei compiti che sono chiamati a risolvere. Si delinea così quella che verrà chiamata «architettura di von Neumann» su cui si basano tutte le moderne macchine di calcolo, si introduce per la prima volta nella storia il concetto di programma memorizzato e si aprono le porte agli studi sull’intelligenza artificiale. Con le lectures raccolte in questo volume si avvia quella rivoluzione che continua a modellare e rimodellare tutti gli aspetti della nostra vita. L’AUTORE – John von Neumann (Budapest, 1903 Washington, 1957), matematico, fisico e informatico ungherese naturalizzato statunitense. Le lezioni raccolte in Computer e cervello furono commissionate dall’Università di Yale nel 1955. COMPUTER E CERVELLO Prefazione alla terza edizione Le tecnologie dell’informazione hanno già trasformato ogni aspetto della vita umana, dagli affari alla politica, alle arti. Alla luce della corrispondente crescita esponenziale del rapporto prestazioni-prezzo e della capacità di qualunque forma di tecnologia informatica, l’era dell’informazione sta costantemente allargando la propria sfera di influenza. Molto probabilmente, il più importante processo informatico da comprendere è proprio l’intelligenza umana e questo libro rappresenta forse il primo serio esame della relazione tra il modo di operare del nostro pensiero e quello di un computer, esame condotto dal matematico che per primo concepì l’architettura fondamentale dell’era informatica. Entro il grande progetto di comprensione del funzionamento del cervello umano, stiamo facendo progressi sempre più rapidi nella decodifica dei paradigmi del pensiero e stiamo applicando questi metodi ispirati alla biologia alla creazione di macchine sempre più intelligenti. L’intelligenza artificiale (ai) così concepita si eleverà alla fine oltre i limiti del pensiero umano. La mia opinione in proposito è che lo scopo di questo sforzo non sia quello di sostituirci ma di espandere la portata della 9 simbiosi uomo-macchina già in atto nella nostra civiltà. È questo a rendere unica la nostra specie. Quali sono le idee chiave che stanno alla base dell’era dell’informazione? La mia opinione è che ve ne siano cinque. John von Neumann è in gran parte responsabile di almeno tre di esse e ha dato un fondamentale contributo alla quarta. Claude Shannon ha risolto il problema fondamentale di come rendere affidabile un’informazione. Alan Turing, influenzato da una conferenza giovanile di von Neumann, ha quindi dimostrato e definito l’universalità del calcolo. Basandosi sui lavori di Turing e Shannon, von Neumann ha a sua volta creato la macchina di von Neumann, che è diventata – e resta ancora oggi – l’architettura fondamentale del calcolo. Nel volume apparentemente modesto che tenete fra le mani, von Neumann espone il suo modello di calcolo e procede a definire la sostanziale equivalenza tra un computer e un cervello umano. Von Neumann riconosce differenze strutturali apparentemente profonde ma, applicando il principio di Turing di equivalenza del calcolo, concepisce una strategia per interpretare in termini di calcolo i metodi utilizzati dal cervello, per ricreare tali metodi e in definitiva per ampliarne le potenzialità. Questo libro appare tanto più profetico quanto più si consideri che è stato scritto oltre mezzo secolo fa, quando le neuroscienze avevano a disposizione solo strumenti tra i più primitivi. Infine, von Neumann preconizza la necessaria accelerazione della tecnologia e le sue inevitabili conseguenze sull’incipiente e singolare trasformazione dell’esistenza umana. Ma consideriamo queste cinque idee chiave con un po’ più di dettaglio. Intorno agli anni quaranta, quando si usava la parola «computer», la gente riteneva che si stesse parlando 10 di un calcolatore analogico. I numeri venivano rappresentati da livelli diversi di una data tensione elettrica e componenti specifici potevano eseguire operazioni aritmetiche come l’addizione e la moltiplicazione. Una grossa limitazione, tuttavia, era data dagli enormi problemi di precisione dei calcolatori analogici. I numeri potevano essere rappresentati con una precisione approssimativa di solo una parte su cento e, poiché i livelli di tensione venivano elaborati mediante un numero via via crescente di operatori aritmetici, questi errori potevano accumularsi. Se si voleva eseguire qualcosa di più che una manciata di calcoli, i risultati sarebbero diventati così imprecisi da essere privi di significato. Chiunque possa ricordare i tempi in cui si copiava musica utilizzando i nastri analogici, ricorderà senz’altro questo effetto. Si aveva già una sensibile degradazione della qualità sulla prima copia, la quale risultava un po’ più rumorosa dell’originale (il «rumore» altro non è che l’effetto di imprecisioni casuali), la copia della copia era ancora più rumorosa, e dalla decima generazione la copia era quasi interamente rumore. Si era ipotizzato che lo stesso problema avrebbe afflitto l’emergente mondo dei computer digitali. Se consideriamo la comunicazione di informazioni digitali attraverso un canale, possiamo intuire meglio la questione. Nessun canale è perfetto e presenterà inevitabilmente un certo tasso di errore intrinseco. Supponiamo di avere un canale che abbia una probabilità di 0,9 di trasmettere correttamente ogni bit di informazione. Se inviamo un messaggio lungo un bit, la probabilità che venga trasmesso in modo accurato attraverso quel canale sarà ovviamente pari a 0,9. Supponiamo di mandare due bit. Ora, la probabilità che venga trasmesso in modo accura11 to risulterà di 0,92 = 0,81. E cosa accadrebbe se mandassimo un byte (cioè otto bit)? Avremmo una probabilità bassissima (0,43 per la precisione) di inviarlo correttamente. La probabilità di inviare con precisione cinque byte risulterebbe intorno all’1%. Un approccio piuttosto scontato per aggirare questo problema è quello di rendere il canale più accurato. Supponiamo che il canale faccia un solo errore per ogni milione di bit trasmessi. Se inviamo un file di mezzo milione di byte (circa la dimensione di un programma o di un modesto database), la probabilità di una corretta trasmissione risulta minore del 2%, nonostante l’elevata precisione intrinseca del canale. Considerato che un errore di un singolo bit può invalidare un programma per computer o altre forme di dati digitali, la situazione appare del tutto insoddisfacente. Quindi, a prescindere dalla precisione del canale, poiché la probabilità di produrre un errore in una trasmissione cresce rapidamente con la dimensione del messaggio, sembrerebbe che ci troviamo di fronte a un problema insormontabile. I calcolatori analogici affrontano questo problema accettando la lieve degradazione dell’informazione. Va aggiunto che possono anche accumulare imprecisioni dovute all’uso continuo, ma se ci limitiamo a un insieme ben delimitato di calcoli si dimostrano piuttosto utili. Dall’altra parte, i computer digitali richiedono una continua comunicazione non solo tra un computer e un altro ma anche all’interno dello stesso computer. Esiste una comunicazione tra la sua memoria e il processore centrale. All’interno del processore, esiste una comunicazione tra un registro e l’altro e una comunicazione reciproca con l’unità aritmetica e così via. Anche all’interno della stessa unità aritmetica esiste una comunicazione tra 12 un registro di bit e un altro. In un computer digitale la comunicazione è qualcosa di pervasivo a tutti i livelli. Quindi, se si considera che i tassi di errore crescono rapidamente con l’incrementarsi dei livelli di comunicazione e che un errore di un singolo bit può distruggere l’integrità di un processo, il calcolo digitale ne risulta condannato o almeno così sembrava all’epoca. Era questo il punto di vista comune fino a quando, sorprendentemente, Shannon non propose la prima idea chiave dell’era dell’informazione. Egli dimostrò come fosse possibile creare una comunicazione arbitrariamente accurata anche utilizzando canali di comunicazione tra i più inaffidabili. Ciò che Shannon dimostrò in «Una teoria matematica della comunicazione», il suo articolo ormai divenuto punto di riferimento, pubblicato nel Bell System Technical Journal del luglio e ottobre 1948, e in particolare nel suo teorema della codifica di canale, fu l’affermazione seguente: se si ha a disposizione un canale affetto da un qualsiasi tasso di errore (a eccezione esattamente del 50% per bit, il che significherebbe che il canale sta trasmettendo rumore puro), si è in grado di trasmettere un messaggio con una probabilità di errore piccola a piacere. In altre parole, il tasso di errore può essere ridotto a un bit per ogni n bit trasmessi, dove n può essere reso grande quanto si desideri. Così, per fare un esempio estremo, se si dispone di un canale che trasmette bit di informazione correttamente solo per il 51% delle volte (cioè, che trasmette un bit corretto con una frequenza solo leggermente superiore a quella con cui trasmette un bit sbagliato), si possono comunque trasmettere messaggi tali che solo un bit su un milione non risulti corretto, oppure un bit su un miliardo oppure un bit su un miliardo di miliardi e così via. 13 Come è possibile tutto ciò? La risposta sta nel concetto di ridondanza. Questo concetto oggi può sembrare ovvio ma allora non lo era affatto. Consideriamo un semplice esempio: se trasmettiamo ogni bit tre volte e scegliamo il bit ricevuto a maggioranza, aumentiamo notevolmente l’affidabilità del risultato. Se questo non dovesse bastare, possiamo aumentare la ridondanza fino a ottenere l’affidabilità desiderata. L’idea di ripetere semplicemente l’informazione è il modo più elementare per capire come possiamo ottenere valori di precisione arbitrariamente alti da canali a bassa precisione, non è però l’approccio più efficiente. L’articolo di Shannon ha fondato il campo della teoria dell’informazione e ha presentato alcuni metodi ottimali di rilevamento degli errori e codici di correzione che possono raggiungere una qualsiasi precisione prefissata attraverso un qualsiasi canale non casuale. I lettori più anziani ricorderanno i modem telefonici che trasmettevano informazioni attraverso linee telefoniche analogiche rumorose e l’annessa produzione di sonori fischi e schiocchi e molte altre forme di distorsione. Ebbene, nonostante tutto erano in grado di trasmettere dati digitali con livelli di accuratezza molto elevati, proprio grazie al teorema di Shannon sui canali rumorosi. Lo stesso problema e la stessa soluzione esistono per le memorie digitali. Vi siete mai chiesti come cd, dvd e dischi di programma possano continuare a fornire risultati affidabili anche dopo che sono caduti e si sono graffiati? Ancora una volta, dobbiamo ringraziare Shannon. Il calcolo consiste di tre elementi: la comunicazione (che, come ho già detto, è pervasiva sia all’interno di un computer sia tra computer), la memoria e le porte logiche (che svolgono le funzioni aritmetiche e logiche). 14 Come per i canali, anche l’accuratezza delle porte logiche può essere resa arbitrariamente elevata utilizzando rilevamento degli errori e codici di correzione. È grazie al teorema di Shannon che possiamo gestire moli di dati digitali arbitrariamente grandi e algoritmi complessi senza che i processi siano disturbati o distrutti da errori. La seconda idea chiave su cui si basa l’era dell’informazione è l’universalità del calcolo. Nel 1936 Alan Turing descrisse per la prima volta la sua «macchina di Turing», che non è una macchina reale ma un esperimento mentale. Il suo computer teorico è costituito da un nastro di memoria infinitamente lungo suddiviso in caselle che la macchina legge una per volta. Ognuna di esse contiene un 1 o uno 0, la cui successione rappresenta l’input della macchina. La macchina contiene anche una tabella di regole, in sostanza un programma memorizzato, questo insieme di regole consiste in una serie di stati numerati. Ogni regola specifica un’azione se la casella in fase di lettura contiene uno 0 e un’azione differente se la casella contiene un 1. Tra le azioni possibili è inclusa anche la scrittura di uno 0 o di un 1 sul nastro, spostando il nastro di una casella verso destra o verso sinistra o arrestandolo. Ogni stato specifica poi il numero dello stato successivo in cui la macchina dovrà venire a trovarsi. Quando la macchina si ferma, ha completato il proprio algoritmo e l’output del processo è trascritto sul nastro. Anche se il nastro è teoricamente di lunghezza infinita, qualsiasi programma reale (che non entri in un ciclo infinito) utilizza solo una porzione finita del nastro, quindi, se ci si limita a una porzione finita di memoria, la macchina può ancora risolvere un utile set di problemi. Se la macchina di Turing sembra semplice, è perché l’obiettivo di Turing era che lo fosse. Voleva che la 15 sua macchina fosse il più semplice possibile (ma non più semplice, parafrasando Einstein). Turing e Alonzo Church, già suo professore, continuarono a sviluppare la tesi, poi chiamata di Church-Turing, il cui enunciato si può così esprimere: se un problema presentabile a una macchina di Turing non è risolubile da una macchina di Turing, allora non è risolubile da alcuna macchina che segua le leggi naturali. Anche se la macchina di Turing è dotata solo di una manciata di comandi e processa un bit alla volta, essa può calcolare qualsiasi cosa un qualsiasi computer possa calcolare. Le interpretazioni «forti» della tesi di Church-Turing propongono poi l’essenziale equivalenza tra ciò che un essere umano può pensare o sapere e ciò che è calcolabile da una macchina. Il presupposto è che il cervello umano sia sottoposto alle leggi naturali e quindi la sua capacità di elaborazione di informazioni non possa superare quella di una macchina (e quindi di una macchina di Turing). Attribuiamo giustamente a Turing il merito di avere istituito la fondazione teorica del calcolo con il suo articolo del 1936, ma è altrettanto importante sottolineare che Turing fu fortemente influenzato da una conferenza che John von Neumann tenne nel 1935 a Cambridge, in Inghilterra, sul suo concetto di programma memorizzato, un concetto che verrà definitivamente consacrato con la macchina di Turing. A sua volta, von Neumann venne influenzato dall’articolo di Turing del 1936, nel quale venivano elegantemente delineati i princìpi del calcolo, tanto da renderlo lettura obbligatoria per i suoi colleghi alla fine degli anni trenta e nei primi anni quaranta. Nello stesso articolo, Turing presenta un’altra scoperta inaspettata, quella dei problemi irresolubili. Si tratta 16 di problemi ben definiti e che hanno ben precise soluzioni delle quali si può dimostrare l’esistenza; ma si può anche dimostrare che tali soluzioni non possono essere calcolate da una macchina di Turing, vale a dire da qualsiasi macchina. Si tratta in fondo del capovolgimento della fiducia ottocentesca per la quale problemi che possono essere posti possono in definitiva anche essere risolti. Turing dimostrò che ci sono tanti problemi irresolubili quanti problemi risolubili. Kurt Gödel giunse a una conclusione simile nel suo teorema di incompletezza del 1931. Rimaniamo quindi nella situazione imbarazzante di essere in grado di definire un problema, saper dimostrare che una risposta univoca esiste e di sapere tuttavia che la risposta non può mai essere scoperta. Si potrebbe discutere ulteriormente sulle implicazioni filosofiche del lavoro di Turing, Church e Gödel ma, agli scopi di questa prefazione, è sufficiente dire che Turing dimostrò che il calcolo si basa essenzialmente su un meccanismo semplicissimo: poiché la macchina di Turing (e, quindi, qualsiasi computer) è in grado di orientare il corso futuro delle sue azioni su risultati che ha già calcolato, è in grado di prendere decisioni e modellare gerarchie arbitrariamente complesse di informazioni. Nel dicembre 1943, Turing completò e realizzò il progetto di quello che è probabilmente il primo computer della storia, chiamato Colossus, allo scopo di decifrare i messaggi crittografati dai nazisti con la macchina di codificazione Enigma. Venne progettato per un compito ben preciso e non poteva essere riprogrammato per fini diversi. Ma eseguì questo compito brillantemente e a esso viene attribuito il merito di aver posto gli Alleati nella condizione di poter superare il vantaggio di 3 a 1 di cui godeva la Luftwaffe tedesca rispetto alla Royal Air Force 17 britannica, consentendo loro di vincere la fondamentale Battaglia d’Inghilterra. Fu su queste basi che John von Neumann creò l’architettura del computer moderno, la macchina di von Neumann, che essenzialmente è rimasta la struttura centrale di ogni computer costruito negli ultimi sessantasei anni, dal microcontrollore della vostra lavatrice ai più grandi supercomputer. Ed è qui che entra in gioco la terza idea chiave dell’era dell’informazione. In un articolo datato 30 giugno 1945, dal titolo «First Draft of a Report on the edvac», von Neumann presentò i concetti fondamentali che da allora dominano il calcolo. Il modello di von Neumann include un’unità di elaborazione centrale (processore) dove vengono svolte le operazioni aritmetiche e logiche, un’unità di memoria nella quale sono memorizzati il programma e i dati, una memoria di massa, un contatore di programma e canali di input e output. Questo schema è descritto nella prima metà di questo libro. Anche se il documento redatto da von Neumann era stato concepito come materiale interno al progetto, divenne la Bibbia dei progettisti di computer degli anni quaranta e cinquanta e di fatto, da allora, ha influenzato la costruzione di ogni computer fino a oggi. La macchina di Turing non era stata concepita per essere realizzata nella pratica. I teoremi di Turing non riguardavano l’efficienza nella risoluzione di problemi ma piuttosto esaminavano la gamma di problemi che possono essere risolti con il calcolo. L’obiettivo di von Neumann era invece quello di dar vita a un progetto pratico di costruzione di una macchina di calcolo. Nella sua concezione i calcoli di Turing a un solo bit venivano sostituiti da parole a più bit (generalmente un multiplo di otto bit). Il nastro della memoria di Turing è sequenziale e quindi i 18 programmi della macchina di Turing impiegano un tempo notevole per muovere il nastro avanti e indietro e per memorizzare e recuperare risultati intermedi. Al contrario, la macchina di von Neumann presenta una memoria ad accesso casuale,* in modo tale che qualunque dato possa essere recuperato immediatamente. Una delle idee chiave di von Neumann è il concetto di programma memorizzato, introdotto circa un decennio prima: l’idea cioè che il programma venga memorizzato nella stessa tipologia di memoria ad accesso casuale in cui sono immagazzinati i dati (e spesso entro lo stesso blocco di memoria). Questo fatto consente al computer di poter essere riprogrammato per svolgere compiti differenti e di poter operare in base a codici automodificanti (nel caso in cui il programma in memoria sia riscrivibile), ossia programmi in grado di modificare il proprio codice durante l’esecuzione, aprendo in tal modo la strada a potenti forme di ricorsività. Fino a quel momento, praticamente tutti i computer, compreso lo stesso Colossus di Turing, erano stati costruiti per svolgere un compito specifico. Il programma memorizzato permette a un computer di essere veramente universale, dando così compimento all’idea di Turing di universalità del calcolo. Un altro dei concetti chiave introdotti da von Neumann consiste nell’includere in ogni istruzione un codice di operazione che specifichi l’operazione aritmetica o logica da eseguire e l’indirizzo in memoria dell’elemento su cui essa deve agire. Tale architettura venne proposta da von Neumann nella pubblicazione del progetto dell’edvac a cui lavorarono, come suoi collaboratori, an* Random Access Memory, ram. [N.d.T.] 19 che J. Presper Eckert e John Mauchly. L’edvac in realtà non entrò in funzione fino al 1951, quando erano già operativi altri computer a memoria programmabile, quali il Manchester Small-Scale Experimental Machine, eniac, edsac e binac, tutti profondamente influenzati dall’articolo di von Neumann e che videro coinvolti Eckert e Mauchly come progettisti. Von Neumann collaborò direttamente alla progettazione di un gran numero di queste macchine, compresa una versione successiva di eniac in grado di supportare un programma memorizzato. Vi furono alcuni antesignani dell’architettura di von Neumann, anche se nessuno di essi poteva veramente dirsi una macchina di von Neumann. Con un’eccezione sorprendente: il Mark i di Howard Aiken, costruito nel 1944, il quale conteneva in sé alcuni elementi di programmabilità ma non usava un programma memorizzato. Leggeva le istruzioni da un nastro di carta perforato ed eseguiva ogni comando immediatamente. Non vi era alcuna istruzione di salto condizionato quindi non può essere considerato un esempio di architettura di von Neumann. In realtà, la costruzione del Mark i venne preceduta, nel 1941, dalla creazione del computer Z-3 da parte di Konrad Zuse. Anche lo Z-3 leggeva il programma da un nastro (in questo caso, codificato su film) e non aveva istruzioni di salto condizionato. È interessante notare che Zuse ebbe il supporto dell’Istituto di ricerca dell’Aeronautica tedesca che utilizzò lo Z-3 per effettuare un’analisi statistica delle vibrazioni di un’ala d’aereo. In seguito però la sua proposta al governo nazista di un finanziamento per sostituire i relè con valvole termoioniche venne respinta: il calcolo era «non importante per la guerra». 20 L’unico vero precursore del concetto di macchina di von Neumann risale a un secolo prima, si tratta della macchina analitica di Charles Babbage. Egli la descrisse per la prima volta nel 1837: includeva l’idea di un programma memorizzato, fornito alla macchina tramite schede perforate prese in prestito da un telaio Jacquard. La sua memoria ad accesso casuale includeva un migliaio di parole di cifre decimali ciascuna (l’equivalente di circa 21 kilobyte). Ogni istruzione includeva un codice di operazione e un numero operando, proprio come i moderni linguaggi macchina, nonché salti condizionati e cicli. Si trattava quindi di una vera e propria macchina di von Neumann. Sembra però che la macchina analitica fosse al di là delle capacità meccaniche e organizzative di Babbage e non entrò mai in funzione. Non è chiaro se i pionieri dei computer del ventesimo secolo, tra cui von Neumann, fossero a conoscenza del lavoro di Babbage. Nonostante non sia mai entrato in funzione, il computer di Babbage ebbe il merito di fondare quel settore dell’informatica che oggi chiamiamo programmazione. Ada Byron, contessa di Lovelace e unica figlia legittima del poeta Lord Byron, scrisse programmi per la macchina analitica sui quali eseguiva un debug mentale, una pratica ben nota ai creatori di software di oggi e chiamata «table checking». Ella tradusse un articolo del matematico italiano Luigi Menabrea dedicato alla macchina analitica, aggiungendovi di proprio pugno ampie note. Scrisse che «la macchina analitica tesse modelli algebrici proprio come il telaio Jacquard tesse fiori e foglie». E proseguì fornendo forse le prime vere speculazioni sulla realizzabilità di una intelligenza artificiale, concludendo però che la macchina analitica «non aveva la pretesa di originare alcunché». 21 L’invenzione di Babbage ha qualcosa di miracoloso se si considera l’epoca in cui egli ha vissuto e lavorato. Tuttavia, alla metà del xx secolo, il suo lavoro era perso nelle nebbie del tempo. Fu von Neumann a concettualizzare e articolare i princìpi fondamentali del computer come lo conosciamo oggi e il mondo gli riconosce questo fatto continuando a riferirsi alla macchina di von Neumann come al principale modello di calcolo. Occorre tenere a mente che la macchina di von Neumann scambia continuamente dati tra ed entro le sue varie unità, quindi non sarebbe possibile costruirne una se non fosse per i teoremi di Shannon e i metodi da lui ideati per la trasmissione e memorizzazione di informazioni digitali affidabili. Questa osservazione ci conduce alla quarta idea fondamentale: trovare un modo per dotare i computer di intelligenza e superare così la conclusione di Ada Byron che un computer non possa pensare in modo creativo. Alan Turing aveva già introdotto questo obiettivo con il suo saggio del 1950, «Computing Machinery and Intelligence», che comprende l’ormai famoso Test di Turing per accertare se una intelligenza artificiale abbia raggiunto o meno il livello dell’intelligenza umana. In queste pagine, dopo aver introdotto la propria architettura, von Neumann passa a esaminare il cervello umano. Dopotutto, esso è il migliore esempio di sistema intelligente a nostra disposizione. Se potessimo apprendere i suoi metodi, potremmo utilizzare questi paradigmi ispirati alla biologia per costruire macchine più intelligenti. Questo libro rappresenta il primo esame serio delle strutture del cervello umano dalla prospettiva di un matematico e di un pioniere dei computer. Prima di von Neumann, i campi dell’informatica 22 e delle neuroscienze erano due isole senza alcun ponte che le collegasse. Per ironia della sorte, l’ultimo lavoro di uno dei più brillanti matematici del xx secolo e pioniere dell’era dell’informazione è stato un esame dell’intelligenza stessa. Quest’opera è stata concepita come una serie di lezioni per la Yale University ma, a causa delle devastazioni del cancro, von Neumann non consegnò mai il testo delle lezioni e non completò il manoscritto da cui sarebbero state tratte. Rimane tuttavia una prefigurazione geniale e profetica di ciò che io considero il più arduo e importante progetto mai concepito dall’umanità. Von Neumann comincia con l’esporre le analogie e le differenze tra il computer e il cervello umano. Considerando il fatto che egli scrisse fra il 1955 e il 1956, il manoscritto appare notevolmente accurato soprattutto nei dettagli concernenti tale confronto. Von Neumann osserva innanzitutto che i neuroni producono un output digitale: un assone, per così dire, o si attiva o non si attiva. Questo fatto era tutt’altro che scontato a quell’epoca poiché l’output avrebbe potuto anche essere un segnale analogico. L’analisi del segnale nei dendriti che conducono al soma del neurone, tuttavia, è un processo analogico. Egli descrive questo processo mediante una somma ponderata degli input con un valore limite di soglia. Questa descrizione del modo in cui lavorano i neuroni portò allo sviluppo del connessionismo, un modello per la costruzione e programmazione di hardware e software in cui i sistemi si ispirano direttamente a questa rappresentazione del comportamento del neurone. Il primo sistema connessionista è stato creato da Frank Rosenblatt come programma software per un computer ibm 704 alla Cornell University nel 1957. 23 Oggi abbiamo modelli più sofisticati del modo in cui i neuroni combinano i dati in ingresso, ma regge ancora l’idea essenziale che l’elaborazione analogica degli input in un dendrite si basi sull’utilizzo di concentrazioni diverse di neurotrasmettitori. Non dobbiamo aspettarci che von Neumann nel 1956 potesse avere tutti i dettagli corretti sui processi di elaborazione delle informazioni da parte dei neuroni, ma i punti chiave su cui si basano le sue argomentazioni restano validi. Von Neumann applica il concetto di universalità del calcolo per concludere che, per quanto l’architettura e le unità elementari costituenti un cervello e un computer appaiano radicalmente differenti, si possa comunque affermare che una macchina di von Neumann sia in grado di simulare i processi di elaborazione del cervello. Tuttavia non accade il viceversa perché il cervello non è una macchina di von Neumann e non è dotata di un programma memorizzato. I suoi algoritmi, o i suoi metodi, sono impliciti nella sua struttura. Von Neumann conclude correttamente che i neuroni possono apprendere modelli dai loro stessi input, che, come oggi sappiamo, sono codificati tramite concentrazioni di neurotrasmettitori. Ciò che non era noto al tempo di von Neumann è che l’apprendimento ha luogo anche attraverso la creazione e la distruzione di connessioni tra neuroni. Von Neumann osserva poi che la velocità di elaborazione di un singolo neurone è estremamente bassa, dell’ordine di un centinaio di calcoli al secondo, ma che il cervello compensa questa lentezza ricorrendo a una massiccia elaborazione in parallelo. Tutti i suoi 1010 neuroni processano contemporaneamente (e anche questo numero è ragionevolmente accurato: le stime oggi dan24 no valori tra 1010 e 1011). Di fatto, ciascuna connessione elabora simultaneamente alle altre e si consideri che si ha una media di circa 103 connessioni per neurone. Le stime e le descrizioni dei processi neurali fornite da von Neumann sono veramente notevoli, considerato lo stato primitivo delle neuroscienze al tempo della stesura. C’è solo un aspetto su cui mi trovo in disaccordo con lui e riguarda la stima della capacità della memoria del cervello umano. Egli assume che il cervello possa memorizzare ogni input e conservarlo per l’intera durata della vita. Sessant’anni sono circa 2 · 109 secondi. Assumendo per ipotesi circa quattordici input al secondo per ciascun neurone (valore questo inferiore di almeno tre ordini di grandezza rispetto al valore stimato reale) e con una media di 1010 neuroni, egli ottiene una stima di circa 1020 bit per la capacità della memoria del cervello umano. Di fatto però noi ricordiamo solo una piccola frazione dei nostri pensieri ed esperienze e questi ricordi non vengono memorizzati come sequenze di bit a basso livello (per esempio come un’immagine video) ma piuttosto come sequenze di modelli di livello superiore. La nostra corteccia cerebrale è organizzata come una gerarchia di riconoscitori di schemi. Alcuni di questi riconoscitori identificano certe forme topologiche, come la barra trasversale nella lettera A o la sua concavità verso il basso. Questi sistemi di riconoscitori a basso livello nella neocorteccia alimentano i processi di riconoscimento messi in atto da riconoscitori di schemi a livello superiore. A quel livello successivo, i riconoscitori possono identificare specifiche lettere stampate quali la lettera A. A un livello ancora più alto, possono essere riconosciute le parole, per esempio la parola «arancia». In un’altra porzione della corteccia, un riconoscitore di livello com25 parabile può identificare l’oggetto corrispondente, un’arancia, e in un’altra parte ancora, un riconoscitore può identificare la parola pronunciata «arancia». A un livello concettuale ancora più elevato, un riconoscitore può concludere il processo con un «È stato divertente». La nostra memoria di eventi e pensieri è codificata in termini di questi riconoscimenti di livello superiore. Se richiamiamo alla mente il ricordo di un’esperienza, nella nostra testa non accade nulla di equivalente alla proiezione di un video. Piuttosto ricordiamo una sequenza di questi modelli di alto livello. Dobbiamo re-immaginare cioè ricostruire l’esperienza, poiché i dettagli non vengono esplicitamente memorizzati. Possiamo dimostrare a noi stessi quanto detto cercando di richiamare alla mente un’esperienza recente, per esempio l’ultima volta che abbiamo fatto una passeggiata. Quanto ricordiamo di quell’episodio? Chi è stata la quinta persona che abbiamo incontrato? Abbiamo visto una carrozzina? Una cassetta postale? Che cosa abbiamo visto quando abbiamo svoltato al primo angolo? Se siamo passati accanto ad alcuni negozi, che cosa c’era nella seconda vetrina? Forse siamo in grado di ricostruire le risposte a queste domande dai pochi indizi che ricordiamo ma la maggior parte di noi non è in grado di richiamare alla memoria in ogni dettaglio un’esperienza come questa. Le macchine, invece, lo possono fare facilmente e questo è uno dei vantaggi dell’intelligenza artificiale. In questo volume, ci sono pochissime conclusioni che trovo essere in significativo contrasto con ciò che noi oggi comprendiamo. Oggi noi non siamo in grado di raffigurare il cervello perfettamente, quindi non è ragionevole aspettarsi che possa farlo un libro di retroingegneria del cervello scritto nel 1956. Detto questo, le descrizio26 ni di von Neumann sono notevolmente aggiornate e i dettagli su cui lui basa le sue conclusioni restano validi. Quando prende in considerazione un qualsiasi meccanismo nel cervello mostra come, nonostante le apparenti differenze, un computer moderno potrebbe realizzare la stessa operazione. I meccanismi analogici del cervello possono essere simulati attraverso il calcolo digitale perché quest’ultimo può eguagliare valori analogici a qualsiasi grado di precisione desiderato (e la precisione delle informazioni analogiche nel cervello è piuttosto bassa). Anche il massiccio parallelismo del cervello umano può essere simulato, dato il significativo vantaggio in velocità dei computer nel calcolo seriale (un vantaggio che si è notevolmente ampliato da quando il libro è stato scritto). Inoltre, anche con i computer, possiamo pensare di utilizzare processi di elaborazione simultanei, utilizzando appunto più macchine di von Neumann in parallelo. Ed è precisamente questo il modo in cui oggi funzionano i supercomputer. Considerando quanto velocemente siamo in grado di prendere decisioni e quanto lentamente i nostri neuroni sono in grado di effettuare calcoli, von Neumann conclude che i metodi del cervello non possono comportare lunghi algoritmi sequenziali. Quando un difensore di baseball in terza base decide di lanciare alla prima e non alla seconda base, prende una decisione in una frazione di secondo. C’è solo il tempo perché ciascun neurone passi attraverso una manciata di cicli (il periodo di tempo necessario perché i circuiti neurali possano tornare a recepire nuovi input). Von Neumann conclude correttamente che la notevole potenza del cervello umano proviene dai dieci miliardi di neuroni che sono in grado di elaborare le informazioni tutti allo stesso tempo. Recenti 27 progressi di retroingegneria della corteccia visiva hanno confermato che siamo in grado di operare sofisticati giudizi visivi con solo tre o quattro cicli neurali. Vi è una notevole plasticità nel cervello ed è ciò che ci consente di imparare. Ma vi è una plasticità anche superiore in un computer, che può completamente ristrutturare i propri metodi modificando il proprio software. Quindi un computer sarà in grado di emulare il cervello umano ma non potrà accadere il viceversa. Quando von Neumann confrontò la capacità del nostro cervello di una massiccia elaborazione in parallelo con quella dei (pochi) computer del suo tempo – siamo intorno al 1956 – era chiaro che il cervello avesse capacità di gran lunga superiore. Oggi sono in fase di costruzione i primi supercomputer che consentono una velocità che, nelle stime più prudenti, è confrontabile con la velocità richiesta per simulare funzionalmente il cervello umano (circa 1016 operazioni al secondo). Posso provare a stimare che, agli inizi degli anni venti del Duemila, il costo per un hardware di questo livello di calcolo possa essere intorno ai mille dollari. Anche se, quando questo manoscritto è stato redatto, si era soltanto agli albori della storia del computer, von Neumann aveva comunque fiducia che prima o poi sia l’hardware sia il software di un’intelligenza umana sarebbero stati disponibili. Era il motivo per cui preparò queste lezioni. Von Neumann era profondamente consapevole dei ritmi accelerati del progresso e delle profonde implicazioni che questo progresso avrebbe avuto per il futuro dell’umanità. Arriviamo così alla quinta idea chiave dell’era dell’informazione. Nel 1958, un anno dopo la morte di von Neumann, un collega matematico, Stan Ulam, riferendosi a una conversazione con lui, riportò 28 questo suo pensiero: «Il progresso sempre accelerante della tecnologia e dei cambiamenti nei modi di vita degli esseri umani dà l’apparenza dell’avvicinarsi di una qualche fondamentale singolarità della storia della razza umana oltre la quale gli affanni degli esseri umani, come li conosciamo, non potranno più continuare». Si tratta del primo utilizzo noto della parola «singolarità» nel contesto della storia umana. Ray Kurzweil, 2012 letture Bochner S. (1958), A Biographical Memoir of John von Neumann, National Academy of Sciences, Washington D.C. Turing A.M. (1936), «On Computable Numbers, with an Application to the Entscheidungsproblem», in Proceedings of the London Mathematical Society, n. 42, pp. 230-65, doi:10.1112/plms/s2-42.1.230. Turing A.M. (1938), «On Computable Numbers, with an Application to the Entscheidungsproblem: A Correction», in Proceedings of the London Mathematical Society, n. 43, pp. 544-46, doi:10.1112/plms/s2-43.6.544. Turing A.M. (ottobre 1950), «Computing Machinery and Intelligence», in Mind, n. 59 (236), pp. 433-60. Ulam S. (maggio 1958), «Tribute to John von Neumann», in Bulletin of the American Mathematical Society, n. 64 (3, part 2), pp. 1-49. 29 von Neumann J. (30 giugno 1945), «First Draft of a Report on the edvac», Moore School of Electrical Engineering, University of Pennsylvania. von Neumann J. (luglio e ottobre 1948), «A Mathematical Theory of Communication», in Bell System Technical Journal, n. 27.
© Copyright 2024 Paperzz