Salta ai contenuti

Reti neurali 1982-2010: backprop riscoperto, stallo per mancanza di dati e compute

Tra Hopfield 1982 e AlexNet 2012, le reti neurali artificiali percorrono trent’anni di traversata silenziosa: backpropagation viene reso popolare nel 1986, NETtalk impressiona, LeNet legge assegni in produzione, LSTM risolve il vanishing gradient, ma il paradigma dominante è altrove (SVM, Bayesian nets, ensemble). Quando finalmente dati, GPU e ingredienti accessori maturano insieme, l’esplosione è immediata.

Quasi un quarto di secolo separa la pubblicazione del paper di Hopfield (Proceedings of the National Academy of Sciences, 1982) e l’esplosione del deep learning a ImageNet (2012). Trent’anni in cui il filone connessionista sopravvive in pochi laboratori, finanziato discontinuamente, marginale rispetto al paradigma statistico che domina la scena. Backpropagation viene reso popolare da Rumelhart, Hinton e Williams nel 1986. NETtalk impressiona nel 1987. LeNet legge assegni in produzione dal 1995. LSTM risolve il vanishing gradient nel 1997. Eppure il paradigma dominante resta altrove (SVM, Bayesian nets, ensemble) fino al 2012.

Il capitolo racconta questa traversata silenziosa. Conta per due ragioni distinte. La prima è di filiazione: quasi tutto ciò che chiamiamo deep learning contemporaneo discende, per linea diretta o indiretta, dalle architetture e dagli algoritmi sviluppati in questi trent’anni. Non discende dai sistemi esperti, non dagli HMM per speech recognition, non dalle SVM. La seconda è metodologica: la storia post-Perceptrons è un caso di studio paradigmatico di incubazione lunga. Una comunità scientifica piccola coltiva un’idea per un decennio o più, finché tre fattori indipendenti — dati, hardware, algoritmi accessori — convergono. Riconoscere quando ci si trova in una fase di incubazione lunga è un’abilità di policy della ricerca, oltre che storica.

Il capitolo prende il filo dalla fine di primo-inverno-ai e da rinascita-statistica-90. Da quei capitoli ricordiamo due fatti: nel 1969 Marvin Minsky (informatico statunitense, 1927-2016, co-fondatore del MIT AI Lab) e Seymour Papert (matematico ed educatore sudafricano-statunitense, 1928-2016) pubblicano “Perceptrons”, che dimostra rigorosamente i limiti del percettrone a singolo strato e raffredda l’investimento in reti neurali per oltre un decennio; e negli anni 90 il paradigma dominante nel machine learning diventa statistico (Bayesian nets, SVM, HMM, gradient boosting), con le reti neurali confinate in una nicchia.

Su questo sfondo, alcune persone non smettono di lavorare sulle reti. John Hopfield (fisico-biologo statunitense, 1933-, premio Nobel per la fisica 2024 condiviso con Hinton) nel 1982 pubblica sul PNAS il paper “Neural networks and physical systems with emergent collective computational abilities”, che introduce le Hopfield networks: reti ricorrenti di neuroni binari interpretabili come sistemi fisici con un paesaggio di energia, dove i pattern memorizzati sono minimi locali. Il paper non è un algoritmo di apprendimento moderno, ma riaccende l’interesse della comunità di fisica statistica per le reti neurali.

Geoffrey Hinton (informatico britannico-canadese, 1947-, premio Turing 2018, Nobel per la fisica 2024) e Terry Sejnowski (neurobiologo computazionale statunitense, 1947-) nel 1985 pubblicano “A learning algorithm for Boltzmann machines” su Cognitive Science. Le Boltzmann machines sono un’estensione probabilistica delle Hopfield networks, in cui i neuroni hanno un comportamento stocastico governato da una distribuzione di Boltzmann. Sono difficili da addestrare ma introducono nella comunità l’idea di trattare le reti come modelli probabilistici.

David Rumelhart (psicologo statunitense, 1942-2011, ricercatore al PARC e poi a UCSD), Geoffrey Hinton e Ronald Williams (informatico statunitense, attivo a Northeastern) pubblicano nell’ottobre 1986 su Nature il paper “Learning representations by back-propagating errors”. È il paper che rende popolare la backpropagation come algoritmo per addestrare reti multi-strato. Lo stesso anno, Rumelhart e James McClelland (psicologo cognitivo statunitense) pubblicano i due volumi di “Parallel Distributed Processing” (PDP) per MIT Press, il libro fondante del connessionismo moderno: una scuola di pensiero in scienze cognitive secondo cui la mente è un sistema di reti neurali distribuite, non un manipolatore di simboli discreti.

Qui si apre la traversata vera e propria. Nei venticinque anni successivi accadono molte cose: Yann LeCun (informatico francese, 1960-, premio Turing 2018) sviluppa a Bell Labs la famiglia LeNet (1989-1998), reti convoluzionali per riconoscere cifre scritte a mano, deployate in produzione per leggere assegni bancari. Sepp Hochreiter (informatico austriaco, 1967-) e Jurgen Schmidhuber (informatico tedesco, 1963-, direttore del laboratorio IDSIA di Lugano) pubblicano nel 1997 su Neural Computation il paper “Long Short-Term Memory” che risolve il problema del vanishing gradient nelle reti ricorrenti. Yoshua Bengio (informatico canadese, 1964-, premio Turing 2018) lavora a Montreal su language modeling neurale e, dal 2003, propone con Aaron Courville la prima neural language model architecture. Hinton e Ruslan Salakhutdinov nel 2006 pubblicano su Science il paper sul greedy layer-wise pretraining che rilancia il termine “deep learning”. E nel 2009 Fei-Fei Li (informatica cinese-statunitense, 1976-, professoressa a Stanford) rilascia ImageNet, il primo dataset di immagini etichettate su scala milione.

In mezzo a tutto questo: la “Canadian Mafia” (Hinton a Toronto, Bengio a Montreal, LeCun a NYU dopo Bell Labs e NEC) tiene viva la fiamma. Il CIFAR (Canadian Institute for Advanced Research) finanzia dal 2004 il programma “Neural Computation and Adaptive Perception” (NCAP), che è di fatto l’unico ambiente accademico che finanzia reti neurali profonde con continuita quando il resto del mondo ML investe altrove.

Vale la pena aggiungere qualche dettaglio sulle traiettorie individuali, perché aiutano a capire la cultura del filone. LeCun dopo il PhD a Parigi (Universite Pierre et Marie Curie, 1987) fa il postdoc a Toronto con Hinton, poi nel 1988 entra a Bell Labs (Holmdel, New Jersey), dove resta fino al 1996. Dal 1996 al 2003 dirige il Department of Image Processing Research a AT&T Labs. Nel 2003 si trasferisce alla New York University come professore. Nel 2013 Mark Zuckerberg lo nomina direttore del nuovo Facebook AI Research (FAIR). Una traiettoria che spazia da accademia europea, a laboratorio industriale americano, di nuovo ad accademia, e infine a big tech: percorso non tipico per l’epoca, ma esemplare del modo in cui il filone neurale si manteneva attraverso passaggi multipli.

Bengio dopo il PhD a McGill (1991) lavora ai Bell Labs (1991-1992) sotto LeCun, poi diventa professore all’Universite de Montreal nel 1993. Fonda il MILA (Montreal Institute for Learning Algorithms) e lo trasforma nel principale centro accademico mondiale di deep learning. Il suo paper “A Neural Probabilistic Language Model” (con Ducharme, Vincent, Jauvin, NeurIPS 2000, journal version su JMLR 2003) introduce l’idea di word embeddings appresi end-to-end con una rete neurale: una decina di anni prima di word2vec, fissa il principio che parole si possono rappresentare come vettori densi in uno spazio continuo, e che quei vettori catturano relazioni semantiche utili per la predizione. Il paper viene letto da una comunità ristretta nei primi 2000, ma diventa una pietra miliare retrospettiva.

Hinton ha una traiettoria più peripatetica. PhD a Edimburgo (1978) sotto Christopher Longuet-Higgins, postdoc a Sussex e UCSD, professore a Carnegie Mellon (1982-1987), poi all’Universite di Toronto dal 1987 (con una breve parentesi al University College London 1998-2001). Co-fonda DNNresearch nel 2012 con Krizhevsky e Sutskever, che viene acquisita da Google nel 2013. Dal 2013 al 2023 lavora a Google Brain part-time. Nel 2023 lascia Google per essere libero di parlare pubblicamente dei rischi dell’AI. Il filo rosso: Toronto come hub stabile per oltre trent’anni, con un network di studenti (Sutskever, Salakhutdinov, Krizhevsky, Graves, Mnih) che diventeranno la generazione di leader tecnici dell’AI 2010-2020.

