sabato 13 ottobre 2012

Se paragonassimo il nostro cervello ad un processore quali sarebbero le sue caratteristiche tecniche?



Mi è capitato di leggere questa domanda tempo fa in un forum mentre navigavo a zonzo per la rete. Inutile dire che la questione sollevata mi intrigava, che potenza di calcolo e che tipo di architettura ci vogliono per eguagliare le prestazioni del cervello umano?
Come si può facilmente immaginare nessuna risposta era esauriente, con tanta umiltà si è sbrogliata la faccenda affermando che "non è quantificabile" e che "fra le potenzialità di un cervello umano ed un qualsiasi processore odierno vi è un abisso incalcolabile". Il discorso si è quindi concluso convenendo che un futuro alla Io, Robot di Asimov è molto lontano e che per quanto siano sofisticate e graziose le nostre macchine alcune opere di madre natura rimangono ineguagliabili. Eppure...

Eppure i paragoni sono così evidenti, lo stesso computer sembra costruito ad immagine e somiglianza della nostra mente, basti pensare a memoria a breve e lungo termine: RAM e HD; o al fatto che, come nel cervello, nel processore vi siano aree con scopi e compiti ben precisi, come la ALU addetta ai calcoli.
Fino agli anni 90 venivano chiamati con un tono quasi reverenziale "cervelli elettronici", definizione che calza a pennello.

L'altro ieri leggendo un articolo di Andrea Aparo riguardo il nobel alla fisica nella rubrica di scienza del Fatto Quotidiano [qui il link] ho ricevuto l'ispirazione per provare a rispondere a quella domanda... strizzando l'occhio alla fantascienza e dando una pacca sulla spalla al mio povero foglio elettronico penso di essere giunto ad una conclusione interessante.

Come prima cosa dobbiamo avvalerci di uno strumento che purtroppo ancora non esiste. Si tratta di un computer quantistico (lettore medio: «un che??!!!!!» ^_^).


Dalla "logica classica" alla "logica quantisica"

Andrea Aparo nel suo articolo [riposto il link] spiega in una manciata di righe in maniera chiara e concisa la differenza fra un computer classico ed uno quantistico.
In un computer classico, digitale, il voltaggio fra le due piastre di un condensatore rappresenta un bit d’informazione. Se è carico vale 1. Se è scarico vale 0. Oppure posso assegnare il valore 0 e 1 a due diverse polarizzazioni della luce.
Prendiamo un registro composto da tre bit fisici. Può trovarsi in una delle otto possibili configurazioni 000, 001, 010, …, 111 che corrispondono ai numeri da 0 a 7.
Fino a qua tutto chiaro no? La classica logica binaria... con 4 bit posso rappresentare 16 configurazioni, con 8 bit ne rappresento 256 e così via secondo la formula:  Numero di configurazioni possibili = Numero di bit ^ 2.
Ora viene il bello, introduciamo l'oggetto quantistico:
Se invece prendiamo come bit fisico un oggetto quantistico come un atomo o un fotone, la meccanica quantistica dice che oltre ai due stati distinti 0 e 1, può assumere una coerente sovrapposizione dei due stati. Il che significa che si trova tanto nello stato 1 quanto in quello 0. Un oggetto quantistico può essere “in due stati allo stesso tempo”.
Eh già, l'oggetto quantistico:  è sia massa che energia, è sia materia che onda, può essere in due posti contemporaneamente ed essere in due stati allo stesso tempo!
Si può dunque generare un qubit, ovvero bit quantistico, capace di codificare simultaneamente sia il valore 0 che quello pari a 1 .
Quantum Bit
Pensateci un attimo! Se con 3 bit posso fare 8 combinazioni quante ne posso fare con 8 qubit? Abbiamo detto che il qubit può essere simultaneamente 1 e 0 e quindi il nostro registro "in un determinato istante può registrare, in stato di sovrapposizione quantistica, tutti e gli otto numeri che sono presenti fisicamente nel registro."
E' come se ogni singolo bit rappresentasse tutti i bit in un'unica sovrapposizione simultanea (O.ò ?!?).
In generale L qubits possono registrare 2 elevato alla L numeri in modo simultaneo. Un registro composto da 250 qubits, 250 atomi ad esempio, è in grado di contenere più numeri di quanti siano gli atomi nell’universo conosciuto.
Ecco quindi che la nostra formula si inverte esponenzialmente: Numero di configurazioni possibili simultaneamente = 2 ^  Numero di qubit. Per quanto riguarda gli atomi dell'universo ci ritorneremo fra poco perchè è stata la molla che ha dato il via a tutto.

