Salta ai contenuti

Preistoria dell'intelligenza artificiale

Da Leibniz a Turing, tre secoli in cui il sogno di una macchina che pensa diventa matematicamente preciso, ingegneristicamente costruibile e filosoficamente discutibile: tutti gli ingredienti di Dartmouth 1956 erano già sul tavolo.

1673: un ingranaggio meccanico costruito da Leibniz esegue le quattro operazioni aritmetiche. 1843: Ada Lovelace pubblica la Note G, primo algoritmo destinato a una macchina universale che non era ancora stata costruita. 1854: George Boole dimostra che il ragionamento logico si riduce a un’algebra a due valori. 1936: Alan Turing definisce in modo matematicamente preciso che cosa sia “calcolare”. 1943: McCulloch e Pitts mostrano che una rete di neuroni astratti può calcolare qualunque funzione logica. Sono tre secoli di lavoro convergente. Quando nel 1956 al Dartmouth College qualcuno sceglie l’etichetta “artificial intelligence”, non sta fondando un campo da zero: lo sta battezzando.

Trattare questa preistoria come un prologo è sbagliato per due ragioni distinte. La prima è storiografica: schiaccia tre secoli di pensiero in “passi verso GPT-4” e fa torto al modo in cui gli autori dell’epoca formularono i loro problemi. La seconda è critica: senza memoria storica si confonde ciò che è nuovo con ciò che è vecchio sotto un nuovo nome. La discussione “la macchina fa solo ciò che le diciamo” è di Lovelace, 1843; le repliche più affilate sono di Turing, 1950; il dibattito non si è mai chiuso, anche se il vocabolario è cambiato.

Questo capitolo segue un filo dichiarato — Leibniz, Babbage, Boole, McCulloch-Pitts, Hebb, Shannon, von Neumann, Turing — senza cercare di imboccare ogni autore in una continuità lineare. Sono fili separati che a tratti si incrociano. Le applicazioni al presente vivono nelle sezioni dedicate; il corpo storico cerca di restare nel suo tempo.

La preistoria dell’AI non è una linea retta. Sono più fili che a volte si incrociano e spesso procedono in parallelo con ritardi secolari. Ne individuiamo tre principali. Qui li vediamo in panoramica: a ciascun nome associamo una clausola minima di decoder, sufficiente per orientarsi. Le sezioni “La meccanica” qui sotto riprendono ognuno di questi nomi in dettaglio, con esempi e formule.

L’idea guida è semplice e radicale: il ragionamento, almeno nella sua parte formalizzabile, si può ridurre a manipolazione sintattica di simboli, come un calcolo aritmetico. Chi pensa correttamente, in questa visione, esegue operazioni su segni.

La strada parte da Gottfried Wilhelm Leibniz (filosofo e matematico tedesco, 1646-1716), che sogna un “calculus ratiocinator”: un calcolo formale per automatizzare il ragionamento, dove le dispute si risolverebbero pronunciando calculemus, calcoliamo. Leibniz non lo realizza, ma fissa il programma.

Due secoli dopo, George Boole (matematico inglese, 1815-1864) pubblica nel 1854 “An Investigation of the Laws of Thought”, dove introduce l’algebra che oggi porta il suo nome: un’algebra su due soli valori (vero e falso, oppure 1 e 0) con operazioni AND, OR e NOT, le cui leggi corrispondono esattamente al modo in cui si combinano proposizioni. Boole realizza una fetta del sogno leibniziano.

Gottlob Frege (logico e filosofo tedesco, 1848-1925) nel 1879 estende il campo con “Begriffsschrift”: introduce la logica predicativa, cioe la logica arricchita con quantificatori come “per ogni x” e “esiste x” e con l’analisi funzionale delle proposizioni. Per la prima volta diventa possibile scrivere formalmente affermazioni come “per ogni numero naturale esiste un numero naturale più grande”.

Bertrand Russell (filosofo e matematico inglese, 1872-1970) e Alfred North Whitehead (matematico e filosofo inglese, 1861-1947) nei tre volumi dei “Principia Mathematica” (1910-1913) provano a portare il programma al culmine: ridurre tutta l’aritmetica a pura logica. Il progetto si chiama logicismo ed è monumentale.

Kurt Godel (matematico austriaco, 1906-1978) nel 1931 mostra che la scalata ha un tetto. I suoi due teoremi di incompletezza dimostrano che nessun sistema formale abbastanza ricco da esprimere l’aritmetica può essere al tempo stesso completo (capace di dimostrare ogni verità aritmetica) e coerente (libero da contraddizioni). In altre parole: la matematica formalizzata non può auto-bastarsi. Il risultato sembra un disastro per il programma leibniziano ma in realtà è un chiarimento: la logica è calcolo, ma il calcolo non è onnipotente.

Questa linea, dalla tradizione logica di Leibniz a Godel, alimenterà l’AI simbolica degli anni Cinquanta-Ottanta: i sistemi esperti, i linguaggi come Lisp e Prolog, i motori di inferenza.

Parallelamente alla tradizione logica, ingegneri e matematici costruiscono oggetti fisici che eseguono calcoli. Non basta dire che il pensiero è calcolo: vogliono vederlo fare da una macchina.

Leibniz stesso, nel 1673, presenta alla Royal Society la stepped reckoner: una macchina meccanica a ingranaggi a cilindri che esegue automaticamente addizione, sottrazione, moltiplicazione e divisione. Non è la prima macchina calcolatrice in assoluto (Pascal aveva costruito la “pascalina” nel 1642 per addizioni e sottrazioni), ma è la prima capace delle quattro operazioni. La macchina calcola davvero, anche se non ragiona ancora.

Charles Babbage (matematico e ingegnere inglese, 1791-1871) negli anni Venti dell’Ottocento progetta la Difference Engine, una calcolatrice specializzata per generare tavole di funzioni polinomiali. Poi, a partire dagli anni Trenta, concepisce l’Analytical Engine: la prima macchina general-purpose programmabile della storia, con memoria (“store”), unita aritmetica (“mill”), schede perforate per istruzioni e dati ispirate al telaio Jacquard, e controllo di flusso condizionale. Non viene mai completata, ma il progetto sulla carta contiene tutti i mattoni di un computer moderno, un secolo prima che l’elettronica permettesse di costruirli.

Ada Lovelace (matematica inglese, 1815-1852, figlia del poeta Lord Byron), collaboratrice di Babbage, nel 1843 traduce dal francese un memoir dell’ingegnere italiano Luigi Menabrea sulla macchina analitica e aggiunge sette note firmate A-G, lunghe quanto la traduzione stessa. La Note G contiene un algoritmo passo per passo per calcolare i numeri di Bernoulli con l’Analytical Engine — oggi riconosciuto come il primo programma pubblicato per una macchina universale. Lovelace specula inoltre che la macchina possa manipolare qualsiasi simbolo (musica, testo, oggetti astratti) le cui regole siano esprimibili in procedura.

Un secolo dopo, nel 1945, John von Neumann (matematico ungherese-americano, 1903-1957) scrive il “First Draft of a Report on the EDVAC”, un documento tecnico sulla nuova generazione di computer elettronici. In quel testo formalizza l’architettura stored-program, in cui istruzioni e dati condividono la stessa memoria — l’architettura che tutti i computer moderni ereditano.