Angolo storico-sociologico: come una nicchia mantiene viva un’idea

Sezione intitolata “Angolo storico-sociologico: come una nicchia mantiene viva un’idea”

Una comunità scientifica piccola e marginale può coltivare un’idea attraverso un decennio di scetticismo finché le condizioni esterne — dati, hardware, algoritmi accessori — non maturano. Le reti neurali post-Minsky-Papert sono il caso da manuale.

Negli anni 90 e primi 2000, il machine learning accademico è dominato dai Support Vector Machines di Vladimir Vapnik (1995), dai Bayesian networks di Judea Pearl (1988), dai random forest di Leo Breiman (2001), dal gradient boosting di Jerome Friedman (2001), dagli HMM per speech recognition. Questi metodi hanno tre vantaggi pratici sulle reti neurali: convergono in modo affidabile, hanno garanzie teoriche (Vapnik-Chervonenkis dimension, bias-varianza), e su dataset di taglia “umana” (migliaia di esempi) producono risultati spesso migliori. Una rete neurale profonda nel 2003 è difficile da addestrare, instabile, sensibile all’inizializzazione, e quando converge spesso fa peggio di una SVM ben tarata. Non c’è ragione razionale, dal punto di vista del praticante medio, per investirci.

Eppure un piccolo gruppo di persone continua. Hinton ammette in più interviste che negli anni 90 pensava che le reti neurali fossero “dead in the water”. Continua a lavorarci comunque. LeCun a Bell Labs mostra demo di CNN, ma il management è impressionato da SVM (Vapnik era nello stesso laboratorio: il riconoscimento “ufficiale” è suo, non di LeCun). Bengio a Montreal pubblica articoli su language modeling neurale che vengono ignorati. Schmidhuber a IDSIA pubblica LSTM e altri lavori che diventeranno fondamentali, ma negli anni 2000 sono per lo più citati da una nicchia.

Cosa permette a questa nicchia di sopravvivere? Tre fattori. Primo: finanziamento di pattern lungo. CIFAR-NCAP dal 2004 fornisce un budget continuativo, modesto in valore assoluto ma sufficiente per pagare PhD students e workshop. Secondo: conferenze dedicate. NIPS (Neural Information Processing Systems, oggi NeurIPS) è dagli anni 80 il luogo di ritrovo. Negli anni 90 è una conferenza relativamente piccola (~700-1000 partecipanti), ma è lo spazio dove si scambiano risultati, dove i giovani trovano mentor, dove nasce una cultura comune. Terzo: continuita di temi. Il gruppo non rinuncia all’ambizione di reti profonde anche quando i risultati sono modesti. Quando ImageNet arriva nel 2009 e le GPU diventano programmabili con CUDA, il gruppo è pronto a sfruttarli immediatamente. Senza la manutenzione decennale, AlexNet 2012 sarebbe stata un cold start.

C’è una lezione meta che vale la pena estrarre. Il pattern “comunità piccola che coltiva un’idea per decenni” è generale. Si è visto in fisica (la teoria delle stringhe ha attraversato fasi simili), in biologia (la teoria del simbionte come origine della cellula eucariote, di Lynn Margulis, è stata marginale per vent’anni), in algoritmica (i metodi di Monte Carlo hanno aspettato il calcolo elettronico). Quando una scuola coltiva un’idea con disciplina, anche contro il consenso, e quando il contesto esterno cambia in suo favore, l’esplosione successiva è rapida e dominante. Questa è la dinamica delle reti neurali tra 1982 e 2012.

Angolo tecnico: backprop come applicazione meccanica della chain rule

Sezione intitolata “Angolo tecnico: backprop come applicazione meccanica della chain rule”

Sul piano matematico, backpropagation è applicazione meccanica della regola della catena (chain rule) del calcolo differenziale. Se hai una funzione composta L=f(g(h(x)))L = f(g(h(x))) e vuoi la derivata di LL rispetto a xx, applichi dLdx=dfdgdgdhdhdx\frac{dL}{dx} = \frac{df}{dg} \cdot \frac{dg}{dh} \cdot \frac{dh}{dx}. La rete neurale è una composizione di funzioni: layer dopo layer, ogni layer trasforma l’input del precedente. La derivata della loss rispetto a un peso interno è una composizione delle derivate dei layer che stanno tra quel peso e la loss. Backprop calcola questa composizione in modo efficiente: una passata in avanti (forward) per calcolare il valore di ogni layer, una passata all’indietro (backward) per propagare il gradiente.

Questa idea è “ovvia” per un matematico. Tanto ovvia che è stata pubblicata più volte in modo indipendente. Paul Werbos (1974, tesi PhD a Harvard) la formula per reti feedforward generiche. Seppo Linnainmaa (1970, master thesis a Helsinki, in finlandese) la formula nel contesto di automatic differentiation. Arthur Bryson e Yu-Chi Ho (1969, libro “Applied Optimal Control”) la formulano nel contesto di control theory. Nessuna di queste formulazioni viene notata dalla comunità AI dell’epoca.

Allora perché Rumelhart-Hinton-Williams 1986 è così importante? Per due ragioni. Prima: dimostrano in pratica che funziona su problemi non banali, come l’apprendimento di rappresentazioni interne in compiti di simmetria e generalizzazione. Seconda: rispondono a Minsky-Papert. Mostrano che una rete con un singolo hidden layer può apprendere XOR e altre funzioni non linearmente separabili. Il colpo di Perceptrons 1969 era stato “il percettrone a singolo strato non può apprendere XOR”; la risposta del 1986 è “una rete a due strati lo può, e abbiamo l’algoritmo per addestrarla”.

Ma — ed è il punto centrale di questo capitolo — l’algoritmo da solo non basta. Backprop diventa pratico solo quando è assemblato con: (a) architetture sensate per il dominio (CNN per immagini, RNN/LSTM per sequenze, transformer per testo), (b) optimizer non-vanilla (momentum, RMSprop, Adam), (c) inizializzazione corretta (Xavier 2010, He 2015), (d) attivazioni non-saturanti (ReLU 2011), (e) regolarizzazione (dropout 2012, batch norm 2015), e soprattutto (f) dati e compute in quantità sufficiente. La storia di questo periodo è la storia di come ognuno di questi ingredienti è arrivato, lentamente, fino a comporre il pacchetto che esplode nel 2012.

L’idea matematica era pronta nel 1974. Il pacchetto completo era pronto nel 2012. La distanza tra le due date — 38 anni — è la misura di quanto, nelle scienze applicate, l’idea matematica sia solo l’inizio.

1982: Hopfield networks, l’interesse fisico-quantitativo riacceso

Sezione intitolata “1982: Hopfield networks, l’interesse fisico-quantitativo riacceso”

Una Hopfield network è una rete ricorrente di NN neuroni binari, ognuno con stato si{1,+1}s_i \in \{-1, +1\}. Ogni coppia di neuroni i,ji, j è connessa simmetricamente con un peso wij=wjiw_{ij} = w_{ji}. La dinamica della rete è: scegli un neurone a caso, calcola la somma pesata dei suoi vicini, e aggiorna il suo stato a +1+1 se la somma è positiva, 1-1 altrimenti. Hopfield mostra che questa dinamica converge sempre a uno stato stabile, perché è equivalente a minimizzare una funzione di energia E=12i,jwijsisjE = -\frac{1}{2} \sum_{i,j} w_{ij} s_i s_j.

Il punto interessante è come si memorizzano dei pattern. Se vuoi memorizzare un pattern ξ(μ){1,+1}N\xi^{(\mu)} \in \{-1, +1\}^N, imposta i pesi con la regola di Hebb: wij=1Nμξi(μ)ξj(μ)w_{ij} = \frac{1}{N} \sum_{\mu} \xi_i^{(\mu)} \xi_j^{(\mu)}. La rete diventa una memoria associativa: se le presenti un input parziale o rumoroso simile a uno dei pattern memorizzati, la dinamica converge al pattern completo. Capacità di memorizzazione: ~0.14 N pattern (Amit-Gutfreund-Sompolinsky 1985).