A onor del vero non è comunque tutto rose e fiori la logica quantistica:
Se andiamo a misurare il qubit si potrà rilevare in modo del tutto casuale solo uno dei due numeri che contiene: una proprietà di scarsa utilità pratica. Tuttavia, possiamo una volta che il registro è posto in stato di sovrapposizione quantistica di molti numeri diversi, possiamo svolgere calcoli matematici su tutti di essi insieme appassionatamente.
La logica quantistica mostra qui i suoi limiti nel non permetterci di reperire il valore del qubit. Questo post potrà dunque proseguire solo nell'ottica di una ricerca indicativa delle grandezze in gioco, per quanto riguarda la pretesa di possibile tecnologia candidata a eguagliare le capacità di un cervello umano sarebbe da scartare a priori vista la sua inservibilità (per ora!).


I grandi numeri in gioco

Mettete da parte il computer quantistico per un momento e provate a rispondere a questa domanda. Quanti atomi ci sono nell'universo? Al cospetto di un quesito del genere il canonico “quanti granelli di sabbia ci sono sulla terra?” sembra una sciocchezza. Eppure, paradossalmente, con artifici fisico-matematici è più semplice rispondere alla prima domanda che alla seconda. Non ci credete?

A questo link un simpatico ... (ragazzo?) ci propone questo semplice calcolo.
Gli atomi dell’Universo.
Vediamo di calcolare il numero di atomi presenti nell'universo,utilizzando carta e penna(non serve neanche la calcolatrice).Visto l'ignoranza riguardo le sue dimensioni facciamo qualche ipotesi di lavoro:ipotizziamo che la terra l'atomo sta alla Terra come la Terra sta all'universo.In altre parole,la Terra la consideriamo come un atomo dell'universo.In piu' consideriamo trascurabili gli atomi presenti tra un pianeta e l'altro,e che quindi tutti gli atomi siano concentrati sui vari pianeti stelle(ipotesi di vuoto assoluto nello spazio universale).
Calcoliamo il volume della Terra: (4/3)*pigreco*Raggio.
Raggio t
errestre circa 6000Km ==> Il volume circa 4*(6000)^3=~1000*10^9 Km^3
Convertiamo il tutto in unita di misura SI: V=~10^12*10^9 m^3 = 10^21m^3
Supponiamo per il momento che l'intera Terra sia fatta di acqua.
Un m^3 contiene 1000 litri, che se fossero di acqua peserebbero 1000Kg circa.
d=densità
d(acqua)=1000kg/1m^3 ==>Massa(Terra)=V*d=10^21m^3 * 1000kg/1m^3= 10^24 Kg
Il Peso Atomico dell'acqua e' 18==>18g di acqua contengono
6.023*10^23=~10^24 molecole di acqua.
In 1 Kg di acqua sono quindi presenti (1kg/18)*10^24 molecole =~50 10^24molecole
Nella Terra(sempre ipotizzando sia fatta interamente di acqua) vi saranno:
50*10^24molecole * 10^24 kg=~50 * 10^48 atomi.
Per compensare le approssimazioni fatte arrotondiamo a 10^51 atomi.
Se consideriamo ora la Terra un atomo dell'universo,quest ultimo conterra' 10^51 suoi atomi, quindi 10^51 equivalenti della Terra.
Per calcolare il numero di atomi totale basta fare la moltiplicazione:
10^51(atomi della Terra)*10^51(Numero di Terre presenti nell'Universo)=~10^102
Questo calcolo spannometrico (ma mai grossolano quanto questo post ^_^) rende l'idea. In realtà il numero esatto è un pochino più piccolo, circa 4*10^79, per comodità semplicemente 10^80. Un numero immenso, un 1 seguito da ben 80 zeri.
Eppure, come detto dal buon Aparo, questo numero può essere tranquillamente rappresentato da appena 256 qubit (o 32 qubyte se preferite). Già, sembra incredibile ma l'intero universo può essere impacchettato in 32 miseri byte quantistici.

Io questa cosa, però, l'avevo già letta da qualche parte. Se pensate che 10^80 sia un numero grande leggette un po' qua cosa sono andato a ripescare:
Nel XVII secolo il fisico inglese Robert Hooke fece un calcolo «delle idee distinte che la mente è in grado di tenere presenti». La risposta cui giunse era 3.155.760.000. Per quanto grande questo numero possa sembrare (non vi basterebbe tutta la vita per arrivarci contando!) oggi sarebbe considerato una clamorosa sottostima. Il nostro cervello contiene circa dieci miliardi di neuroni, da ciascuno dei quali si dipartono dei tentacoli, o assoni, che lo connettono a circa mille altri. Tali connessioni svolgono un ruolo nella generazione dei nostri pensieri e ricordi. Come ciò avvenga è ancora uno dei segreti più riposti della natura. Mike Holderness propone che uno dei modi per stimare il numero dei possibili pensieri che un cervello può concepire sia di contare tutte queste connessioni. Il cervello è in grado di fare molte cose contemporaneamente, per cui potremmo pensarlo come un certo numero - diciamo un migliaio - di piccoli gruppi di neuroni. Se ciascun neurone effettua un migliaio di differenti collegamenti con dieci milioni di altri nello stesso gruppo, allora il numero dei modi diversi in cui potrebbe formare connessioni nello stesso gruppo di neuroni è 10^7 x 10^7 x 10^7 x ... mille volte. Ciò fornisce 10^7000 possibili configurazioni di collegamento. Ma questo non è che il numero relativo a un solo neurone del gruppo. Il numero totale per 1O^7 neuroni è 10^7000 moltiplicato per sé stesso 10^7 volte. Ciò equivale a 10^70.000.000.000. Se i circa 1000 gruppi di neuroni possono operare in modo indipendente l'uno dall'altro, allora ciascuno di essi contribuisce al totale con 10^70.000.000.000 possibili connessioni, facendolo salire fino al numero di Holderness, 10^70.000.000.000. Questa è la stima moderna del numero delle diverse connessioni elettriche che il cervello potrebbe contenere. In un certo senso è il numero dei differenti pensieri o idee possibili che un cervello umano potrebbe avere. Sottolineiamo il potrebbe. Questo numero è così enorme da far scomparire quello degli atomi nell'universo osservabile: un misero 1O^80. Ma a differenza di questo, esso non deriva la propria immensità dal fatto di riempire un volume enorme con oggetti piccoli. Il cervello ha dimensioni piuttosto modeste: contiene soltanto 1O^27 atomi circa. Il numero immenso dipende dalla potenziale complessità delle innumerevoli connessioni tra i suoi componenti.
Questo è I numeri dell'univero di John D. Barrow e a parte il numero di atomi ci da un dato utilissimo ed incredibile. 10^70.000.000.000... 1 seguito da 70 miliardi di zeri. Ora come ora, però, più che sul numero in sé ci interessa ragionare sul suo significato.


Connessioni, indirizzi ed interruttori

10^70.000.000.000 è il numero di cosa precisamente? idee simultanee? pensieri ricorrenti? ricordi infelici? Non esattamente, è il numero di connessioni. È importante chiarire che si tratta di connessioni per il fatto che è la cosa più basilare e più assimilabile alla "logica" che abbiamo per le mani in questo marasma numerico. Pensateci! La connessione o c'è o non c'è. E' un segnale elettrico, una sorta di interruttore (ON/OFF) che apre un ponte, pure lo stereotipo della lampadina che s'illumina quando ci viene un'idea (eureka!! ^_^) ci giunge in aiuto: accesa o spenta! In poche parole, trovandoci per le mani un'insieme di connessioni elettriche viene naturale incastrarle in una logica booleana (o binaria che dir si voglia) del VERO/FALSO potendo monitorare se ogni singola connessione è attiva o meno.

Un'idea da quante connessioni è formata? Un ricordo quali connessioni richiede? Questo non lo sappiamo, ciò abbiamo stimato è la capacità totale, o meglio, il potenziale massimo. E' un problema? Assolutamente no! Pensate per esempio alla RAM. Nella suddetta memoria ci possono stare canzoni, foto, delle sequenze di un video o un banale documento di testo. Ci interessa sapere quali e quanti indirizzi verranno usati? Ci interessa sapere che registri userà il processore per spostare i dati all'interno di essa? Assolutamente no, ciò che a noi interessa di più è la capacità (o "quantità" di RAM in gergo comune) perchè è una dato di facile lettura sulla quale fare le nostre stime d'utilizzo.


RAM (Random Access Memory)
A questo punto "quasi" senza volerlo abbiamo azzardato un paragone fra il numero massimo di connessioni  neuronali possibili ed il numero massimo di slot/indirizzi di una RAM indirizzabili dal processore. Pensiamo alla nostra rete neurale come un'albero di natale pieno di lampadine. Ogni lampadina è una connessione, ogni connessione è indirizzo alloccato, ogni indirizzo è un interruttore e così via...
Così come una connessione concorre a formare un idea o un ricordo allo stesso modo un indirizzo contiene una manciata di dati che è parte di una canzone o di un immagine che riesiede in RAM. L'"accendersi" e lo "spegnersi" di queste connessioni può essere inteso come l'atto di pensare e in egual maniera il lavoro del processore, che consiste nel mettere e togliere dati da indirizzi e registri, garantisce l'esecuzione di istruzioni (base di un'applicazione).