Questa linea, da Leibniz a von Neumann, alimenterà l’hardware: transistor, microprocessori, GPU, acceleratori per AI.

Il terzo filo è il più giovane e quello che chiude il cerchio. Qui il calcolo non è più solo uno strumento per aritmetica o logica: diventa un possibile modello di come funziona la mente.

Alan Turing (matematico e logico inglese, 1912-1954) nel 1936 pubblica “On Computable Numbers”. Il paper definisce la macchina di Turing, un modello astratto di “procedura meccanica” fatto di un nastro, una testina, uno stato e una tavola di transizioni. Turing dimostra che una singola macchina universale può simulare qualsiasi altra macchina, e che esistono problemi (come il halting problem, decidere se una procedura finirà) che non hanno soluzione algoritmica. La teoria della computabilita nasce qui.

Warren McCulloch (neurofisiologo statunitense, 1898-1969) e Walter Pitts (logico autodidatta, 1923-1969) nel 1943 pubblicano “A Logical Calculus of the Ideas Immanent in Nervous Activity”, dove modellano il neurone biologico come gate logico con soglia: un’unita che riceve input, li somma con pesi, e spara un segnale se la somma supera un certo valore. È il primo ponte formale tra attività neurale e computazione, e il seme teorico di ogni rete neurale futura.

Claude Shannon (matematico e ingegnere statunitense, 1916-2001) nel 1948 pubblica “A Mathematical Theory of Communication”, fondando la teoria dell’informazione: un contenuto tecnico preciso del concetto di “informazione” come quantità misurabile in bit. Aveva già dimostrato nel 1937 che l’algebra di Boole descrive i circuiti a relay — il ponte pratico tra logica formale e hardware digitale.

Norbert Wiener (matematico statunitense, 1894-1964) nel 1948 pubblica “Cybernetics, or Control and Communication in the Animal and the Machine”, fondando la cibernetica come disciplina dedicata allo studio dei sistemi di controllo e comunicazione — con loop di feedback, finalità, adattamento — sia biologici sia artificiali.

Donald Hebb (psicologo canadese, 1904-1985) nel 1949 pubblica “The Organization of Behavior” e formula la regola oggi detta di Hebb: “neurons that fire together wire together”. I collegamenti sinaptici tra neuroni che si attivano in sincronia si rafforzano. È un principio di apprendimento a livello cellulare, antenato di ogni algoritmo di addestramento delle reti neurali.

Turing di nuovo, nel 1950, scrive “Computing Machinery and Intelligence” sulla rivista Mind. È il manifesto filosofico dell’AI: riformula la domanda “possono le macchine pensare?” nel test di imitazione (il futuro test di Turing), discute nove obiezioni classiche, e propone esplicitamente l’idea di una “child machine” che si addestra come un bambino — una delle prime formulazioni espresse di machine learning.

La convergenza nel 1956 non è una coincidenza. Attorno al 1950 ciascuna tradizione aveva portato a maturazione pezzi complementari della stessa visione.

Il primo filo dice: il ragionamento formale è manipolazione simbolica, e le sue leggi sono state matematizzate. Il secondo filo dice: abbiamo macchine reali (non solo progetti sulla carta) capaci di eseguire manipolazioni simboliche complesse, e per la prima volta abbastanza veloci. Il terzo filo dice: la mente stessa, o almeno una sua parte, si può interpretare come calcolo — con neuroni come gate, con apprendimento come aggiustamento di pesi, con informazione come quantità misurabile.

Se tutte e tre le tesi sono vere, allora una macchina elettronica abbastanza potente, programmata correttamente, dovrebbe poter ragionare. Questo è il salto concettuale che Dartmouth rende esplicito: dare un nome a un programma di ricerca che era maturo nei suoi ingredienti ma ancora senza etichetta. Lo chiamano artificial intelligence.

Le sezioni seguenti aprono ciascun nome in profondità, con formule ed esempi. Se alcuni nomi sopra ti suonano sconosciuti, non preoccuparti: “La meccanica” li riprende uno per uno.

Angolo filosofico: il pensiero come manipolazione di simboli

Sezione intitolata “Angolo filosofico: il pensiero come manipolazione di simboli”

La tesi di fondo che attraversa tre secoli è semplice e radicale: il ragionamento, nella sua essenza, è una forma di calcolo. Attenzione al termine. Qui “calcolo” non significa solo aritmetica. Significa manipolazione di simboli secondo regole esplicite, ripetibili, meccaniche. Se questa tesi è vera, allora una macchina abbastanza sofisticata per manipolare simboli secondo regole è in linea di principio capace di ragionare.

Leibniz formula la tesi nella forma più ambiziosa. Se avessimo, dice, un linguaggio universale (characteristica universalis) in cui ogni concetto primitivo corrispondesse a un simbolo privo di ambiguita, allora le dispute filosofiche si risolverebbero come calcoli. Due uomini in disaccordo prenderebbero carta e penna e direbbero “calculemus”, calcoliamo, per vedere chi ha ragione. La manipolazione simbolica, non la retorica, decide la verità.

È un sogno. Leibniz non lo realizza. Ma è un sogno produttivo perché fissa l’orizzonte. Boole realizza una porzione del sogno per la logica proposizionale nel 1854, trasformando “Socrate è uomo, tutti gli uomini sono mortali, dunque Socrate è mortale” in un’equazione algebrica su 0 e 1. Frege nel 1879 estende l’algebra alla logica predicativa, con quantificatori e variabili. Russell e Whitehead tentano la scalata completa. Godel nel 1931 mostra che la scalata ha un tetto: nessun sistema formale sufficientemente ricco può dimostrare ogni verità aritmetica. Il sogno leibniziano resiste parzialmente: la logica è calcolo, ma il calcolo non è onnipotente.

Da questa eredità nasce, per Turing nel 1950, la domanda più operativa possibile. Se il pensiero è manipolazione simbolica, allora basta un simulatore abbastanza capace per imitarlo. E se l’imitazione regge all’esame di un osservatore esterno, che differenza c’è tra imitazione e cosa imitata? La domanda “can machines think?” diventa un invito a mettere alla prova, non un problema metafisico.

Angolo ingegneristico: macchine che fanno cose mentali

Sezione intitolata “Angolo ingegneristico: macchine che fanno cose mentali”

Parallelamente alla tradizione filosofica, c’è una tradizione ingegneristica che costruisce oggetti fisici. Non si accontenta di dire che il pensiero è calcolo: vuole vedere una macchina farlo.

Leibniz non si limita a sognare. Nel 1673 presenta alla Royal Society la sua stepped reckoner, una macchina meccanica che esegue addizione, sottrazione, moltiplicazione e divisione tramite un ingranaggio a cilindri stepped. Non è la prima macchina calcolatrice (Pascal aveva la pascalina, 1642), ma è la prima che esegue le quattro operazioni in modo automatico. La macchina conta davvero. Non ragiona, ma calcola. La distanza tra calcolare e ragionare è più piccola di quel che sembra.