Hopfield arriva da fisica e biologia. Il suo paper PNAS 1982 inquadra le reti neurali nel linguaggio della fisica statistica: stati metastabili, paesaggio di energia, vetri di spin. Per la comunità di fisica, il tema diventa improvvisamente legittimo. Per la comunità ML, il paper non offre un algoritmo di apprendimento moderno (i pesi sono fissati, non addestrati con gradient descent), ma riapre un canale di interesse interdisciplinare che porta finanziamento e attenzione.

L’eredità diretta: le Hopfield networks vengono ripensate più volte negli anni successivi. Le Boltzmann machines (Hinton-Sejnowski 1985) le estendono in modo probabilistico. Le Restricted Boltzmann Machines (Smolensky 1986, riprese da Hinton nei primi 2000) diventeranno il building block del greedy layer-wise pretraining del 2006. (Una connessione formale fra Hopfield networks e attention, sostenuta in letteratura recente, è citata in “Applicazioni pratiche”.)

Vale la pena fissare il contesto di chi era Hopfield. Era un fisico teorico, non un computer scientist. Aveva lavorato a Bell Labs negli anni 60 su semiconduttori e fotosintesi, poi era diventato professore a Princeton e a Caltech. Il suo paper del 1982 nasce da un interesse per i sistemi biologici visti come sistemi fisici complessi. La cornice “rete neurale come sistema di vetro di spin” non era familiare per la comunità AI, ma era familiare per la comunità di fisica statistica, allora molto attiva sui modelli di Ising e sui sistemi disordinati. La pubblicazione di Hopfield apre un canale di importazione di tecniche da fisica a AI: techniche di mean field, di replica, di temperature scheduling (simulated annealing di Kirkpatrick-Gelatt-Vecchi 1983 è contemporaneo). Per quasi un decennio, parte della comunità “neural” parla la lingua della fisica statistica piuttosto che quella dell’informatica.

Vediamo concretamente come funziona backprop su una rete a un singolo hidden layer. La rete: input xRnx \in \mathbb{R}^{n}, hidden layer con hh unita e attivazione sigmoid σ(u)=1/(1+eu)\sigma(u) = 1/(1+e^{-u}), output scalare con sigmoid, loss MSE.

Il forward pass calcola, riga per riga:

  • z(1)=W(1)x+b(1)z^{(1)} = W^{(1)} x + b^{(1)}, con W(1)Rh×nW^{(1)} \in \mathbb{R}^{h \times n} e b(1)Rhb^{(1)} \in \mathbb{R}^{h}.
  • a(1)=σ(z(1))a^{(1)} = \sigma(z^{(1)}).
  • z(2)=W(2)a(1)+b(2)z^{(2)} = W^{(2)} a^{(1)} + b^{(2)}, con W(2)R1×hW^{(2)} \in \mathbb{R}^{1 \times h}.
  • y^=σ(z(2))\hat{y} = \sigma(z^{(2)}).
  • L=12(yy^)2L = \frac{1}{2}(y - \hat{y})^2.

In parole povere, questo dice che ogni layer prende l’output del precedente, lo moltiplica per una matrice di pesi, gli somma un bias, e applica una funzione di attivazione non lineare. La loss alla fine misura quanto la predizione y^\hat{y} sbaglia rispetto al target yy.

Il backward pass propaga il gradiente all’indietro. Definiamo δ()=Lz()\delta^{(\ell)} = \frac{\partial L}{\partial z^{(\ell)}}, il “gradiente di errore” al layer \ell.

  • Output: δ(2)=(yy^)σ(z(2))\delta^{(2)} = -(y - \hat{y}) \cdot \sigma'(z^{(2)}), dove σ(u)=σ(u)(1σ(u))\sigma'(u) = \sigma(u)(1-\sigma(u)).
  • Hidden: δ(1)=(W(2))Tδ(2)σ(z(1))\delta^{(1)} = (W^{(2)})^T \delta^{(2)} \odot \sigma'(z^{(1)}), dove \odot è il prodotto elemento-per-elemento.
  • Gradienti dei pesi: LW()=δ()(a(1))T\frac{\partial L}{\partial W^{(\ell)}} = \delta^{(\ell)} (a^{(\ell-1)})^T.

Aggiornamento: W()W()ηLW()W^{(\ell)} \leftarrow W^{(\ell)} - \eta \cdot \frac{\partial L}{\partial W^{(\ell)}} con learning rate η\eta.

Il punto chiave è che la stessa formula si itera per qualunque numero di layer: δ()=(W(+1))Tδ(+1)σ(z())\delta^{(\ell)} = (W^{(\ell+1)})^T \delta^{(\ell+1)} \odot \sigma'(z^{(\ell)}). La struttura ricorsiva è la chain rule del calcolo differenziale, applicata layer per layer.

Il paper di Rumelhart-Hinton-Williams su Nature non inventa l’algoritmo (era già in Werbos 1974). Lo rende popolare per tre ragioni operative. Primo: lo presenta in un linguaggio leggibile per psicologi e scienziati cognitivi, non solo per matematici. Secondo: lo accompagna con esperimenti su problemi non banali (apprendimento di simmetria, di parita, di rappresentazioni gerarchiche). Terzo: viene pubblicato lo stesso anno dei due volumi PDP, che lo inquadrano in una scuola di pensiero coerente. La combinazione paper Nature + libro PDP + comunità organizzata trasforma backprop da curiosità matematica in tecnologia su cui investire.

Terry Sejnowski e Charles Rosenberg (informatico statunitense, allora a Princeton) pubblicano nel 1987 su Complex Systems “Parallel networks that learn to pronounce English text”. Il progetto si chiama NETtalk: una rete neurale che impara a leggere ad alta voce testo inglese, mappando lettere a fonemi.

L’architettura è un MLP semplice: input di ~200 unita (una finestra di 7 caratteri codificati in one-hot), 80 hidden unit, 26 output (una per fonema). Training: ~20.000 parole annotate manualmente con fonemi. Loss: cross-entropy sui fonemi. Optimizer: SGD con backprop.

Cosa rende NETtalk un’icona culturale è la demo audio. Sejnowski accoppia l’output a un sintetizzatore vocale e fa ascoltare il progresso del training in tempo reale. All’inizio la rete produce suoni casuali, simili al balbettio di un infante. Dopo poche epoche distingue vocali da consonanti. Dopo training completo legge in modo intelligibile, con accuratezza ~95% sui dati di test.

L’effetto sulla comunità è fuori scala rispetto al merito tecnico. NETtalk non è la prima applicazione di backprop, e l’accuratezza fonetica non è rivoluzionaria (sistemi rule-based dell’epoca facevano paragonabilmente bene). Ma il suono del balbettio che si trasforma in linguaggio è una metafora viscerale dell’apprendimento. Dopo NETtalk, presentazioni a conferenze, articoli divulgativi, programmi TV citano la rete come prova che le reti neurali “imparano davvero”. Questo facilita finanziamento e legittimita per il filone.

LeNet: convoluzione, weight sharing, e gli assegni AT&T

Sezione intitolata “LeNet: convoluzione, weight sharing, e gli assegni AT&T”

Yann LeCun arriva a Bell Labs nel 1988, dopo un postdoc a Toronto con Hinton. A Bell Labs trova un ambiente raro: budget di ricerca generoso, dati reali (cifre scritte a mano dal United States Postal Service per il riconoscimento di codici di avviamento postale, poi MNIST), e collaboratori di primo livello (Leon Bottou, Yoshua Bengio, Patrick Haffner).

LeCun sviluppa una famiglia di architetture, da LeNet-1 (1989) fino a LeNet-5 (1998). LeNet-5 è descritta nel paper “Gradient-based learning applied to document recognition” pubblicato sui Proceedings of the IEEE (1998), che diventa la formulazione canonica di CNN (Convolutional Neural Network).

L’innovazione concettuale è tripla:

  • Convoluzione e weight sharing: invece di connettere ogni pixel di input a ogni unita hidden (come in un MLP), si applica un filtro 5x5 di pesi condivisi su tutte le posizioni dell’immagine. Lo stesso filtro slida sull’immagine, calcolando una “feature map”. Conseguenza: drastica riduzione del numero di parametri e introduzione di traslation invariance (un edge in alto a sinistra e un edge in basso a destra attivano la stessa feature).
  • Pooling (subsampling): dopo la convoluzione, una average pool 2x2 riduce la risoluzione spaziale di un fattore 4. Aumenta il receptive field delle unita successive (cioe la regione dell’input che ognuna “vede”) e da’ invarianza a piccole traslazioni.
  • Gerarchia di feature: layer bassi imparano edge orientati, layer intermedi pattern composti, layer alti astrazioni. La gerarchia emerge dall’addestramento, non è programmata a mano.

