di Piero Chiabra, Associazione DiGenova
Viviamo in un mondo dominato dai computer.
Questi dispositivi, che ormai permeano di sé ogni aspetto della nostra vita, si sono gradualmente evoluti, nel corso dei decenni, da grossi, ingombranti oggetti, destinati solo ad occuparsi di cose “importanti”, e che ispiravano timore alla gente comune, a piccoli gadget, che ciascuno di noi tiene in tasca o nella propria mano, e che danno, a tutti noi, capacità enormi, delle quali siamo consci solo in minima parte.
Eppure, anche se i computer sono diventati così importanti per la nostra vita, la maggior parte di noi non ha la minima idea di come siano fatti. A differenza di altri oggetti comuni molto importanti per noi, come ad es. le automobili o le lavatrici, in cui chi li usa ha almeno una minima idea di base di come funzionino, la stragrande maggioranza di noi ha un approccio verso i computer quasi come fossero dispostivi “magici”, che funzionano per qualche misterioso principio, di cui solo pochi “negromanti” sono a conoscenza.
In realtà, ovviamente, non c’è nulla di magico. Anzi, la cosa che può forse stupire è che, nonostante l’incredibile progresso delle tecnologie dei computer, che li ha portati ad evolversi come abbiamo appena detto, la loro architettura concettuale di base non varia, se non in pochi dettagli secondari, da quasi 80 anni.
I computer attuali, infatti, sono figli degli studi teorici portati avanti da Alan Turing, e poi da John Von Neumann, iniziati alla fine degli anni 30, e volti a definire teoricamente l’architettura di una “macchina concettuale” astratta, la quale fosse in grado di risolvere in linea teorica qualunque problema “computabile”, dove per “computabile” si intende, in termini molto generali e grossolani, un problema che sia risolvibile con una serie di passi univoci e rigorosamente determinati (l’insieme di questi passi prende il nome di “algoritmo”, e questo termine è già un po’ più familiare al grosso pubblico).
Calati nella realtà durante la seconda guerra mondiale, per risolvere molteplici necessità (famose soprattutto quelle legate alla decrittazione di codici cifrati), questi studi hanno portato, dal 1945 in poi, alla nascita dei computer come li conosciamo oggi. Da allora, questi computer hanno subìto una accelerazione tecnologica impressionante, passando da dispositivi grandi quanto una palestra e costituiti da alcune migliaia di valvole termoioniche, fino ai moderni chip, grazie ai quali un computer milioni di volte più potente può stare tranquillamente nel palmo di una mano, ma, nella loro architettura di base, sono rimasti più o meno gli stessi, organizzati secondo un modello detto “architettura di Von Neumann”: sempre, sono costituiti da una parte dedicata all’elaborazione delle operazioni, la (o le) Unità centrale/i; da una seconda parte, la memoria, che è dedicata all’immagazzinamento dei dati, da cui questi sono richiamati all’unità centrale e in cui vengono scritti i risultati delle elaborazioni, e da una terza parte, l’input/output, che permette al computer di dialogare con il mondo esterno. Questa organizzazione del computer, che, lo ripeto, è la stessa da 80 anni, ha enormi vantaggi: consente, soprattutto, di standardizzare l’implementazione dei computer su dispositivi che, semplificando le cose in maniera estremamente grossolana, sono in pratica degli interruttori: miliardi di interruttori, collegati nei modi più “strani”, e che implementano queste macchine incredibili. Il passo successivo è poi stato quello di individuare qualcosa che implementasse in pratica, semplicemente e in maniera altamente replicabile, questi interruttori, e, alla fine, si è trovato un dispositivo che, dopo alcune difficoltà iniziali, si è rivelato semplicemente perfetto per questo scopo: il transistor. Per questo, oggi, i computer sono implementati tramite complicatissimi circuiti, sintetizzati nei chip, composti da letteralmente miliardi di transistor, e dal numero e dalla velocità di commutazione di questi ultimi dipende la nostra valutazione della potenza del computer.
Questa architettura concettuale ha avuto, come è sotto gli occhi di tutti, un enorme successo, portando a delegare ai computer una enorme varietà di compiti. Ma qui, come si suol dire, casca l’asino: questi computer, basati sull’Architettura di Von Neumann, sono stati pensati, sin dall’inizio, per risolvere problemi COMPUTABILI, e hanno quindi grandi difficoltà ad affrontare questioni la cui risoluzione non sia facilmente esprimibile con una serie di istruzioni, di passi, univocamente e rigorosamente definiti. E ci sono moltissimi problemi che vorremmo che i computer fossero in grado di gestire, problemi che gli esseri umani sanno risolvere benissimo (a volte!), ma la cui soluzione non è computabile, vale a dire che non è definibile in maniera rigorosa, ma solo sulla base dell’esperienza, dell’intuizione, del “fiuto”. Dal riconoscimento di un oggetto in una immagine, alla guida di un’autovettura, alla formulazione di una diagnosi medica, alla traduzione di un brano letterario, questi problemi pervadono la nostra vita, ma su di essi i nostri tradizionali computer tendono ad abbandonarci.
Esiste, però, come molti sanno, una disciplina che si occupa di questa classe di problemi, che oggi definiamo, non correttamente, “Intelligenza Artificiale”: anche se una sua definizione è nebulosa e confusa, su un piano pratico l’AI è utile, ed è stata studiata e sviluppata proprio per risolvere questa categoria di problemi. Tuttavia, man mano che procediamo nello studio e nello sviluppo di algoritmi di Intelligenza Artificiale, troviamo che l’Architettura di von Neumann è sempre meno adatta ad implementarli. Il perché è abbastanza semplice: siccome la “macchina” che meglio risolve i problemi di Intelligenza Artificiale è l’intelligenza “naturale,”, vale a dire il cervello umano, la cosa migliore che siamo riusciti a fare è sviluppare sistemi computerizzati che riproducano, in modo grossolano ma che, comunque, è quanto possibile al momento, il funzionamento del cervello umano. Ciò però ha portato ad una situazione in cui è necessario svolgere, in questi algoritmi di AI, grandi quantità di elaborazioni in parallelo su diversi assiemi di dati, e su una grande quantità di dati in contemporanea (a somiglianza del cervello umano, i cui neuroni svolgono ciascuno elaborazioni semplici, ma tutte in parallelo, su miliardi di cellule neuronali nello stesso tempo). Ciò porta, ragionando in termini di architettura di von Neumann, a “compenetrare” la, o le, unità centrale/i del computer con la memoria, in modo da essere, virtualmente, una stessa entità che svolge le funzioni di tutte e due in parallelo. Ma, se vogliamo implementare questi algoritmi di intelligenza artificiali su dei computer convenzionali basati sull’architettura di Von Neumann (come del resto solitamente facciamo, perché quelli, salvo rare eccezioni, sono i computer che abbiamo a disposizione) otteniamo che, appena questi algoritmi raggiungono un minimo di complessità, i canali di comunicazione tra l’Unità centrale e la memoria divengono intasati da un tale traffico di dati da portare al degrado e/o a volte addirittura al collasso del sistema di AI.
Diventa quindi evidente che la tradizionale architettura di von Neumann, su cui miliardi di computer nel mondo sono basati, sta diventando obsoleta, alla luce degli sviluppi futuri dei computer, e, soprattutto, di quello che pensiamo di voler far fare loro. Bisogna arrivare a computer in cui la memoria e l’unità centrale coincidano. Ma questo, anche se realizzabile in realtà anche con i dispositivi elettronici che abbiamo, vale a dire i transistor, in realtà li “mette in crisi”, costringendo a duplicazioni e complessità a livello hardware che, replicate per milioni/miliardi di volte, porterebbero ed elevate perdite di prestazioni della macchina.
Potrebbe forse valer la pena, dopo 80 anni, di vedere se è possibile trovare un dispositivo alternativo al transistor, con cui implementare nuove architetture di sistemi computerizzati, architetture più adatte a risolvere problemi di Intelligenza Artificiale.
E molta ricerca è in corso su questo tema.
Un approccio che sta venendo perseguito ormai da alcuni anni è quello dei cosiddetti “sistemi neuromorfici”, i quali stanno cercando di superare l’architettura di Von Neumann sviluppando dei computer funzionanti, già nella loro struttura di base, in modo simile al cervello umano. In questi sistemi, infatti, ciascuna cella di memoria è anche in grado di effettuare delle elaborazioni, in comunicazione con tutte le altre celle, imitando il comportamento delle reti di neuroni. Questo tipo di approccio ha incontrato notevoli difficoltà nel venire realizzato con componenti elettronici tradizionali fino a quando non sono stati ideati dei dispositivi elettronici innovativi in grado, sostituendo il transistor, di implementare questi sistemi con una efficienza molto maggiore. Questi dispositivi, denominati “memristori”, sono affini alle normali resistenze elettriche, con la differenza che accumulano al loro interno una quantità di carica, e quindi una tensione statica, dipendente da quanta corrente è passata precedentemente nel componente. È quindi questo un dispositivo in grado di mantenere una memoria del suo stato precedente, e, soprattutto, dotato di un funzionamento analogo a quello dell’attivazione/disattivazione delle sinapsi cerebrali, assumendo così il ruolo di “mattone” fondamentale per l’implementazione di questi sistemi in un modo molto migliore del transistor, per il quale implementare una funzionalità simile sarebbe notevolmente più complicato.
Un altro approccio che si sta cercando di perseguire riguarda un oggetto ancora più “esotico”, che si trova quasi ai limiti della comprensione umana: il computer quantistico.
È molto difficile parlare dei computer quantistici in modo divulgativo e comprensibile, senza scadere in un linguaggio tecnico criptico e alienante per un lettore medio; valga soltanto la pena dire, in termini estremamente grossolani, che tali sistemi sono basati sull’applicazione all’elaborazione logica dei principi della meccanica quantistica, e consentono, quando si affronta un problema, di avere al loro interno, al tempo stesso, tutte le opzioni possibili di soluzione; il sistema poi “collassa” in un tempo istantaneo alla soluzione corretta sulla base dell’introduzione di una informazione risolutiva. Anche qui, come si nota, il funzionamento del computer quantistico presenta molti punti in comune con quello delle reti di neuroni del nostro cervello (fino al punto che, alcuni anni fa, alcuni grandi scienziati tra cui il noto fisico Robert Penrose avevano presentato una controversa teoria che ipotizzava che il funzionamento del cervello stesso, e la natura stessa della nostra coscienza, fossero in realtà un complesso fenomeno quantistico… ma questa è un’altra storia…). E i computer quantistici sono anch’essi basati su dispositivi esotici, detti “qubit”, che sono quanto di più diverso da un transistor si possa concepire.
Ed ecco che ora, quasi ineluttabilmente, i due approcci sopra menzionati stanno arrivando a toccarsi. E, per una volta, noi italiani siamo tra i protagonisti. Alcuni studi, tra i quali è fondamentale uno svolto congiuntamente da team di ricerca dell’Università di Vienna, del Consiglio nazionale delle Ricerche e del Politecnico di Milano, hanno portato a definire un “memristore quantistico”, il quale, in poche parole, influenza e modifica gli stati sovrapposti quantisticamente che ha al suo interno sulla base delle esperienze precedenti. In questo modo, dovrebbe esser possibile costituire delle ”reti neurali quantistiche”, basate non più sulla elaborazione di elettroni ma di fotoni, in grado di esibire stupefacenti prestazioni morfologicamente e funzionalmente simili a quelle delle reti neurali del cervello umano, ma con una enorme accelerazione della velocità e dell’efficienza di elaborazione, dovuta alla loro natura quantistica. Questo si tradurrebbe in un enorme incremento di prestazioni in termini della risoluzione di problemi tipicamente affrontati dall’Intelligenza Artificiale (alcuni dei link sotto descritti descrivono alcuni di questi risultati, e l’effetto è impressionante).
Anche se arrivare a conseguire questo risultato e a sviluppare sistemi di questi tipo suscettibili di essere impiegati per la risoluzione di problemi praticamente significativi richiederà ancora molto tempo e sforzi, il risultato potrebbe valere la pena: si potrebbe arrivare a disporre di un sistema strutturato in modo da avere capacità funzionalmente paragonabili a quelle di un cervello umano (anche se la sua reale capacità di imitarne la flessibilità e le prestazioni, a tutt’oggi, può solo essere oggetto della speculazione intellettuale più selvaggia…), con una capacità di risoluzione di problemi al momento insondabile.
Che dite, dobbiamo cominciare a preoccuparci?
Per saperne di più:
https://en.wikipedia.org/wiki/Neuromorphic_engineering
https://en.wikipedia.org/wiki/Memristor
per gli studi portati avanti dal CNR, Politecnico di Milano e Università di Vienna,