Babbage porta il progetto al livello successivo. La Difference Engine (progettata negli anni Venti dell’Ottocento) calcola tabelle polinomiali tramite differenze finite: un’applicazione specializzata, utile per la Marina e per la navigazione. L’Analytical Engine (anni Trenta e Quaranta) è molto più ambiziosa. È una macchina universale, programmabile, con memoria separata dall’unita aritmetica, con schede perforate per istruzioni e per dati, ispirata al telaio di Jacquard. Ha tutti i componenti di un computer moderno, con un secolo di anticipo rispetto alla possibilità pratica di costruirli.

Non viene mai completata nella vita di Babbage. Ma Lovelace, sua collaboratrice, capisce cosa significa. Nelle sue note alla traduzione del memoir di Menabrea (1843), Lovelace scrive che la macchina, correttamente istruita, potrebbe manipolare qualsiasi simbolo, non solo numeri: comporre musica, manipolare testo, se le regole della cosa da manipolare sono esprimibili come procedura. La Note G contiene l’algoritmo concreto — il primo programma pubblicato per una macchina universale — per calcolare i numeri di Bernoulli.

A meta Novecento le due tradizioni convergono. Turing da il modello astratto. Von Neumann lo rende architettura hardware. McCulloch-Pitts lo applicano al neurone. Hebb aggiunge l’apprendimento. Shannon quantifica l’informazione. Le due culture — filosofica e ingegneristica — parlano ormai la stessa lingua.

L‘“Explication de l’arithmetique binaire”, pubblicato nel 1703 nei Memoires dell’Academie royale des sciences, è un articolo di quattro pagine che cambia il destino del calcolo digitale. Leibniz dimostra come rappresentare ogni numero naturale usando solo due cifre, 0 e 1, e come le operazioni aritmetiche si semplifichino drasticamente in questa base.

Per fissare le idee, 1010 in decimale è 101021010_2 in binario: 123+022+121+0201 \cdot 2^3 + 0 \cdot 2^2 + 1 \cdot 2^1 + 0 \cdot 2^0. La somma 5+35+3 in decimale, cioe 1012+0112101_2 + 011_2 in binario, si esegue con quattro sole regole di addizione bit a bit: 0+0=00+0=0, 0+1=10+1=1, 1+0=11+0=1, 1+1=101+1=10 (riporto di 1). Leibniz nota che questa semplificazione radicale rende plausibile una macchina che operi direttamente su numeri binari con ingranaggi binari o leve a due posizioni.

Leibniz non si ferma al binario. Il suo progetto più ambizioso è il “calculus ratiocinator”, un calcolo logico per automatizzare il ragionamento. Immagina un linguaggio universale (characteristica universalis) in cui ogni concetto primitivo corrisponda a un simbolo, e i concetti composti si ottengano per operazioni algebriche sui simboli. In notazione moderna: se “uomo” è il simbolo HH e “mortale” è MM, e la legge “ogni uomo è mortale” corrisponde a una relazione algebrica del tipo HMH \subseteq M (contenimento), allora da “Socrate è uomo” (sHs \in H) segue meccanicamente “Socrate è mortale” (sMs \in M). Leibniz non formalizza mai questo calcolo in modo completo, ma l’intuizione è chiara: pensare è manipolare struttura matematica.

Nel 1854 George Boole pubblica “An Investigation of the Laws of Thought”. Il progetto è dichiarato nel titolo stesso: trovare le leggi matematiche a cui obbedisce il pensiero, o almeno la porzione del pensiero che si esprime in proposizioni ben formate.

Boole introduce un’algebra su un insieme a due elementi, {0,1}\{0, 1\}. L’interpretazione è: 11 significa “tutto” o “vero” e 00 significa “niente” o “falso”. Le operazioni fondamentali sono il prodotto (AND, xyx \cdot y), la somma (OR, con convenzioni che nel trattato originale differiscono leggermente da quelle moderne) e la negazione (1x1 - x). Le leggi dell’algebra includono l’associativita, la commutativita, la distributivita, più una legge specifica della logica: x2=xx^2 = x, cioe una proposizione o una classe non cambia se la si ripete (“essere uomo ed essere uomo” equivale a “essere uomo”).

Il punto non è l’algebra in se — ai matematici dell’epoca non interessava che esistesse un nuovo campo algebrico esotico. Il punto è che Boole mostra in concreto che un tipo di ragionamento (quello proposizionale) si può ridurre a manipolazione sintattica. La dimostrazione di un teorema diventa una semplificazione di equazioni.

Ottant’anni dopo, nel 1937, Claude Shannon scopre nella sua tesi di master al MIT che l’algebra di Boole descrive esattamente il comportamento dei circuiti a relay: un relay chiuso corrisponde a 11, aperto a 00, due relay in serie realizzano AND, due in parallelo realizzano OR. Da quel momento, l’algebra di Boole diventa il linguaggio nativo dell’hardware digitale. Ogni gate di silicio, ogni ALU, ogni registro esegue Boole.

Babbage e Lovelace: la macchina universale prima del tempo

Sezione intitolata “Babbage e Lovelace: la macchina universale prima del tempo”

Charles Babbage (1791-1871) è un matematico e ingegnere britannico ossessionato dall’errore umano nelle tavole matematiche. La Difference Engine, progettata negli anni Venti dell’Ottocento, doveva calcolare automaticamente tavole di funzioni polinomiali tramite il metodo delle differenze finite. Non viene mai completata, ma il progetto convince la Marina britannica a finanziarla per anni.

L’Analytical Engine, concepita a partire dagli anni Trenta, è molto di più. Ha:

  • Store: una memoria di 1000 registri da 50 cifre decimali ciascuno. Equivalente a una RAM di circa 21 KB in unita moderne.
  • Mill: un’unita aritmetica capace di addizione, sottrazione, moltiplicazione, divisione, e operazioni condizionali.
  • Schede perforate: due pile distinte, una per le operazioni (instruction cards), una per le variabili (variable cards). Ispirate al telaio di Jacquard, che negli stabilimenti tessili francesi controllava pattern complessi dal 1804.
  • Output: stampante, plotter, e persino un meccanismo per suonare campanelle a output notevoli.
  • Controllo di flusso: istruzioni condizionali e cicli tramite movimento selettivo delle schede.

La macchina non viene costruita. I costi e la precisione richiesti dalla meccanica di allora la rendono praticamente irrealizzabile, e il governo britannico ritira i fondi. Ma il progetto è completo sulla carta.

Ada Lovelace (1815-1852), figlia di Lord Byron e matematica di formazione, incontra Babbage nel 1833 e comincia a collaborare con lui. Nel 1842 Luigi Menabrea, un ingegnere italiano, pubblica in francese un memoir sulla macchina analitica. Lovelace lo traduce in inglese nel 1843 e aggiunge sette note dal suo nome, etichettate da A a G. Le note non sono glosse marginali: sono lunghe quanto la traduzione stessa e contengono le riflessioni più profonde esistenti all’epoca sulla natura di una macchina universale.

La Note G presenta un algoritmo passo per passo per calcolare il numero di Bernoulli BnB_n con l’Analytical Engine. Babbage fornisce la matematica (le formule ricorsive sono classiche nel Seicento-Settecento), ma Lovelace le traduce nella forma concreta di operazioni sulla macchina: quali registri usare, in quale ordine eseguire le moltiplicazioni, come iterare. È il primo programma pubblicato per una macchina universale, ed è scritto per un hardware che non esiste ancora.