Pipeline LeNet-5 su immagine 32x32 grayscale, in pseudocodice:

# Input: 32x32 grayscale image
x = conv2d(image, filters=6, kernel=5) # -> 28x28x6
x = tanh(x)
x = avg_pool(x, kernel=2) # -> 14x14x6
x = conv2d(x, filters=16, kernel=5) # -> 10x10x16
x = tanh(x)
x = avg_pool(x, kernel=2) # -> 5x5x16
x = conv2d(x, filters=120, kernel=5) # -> 1x1x120
x = fully_connected(x, units=84) # -> 84
x = tanh(x)
out = rbf_output(x, classes=10) # -> 10 class scores

Il modello viene addestrato su MNIST (60.000 cifre training, 10.000 test) con backpropagation. Raggiunge ~0.95% error rate su MNIST, dominando i metodi non-neurali dell’epoca su questo specifico benchmark. Ma su altri benchmark di vision con feature engineering accurato, le SVM con kernel RBF restano competitive.

Il vero punto però è il deploy industriale. La filiale NCR (controllata da AT&T fino al 1996) integra LeNet in macchine per la lettura automatica di assegni bancari. Da meta anni 90 in poi, una frazione significativa degli assegni USA viene processata da CNN. È uno dei primi casi di reti neurali in produzione su scala industriale, anni prima che la comunità accademica considerasse le CNN un paradigma serio. Il management di Bell Labs, però, è spesso più impressionato da SVM (Vapnik era nello stesso laboratorio) che da CNN. La storia interna di Bell Labs racconta che LeCun ha dovuto difendere il filone con persistenza, contro chi lo considerava un esperimento di nicchia.

Una rete ricorrente classica (RNN) processa una sequenza x1,x2,,xTx_1, x_2, \ldots, x_T aggiornando uno stato hidden ht=tanh(Whht1+Wxxt)h_t = \tanh(W_h h_{t-1} + W_x x_t). La loss alla fine della sequenza dipende da tutti gli input precedenti attraverso la ricorrenza.

Il problema, analizzato in dettaglio da Sepp Hochreiter nella sua tesi del 1991 (in tedesco, sotto la supervisione di Schmidhuber a Munchen), è il vanishing gradient. Quando si calcola Lh0\frac{\partial L}{\partial h_0} propagando indietro nel tempo, si moltiplicano TT Jacobiani della ricorrenza. Se gli autovalori dei Jacobiani sono < 1, il gradiente decade esponenzialmente. Se > 1, esplode. In entrambi i casi, addestrare una RNN su sequenze lunghe (>20-30 timestep) diventa impraticabile.

Hochreiter e Schmidhuber pubblicano nel 1997 su Neural Computation il paper “Long Short-Term Memory” che propone una soluzione architetturale. L’idea: introdurre una “cell statectc_t che fluisce quasi senza modifiche attraverso il tempo, modulata da gate. I gate sono piccole reti che decidono cosa scrivere, cosa cancellare, e cosa leggere dalla cell state.

Anatomia di una cella LSTM, passo per passo:

  • Forget gate: ft=σ(Wf[ht1,xt]+bf)f_t = \sigma(W_f \cdot [h_{t-1}, x_t] + b_f). Output in [0,1][0,1]. Decide quanto della cell state precedente conservare.
  • Input gate: it=σ(Wi[ht1,xt]+bi)i_t = \sigma(W_i \cdot [h_{t-1}, x_t] + b_i). Decide quanto del candidato nuovo scrivere.
  • Candidato: c~t=tanh(Wc[ht1,xt]+bc)\tilde{c}_t = \tanh(W_c \cdot [h_{t-1}, x_t] + b_c). Il valore candidato da scrivere.
  • Cell update: ct=ftct1+itc~tc_t = f_t \odot c_{t-1} + i_t \odot \tilde{c}_t. Update additivo, non moltiplicativo.
  • Output gate: ot=σ(Wo[ht1,xt]+bo)o_t = \sigma(W_o \cdot [h_{t-1}, x_t] + b_o).
  • Hidden output: ht=ottanh(ct)h_t = o_t \odot \tanh(c_t).

Il punto cruciale è l’update additivo della cell state. Nel passaggio backward, ctct1=ft\frac{\partial c_t}{\partial c_{t-1}} = f_t. Se ft1f_t \approx 1 (forget gate aperto), il gradiente passa quasi inalterato. La memoria a lungo termine diventa addestrabile su sequenze di centinaia o migliaia di timestep.