In una logica di indirizzamento verticale, dove ad ogni singolo indirizzo corrisponde 1 qubyte, ci basteranno 34.359.738.368 qubyte di memoria. Considerando che ogni singolo qubyte permette 256 valori si avrà che 2 qubyte ne consentiranno 65.536 (256*256), 4 qubyte saranno 4.294.967.296 (256^4) e così via fino a 34.359.738.368 qbyte che garantiranno circa 10^82.678.120.448 (256^34.359.738.368) interruttori. 10 alla 80 miliardi di combinazioni è sufficiente visto che le connessioni neuronali stimate sono 10 alla 70 miliardi.

34.359.738.368 qubyte sono 34 GquB (34 GB quantistici). E ora che abbiamo la RAM su che processore la montiamo?

Un vecchio processore a 8bit può gestire massimo 256 byte di RAM. (Essendo 8 i bit può indirizzare fino a 2^8 indirizzi (256), ad ogni indirizzo corrisponde 1 byte quindi 256 byte). Con la stessa logica un processore a 16 bit può indirizzarne fino a 65536 (65 kB), uno a 32 bit fino a  4.294.967.296 (4 GB) e così via.

Nel nostro caso il processore ha bisogno di indirizzare almeno 34.359.738.368 byte, in altre parole dovrebbe supportare almeno 34 GquB di RAM; se si trattassero di 34 GB normali un'architettura a 64 bit basterebbe e avanzerebbe ma dato che stiamo ragionando in termini quantistici 64 qubit è spopositatamente esagerato. Infatti, un processore a 8 qubit potrà indirizzare non 2^8 ma 2^2^8 (4.294.967.296) indirizzi. Secondo questa logica il processore richiesto sarà di 16 qubit che permette fino a circa 10^78 indirizzi (pensate uno da 64qubit!!).