Lovelace non si ferma all’algoritmo. Nelle altre note discute la natura della macchina. Osserva che la macchina può manipolare qualsiasi simbolo la cui combinatoria sia esprimibile in regole: “it might act upon other things besides number, were objects found whose mutual fundamental relations could be expressed by those of the abstract science of operations”. Poi aggiunge la sua celebre cautela: “The Analytical Engine has no pretensions whatever to originate anything. It can do whatever we know how to order it to perform”. Questa cautela diventerà l’obiezione di Lovelace nel test di Turing, 107 anni dopo.

Frege, Russell-Whitehead, Godel: la scalata logica

Sezione intitolata “Frege, Russell-Whitehead, Godel: la scalata logica”

Nel 1879 Gottlob Frege pubblica “Begriffsschrift”, letteralmente “scrittura concettuale”. Frege introduce la logica predicativa moderna: quantificatori (“per ogni xx”, “esiste xx”), variabili legate, analisi funzionale delle proposizioni (invece di “Socrate è mortale” come soggetto-predicato, Frege scrive M(s)M(s), la funzione “essere mortale” applicata all’oggetto ss). La novità permette di esprimere rigorosamente affermazioni come “per ogni numero naturale esiste un numero naturale più grande”, che la logica aristotelica non poteva trattare.

Russell e Whitehead nei tre volumi dei “Principia Mathematica” (1910-1913) usano la logica di Frege per provare a ridurre l’intera aritmetica a pura logica. Il progetto — il logicismo — fa fare alla matematica un passo avanti colossale in rigore, ma è lungo, tecnico e controverso. La sua ricezione è mista.

Nel 1931 Kurt Godel pubblica “Uber formal unentscheidbare Satze der Principia Mathematica und verwandter Systeme I” (Sulle proposizioni formalmente indecidibili dei Principia Mathematica e di sistemi correlati). Il paper dimostra due teoremi devastanti:

  • Primo teorema di incompletezza: in ogni sistema formale consistente e sufficientemente potente da esprimere l’aritmetica elementare, esistono proposizioni vere ma non dimostrabili all’interno del sistema stesso.
  • Secondo teorema: nessun tale sistema può dimostrare la propria consistenza dall’interno.

La tecnica di Godel — la codifica numerica (Godel numbering) delle proposizioni e delle dimostrazioni — si rivelerà seminale per la teoria della calcolabilita. Quando Turing cinque anni dopo costruisce la macchina universale, riprende in prestito esattamente quell’idea: codificare descrizioni di macchine come stringhe di simboli sul nastro.

Il risultato di Godel sembra un disastro per il programma leibniziano. In realtà è un chiarimento. Il pensiero formalizzabile ha dei limiti intrinseci. Ma dentro quei limiti, la logica resta uno strumento potentissimo.

Nel novembre 1936, Alan Turing pubblica “On Computable Numbers, with an Application to the Entscheidungsproblem” sui Proceedings of the London Mathematical Society. Il paper ha due obiettivi. Primo, rispondere alla terza questione posta da Hilbert nel 1928: esiste una procedura meccanica che, data una proposizione della logica del primo ordine, decide se è dimostrabile? La risposta di Turing è no. Secondo, per dimostrare quel no, Turing ha bisogno di un modello preciso di “procedura meccanica”. Introduce quindi quella che oggi chiamiamo macchina di Turing.

Una macchina di Turing consiste di:

  1. Un nastro bidirezionalmente infinito, diviso in celle, ciascuna con un simbolo preso da un alfabeto finito Σ\Sigma.
  2. Una testina che legge o scrive un simbolo in una cella e si muove di una posizione a sinistra o a destra.
  3. Uno stato interno preso da un insieme finito di stati QQ, con uno stato iniziale q0q_0 e (opzionalmente) stati finali di accettazione.
  4. Una tavola di transizione δ:Q×ΣQ×Σ×{L,R}\delta : Q \times \Sigma \to Q \times \Sigma \times \{L, R\}: dato lo stato corrente e il simbolo letto, specifica il nuovo simbolo da scrivere, la direzione di movimento della testina e il nuovo stato.

Una computazione è la successione di configurazioni (stato, contenuto del nastro, posizione della testina) a partire da (q0,input,0)(q_0, \text{input}, 0). La macchina si ferma quando raggiunge uno stato terminale o quando non c’è transizione definita per la coppia corrente.

Il passo decisivo. Turing osserva che la tavola di transizione δ\delta è una struttura finita — si può codificare come stringa sull’alfabeto Σ\Sigma. Definisce quindi una macchina universale UU che, avendo sul proprio nastro la codifica di una qualsiasi macchina MM seguita da un input xx, simula il comportamento di MM su xx. Questa macchina UU è il primo modello matematico di computer general-purpose.

La dualita che Turing introduce è fondamentale: la descrizione di un programma (la tavola di MM) è un dato come gli altri per UU. Codice e dati vivono nello stesso spazio di simboli, manipolati dalle stesse regole. Quella che oggi chiamiamo “von Neumann architecture” — memoria unica per istruzioni e dati — è l’incarnazione hardware di questa dualita astratta.

Da questa costruzione Turing deriva l’indecidibilita del problema dell’arresto (anche se il termine “halting” non compare nel suo paper del 1936, viene coniato più tardi). Non esiste una procedura meccanica che, data la descrizione di MM e un input xx, decida se MM si ferma su xx. L’argomento è una diagonalizzazione: se una tale procedura esistesse, si potrebbe costruire una macchina che si arresta se e solo se non si arresta, contraddizione. Dall’indecidibilita dell’arresto, Turing deriva l’indecidibilita dell’Entscheidungsproblem.

McCulloch e Pitts 1943: il neurone come gate logico

Sezione intitolata “McCulloch e Pitts 1943: il neurone come gate logico”

Warren McCulloch è un neurofisiologo. Walter Pitts, diciottenne, è un logico autodidatta che studia con Rudolf Carnap e Bertrand Russell. Nel 1943 pubblicano sul Bulletin of Mathematical Biophysics “A Logical Calculus of the Ideas Immanent in Nervous Activity”. Il paper propone un modello matematico minimo del neurone biologico.

Un neurone di McCulloch-Pitts è una funzione booleana con soglia. Dati input x1,x2,,xn{0,1}x_1, x_2, \ldots, x_n \in \{0, 1\}, l’output yy è:

y=1[i=1nwixiθ]y = \mathbb{1}\left[\sum_{i=1}^{n} w_i \cdot x_i \geq \theta\right]

dove 1[]\mathbb{1}[\cdot] è la funzione indicatrice (vale 1 se la condizione è vera, 0 altrimenti), wi{1,+1}w_i \in \{-1, +1\} sono pesi sinaptici (eccitatori o inibitori), e θ\theta è una soglia intera. In parole povere: il neurone somma gli input pesati e si attiva se la somma supera la soglia.

Il risultato chiave è che questo modello elementare, combinato in reti, copre tutte le funzioni booleane. Un neurone con due input, pesi w1=w2=1w_1 = w_2 = 1 e soglia θ=2\theta = 2 calcola AND. Con θ=1\theta = 1 calcola OR. Con input singolo, peso 1-1 e soglia 00 calcola NOT. Composizioni di questi gate permettono di implementare qualsiasi circuito logico.