Esempio operativo dove LSTM riesce e RNN classica fallisce: il task della parentesi chiusa. Sequenza tipo ( a b c d e f g h i j ). Domanda: dato l’input (, dopo molti caratteri intermedi, il modello deve ricordare di emettere ). Una RNN classica perde l’informazione su ( dopo 20-30 caratteri. Una LSTM ben addestrata la mantiene per centinaia di caratteri grazie al forget gate aperto.

L’ironia storica: il paper LSTM 1997 viene ignorato per circa quindici anni. Le citazioni nei primi anni 2000 sono poche decine. Esplode dopo il 2014, quando seq2seq (Sutskever-Vinyals-Le 2014, seq2seq-2014 (in preparazione)) usa LSTM come building block per macchina di traduzione. Nel settembre 2016, Google Translate passa al sistema GNMT di Wu et al., basato su LSTM stacked, con miglioramento massivo della qualità di traduzione. Per circa tre anni (2014-2017), LSTM è il backbone dominante in NLP, prima di essere a sua volta rimpiazzato dall’architettura transformer.

TD-Gammon e ALVINN: due esempi di reti in produzione negli anni 90

Sezione intitolata “TD-Gammon e ALVINN: due esempi di reti in produzione negli anni 90”

Gerald Tesauro a IBM Research sviluppa TD-Gammon (1992): un MLP che gioca a backgammon usando temporal difference learning (Sutton 1988) e self-play. Il modello impara giocando milioni di partite contro se stesso. Dopo training raggiunge il livello di top player umani. Le analisi successive mostrano che TD-Gammon scopre strategie non ortodosse che giocatori professionisti finiscono per adottare. È una delle prime grandi vittorie di RL + reti neurali, ma nel 1992 viene letta come “fortunato accidente del backgammon” più che come paradigma generalizzabile. Solo 25 anni dopo, AlphaZero (DeepMind 2017) confermerà che era un’anteprima.

Dean Pomerleau a CMU sviluppa ALVINN (Autonomous Land Vehicle In a Neural Network, 1989): un MLP che riceve immagini da una telecamera frontale e produce un comando di sterzo. Addestrato con behavioral cloning su poche ore di guida supervisionata da un istruttore umano. Il sistema riesce a guidare autonomamente per tratti significativi su autostrade reali. Nel 1995, il viaggio “No Hands Across America” porta un veicolo equipaggiato con ALVINN da Pittsburgh a San Diego (~4500 km), con sterzo automatico per il 98% del percorso (throttle e brake erano umani). È un’anticipazione sorprendente di Tesla Autopilot e Waymo, 25 anni in anticipo.

Vale la pena menzionare anche un terzo caso meno noto: i sistemi di speech recognition ibridi HMM-NN sviluppati a ICSI Berkeley (Herve Bourlard, Nelson Morgan e collaboratori) negli anni 90. L’idea era di sostituire il modulo di emission probability degli HMM con una rete neurale, ottenendo accuratezze migliori dei sistemi puramente HMM-GMM. Questi sistemi hanno avuto deploy commerciali limitati ma hanno mantenuto un filone di ricerca neural-NLP attivo durante un decennio in cui altrove la ricerca speech era dominata da approcci puramente statistici. Quando dal 2009 il deep learning entra prepotentemente nel speech recognition (Hinton, Deng e collaboratori a Microsoft Research, paper “Deep Neural Networks for Acoustic Modeling in Speech Recognition” del 2012), il salto è meno traumatico di quanto sembri: la comunità aveva già metabolizzato l’idea di NN come componente di una pipeline.

E un quarto caso: autoencoder per riduzione di dimensionalita e per compressione. Hinton ha pubblicato vari paper su autoencoder shallow nei tardi anni 80 e nei 90, sostenendo che reti neurali con un bottleneck centrale apprendono rappresentazioni interne utili. L’idea ricomparira esplicita nel paper Science 2006 con Salakhutdinov, e diventerà la base concettuale dei moderni variational autoencoder (Kingma-Welling 2013), dei diffusion model (encoder-decoder structure), e in modo indiretto del paradigma “self-supervised learning” che domina il 2020.

Questi casi mostrano che le reti neurali producono risultati pratici reali durante gli anni 90, anche se il paradigma dominante è altrove. Sono prove di concetto su cui il filone si sostiene quando le pubblicazioni teoriche non bastano da sole a giustificare l’investimento. E sono substrato culturale per gli studenti che diventeranno i leader del 2010: Sutskever, Krizhevsky, Goodfellow, Ranzato, Mikolov, Graves crescono in laboratori dove queste idee circolano come cosa normale, non come eccezioni.

Se le reti neurali producevano risultati pratici, perché sono rimaste un filone di nicchia per vent’anni? Le barriere erano molteplici, e tutte vere insieme. Vediamole una per una.

Mancanza di dati. I dataset degli anni 90 erano nell’ordine di migliaia o decine di migliaia di esempi. MNIST con 60.000 cifre era considerato grande. Il Brown Corpus aveva un milione di parole, il Penn Treebank circa 4,5 milioni. Le reti profonde hanno bisogno di milioni o decine di milioni di esempi etichettati. Senza di essi, overfittano facilmente e non superano i metodi statistici tradizionali. ImageNet (14 milioni di immagini etichettate, rilasciato nel 2009 da Fei-Fei Li) è il primo dataset abbastanza grande per il deep learning serio. Prima del 2009, semplicemente non esisteva il fuel.

Mancanza di compute. Addestrare una CNN profonda nel 1995 richiedeva settimane su CPU dell’epoca. Esperimenti veloci impossibili. Il ciclo “prova un’idea, misura, itera” richiede minuti o ore, non settimane. Senza ciclo veloce, l’innovazione algoritmica si ferma. NVIDIA rilascia CUDA nel 2007, e i primi paper che usano GPU per training di reti neurali appaiono nel 2009-2010 (Raina-Madhavan-Ng a Stanford). La differenza di velocità è 10-100x. Da li in poi, esperimenti che prima richiedevano un mese diventano possibili in un pomeriggio.

Vanishing/exploding gradient. Le reti profonde erano notoriamente difficili da addestrare. Sigmoid e tanh saturano (la derivata va a zero quando l’input è grande in valore assoluto), e i gradienti svaniscono propagando attraverso molti layer. Sepp Hochreiter aveva analizzato il problema nella sua tesi del 1991, ma le soluzioni complete arriveranno solo dopo: ReLU (Glorot-Bengio-Bordes 2011) come attivazione non saturante, residual connections (He et al. 2015) come bypass del flusso di gradiente.

Inizializzazione. Nessuno sapeva inizializzare bene i pesi. Inizializzazioni gaussiane con varianza fissa portavano a esplosione o saturazione. Xavier Glorot e Yoshua Bengio nel 2010 propongono l’inizializzazione di Xavier (varianza calibrata sulla dimensione del layer per sigmoid/tanh). Kaiming He nel 2015 propone l’inizializzazione di He per ReLU. Prima del 2010, l’inizializzazione era arte nera che cambiava da paper a paper.

Optimizer primitivi. SGD vanilla, momentum semplice (Polyak 1964), Nesterov accelerated gradient (1983). Funzionavano ma richiedevano tuning manuale del learning rate e schedule. Adam (Kingma-Ba 2014) e i suoi successori, che adattano il learning rate per parametro, arrivano solo dopo. Prima di Adam, addestrare una rete profonda richiedeva ore di expertise per scegliere il learning rate giusto.

Regolarizzazione assente. Dropout (Hinton et al. 2012, anche se l’idea circolava da prima) e batch normalization (Ioffe-Szegedy 2015) sono i due trucchi che rendono le reti profonde robuste. Senza di essi, l’overfitting era cronico, soprattutto su dataset piccoli. La comunità usava early stopping e weight decay, ma erano patch, non soluzioni strutturali.

Architetture immature. Senza ReLU, senza residual connections, senza attention, le reti profonde collassavano a poche decine di layer prima di diventare inaddestrabili. Le architetture moderne (ResNet con 100+ layer, transformer con centinaia di milioni di parametri) erano impensabili nel 2005. Ogni architettura nuova doveva essere validata sperimentalmente; la teoria seguiva (e segue ancora) la pratica con anni di ritardo.

SVM e ensemble dominavano. Per la maggior parte dei task della meta degli anni 2000, una SVM con kernel RBF e feature ingegnerizzate, o un gradient boosting con migliaia di alberi, era più accurata delle reti neurali, più veloce da addestrare, più interpretabile. Difficile competere. Cultura accademica: NIPS era più marginale di ICML negli anni 90-2000. I migliori PhD studenti spesso andavano altrove (kernel methods, modelli grafici, computer vision classica con SIFT e HOG). Gli editori di journal erano scettici verso paper neurali. Pubblicare una rete neurale in venue mainstream era più difficile che pubblicare un metodo statistico.

2006: Hinton-Salakhutdinov e il ritorno del “deep”

Sezione intitolata “2006: Hinton-Salakhutdinov e il ritorno del “deep””

Il primo segnale che le reti profonde stavano per tornare arriva nel luglio 2006. Geoffrey Hinton e Ruslan Salakhutdinov (allora suo PhD student a Toronto, oggi a CMU) pubblicano su Science il paper “Reducing the dimensionality of data with neural networks”. Il contributo tecnico è una ricetta per addestrare reti profonde (8-10 layer) in modo stabile, chiamata greedy layer-wise pretraining.

L’idea: invece di addestrare tutta la rete profonda end-to-end (che falliva per vanishing gradient), addestra strato per strato, dal basso verso l’alto, usando Restricted Boltzmann Machines (RBM) come building block per ogni strato. Una RBM è un modello probabilistico bipartito (visible units, hidden units) che si addestra con un algoritmo chiamato contrastive divergence. Una volta addestrate tutte le RBM in cascata, il modello completo si fine-tuna con backprop.

Il paper dimostra il metodo su un autoencoder profondo per riduzione di dimensionalita, e mostra che batte la PCA classica e altri baseline. Ma il punto culturale è più ampio: è la prima ricetta riproducibile per addestrare reti profonde, e Hinton la presenta esplicitamente come ritorno del “deep”. Il termine “deep learning” entra nel vocabolario corrente da qui in poi.

Il greedy layer-wise pretraining sarà superato in pochi anni. Quando arrivano ReLU (2011), inizializzazione di Xavier (2010), dropout (2012) e dataset abbondanti (ImageNet 2009), il pretraining non è più necessario: si può addestrare end-to-end con backprop standard. Ma il paper Science 2006 ha già fatto il suo lavoro: ha riportato il termine “deep” nel discorso pubblico e ha mostrato che l’idea di reti profonde non era morta.

Nel 2010, Andrew Ng a Stanford pubblica con Raina e Madhavan il paper “Large-scale deep unsupervised learning using graphics processors” che mostra speedup di ~70x usando GPU NVIDIA con CUDA per addestrare reti profonde. Nel 2011, il team di Dan Ciresan all’IDSIA di Schmidhuber vince diverse competizioni di image classification con CNN su GPU (German Traffic Sign Recognition Benchmark, 99.46% di accuratezza vs 98.84% degli umani). Tutti gli ingredienti sono ormai sul tavolo.

Nello stesso periodo, Glorot, Bordes e Bengio pubblicano nel 2011 a AISTATS il paper “Deep Sparse Rectifier Neural Networks” che propone l’uso di ReLU (f(x)=max(0,x)f(x) = \max(0, x)) come attivazione standard al posto di sigmoid e tanh. ReLU non satura per input positivi, e ha derivata costante 1 nella regione positiva: il vanishing gradient è drasticamente attenuato. Combinato con l’inizializzazione di Xavier (Glorot-Bengio 2010 a AISTATS), il training di reti profonde diventa stabile e veloce. Questi due paper, pubblicati in una conferenza di secondo rango rispetto a NeurIPS, sono in retrospettiva tra i più importanti del decennio: rimuovono due delle barriere che avevano bloccato il deep learning per vent’anni.

L’esplosione è a un anno di distanza: AlexNet a ImageNet 2012 (vedi imagenet-alexnet-2012 (in preparazione)). Krizhevsky, Sutskever e Hinton useranno ReLU, dropout, init di Glorot-modificato, training su due GPU NVIDIA GTX 580 in parallelo, e un dataset (ImageNet) di scala 14 milioni. Il risultato sarà un calo del top-5 error rate dal 26% del miglior sistema non-neurale al 15%, un margine talmente ampio che il dibattito accademico si chiude in pochi mesi: il deep learning è tornato.

Esempio 1: backprop a mano su un singolo esempio XOR

Sezione intitolata “Esempio 1: backprop a mano su un singolo esempio XOR”

Consideriamo la rete più piccola che apprende XOR: 2 input, 2 hidden con sigmoid, 1 output con sigmoid, MSE loss. Pesi inizializzati a piccoli valori random. Esempio: x=[1,0]x = [1, 0], y=1y = 1 (XOR di 1 e 0 è 1).

Forward pass:

  • z(1)=W(1)x+b(1)z^{(1)} = W^{(1)} x + b^{(1)}. Supponiamo W(1)=[[0.5,0.3],[0.2,0.4]]W^{(1)} = [[0.5, -0.3], [0.2, 0.4]], b(1)=[0.1,0.1]b^{(1)} = [0.1, -0.1]. Allora z(1)=[0.510.30+0.1,0.21+0.400.1]=[0.6,0.1]z^{(1)} = [0.5 \cdot 1 - 0.3 \cdot 0 + 0.1, 0.2 \cdot 1 + 0.4 \cdot 0 - 0.1] = [0.6, 0.1].
  • a(1)=σ(z(1))=[σ(0.6),σ(0.1)][0.646,0.525]a^{(1)} = \sigma(z^{(1)}) = [\sigma(0.6), \sigma(0.1)] \approx [0.646, 0.525].
  • Supponiamo W(2)=[0.7,0.5]W^{(2)} = [0.7, -0.5], b(2)=0.0b^{(2)} = 0.0. Allora z(2)=0.70.6460.50.525+0=0.4520.263=0.189z^{(2)} = 0.7 \cdot 0.646 - 0.5 \cdot 0.525 + 0 = 0.452 - 0.263 = 0.189.
  • y^=σ(0.189)0.547\hat{y} = \sigma(0.189) \approx 0.547.
  • L=(10.547)2/20.103L = (1 - 0.547)^2 / 2 \approx 0.103.

Backward pass:

  • δ(2)=(yy^)σ(z(2))=(10.547)0.547(10.547)0.4530.2480.112\delta^{(2)} = -(y - \hat{y}) \cdot \sigma'(z^{(2)}) = -(1 - 0.547) \cdot 0.547 \cdot (1 - 0.547) \approx -0.453 \cdot 0.248 \approx -0.112.
  • LW(2)=δ(2)a(1)=0.112[0.646,0.525][0.072,0.059]\frac{\partial L}{\partial W^{(2)}} = \delta^{(2)} \cdot a^{(1)} = -0.112 \cdot [0.646, 0.525] \approx [-0.072, -0.059].
  • δ(1)=(W(2))Tδ(2)σ(z(1))=[0.7,0.5]T(0.112)[σ(0.6),σ(0.1)][0.078,0.056][0.229,0.249][0.018,0.014]\delta^{(1)} = (W^{(2)})^T \delta^{(2)} \odot \sigma'(z^{(1)}) = [0.7, -0.5]^T \cdot (-0.112) \odot [\sigma'(0.6), \sigma'(0.1)] \approx [-0.078, 0.056] \odot [0.229, 0.249] \approx [-0.018, 0.014].
  • LW(1)=δ(1)xT=[0.018,0.014]T[1,0]T\frac{\partial L}{\partial W^{(1)}} = \delta^{(1)} \cdot x^T = [-0.018, 0.014]^T \cdot [1, 0]^T.

Aggiornamento con η=0.5\eta = 0.5: W(2)W(2)0.5W(2)W^{(2)} \leftarrow W^{(2)} - 0.5 \cdot \nabla W^{(2)}. E così via. Ripetuto su tutti i 4 esempi XOR per qualche centinaio di epoche, la rete converge e classifica correttamente XOR. Il punto è che il calcolo è meccanico: applicare la chain rule layer per layer.

def lstm_step(x_t, h_prev, c_prev, W, b):
# concatena h_prev e x_t
z = concat(h_prev, x_t)
# gate: ognuno è un sigmoid lineare di z
f = sigmoid(W.f @ z + b.f) # forget gate
i = sigmoid(W.i @ z + b.i) # input gate
o = sigmoid(W.o @ z + b.o) # output gate
c_tilde = tanh(W.c @ z + b.c) # candidate
# update additivo della cell state
c_t = f * c_prev + i * c_tilde
# output hidden è la cell state filtrata
h_t = o * tanh(c_t)
return h_t, c_t

L’addestramento usa backpropagation through time (BPTT): si srotola la sequenza, si calcola la loss, si propaga il gradiente all’indietro nel tempo. Grazie all’update additivo della cell state, il gradiente non vanisce.

Esempio 3: Hopfield network come memoria associativa

Sezione intitolata “Esempio 3: Hopfield network come memoria associativa”

Pseudocodice di una Hopfield network che memorizza tre pattern e li recupera da input rumorosi:

import numpy as np
def store_patterns(patterns):
# patterns: matrice (P, N) con valori in {-1, +1}
P, N = patterns.shape
W = np.zeros((N, N))
for mu in range(P):
W += np.outer(patterns[mu], patterns[mu])
W /= N
np.fill_diagonal(W, 0) # nessun self-loop
return W
def recall(W, x_init, max_iter=100):
x = x_init.copy()
for _ in range(max_iter):
for i in np.random.permutation(len(x)):
x[i] = 1 if W[i] @ x > 0 else -1
return x
# Memorizza tre pattern di 100 bit ciascuno
patterns = np.sign(np.random.randn(3, 100))
W = store_patterns(patterns)
# Input rumoroso: pattern 0 con 20% di bit flippati
noise = (np.random.rand(100) < 0.2) * 2 - 1
x_noisy = patterns[0] * noise
# Recupera: la dinamica converge al pattern memorizzato più vicino
x_clean = recall(W, x_noisy)
print("Match con pattern 0:", np.mean(x_clean == patterns[0]))

Il punto didattico: la Hopfield network non viene “addestrata” con backprop. I pesi sono impostati direttamente con la regola di Hebb. La memoria emerge dalla struttura dei minimi energetici. È un paradigma di apprendimento fondamentalmente diverso da quello di una rete moderna addestrata con gradient descent, ed è importante capirlo per non confondere “rete neurale” con “rete addestrata con backprop”.

Architettura concettuale di NETtalk in pseudocodice moderno:

class NETtalk(nn.Module):
def __init__(self):
super().__init__()
# input: 7 caratteri x 29 valori one-hot (alfabeto + spazi)
self.fc1 = nn.Linear(7 * 29, 80)
self.fc2 = nn.Linear(80, 26) # 26 fonemi
def forward(self, x):
x = sigmoid(self.fc1(x))
return softmax(self.fc2(x))
# Training: SGD con backprop, ~20k parole annotate
# Output: feed al sintetizzatore vocale per la demo audio

Il modello è deliberatamente piccolo e semplice. Ciò che lo rende iconico non è la sofisticazione tecnica: è la demo audio del balbettio che si trasforma in linguaggio.

L’eredità di questa traversata è ovunque nei sistemi AI moderni. Vale la pena enumerarla esplicitamente, perché è facile dimenticare quanto sia recente lo stack che usiamo.

Backpropagation è ancora l’algoritmo di addestramento di tutti i modelli moderni, inclusi GPT-4, Claude, Gemini, Llama, e tutti i transformer. Le varianti moderne (Adam, AdamW, Lion) sono optimizer sopra backprop, non sostituti. Ogni volta che addestri un modello, stai applicando la chain rule esattamente come Rumelhart-Hinton-Williams nel 1986. La differenza con il 1986 è la scala: oggi addestriamo modelli con miliardi di parametri su trilioni di token, ma il principio matematico è identico.

Le CNN dominano la computer vision, anche se i Vision Transformers (Dosovitskiy et al. 2020) stanno erodendo la quota dal 2020. ResNet, EfficientNet, ConvNeXt, YOLO sono tutti discendenti diretti di LeNet. La convoluzione come weight sharing rimane uno dei pattern architettonici più utili dell’intera disciplina.

LSTM è ancora usato in produzione: time series forecasting, control systems, speech recognition latency-critical, e in alcune pipeline NLP dove il latency budget non permette un transformer grande. Le GRU (Cho et al. 2014, semplificazione di LSTM) hanno una nicchia simile. Anche dove i transformer dominano, le idee LSTM sopravvivono nei meccanismi di gating presenti in alcuni modelli moderni.

L’idea di weight sharing (CNN) ispira molti pattern moderni: attention head sharing in multi-query attention, expert routing in Mixture of Experts (MoE), low-rank adaptation in LoRA. Ogni volta che vedi due moduli di una rete moderna che condividono parametri o struttura, stai vedendo un’eco di LeNet 1989.

Lezione strategica per chi gestisce ricerca o R&D: alcuni problemi tecnici aspettano semplicemente che il contesto (compute, dati, ingredienti accessori) maturi. Le reti neurali sono il caso da manuale. Hinton, LeCun, Bengio hanno coltivato un’idea per 25+ anni senza che ci fosse mai un risultato che giustificasse l’investimento sul piano commerciale immediato. Quando il contesto è maturato, il valore creato è stato di ordini di grandezza superiore al costo cumulato di tutto quel periodo. Riconoscere quando si è in fase di “incubazione lenta” e finanziarla anche contro il consenso di mercato è una skill di policy che paga molto, raramente.

Un aneddoto da Bell Labs vale più di mille parole sul clima dell’epoca. Negli anni 90, Bell Labs aveva nello stesso edificio Vladimir Vapnik (inventore di SVM moderne) e Yann LeCun (inventore di CNN moderne). Il management organizzava periodicamente “challenge” interni: chi faceva meglio su task di pattern recognition? Spesso vinceva Vapnik con SVM ben tarate. La narrativa interna era: SVM è rigorosa, ha teoria, converge. CNN è fragile, sensibile, richiede ingegneria. Per quasi un decennio, il management ha preferito investire in SVM. Solo molto dopo, retrospettivamente, si è capito che il limite di SVM era proprio quello che la rendeva attraente: la sua rigorosita matematica si basava su garanzie che valgono per dataset piccoli e per kernel fissati. Quando i dataset diventano grandi e quando l’estrazione di feature deve essere appresa end-to-end (anziché progettata a mano), CNN domina. Bell Labs aveva entrambe le tecnologie sotto lo stesso tetto e ha scelto, ragionevolmente per i criteri dell’epoca, quella sbagliata per il futuro. Lezione meta: il criterio “ha garanzie teoriche solide nel regime attuale” può essere il peggior predittore di “scalera nel regime futuro”.

Un caso di studio per chi finanzia ricerca: il programma CIFAR-NCAP ha investito in reti neurali profonde dal 2004 quando nessuno ci credeva. Il ROI di quell’investimento, in termini di valore di mercato dell’AI moderna, è incalcolabile. NVIDIA è passata da capitalizzazione di mercato di pochi miliardi nei primi 2000 a oltre tre trilioni nel 2024, in larga parte grazie al fatto che le sue GPU sono diventate il substrato hardware del deep learning. Quel valore è stato creato perché un piccolo gruppo di persone ha continuato a coltivare un’idea quando il consenso era altrove.

Vediamo i fraintendimenti tipici che la storia delle reti neurali post-Perceptrons attira, e in cosa sono sbagliati.

“Hinton ha inventato backprop”. Semplificazione storiografica diffusa. L’algoritmo esisteva: Werbos 1974 (tesi PhD Harvard), Linnainmaa 1970 (master thesis a Helsinki, in finlandese, nel contesto di automatic differentiation), Bryson-Ho 1969 (libro “Applied Optimal Control”, in chiave control theory). Rumelhart-Hinton-Williams 1986 lo resero popolare e dimostrarono in pratica che funzionava per reti multi-strato. Il merito storico va più equamente diviso: Werbos per la prima formulazione completa per reti feedforward, Rumelhart-Hinton-Williams per la popolarizzazione e la dimostrazione pratica, Linnainmaa per il quadro generale di automatic differentiation. Schmidhuber ha pubblicato vari blog post documentando questa attribuzione storiografica.

“Le reti neurali erano morte negli anni 90”. Falso. Vivevano in nicchie produttive: speech recognition (centri come ICSI Berkeley, IBM Research, BBN), riconoscimento cifre (LeNet a Bell Labs e poi NCR), guida autonoma (ALVINN a CMU), backgammon (TD-Gammon a IBM), language modeling (Bengio a Montreal). Producevano risultati pratici reali, deployati in produzione. Non erano il paradigma dominante, ma “non dominante” non significa “morto”. Era una nicchia attiva, finanziata in modo discontinuo, con conferenza dedicata (NIPS) e una comunità di poche centinaia di ricercatori a livello mondiale.

“AlexNet è apparso dal nulla”. Falso storiografico. 25+ anni di lavoro silenzioso lo precedettero. AlexNet (Krizhevsky-Sutskever-Hinton 2012) è la convergenza di: CNN da LeCun (1989-1998), ReLU da Glorot-Bengio-Bordes (2011), dropout da Hinton et al. (2012), GPU + CUDA da NVIDIA (2007), ImageNet da Fei-Fei Li (2009), backpropagation da Rumelhart-Hinton-Williams (1986). Ognuno di questi ingredienti ha richiesto un decennio di gestazione. AlexNet ha avuto il merito di assemblarli per primo in un risultato che ha vinto un benchmark pubblico in modo schiacciante (top-5 error 15.3% vs 26.2% del secondo classificato). Ma è stato un assemblaggio, non un’invenzione ex nihilo.

“LSTM era in attesa del transformer”. Falso. Tra il 2014 e il 2017, LSTM è stato il backbone dominante di NLP. Sutskever-Vinyals-Le 2014 introducono seq2seq basato su LSTM stacked. Bahdanau-Cho-Bengio 2014 aggiungono attention sopra LSTM. Google Translate switcha al sistema GNMT basato su LSTM nel settembre 2016 (Wu et al. paper), con miglioramento qualitativo massiccio. Il transformer (Vaswani et al., giugno 2017) sostituisce gradualmente LSTM in NLP, ma ha richiesto qualche anno per imporsi (BERT esce nell’ottobre 2018, GPT-2 nel febbraio 2019). Per circa cinque anni, LSTM è stato in produzione su scala globale.

“Schmidhuber ha inventato tutto”. Esagerazione delle sue rivendicazioni storiografiche, ma alcune sono legittime. LSTM (con Hochreiter, 1997) è indiscutibilmente sua. L’analisi del vanishing gradient (Hochreiter 1991, supervisionato da Schmidhuber) è indiscutibilmente sua. Ha pubblicato idee precoci su attention, su self-supervised learning, su GAN-like setups, alcune anni prima che diventassero mainstream sotto altri nomi. Ma non ha dominato i risultati pratici che hanno fatto esplodere il deep learning nel 2012; quelli sono usciti dalla “Canadian Mafia” (Hinton, Bengio, LeCun) e dai loro studenti. La controversia sull’attribuzione è un caso di studio interessante su come si formano i lineage scientifici e su come la priorità di un’idea non garantisce automaticamente il riconoscimento.

“La rete neurale del 1990 è la stessa cosa di una del 2020, solo più piccola”. Falso. Le reti del 1990 erano shallow (1-3 hidden layer) per ragioni strutturali (vanishing gradient, init scadente, optimizer primitivi, mancanza di regolarizzazione). Le reti profonde moderne (10-100+ layer per CNN, 12-100+ blocchi transformer) hanno comportamenti emergenti qualitativamente diversi: in-context learning, scaling laws, emergent abilities. Pensare che la differenza sia solo quantitativa porta a sottovalutare quanto siano cambiati gli ingredienti accessori (init, regolarizzazione, optimizer, attivazioni) dal 1990 al 2020.

“Backprop è il modo in cui il cervello impara”. Falso. Backprop richiede informazione di errore propagata all’indietro lungo gli stessi cammini sinaptici del forward pass, una proprieta che il cervello biologico non sembra avere (problema del weight transport). Questa critica, ben documentata da neuroscienziati come Yoshua Bengio stesso e Tim Lillicrap (DeepMind), è una linea di ricerca aperta. Sono state proposte alternative biologicamente più plausibili (feedback alignment di Lillicrap et al. 2016, target propagation di Bengio 2014, equilibrium propagation di Scellier-Bengio 2017), che funzionano in casi limitati ma non hanno ancora la generalita di backprop. Il fatto che backprop funzioni nelle reti artificiali non implica che sia la spiegazione dell’apprendimento biologico.

“Il connessionismo è una scuola di pensiero unificata”. Falso. Il connessionismo degli anni 80-90 era diviso in sotto-scuole con assunzioni filosofiche diverse. La scuola “PDP” di Rumelhart-McClelland enfatizzava le rappresentazioni distribuite e l’apprendimento da esempi. La scuola di Hopfield enfatizzava l’analogia con sistemi fisici. La scuola di Grossberg (Stephen Grossberg, neurofisiologo americano, attivo dagli anni 70) enfatizzava la continuita con la neurofisiologia e i modelli biologicamente plausibili (Adaptive Resonance Theory). La scuola di Schmidhuber-Hochreiter enfatizzava ottimizzazione e teoria della complessità. Quando si parla di “connessionismo” oggi, si tende a sintetizzare queste tradizioni sotto un’etichetta unica, ma all’epoca erano filoni distinti che competevano per attenzione e finanziamento.

“Le reti neurali oggi sono solo backprop scalato”. Parzialmente vero, parzialmente fuorviante. Backprop è ancora l’algoritmo di base, ma scalare richiede un’enorme quantità di scelte ingegneristiche: data parallelism, tensor parallelism, pipeline parallelism, ZeRO sharding, mixed precision, gradient accumulation, KV caching, attention varianti (multi-query, grouped-query, flash attention). Queste scelte non sono “solo scaling”: sono innovazioni tecniche che hanno richiesto ognuna anni di lavoro. Ridurre l’AI moderna a “backprop scalato” sottovaluta l’apparato ingegneristico necessario per renderla praticabile.

“NIPS era marginale negli anni 90”. Vero ma con sfumature. NIPS era piccola rispetto a ICML negli anni 90 (~700-1000 partecipanti negli anni 90, ~4000 nel 2010, esplosione dopo il 2012 fino a ~13000 nel 2019). Ma era anche più coesa: la comunità si conosceva personalmente, i workshop erano piccoli e intensi, il livello dei paper era alto. Un PhD student degli anni 90 che frequentava NIPS aveva accesso a una “scuola invisibile” che spesso valeva più di un programma di dottorato medio. Quando il filone esplode nel 2012, la comunità NIPS è già organizzata con codice condiviso, terminologia comune, progetti in corso. Non c’è fase di costruzione: c’è una comunità pronta a sfruttare il momento.

“Il vanishing gradient è stato risolto nel 1997 con LSTM”. Parzialmente. LSTM risolve il vanishing gradient per RNN ricorrenti su sequenze. Ma il vanishing gradient delle reti profonde feedforward (decine o centinaia di layer) non viene risolto fino a residual connections (He et al. 2015). Sono due problemi imparentati ma distinti, ed è importante non confonderli. Una CNN profonda del 2008 senza skip connections era altrettanto difficile da addestrare quanto una RNN classica.

  • primo-inverno-ai — il colpo di Minsky-Papert 1969 a cui questo capitolo risponde. Backprop su reti multi-strato risolve XOR, l’esempio canonico citato in “Perceptrons”.
  • rinascita-statistica-90 — il capitolo immediatamente precedente. Le reti neurali sono state IL filone marginale del paradigma statistico anni 90, dominato da SVM e Bayesian nets.
  • secondo-inverno-ai — mentre i sistemi esperti collassano (1987-1993), le reti neurali sopravvivono in laboratori industriali (Bell Labs, IBM) e accademici nordamericani.
  • storia-sintesi — il riassunto in cui questo capitolo è uno snodo cruciale: la traversata che porta da Minsky-Papert 1969 ad AlexNet 2012.
  • imagenet-alexnet-2012 (in preparazione) — il punto di esplosione che chiude la traversata. AlexNet eredità CNN da LeNet, ReLU dal 2011, dropout dal 2012, training su GPU.
  • word2vec-2013 (in preparazione) — embedding di parole, il primo grande successo NLP con reti neurali shallow dopo l’esplosione 2012.
  • seq2seq-2014 (in preparazione) — encoder-decoder basato su LSTM stacked. La rivincita di LSTM dopo 17 anni di nicchia.
  • attention-bahdanau-2014 (in preparazione) — attention come meccanismo aggiunto sopra LSTM in seq2seq, il primo passo verso il transformer.
  • mlp-backprop (in preparazione) (Parte VIII) — versione “tecnica” di backprop, indipendente dal contesto storico.
  • cnn-base (in preparazione) (Parte VIII) — convoluzione, stride, padding spiegati come tecnica ML.
  • lstm-gru (in preparazione) (Parte VIII) — LSTM e GRU come building block delle RNN moderne.
  • seq2seq-ml (in preparazione) (Parte VIII) — encoder-decoder come pattern architettonico.
  • gradienti-intuito (in preparazione) (Parte IV) — gradienti e derivate direzionali, il backbone matematico di backprop.
  • discesa-gradiente (in preparazione) (Parte IV) — SGD, momentum, Adam, il toolkit di optimizer che ha reso backprop pratico.
  • Rumelhart, D.E., Hinton, G.E., Williams, R.J. (1986). “Learning representations by back-propagating errors”. Nature, 323, 533-536. Il paper che ha riavviato il filone. Quattro pagine, leggibile in un’ora.
  • LeCun, Y., Bottou, L., Bengio, Y., Haffner, P. (1998). “Gradient-based learning applied to document recognition”. Proceedings of the IEEE, 86(11), 2278-2324. Il paper LeNet-5. Lungo (47 pagine) ma è la formulazione canonica di CNN, vale ogni pagina.
  • Hochreiter, S., Schmidhuber, J. (1997). “Long Short-Term Memory”. Neural Computation, 9(8), 1735-1780. Il paper LSTM. Tecnico ma fondamentale per capire perché LSTM è diverso da una RNN classica.
  • Schmidhuber, J. (2015). “Deep learning in neural networks: An overview”. Neural Networks, 61, 85-117. Sintesi storica esaustiva dal punto di vista di Schmidhuber. Da leggere con consapevolezza dell’angolo storiografico.
  • Goodfellow, I., Bengio, Y., Courville, A. (2016). Deep Learning. MIT Press. Capitolo 1 ricostruisce la storia. Capitoli 6 (deep feedforward) e 10 (sequence modeling) coprono i fondamenti tecnici. Disponibile gratuitamente online.
  • Olah, C. (2015). “Understanding LSTM Networks”. https://colah.github.io/posts/2015-08-Understanding-LSTMs/ — la spiegazione visuale standard di LSTM, accessibile e ben illustrata.
  • Hopfield, J.J. (1982). “Neural networks and physical systems with emergent collective computational abilities”. PNAS, 79(8), 2554-2558. Il paper Hopfield. Tre pagine, il taglio fisico-matematico aiuta a capire come la comunità di fisica statistica si è avvicinata alle reti neurali.
  • Hinton, G.E., Salakhutdinov, R.R. (2006). “Reducing the dimensionality of data with neural networks”. Science, 313(5786), 504-507. Il paper che riporta il termine “deep learning” nel discorso pubblico. Breve e leggibile.
  • Sejnowski, T.J. (2018). The Deep Learning Revolution. MIT Press. Memoir di uno dei protagonisti, scritto in stile narrativo. Buona ricostruzione del clima degli anni 80-90 dall’interno.
  • Andrew Ng, Stanford CS229 lectures (varie versioni). Le prime lezioni includono ricostruzioni storiche del paradigma neurale e statistico, utili come ripasso.
  • Werbos, P.J. (1994). The Roots of Backpropagation. Wiley. Ricostruzione storica del lineage di backprop dal punto di vista del suo principale precursore. Da leggere insieme alle versioni “ufficiali” della comunità Hinton per avere il quadro completo.
  • LeCun, Y. “A path towards autonomous machine intelligence” (2022, position paper FAIR). Visione retrospettiva e prospettica di uno dei tre Turing Award della “Canadian Mafia”. Aiuta a vedere come la traversata 1982-2010 ha plasmato l’agenda degli anni 2020.