Ed eccoci arrivati quindi al risultato. Se dovessimo paragonare il cervello umano ad un processore quali sarebbero le sue caratteristiche? Se vivessimo nel 2156 ad un processore a 16qubit con 34GquB di RAM...integrato in un iRobot in vendita all'Apple Store per la modica cifra di 9,99*10^9 $!! 

P.S. Non è un caso che abbia citato Io, Robot all'inizio del post ^_^... per chi ancora non avesse capito la battuta ricordo che Io Robot è tradotto in I, robot -_-'

Per chi volesse vedersi un po' di numeroni posto qui il foglio elettronico con i calcoli.


Esagerando... e se volessimo riconvertire i risultati in “valori non quantistici”?
Beh, il mio povero pc sta sventolando bandiera bianca: è semplicemente incalcolabile. Guardate l'ultima riga gialla evidenziata nella tabella: Quello è il numero di bit necessari nella realtà per la memorizzazione di tutti gli atomi dell'universo. Quello che è avvenuto alla nona riga per la logica quantistica con appena 64 qubyte richiederebbe 10^38 byte. Come ho scritto nel commento si tratta di 1361 miliardi di miliardi di miliardi di GB (no, non ho sbagliato a scrivere ^_^). Considerando l'andamento decisamente esponenziale capite ora che se quella è la conversione della nona riga figuratevi quella della trentottesima, è talmente inclinato che non si presta neanche ad un confronto grafico poichè risulterebbe una linea retta contro un punto.