Il paper dichiara che una rete con retroazione (circuiti con loop) può simulare qualsiasi automa finito. Non è ancora un modello di apprendimento: i pesi sono fissati dal progettista, non appresi. Ma è il primo modello matematico rigoroso di “calcolo neurale”, e diventerà il punto di partenza dei perceptron di Rosenblatt (1958) e, in modo più indiretto, di tutta la rete neurale profonda moderna.

Vale la pena notare una cosa. McCulloch e Pitts non stanno cercando di costruire un’AI. Stanno cercando di capire il cervello. Il loro paper si legge come neurofisiologia matematizzata. Che il loro modello si sia rivelato fecondo per il calcolo artificiale è un effetto collaterale felice: ciò che spiega parzialmente il cervello si è rivelato anche un primitivo computazionale potente.

Nel 1949 Donald O. Hebb pubblica “The Organization of Behavior: A Neuropsychological Theory”. Il libro è denso e ambizioso — un tentativo di spiegare la psicologia in termini di circuiti neurali. Ma contiene una singola frase che cambia tutto:

When an axon of cell A is near enough to excite a cell B and repeatedly or persistently takes part in firing it, some growth process or metabolic change takes place in one or both cells such that A’s efficiency, as one of the cells firing B, is increased.

In notazione moderna, se xAx_A e xBx_B sono le attivazioni dei due neuroni, la modifica del peso sinaptico wABw_{AB} è proporzionale al prodotto:

ΔwABxAxB\Delta w_{AB} \propto x_A \cdot x_B

La formulazione è spesso ridotta allo slogan “neurons that fire together, wire together”. Hebb sarebbe più cauto: insiste che AA deve “partecipare all’accensione” di BB, quindi AA deve sparare leggermente prima, non simultaneamente. La distinzione, ignorata dagli slogan, è centrale nelle forme moderne di spike-timing dependent plasticity.

La regola di Hebb da il primo modello plausibile di apprendimento a livello sinaptico. I perceptron di Rosenblatt la useranno in forma corretta dall’errore (Hebb-like). Le reti di Hopfield (1982) la useranno quasi letteralmente. I modelli moderni di deep learning usano derivate dell’errore più sofisticate, ma il principio — la coincidenza crea associazione — attraversa tutte queste implementazioni.

Nel 1948 Claude Shannon pubblica sul Bell System Technical Journal “A Mathematical Theory of Communication”. Il paper fonda la teoria dell’informazione. La nozione centrale è l’entropia, una misura quantitativa di incertezza. Data una variabile casuale XX con valori possibili x1,,xnx_1, \ldots, x_n e probabilita p(xi)p(x_i), l’entropia è:

H(X)=i=1np(xi)log2p(xi)H(X) = -\sum_{i=1}^{n} p(x_i) \log_2 p(x_i)

In parole povere, l’entropia misura in bit quanta informazione ci si aspetta di ricevere osservando XX. Una variabile deterministica (un valore con probabilità 1) ha entropia 0: non c’è nulla da imparare. Una variabile uniforme su nn valori ha entropia log2n\log_2 n, il massimo possibile per quel numero di esiti.

Shannon stesso, nel paper, applica l’entropia al testo inglese: stima quanti bit di informazione contenga in media ogni lettera tenendo conto delle dipendenze locali (digrammi, trigrammi). Il risultato è un valore basso — circa 1 bit per lettera con contesto sufficiente — e mostra come un linguaggio reale sia molto ridondante rispetto al limite informazionale teorico. La loss con cui si misureranno decenni dopo i modelli probabilistici di linguaggio (cross-entropy, perplexity) è una conseguenza diretta di questo apparato, ma il legame è ricostruito nelle “Applicazioni pratiche” più avanti.

Nel 1950 Shannon pubblica “Programming a Computer for Playing Chess” sul Philosophical Magazine. È il primo articolo tecnico su computer chess. Introduce tre idee che resteranno centrali per 75 anni:

  • Funzione di valutazione: una funzione che assegna a una posizione di scacchi un numero che rappresenta la sua qualità per un giocatore.
  • Albero di gioco: le mosse possibili a partire da una posizione formano un albero; le mosse dell’avversario si alternano alle mosse del giocatore.
  • Minimax: si assume che l’avversario giochi ottimamente; si sceglie la mossa che massimizza il minimo della valutazione dopo la sua risposta.

Shannon distingue anche due strategie: Type A (ricerca esaustiva a profondità fissa) e Type B (ricerca selettiva su mosse promettenti). Quasi tutti i programmi di scacchi successivi — fino a Deep Blue (1997) — si collocano tra questi due estremi. AlphaGo (2016) introdurrà una generalizzazione moderna con Monte Carlo tree search, ma la nozione di albero di gioco e funzione di valutazione resta.

Il 30 giugno 1945 John von Neumann distribuisce privatamente a ventiquattro persone del progetto EDVAC il “First Draft of a Report on the EDVAC”. È un documento di 101 pagine che formalizza l’architettura del computer moderno. I componenti sono:

  • Memoria unica: un unico spazio di memoria contiene sia istruzioni sia dati. Non c’è distinzione hardware tra i due.
  • Unità aritmetica (ALU): esegue operazioni sui dati.
  • Unità di controllo (CU): legge l’istruzione corrente dalla memoria, la decodifica, ordina le operazioni appropriate all’ALU.
  • Input/Output: canali per trasferire dati tra memoria e mondo esterno.
  • Program counter: un registro che tiene traccia della prossima istruzione da eseguire.

La dualita codice-dati di Turing diventa architettura hardware. Ogni istruzione è un pattern di bit in memoria; ogni dato è un pattern di bit in memoria; la CPU estrae sequenzialmente pattern dalla posizione indicata dal program counter e decide cosa farne.

La paternità del concetto stored-program è contesa. Mauchly ed Eckert, ingegneri del progetto ENIAC/EDVAC, sostengono che l’idea era emersa collettivamente prima della bozza di von Neumann. Il First Draft, comunque, è il documento che fissa la terminologia e diventa riferimento. Tutti i computer dal 1950 in poi seguono questa architettura con modifiche minori.

Nell’ottobre 1950 Alan Turing pubblica su Mind (vol. LIX, n. 236) “Computing Machinery and Intelligence”. L’articolo apre con una domanda: “Can machines think?” e immediatamente la dichiara mal posta, perché i termini “macchina” e “pensare” non hanno definizioni sufficientemente chiare.

Turing propone di sostituire la domanda con un test operativo. Lo chiama “imitation game”. Tre attori:

  1. Un interrogatore (un umano).
  2. Un uomo in un’altra stanza.
  3. Una macchina in un’altra stanza.

L’interrogatore comunica con entrambi attraverso un canale puramente testuale (originariamente, una telescrivente). Non sa in anticipo chi sia l’uno e chi sia l’altra. Fa domande di qualsiasi tipo — matematica, poesia, conversazione, narrativa — e deve indovinare chi sia la macchina. Se dopo abbastanza interazione l’interrogatore non riesce a distinguere meglio del caso, la macchina ha passato il test.

Turing dedica gran parte dell’articolo a discutere nove obiezioni all’idea che una macchina possa passare il test:

  1. Obiezione teologica: pensare è funzione di un’anima immortale, data da Dio solo agli umani. Risposta di Turing: anche l’obiezione si applicherebbe agli animali; inoltre limita arbitrariamente il potere creativo di Dio.

  2. Obiezione “heads in the sand”: le conseguenze di macchine pensanti sarebbero terribili, quindi speriamo che non pensino. Risposta: un desiderio non è un argomento.

  3. Obiezione matematica (basata su Godel): ci sono limiti a ciò che un sistema formale può dimostrare. Risposta: la mente umana ha limiti analoghi (errori, illusioni); non c’è prova che sia un sistema consistente.

  4. Argomento della coscienza (Jefferson 1949): una macchina può scrivere un sonetto solo se prova le emozioni di chi lo scrive. Risposta: è una forma di solipsismo radicale; se applicato coerentemente, neghiamo la coscienza a tutti tranne noi stessi.

  5. Argomenti basati su “non può fare X” (gentilezza, umorismo, innamorarsi): una volta che una macchina fa X, si sposta il paletto. Non è un argomento ma un rifiuto a muoverlo mai.

  6. Obiezione di Lady Lovelace: la macchina può fare solo ciò che le diciamo di fare. Risposta: dal fatto che un sistema esegue regole non segue che non possa sorprendere. I computer sorprendono i loro programmatori regolarmente.

  7. Continuita del sistema nervoso: i neuroni sono analogici, i computer digitali. Risposta: la differenza è quantitativa, non qualitativa; ogni sistema analogico approssimabile digitalmente è imitabile.

  8. Argomento dell’informalita del comportamento: gli umani non seguono regole fisse, rispondono al contesto. Risposta: questo non esclude che ci siano regole sottostanti, anche se noi non le vediamo.

  9. Argomento dell’ESP (percezione extrasensoriale): se gli umani hanno ESP e le macchine no, l’interrogatore può usare l’ESP per distinguerli. Risposta (sorprendentemente seria da parte di Turing, dato lo status scientifico dell’ESP nel 1950): basta mettere entrambi in una “stanza a prova di ESP”. Questo passaggio è spesso fonte di imbarazzo per i commentatori moderni; riflette il fatto che nel 1950 la parapsicologia aveva ancora credito accademico.

Il paper chiude con una previsione: entro il 2000, macchine con memoria da 10910^9 bit giocheranno l’imitation game così bene che un interrogatore medio non avrà più del 70% di probabilita di indovinare dopo cinque minuti di conversazione. La previsione è temporalmente sbagliata — i chatbot capaci di questo arrivano negli anni Duemiladieci — ma concettualmente profetica.

Esempio 1: Characteristica universalis come antenato degli embedding

Sezione intitolata “Esempio 1: Characteristica universalis come antenato degli embedding”

Leibniz sogna che a ogni concetto primitivo corrisponda un simbolo, e che concetti composti si ottengano tramite operazioni algebriche. Due concetti vicini nel significato dovrebbero avere rappresentazioni vicine nel formalismo.

Gli embedding degli LLM realizzano l’intuizione in forma statistica. Ogni parola, ogni frase, ogni immagine viene mappata in un vettore di uno spazio ad alta dimensione (tipicamente da 512 a 4096 dimensioni). La similarita semantica corrisponde (grosso modo) a similarita geometrica: il vettore di “gatto” è più vicino al vettore di “felino” che al vettore di “democrazia”. L’esempio classico — king - man + woman ≈ queen di word2vec (2013) — è Leibniz realizzato statisticamente: l’aritmetica sui simboli del concetto produce aritmetica sul significato.

Leibniz non aveva l’algebra lineare ne il dato. Ma l’obiettivo — rendere il significato manipolabile — era lo stesso.

La Note G in pseudocodice moderno può essere resa così:

def bernoulli(n):
B = [0] * (n + 1)
B[0] = 1
for k in range(1, n + 1):
s = 0
for j in range(k):
s += binomial(k + 1, j) * B[j]
B[k] = -s / (k + 1)
return B[n]

Il codice fa ciò che la Note G descriveva tramite la configurazione dei registri dello store e la sequenza delle operation cards. La struttura — inizializzazione, loop esterno su kk, loop interno per la somma ponderata, divisione finale, memorizzazione, restituzione — è esattamente quella. Non è sofisticata. Ma è il primo programma pubblicato pensato per essere eseguito da una macchina universale.

Esempio 3: Macchina di Turing vs LLM (analogia, non filiazione)

Sezione intitolata “Esempio 3: Macchina di Turing vs LLM (analogia, non filiazione)”

Confronto diretto tra i due estremi: la macchina di Turing del 1936 e un LLM del 2024. Va letto come analogia operativa: i due oggetti vivono nella stessa classe di calcolabilità, ma l’LLM non discende ingegneristicamente dalla macchina di Turing, e nessuna scelta architetturale concreta del transformer è derivabile da Turing 1936. La tabella aiuta a vedere che cosa si conserva (universalità computazionale) e che cosa cambia (apprendimento, parallelismo, stocasticità).

AspettoMacchina di TuringLLM moderno
Potenza computazionaleTuring-completa (nastro infinito)Turing-completa con tape finito (context limitato)
Rappresentazione dello statoStato interno finito + nastroPesi miliardari + attivazioni per layer
ParallelismoZero (un simbolo per step)Massivo (forward pass su migliaia di token insieme)
ApprendimentoNessuno (tabella fissa)Pre-training + fine-tuning
DeterminismoDeterministico per definizione classicaStocastico (sampling da distribuzione)
UniversalitaUna macchina U simula ogni altraUn modello via prompt simula comportamenti diversi

La macchina di Turing è un oggetto matematico essenziale: la sua forza sta nel mostrare cosa è in principio calcolabile. L’LLM è un oggetto ingegneristico ricchissimo: la sua forza sta nel fare concretamente cose utili con trilioni di parametri e terabyte di dati. Tra i due ci sono 90 anni di ingegneria, non cambi di paradigma teorico. Entrambi stanno dentro la stessa classe di computabilita.

Esempio 4: Il neurone di McCulloch-Pitts che calcola XOR

Sezione intitolata “Esempio 4: Il neurone di McCulloch-Pitts che calcola XOR”

Un singolo neurone McCulloch-Pitts non può calcolare XOR, cioe ”x1x_1 o x2x_2 ma non entrambi”. XOR non è linearmente separabile: nello spazio degli input (0,0),(0,1),(1,0),(1,1)(0,0), (0,1), (1,0), (1,1) non esiste una linea che separi le classi “output 0” e “output 1”. Questa limitazione, evidenziata da Minsky e Papert in “Perceptrons” (1969), causerà il primo inverno delle reti neurali.

Ma XOR si può calcolare con due livelli. Il primo livello contiene due neuroni:

  • h1=1[x1+x21]h_1 = \mathbb{1}[x_1 + x_2 \geq 1] (OR).
  • h2=1[x1+x22]h_2 = \mathbb{1}[x_1 + x_2 \geq 2] (AND).

Il secondo livello ha un neurone che prende h1h_1 e h2h_2 come input, con pesi +1,1+1, -1 e soglia 11:

  • y=1[h1h21]y = \mathbb{1}[h_1 - h_2 \geq 1].