Per rendere l'idea di cosa voglia dire 10^38 byte posto alcuni termini di paragone interessanti tratti direttamente da wikipedia (ne trovate altri sotto le voci Zettabyte, Exabyte e Petabyte).
In January 2012, Cray began construction of the Blue Waters Supercomputer, which will have a capacity of 500 petabytes making it the largest storage array ever if realized
Nel gennaio 2012 Cray ha iniziato la costruzione del Blue Waters Supercomputer, se realizzato avrà una capacità di 500 petabytes diventando il più grande "server" di sempre.
Blue Waters Supercomputer
Questo super computer è inferiore di circa 10^21 volte lo spazio richiesto per il nostro contenitore di atomi (circa 1000 miliardi di miliardi di volte più piccolo!!).

According to the Digital Britain Report, 494 exabytes of data was transferred across the globe on June 15, 2009.
Secondo il Digital Britain Report il 15 giugno del 2009 nel mondo sono stati trasferiti dati per il volume di 494 exabytes.
In poche parole, il traffico globale (G-L-O-B-A-L-E) è inferiore di circa 10^18 volte il nostro numerino (un miliardo di miliardi).

Mark Liberman calculated the storage requirements for all human speech ever spoken at 42 zettabytes if digitized as 16 kHz 16-bit audio. This was done in response to a popular expression that states "all words ever spoken by human beings" could be stored in approximately 5 exabytes of data. Liberman did "freely confess that maybe the authors [of the exabyte estimate] were thinking about text."
Mark Liberman ha calcolato che lo spazio d'archiviazione richiesto per memorizzare ogni parola umana mai pronunciata (digitalizzata a 16 kHz con audio a 16 bit) sarebbe di 42 zettabytes. Il calcolo è stato fatto in risposta ad un'espressione popolare che afferma: "tutte le parole mai pronunciate da essere umani possono essere memorizzate in approssimativamente 5 exabytes di dati". Liberman ha liberamente confessato che forse gli autori della stima in exabyte si stavano riferendo solo ai "testi".
Beh... questa si commenta da sola ^_^!! Tutte le parole mai pronunciate VS Il numero di atomi nell'universo: vincono gli atomi di 10 milioni di miliardi di volte... alla faccia!!!

3 commenti:

  1. Interessantissimo! Leggere di questi numeri spropositati mi ha fatto tornare in mente un video che avevo visto qualche tempo fa:

    http://www.youtube.com/watch?v=b8pTRb2-Hio

    Non centra con tutto il tuo discorso ma io lo trovo mindblowing (esisterà una traduzione decente per questo termine inglese?) XD

    RispondiElimina
  2. Hai sbagliato i calcoli, ti correggo: per n bit vi sono 2^n configurazioni e non, n^2 come hai fatto nel foglio elettronico.

    RispondiElimina