Il risultato: y=1y = 1 quando uno e solo uno tra x1,x2x_1, x_2 è 1, cioe XOR. La profondità (multi-layer) è ciò che permette di superare la limitazione del singolo neurone. Questo principio — “la profondità produce potere espressivo” — è il punto di partenza del deep learning moderno.

Il test di Turing classico non è usato come benchmark primario nell’AI contemporanea. Le ragioni sono metodologiche: l’esito dipende fortemente dalle capacità e dalla motivazione dell’interrogatore, dalla lunghezza della sessione, dal dominio delle domande.

Ma l’eredità del test vive in almeno tre forme:

  1. LLM-as-judge: dato un output di un modello e una domanda, chiedere a un altro LLM di valutare la risposta. È la forma scalabile del test di Turing ribaltata: l’interrogatore è anche lui una macchina, e valuta non se la prima è umana ma se è di alta qualità.

  2. Arena-style evaluation (LMSYS Chatbot Arena): due modelli rispondono in parallelo alla stessa prompt, un utente umano sceglie la risposta migliore alla cieca. È l’imitation game a due macchine invece di una.

  3. Eval conversazionali (MT-Bench, AlpacaEval): confronto pairwise tra risposte di modelli su insieme curato di prompt. L’idea di base — un osservatore discrimina output — è la stessa di Turing 1950.

Il test originale resta rilevante come artefatto filosofico, non come misura pratica. La domanda “possono le macchine pensare?” continua a essere illuminata dalla sua formulazione, anche se la comunità AI ha smesso di usarla come metrica.

Prompt engineering come programmazione della macchina universale

Sezione intitolata “Prompt engineering come programmazione della macchina universale”

Quando scrivi un prompt di sistema per un LLM, stai esplicitando regole di trasformazione che il modello applica al suo input. La macchina (l’LLM) è universale nel senso turinghiano grosso modo: può simulare molti comportamenti diversi in risposta a diverse istruzioni. Il programma (il prompt) è ciò che la configura.

Ragionare in termini leibniziani aiuta. Più le regole sono chiare, meno ambigue, meglio separano i casi, più il sistema si comporta in modo prevedibile. Un prompt vago genera comportamento vago. Un prompt specifico ma mal-posto genera fallimenti specifici e mal-posti. Scrivere un prompt è scrivere un programma in un linguaggio naturale con tanta ambiguita intrinseca che la qualità del contratto conta più del virtuosismo sintattico.

Quando costruisci un sistema di retrieval augmented generation, mappi documenti in vettori di embedding e recuperi i più vicini a una query. La logica sottostante — concetti come punti in uno spazio geometrico, vicinanza come similarita di significato — è l’erede operativo del sogno leibniziano.

La cosine similarity, l’euclidean distance, l’inner product non sono solo misure tecniche: sono il modo concreto in cui la characteristica universalis è stata rimpiazzata dall’approssimazione statistica. Non abbiamo un linguaggio perfetto in cui i concetti sono simboli primitivi, ma abbiamo un’algebra lineare in cui il significato è geometria.

Ogni CPU esegue gate AND, OR, NOT di Boole. Ogni GPU esegue operazioni in virgola mobile che, al livello più basso, sono composizioni di gate booleani. Un forward pass di un transformer da 175 miliardi di parametri è — letteralmente — un’enorme computazione booleana ottimizzata. Senza l’algebra di Boole del 1854, non ci sarebbe ne il silicio ne il modello.

La vulnerabilita di prompt injection è l’incarnazione moderna della dualita codice-dati di Turing. In un LLM, l’istruzione di sistema e i dati dell’utente vivono nello stesso spazio di token. Un attaccante che riesce a inserire nel testo “di input” qualcosa che il modello interpreta come istruzione ha sfruttato esattamente la stessa struttura che rende l’LLM universale: codice e dati indistinguibili. Difendersi richiede di re-introdurre una separazione che architettonicamente non c’è.

Le regole di aggiornamento dei pesi nel deep learning moderno (gradient descent, Adam, ecc.) non sono letteralmente hebbiane. Ma il principio di fondo — la co-occorrenza di segnali crea associazione — permane. Quando due token tendono a comparire insieme in contesti di addestramento, i pesi delle loro embedding finiscono per avvicinarsi. Quando un pattern di input predice regolarmente un pattern di output, la rete codifica l’associazione nei pesi. Hebb generalizzato, corretto dall’errore, è ancora il motore.

Mito: “Ada Lovelace ha scritto il primo programma”

Sezione intitolata “Mito: “Ada Lovelace ha scritto il primo programma””

La frase è vera con qualificazione. Lovelace ha scritto il primo algoritmo pubblicato destinato a una macchina universale (la Note G, 1843). Programmi per macchine specifiche esistevano già prima. Il telaio Jacquard dal 1804 eseguiva sequenze di schede perforate per produrre pattern tessili. Calcoli iterativi a mano (sequenze di operazioni aritmetiche) sono antichi quanto l’aritmetica.

Ciò che cambia con Lovelace è l’esplicito riconoscimento che una macchina universale può eseguire qualsiasi procedura esprimibile come manipolazione di simboli, non solo calcoli aritmetici. Questa è la tesi forte. Inoltre Babbage fornisce le formule matematiche dei numeri di Bernoulli; Lovelace le traduce in operazioni concrete sulla macchina. La distinzione tra specifica matematica e programma è la distinzione chiave — e il lavoro di Lovelace è sul lato “programma”.

Turing nel 1936 definisce un modello matematico astratto di calcolo. Il primo computer elettronico general-purpose (ENIAC, 1945) non nasce da Turing ma da Mauchly ed Eckert all’Università della Pennsylvania. Von Neumann nel 1945 formalizza l’architettura stored-program. Il contributo concreto di Turing all’hardware britannico sta nel progetto ACE (Automatic Computing Engine, 1946) e nella Manchester Mark I (1948), ma queste sono una tra le tante macchine dell’epoca.

La macchina di Turing come modello matematico resta comunque il contributo più duraturo di Turing all’informatica e all’AI: definisce cosa è calcolabile in principio, non cosa è calcolato in pratica. Confondere le due cose fa perdere la portata del suo contributo.

Mito: “I teoremi di Godel dimostrano che il pensiero umano supera le macchine”

Sezione intitolata “Mito: “I teoremi di Godel dimostrano che il pensiero umano supera le macchine””

Questa è l’obiezione matematica discussa da Turing nel 1950 e rilanciata da J.R. Lucas (1961) e Roger Penrose (“The Emperor’s New Mind”, 1989). La tesi: i teoremi di Godel dicono che ogni sistema formale ha proposizioni indecidibili; gli umani possono riconoscere la verità di queste proposizioni; dunque gli umani non sono sistemi formali.

La risposta classica è:

  1. I teoremi di Godel si applicano a sistemi formali specifici, non alla nozione di calcolo in se. L’umano non è un sistema formale in senso godeliano, e neppure un LLM lo e.
  2. “Riconoscere” la verità della proposizione godeliana richiede di fidarsi della consistenza del sistema in cui è formulata. Ne un umano ne un sistema formale possono garantire la propria consistenza dall’interno (secondo teorema di Godel).
  3. L’umano commette errori logici regolarmente, dimenticanze, contraddizioni. Non si comporta come un sistema consistente nel senso tecnico.

La versione rigorosa del contro-argomento (Lucas, Penrose) presuppone che la mente umana sia un sistema formale consistente, e che questa consistenza sia conoscibile dall’interno. Entrambe le assunzioni sono tutt’altro che ovvie. Il dibattito resta aperto in filosofia, ma l’inferenza “Godel implica che le macchine non possono pensare” è stata respinta dalla maggior parte dei logici e filosofi della mente.

No. Il neurone di McCulloch-Pitts (1943) non impara: i pesi sono fissati dal progettista. Il perceptron di Rosenblatt (1958) ha una regola di aggiornamento dei pesi basata sull’errore ed è una macchina apprendente. La differenza non è cosmetica.

McCulloch-Pitts è un modello di calcolabilita neurale: quali funzioni possono essere calcolate da reti di neuroni astratti? Il perceptron è un modello di apprendimento: come un sistema neurale può migliorare iterativamente su un task? Sono due domande diverse, risolte in decenni diversi. Confonderle porta a pensare che il deep learning moderno sia già tutto in McCulloch-Pitts 1943, il che è sbagliato: la parte che manca — l’apprendimento automatico dai dati — è quella che conta di più per l’AI contemporanea.

Mito: “Il test di Turing è stato superato da ChatGPT”

Sezione intitolata “Mito: “Il test di Turing è stato superato da ChatGPT””

Dipende dalla versione. Il test originale descritto da Turing è un gioco a tre con interrogatore esperto e motivato, sessione lunga, domande di qualsiasi tipo. Versioni semplificate (interrogatore non esperto, sessione breve, dominio ristretto) sono superate da chatbot da decenni. ELIZA (Weizenbaum, 1966) — un sistema di pattern matching per dialogo stile terapia rogeriana — già nel 1966 ingannava utenti ingenui.

GPT-4 e modelli successivi passano molte forme di test di Turing ristretti. Ma la comunità AI è scettica sul test come metrica: diventa un target da gamificare più che una misura di intelligenza. Inoltre il test non discrimina bene tra “imita convincentemente un umano” e “ragiona bene”: un sistema potrebbe imitare un umano medio mentre fa errori gravi su task che un umano esperto eviterebbe.

No. La preistoria spiega le condizioni di possibilità. Le scelte specifiche del transformer (attention, positional encoding, layer normalization), di RLHF, di tool use non sono derivabili da Turing o McCulloch-Pitts. Quegli sviluppi sono il prodotto di scelte ingegneristiche degli anni Duemila e Duemiladieci, inferenze empiriche che nessuno dei precursori poteva anticipare. La preistoria è condizione necessaria, non sufficiente.

Limite: “Il racconto è euro-americano-centrico”

Sezione intitolata “Limite: “Il racconto è euro-americano-centrico””

Buona parte di questa preistoria è documentata prevalentemente nelle venue europee e nordamericane. L’I Ching cinese conteneva sequenze binarie di esagrammi due millenni prima di Leibniz (che li cita esplicitamente nel paper del 1703). Il sistema numerico arabo-indiano e le sue algebre sono al centro della matematica medievale. Ibn Sina e Averroe hanno contribuito alla logica aristotelica arricchita. La storiografia dell’AI tende a cancellare queste radici. Il capitolo le nomina ma non le sviluppa: è una limitazione del racconto, non dei fatti.

Limite: “La figura di Turing come icona oscura gli altri”

Sezione intitolata “Limite: “La figura di Turing come icona oscura gli altri””

La narrativa popolare tende a ridurre la preistoria a “Turing”. È sbagliato. Turing è centrale, ma senza Boole non c’è hardware digitale; senza von Neumann non c’è architettura eseguibile; senza McCulloch-Pitts non c’è rete neurale formale; senza Hebb non c’è modello di apprendimento sinaptico; senza Shannon non c’è teoria quantitativa dell’informazione. Turing collega i fili e pone la domanda filosofica, ma la stoffa dei fili l’hanno tessuta altri. Il capitolo cerca di correggere il bias storiografico.

  • turing-macchina-mente — approfondimento dedicato a Turing 1936 + 1950, prossimo capitolo nella Parte I. La preistoria si chiude; l’AI diventa un programma esplicito.
  • dartmouth-1956 — dove le idee della preistoria vengono raccolte sotto un nome. Questo capitolo è il prerequisito logico.
  • storia-sintesi — la versione di dieci minuti dell’intera storia dell’AI. La sezione “Pre-storia” di quel capitolo è la versione ultra-sintetica di questo.
  • [ai-simbolica-anni-60] — la linea Leibniz-Boole-Frege-Russell si materializza come AI simbolica dopo Dartmouth. Logic Theorist e GPS sono implementazioni concrete della tesi “pensare è calcolare”.
  • [reti-neurali-perceptron] — Rosenblatt 1958 poggia direttamente su McCulloch-Pitts 1943 e Hebb 1949. È il primo erede operativo di questa preistoria neurale.
  • [turing-test] (Parte II) — il test di imitazione è discusso qui come evento storico; nella Parte II viene analizzato come oggetto filosofico.
  • [cosa-significa-pensare] (Parte II) — la domanda turinghiana posta con gli strumenti filosofici contemporanei.
  • [stanza-cinese-searle] (Parte II) — la replica più famosa al test di Turing (Searle 1980) riprende l’obiezione di Lovelace in chiave fenomenologica.
  • [computazionalismo] (Parte II) — la tesi che il pensiero sia computazione è eredità diretta da Leibniz, formalizzata da Turing.
  • [embedding-concetto] (Parte IV) — la characteristica universalis come antenato concettuale degli embedding. Non identità ma analogia profonda.
  • [entropia-cross-entropy] (Parte IV) — la teoria dell’informazione di Shannon (1948) trova qui la sua eredità operativa nella cross-entropy loss che addestra ogni LLM.
  • [app-timeline] (Appendici) — timeline visuale complementare di modelli e idee.
  • “Computing Machinery and Intelligence” di Alan Turing (Mind, 1950). PDF. Lettura obbligatoria. Breve (28 pagine), scritto con chiarezza non ostentata, contiene la discussione più pulita delle nove obiezioni classiche.

  • “On Computable Numbers” di Alan Turing (Proc. London Math. Soc., 1936). PDF. Lettura più tecnica. Le prime 10 pagine (introduzione, definizione della macchina, macchina universale) sono accessibili; le dimostrazioni formali dell’indecidibilita richiedono pazienza.

  • “Sketch of the Analytical Engine” di Luigi Menabrea, tradotto e annotato da Ada Lovelace (Scientific Memoirs, 1843). Versione integrale online. Le Note A-G di Lovelace si leggono come piccoli saggi sulla natura della computazione universale.

  • “A Logical Calculus of the Ideas Immanent in Nervous Activity” di McCulloch e Pitts (1943). PDF. Denso, notazione datata, ma contiene l’idea matricialmente perfetta del neurone come gate logico.

  • “The Turing Test” — voce della Stanford Encyclopedia of Philosophy. Link. Analisi filosofica rigorosa di tutte le interpretazioni del test, con bibliografia aggiornata.

  • “Godel’s Incompleteness Theorems” — Stanford Encyclopedia of Philosophy. Link. Esposizione tecnica dei teoremi con contesto storico e discussione dei fraintendimenti filosofici tipici.