Salta ai contenuti

Rinascita statistica anni 90: dalla logica alle probabilita, HMM, ML statistico

Tra il 1988 e i primi anni 2000 l’AI esce dal secondo inverno cambiando paradigma: smette di essere “manipolazione di simboli secondo regole scritte da esperti” e diventa “inferenza statistica e apprendimento automatico da dati annotati”. Cambiano i nomi (machine learning, data mining, intelligent systems al posto di “AI”), cambiano le conferenze (KDD nasce, NIPS cresce, AAAI declina), cambiano gli eroi (Pearl, Vapnik, Sutton, Jelinek, Breiman al posto di McCarthy, Minsky, Newell, Simon). Sono i venti anni che preparano, sotto la superficie, l’esplosione del deep learning del 2012 e degli LLM del 2022.

La rinascita statistica è lo snodo più sottovalutato della storia dell’AI. Tutti raccontano il Dartmouth Workshop, il primo inverno, i sistemi esperti, il deep learning. Pochi raccontano i venti anni in mezzo. È in quei venti anni che l’AI cambia natura: smette di chiamarsi “AI” e si presenta come machine learning, data mining, statistical learning, intelligent systems. Cambiano i nomi, le conferenze (KDD nasce, NIPS cresce, AAAI declina), gli eroi (Pearl, Vapnik, Sutton, Jelinek, Breiman al posto di McCarthy, Minsky, Newell, Simon).

Il salto rilevante non è “regole simboliche → reti neurali profonde”: è una sequenza in due tappe, “regole simboliche → apprendimento statistico → reti neurali profonde”, con venti anni di transizione fra la prima e la seconda. Saltare il pezzo intermedio crea una mappa mentale falsata. Spiega male perché su un dataset tabulare di mezzo milione di righe il gradient boosting resti spesso competitivo; perché le SVM continuino a essere usate in bioinformatica; perché la teoria PAC e i bound di Vapnik siano ancora il fondamento concettuale di ogni discorso serio sul training.

Il capitolo è anche un caso di studio sulla forma in cui una comunità scientifica esce da un inverno: cambiando vocabolario, abbassando le ambizioni a breve termine, costruendo risultati incrementali e verificabili in domini specifici. Non una rivoluzione, ma una serie di rivoluzioni piccole e composte. Le ricadute pratiche — quando ancora oggi conviene un modello statistico classico — sono in “Applicazioni pratiche”.

Questo capitolo prende il filo dalla fine di secondo-inverno-ai. Nel 1992 ICOT chiude il Fifth Generation Project, nel 1993 Symbolics fa Chapter 11, l’industria dei sistemi esperti perde l’80-90% del suo valore di mercato in cinque-sei anni. Il termine “AI” è stigmatizzato. Un grant del 1993 con “AI” nel titolo viene letto dai revisori come marketing residuo di un’epoca finita. Per oltre dieci anni i ricercatori del campo evitano la parola: si presentano come “machine learning researchers”, “statistical pattern recognition specialists”, “intelligent systems engineers”, “knowledge discovery and data mining people”.

Sotto questa apparenza nominale, però, qualcosa sta crescendo. Nei laboratori che non hanno chiuso — Bell Labs nel New Jersey, IBM Research a Yorktown Heights, CMU a Pittsburgh, UCLA a Los Angeles, Toronto, MIT, Stanford, Edimburgo, Cambridge — un’altra cultura matura. È una cultura più vicina alla statistica accademica che all’ingegneria del software. Il vocabolario base è: probabilita, distribuzione, stima, varianza, generalizzazione, kernel, overfitting, cross-validation. Il bersaglio non è “costruire una macchina pensante” ma “fittare una funzione che generalizzi bene da un campione di addestramento a dati non visti”.

Tre forze convergono e rendono possibile il rilancio.

La prima è la disponibilità di dati digitalizzati. Negli anni 80 i dati erano scarsi e in formati eterogenei. Negli anni 90 il mondo si digitalizza. Nascono i grandi corpora linguistici annotati: il Brown Corpus (un milione di parole di testo americano del 1961, annotato negli anni 60-70 a Brown University da Henry Kucera e W. Nelson Francis), il Penn Treebank (Mitchell Marcus, University of Pennsylvania, releases dal 1992-1993), gli Hansards canadesi (atti parlamentari paralleli inglese-francese, base dei modelli IBM di traduzione automatica). Nascono i primi grandi dataset etichettati di immagini (NIST per cifre scritte a mano, poi MNIST nel 1998). Walmart inizia a raccogliere dati di transazione su scala industriale, e nel 1995 escono i primi paper di market basket analysis su quei dati. Nel 1989-1991 Tim Berners-Lee (informatico britannico, 1955-, al CERN) inventa il World Wide Web; dal 1995 il web esplode e fornisce un substrato di testo che nessun corpus annotato a mano potrà mai eguagliare.

La seconda forza è hardware più economico. La legge di Moore continua a operare. Una workstation Sun del 1995 ha 100 volte la potenza di calcolo di una Lisp Machine del 1985 a un decimo del prezzo. Nel 1995 esce il Pentium Pro di Intel, nel 1999 il Pentium III. Diventa praticabile addestrare modelli con migliaia o decine di migliaia di esempi su un singolo desktop. Le SVM con kernel non lineari, computazionalmente costose, diventano runnable su dataset realistici. I gradient boosting con migliaia di alberi diventano addestrabili in qualche ora.

La terza forza è la maturità di tecniche probabilistiche. Le idee di base esistevano da prima. Il teorema di Bayes (Reverend Thomas Bayes, statistico e ministro presbiteriano britannico, 1701-1761, paper postumo 1763) è settecentesco. Gli HMM erano stati formalizzati da Leonard Baum, Lloyd Welch, Ted Petrie e altri all’IDA (Institute for Defense Analyses, Princeton) negli anni 60-70 per applicazioni crittografiche. La backpropagation era stata rilanciata da David Rumelhart, Geoffrey Hinton e Ronald Williams nel 1986. Ma la convergenza in un campo coerente avviene solo negli anni 90: Judea Pearl (informatico-filosofo israeliano-americano, 1936-, professore a UCLA, Turing Award 2011) da’ la grammatica delle reti bayesiane con il libro “Probabilistic Reasoning in Intelligent Systems” (Morgan Kaufmann 1988); Vladimir Vapnik (matematico russo-americano, 1936-, ai Bell Labs) formalizza le SVM moderne con Corinna Cortes nel 1995; Richard Sutton e Andrew Barto (informatici-cognitivisti americani, entrambi attivi dagli anni 80) consolidano il reinforcement learning con il libro “Reinforcement Learning: An Introduction” (MIT Press 1998); Christopher Manning e Hinrich Schutze sistematizzano l’NLP statistico con “Foundations of Statistical Natural Language Processing” (MIT Press 1999).

Vale la pena notare un dettaglio sociologico. Il paradigma statistico non nasce dentro i dipartimenti AI: nasce ai loro margini, in laboratori industriali (Bell Labs, IBM Research, NEC, Microsoft Research) e in dipartimenti di Computer Science con forte componente statistica e di Statistics applicata. Vapnik viene dalla matematica sovietica, non dall’AI accademica USA. Pearl ha background di ingegneria elettrica e filosofia. Breiman è uno statistico di Berkeley. Manning è un linguista computazionale. La rinascita avviene perché persone con culture diverse entrano nel campo dopo che gli “AI puristi” se ne sono andati.

Il paradigma simbolico classico, quello del Dartmouth Workshop (vedi dartmouth-1956) e dell’AI degli anni 60-80 (vedi ai-simbolica-anni-60), era costruito su un’assunzione esplicita: l’intelligenza è manipolazione di simboli secondo regole. Il programma di ricerca consisteva nel codificare quelle regole a mano, espandere ontologie esplicite, costruire knowledge bases enumerabili, dare al computer “ragionamento” come operazione su una rappresentazione formale leggibile. La “physical symbol system hypothesis” di Newell e Simon (1976) diceva esattamente questo: un sistema fisico capace di manipolare simboli secondo regole formali ha le condizioni necessarie e sufficienti per l’azione intelligente.

Il paradigma statistico capovolge l’assunzione. L’intelligenza non è regole esplicite; è inferenza dai dati sotto incertezza. Il computer non viene programmato con conoscenza, viene addestrato con esempi. La conoscenza non è un manufatto enumerabile, è un parametro statistico stimato da osservazioni. Una rete bayesiana cattura “se vedi tosse e febbre, è più probabile che si tratti di influenza che di reazione allergica” non come una regola IF-THEN scritta a mano, ma come un insieme di numeri (probabilita condizionali) stimati da migliaia di cartelle cliniche. Una SVM impara a distinguere mail spam da mail legittime non con una checklist di parole sospette, ma trovando l’iperpiano nello spazio delle feature che separa al meglio i due gruppi nel dataset di training.

La frase manifesto è di Frederick Jelinek (informatico-statistico ceco-americano, 1932-2010, capo del gruppo Continuous Speech Recognition di IBM Research e poi fondatore del CLSP a Johns Hopkins): every time I fire a linguist, the performance of our speech recognition system goes up. La frase circola in varie formulazioni dai primi anni 80; è provocazione per addetti ai lavori, ma punto teorico serio. Il messaggio è: nei domini dove esistono dati abbondanti, modelli statistici scoprono regolarità che gli esperti umani non sanno articolare. Un linguista sa parlare la sua lingua; non sa enumerare le centinaia di migliaia di n-grammi e le loro frequenze relative che servono a un modello di language model per fare bene speech recognition. Le regole grammaticali esplicite che il linguista produce sono una caricatura schematica della competenza linguistica reale, che è molto più fluida, contestuale, statistica.

C’è un eco filosofico esplicito a Michael Polanyi (chimico-fisico ungherese-britannico, 1891-1976, che nel libro “The Tacit Dimension” del 1966 aveva scritto: we know more than we can tell). La competenza esperta è in larga parte tacita; non si lascia ridurre a regole esplicite enumerabili. Il paradigma simbolico ha urtato contro questo limite per trent’anni; il paradigma statistico aggira il limite cambiando il problema. Non chiede più all’esperto di articolare le sue regole. Chiede agli esempi di parlare.

Sul piano pratico, il cambiamento è una sostituzione del lavoro umano. Il knowledge engineer del 1985 passava mesi a intervistare un esperto in domini specialistici (un medico, un geologo, un risk officer) e a codificare regole IF-THEN. Lo statistical ML practitioner del 1995 passa mesi a costruire un dataset annotato, a pulire dati, a scegliere feature significative, a scegliere un algoritmo (SVM, random forest, HMM), e poi lascia che l’algoritmo trovi i pattern nel dataset.

Il bottleneck si sposta da “estrarre conoscenza dall’esperto” a “costruire dataset di qualità”. È un trade-off, non una vittoria gratis. I dati costano. L’annotazione costa di più (se vuoi una sentence parsata, ti serve un linguista che la parsa, e parsare a mano un milione di frasi è costoso). Il bias dei dati si trasferisce nel modello: se i tuoi dati di training sono pieni di cartelle cliniche di pazienti adulti maschi bianchi, il tuo modello farà peggio su pazienti pediatrici, donne, persone di altre etnie. Sono problemi che il knowledge engineering non aveva, e che il paradigma statistico introduce.

Ma scala in modi che il knowledge engineering non scalava. Aggiungere mille esempi a un dataset di training è lineare. Aggiungere mille regole a una knowledge base è quadratico (perché le regole interagiscono in O(R^2) modi possibili, vedi il caso di XCON in secondo-inverno-ai). Quando i dati abbondano, il paradigma statistico vince per costruzione. Negli anni 90 i dati iniziano ad abbondare. Da li in poi è una questione di tempo.

Vediamo i blocchi principali del nuovo paradigma uno per uno. Sono mattoni separati, ma costituiscono un edificio coerente: tutti fondati sulla nozione di apprendimento da dati sotto incertezza, tutti con backbone matematico statistico-algoritmico.

Una Bayesian network (BN) è un grafo diretto aciclico (DAG, directed acyclic graph) di variabili aleatorie, dove ogni nodo XiX_i ha associata una conditional probability table (CPT), cioe la distribuzione condizionata di XiX_i dati i suoi genitori nel grafo: P(Xiparents(Xi))P(X_i \mid \text{parents}(X_i)). La distribuzione congiunta di tutte le variabili si fattorizza come prodotto delle condizionali locali:

P(X1,,Xn)=i=1nP(Xiparents(Xi))P(X_1, \ldots, X_n) = \prod_{i=1}^{n} P(X_i \mid \text{parents}(X_i))

In parole povere, questo dice che invece di specificare la probabilita di ogni possibile combinazione di valori delle nn variabili (che richiederebbe 2n12^n - 1 numeri se le variabili sono binarie), basta specificare per ogni variabile la sua probabilita date solo le variabili che la influenzano direttamente nel grafo. Se ogni nodo ha al massimo kk genitori, lo storage diventa O(n2k)O(n \cdot 2^k), lineare in nn invece che esponenziale.

Il vantaggio non è solo computazionale: è epistemico. Il grafo dichiara esplicitamente quali variabili influenzano quali altre. Se “Smoking” punta a “Lung Cancer” ma non a “Tuberculosis”, stai dicendo che il fumo è rilevante per il cancro al polmone ma non per la tubercolosi (la cui causa è batterica, non legata al fumo direttamente). Le BN sono quindi sia strumenti di ragionamento sotto incertezza, sia modelli causali leggibili.

L’inferenza in una BN è calcolare P(queryevidence)P(\text{query} \mid \text{evidence}), cioe la distribuzione di alcune variabili condizionata su altre osservate. Algoritmi:

  • Variable elimination: eliminazione marginalizzata sequenziale di variabili non query e non evidence. Esatto. Costo dipende dall’ordine di eliminazione e dalla treewidth del grafo.
  • Belief propagation: passaggio di messaggi nei polytree (BN senza cicli non orientati), esatto. Variante approssimata (loopy belief propagation) per BN generali.
  • Junction tree: decomposizione del grafo in cluster triangolari per inferenza esatta in casi più generali.
  • MCMC (Markov Chain Monte Carlo, Gibbs sampling): campionamento approssimato per BN intrattabili.

Il risultato di Cooper (1990) mostra che l’inferenza esatta in BN generali è NP-hard. In pratica, per topologie sparse (ognuno con pochi genitori) e per query mirate, l’inferenza è tractable.

L’esempio didattico canonico è la rete Asia di Steffen Lauritzen e David Spiegelhalter (statistici danese e britannico, paper “Local Computations with Probabilities on Graphical Structures”, JRSS B 1988). Otto variabili binarie:

  • A: Visit to Asia (paziente di recente in Asia, dove TB è più comune)
  • T: Tuberculosis
  • S: Smoking
  • L: Lung Cancer
  • B: Bronchitis
  • E: Either Tuberculosis or Lung Cancer (variabile derivata)
  • X: Positive X-ray
  • D: Dyspnea (difficoltà respiratoria)

Edges: ATA \to T, SLS \to L, SBS \to B, TET \to E, LEL \to E, EXE \to X, EDE \to D, BDB \to D.

Esempio di CPT per L: P(L=trueS=true)=0.10P(L = \text{true} \mid S = \text{true}) = 0.10, P(L=trueS=false)=0.01P(L = \text{true} \mid S = \text{false}) = 0.01. Per T: P(T=trueA=true)=0.05P(T = \text{true} \mid A = \text{true}) = 0.05, P(T=trueA=false)=0.01P(T = \text{true} \mid A = \text{false}) = 0.01.

Query tipica: dato un paziente con dyspnea positiva e radiografia positiva, calcolare P(L=trueD=true,X=true)P(L = \text{true} \mid D = \text{true}, X = \text{true}). Variable elimination marginalizza A, S, T, B, E e produce un valore posterior interpretabile. Il valore puntuale dipende dalle CPT di Lauritzen-Spiegelhalter; concettualmente, la rete combina due fonti di evidenza (X positiva, D positiva) per inferire la probabilita di una causa nascosta (Lung Cancer).

Applicazioni industriali: QMR-DT (Quick Medical Reference Decision-Theoretic, Heckerman, Horvitz et al.) come BN per diagnosi mediche con migliaia di malattie e sintomi; il Lumiere project di Eric Horvitz a Microsoft Research, le cui idee finiscono nell’Office Assistant (l’antenato di Clippy, che usava una BN per inferire l’intent dell’utente); Vista di NASA per fault diagnosis di sistemi spaziali; molti filtri spam dei primi 2000 (anche se la “naive Bayes” è un caso degenere di BN).

Un Hidden Markov Model (HMM) è un modello generativo di sequenze. Sotto una sequenza osservabile O=o1,,oTO = o_1, \ldots, o_T sta una sequenza nascosta di stati S=s1,,sTS = s_1, \ldots, s_T che evolve come una catena di Markov: lo stato al tempo t+1t+1 dipende solo dallo stato al tempo tt, non dalla storia più lunga. Le osservazioni sono generate dagli stati nascosti tramite una distribuzione di emissione.

I parametri di un HMM sono tre:

  • π\pi: distribuzione iniziale sugli stati, πi=P(s1=i)\pi_i = P(s_1 = i).
  • AA: matrice di transizione, Aij=P(st+1=jst=i)A_{ij} = P(s_{t+1} = j \mid s_t = i).
  • BB: matrice di emissione, Bij=P(ot=jst=i)B_{ij} = P(o_t = j \mid s_t = i) (per osservazioni discrete; per osservazioni continue, BB è una densita parametrica come una mistura di gaussiane).

Il tutorial canonico è di Lawrence Rabiner (ingegnere-informatico americano, ai Bell Labs, “A Tutorial on Hidden Markov Models and Selected Applications in Speech Recognition”, Proceedings of the IEEE 1989). Identifica tre problemi canonici, ognuno con un algoritmo standard:

  1. Evaluation: dato il modello e una sequenza di osservazioni, calcolare P(Omodello)P(O \mid \text{modello}). Algoritmo forward-backward in O(N2T)O(N^2 T) dove NN è il numero di stati e TT la lunghezza della sequenza. Usa programmazione dinamica per accumulare probabilita marginali.

  2. Decoding: data la sequenza di osservazioni, trovare la sequenza di stati nascosti più probabile S=argmaxSP(SO)S^* = \arg\max_S P(S \mid O). Algoritmo di Viterbi (Andrew Viterbi, ingegnere americano, 1935-, paper IEEE 1967, originariamente per decodifica di codici convoluzionali in telecomunicazioni), programmazione dinamica in O(N2T)O(N^2 T).

  3. Learning: dato un corpus di sequenze osservate, stimare i parametri π,A,B\pi, A, B del modello. Algoritmo di Baum-Welch (Leonard Baum, matematico statunitense, e collaboratori a IDA Princeton anni 60-70), un’istanza specializzata di Expectation-Maximization (EM) per HMM. Iterativamente: stima della distribuzione su sequenze nascoste data la stima corrente dei parametri (E-step), aggiornamento dei parametri data la stima delle sequenze (M-step).

La speech recognition diventa l’applicazione canonica e dominante. SPHINX di Kai-Fu Lee (informatico taiwanese-americano, 1961-, allora dottorando a CMU, oggi noto figure dell’AI in Cina) nel 1988 è il primo speaker-independent, large vocabulary, continuous speech recognizer basato su HMM. Lo stato nascosto è il fonema (o un sub-fonema, “senone”), l’osservazione è un vettore di feature acustiche estratte da una finestra temporale del segnale.

Dragon Systems, fondata da Janet e James Baker nel 1982 a West Newton MA, lancia DragonDictate nel 1990. È il primo prodotto commerciale di dictation. Costa 9.000 dollari, richiede training del singolo utente, e processa parole isolate (con pausa tra una parola e l’altra). Nel 1997 esce Dragon NaturallySpeaking, primo sistema di continuous dictation a prezzo consumer. Tutto basato su HMM.

IBM Continuous Speech Recognition group sotto Frederick Jelinek produce sistemi che ottengono word error rate progressivamente più bassi sui benchmark Switchboard (conversazioni telefoniche) e Wall Street Journal (lettura di articoli). I miglioramenti seguono una traiettoria di decadi: word error rate del 30%+ negli anni 90 scende sotto il 10% nei primi 2000 e sotto il 5% solo con l’avvento del deep learning post-2012.

Gli HMM dominano speech recognition per oltre vent’anni: dal 1988 al 2010-2012, quando le reti neurali profonde (DNN-HMM hybrid prima, end-to-end CTC e poi attention-based dopo) li soppiantano. Sono il caso paradigmatico di una tecnica che vince per generazioni e poi cede solo a un cambio di paradigma più radicale.

Le SVM (Support Vector Machines) trovano l’iperpiano separatore tra due classi che massimizza il margine, cioe la distanza dell’iperpiano dai punti più vicini di entrambe le classi. L’intuizione: tra tutti gli iperpiani che separano correttamente i dati di training, quello con il margine più grande generalizza meglio, perché è il più lontano possibile da entrambe le classi e quindi il meno sensibile a piccole perturbazioni.

Formalmente, dati esempi (xi,yi)(x_i, y_i) con yi{1,+1}y_i \in \{-1, +1\}, l’SVM hard-margin cerca ww e bb che minimizzano:

12w2soggetto ayi(wxi+b)1 i\frac{1}{2} \|w\|^2 \quad \text{soggetto a} \quad y_i (w \cdot x_i + b) \geq 1 \ \forall i

In parole povere: minimizza la norma di ww (che è inversamente proporzionale al margine) sotto il vincolo che ogni esempio sia classificato correttamente con margine almeno 1. È un problema di programmazione quadratica con un unico ottimo globale.

La versione soft-margin (Corinna Cortes, statistica e informatica danese, e Vladimir Vapnik, paper “Support-Vector Networks”, Machine Learning 1995) introduce variabili di slack ξi\xi_i per gestire dati non perfettamente separabili. Si minimizza:

12w2+Ciξi\frac{1}{2} \|w\|^2 + C \sum_i \xi_i

dove CC è un parametro di regolarizzazione che bilancia margine grande contro errori di training piccoli. Un CC alto privilegia training accuracy a costo di generalizzazione; un CC basso privilegia margine grande a costo di accettare più errori. La scelta di CC tipicamente si fa via cross-validation.

Il kernel trick è l’idea concettualmente più importante. La formulazione duale del problema SVM dipende dai dati di training solo attraverso prodotti scalari xixjx_i \cdot x_j. Questa osservazione apre una porta: sostituire il prodotto scalare con una funzione kernel K(xi,xj)K(x_i, x_j) equivale a calcolare il prodotto scalare in uno spazio di feature implicito ϕ(xi)ϕ(xj)\phi(x_i) \cdot \phi(x_j), senza mai calcolare ϕ\phi esplicitamente.

Kernel comuni:

  • Lineare: K(x,y)=xyK(x, y) = x \cdot y.
  • Polinomiale: K(x,y)=(xy+c)dK(x, y) = (x \cdot y + c)^d.
  • RBF gaussiano: K(x,y)=exp(γxy2)K(x, y) = \exp(-\gamma \|x - y\|^2).
  • Sigmoide: K(x,y)=tanh(αxy+c)K(x, y) = \tanh(\alpha x \cdot y + c).

Il kernel RBF, in particolare, corrisponde a uno spazio di feature implicito a dimensione infinita. Questo significa che una SVM con kernel RBF può, in linea di principio, separare qualsiasi configurazione finita di punti — a patto di scegliere γ\gamma e CC in modo da non overfittare.

L’esempio classico didattico: due cerchi concentrici in R2\mathbb{R}^2 (classe interna e classe esterna) non sono linearmente separabili. Nessun iperpiano (linea retta) li separa correttamente. Ma se si proietta ogni punto (x1,x2)(x_1, x_2) in R3\mathbb{R}^3 via ϕ(x1,x2)=(x1,x2,x12+x22)\phi(x_1, x_2) = (x_1, x_2, x_1^2 + x_2^2), i due cerchi diventano due “altezze” diverse nello spazio 3D, separabili da un piano orizzontale. Il calcolo non avviene mai esplicitamente in R3\mathbb{R}^3: avviene in R2\mathbb{R}^2 tramite un kernel polinomiale di grado 2.

Il fondamento teorico delle SVM è la VC theory di Vapnik e Alexey Chervonenkis (matematici sovietici, lavoro fondamentale 1971). Definisce la VC dimension come misura della capacità di una classe di funzioni di “frantumare” punti, e fornisce bound di generalizzazione: l’errore atteso su dati nuovi è limitato dall’errore di training più un termine che cresce con la VC dimension e decresce con la dimensione del training set. È il primo framework rigoroso che lega capacità del modello a generalizzazione, e resta uno dei contributi teorici più importanti del ML.

Le SVM dominano la classificazione tra il 1995 e il 2010-2012. Domini di forza: classificazione testuale (categorizzazione di documenti, filtri spam pre-Gmail), bioinformatica (classificazione di geni, prediction di struttura proteica), riconoscimento di scrittura, speaker recognition, molti altri. La loro forza pratica è un ottimo trade-off tra accuratezza e modesto tuning su dataset medio-piccoli, e la disponibilità di librerie efficienti come LIBSVM (Chih-Chung Chang e Chih-Jen Lin, National Taiwan University, dal 2001) e SVMlight (Thorsten Joachims, Cornell, dal 1999).

L’idea generale degli ensemble methods è che combinare modelli “deboli” produce un modello “forte”. Formalmente: il framework PAC learning (Probably Approximately Correct, Leslie Valiant, informatico britannico-americano, paper Communications of the ACM 1984) e il successivo risultato di Robert Schapire (1990, “The Strength of Weak Learnability”) dimostrano che un weak learner che fa appena meglio di random guess può essere boosted in uno strong learner con accuracy arbitrariamente alta. È un risultato sorprendente: significa che la barriera per costruire un buon classifier è molto più bassa di quanto si pensasse.

I decision trees sono il blocco base degli ensemble. ID3 (Iterative Dichotomiser 3, John Ross Quinlan, informatico australiano, 1986) costruisce alberi splittando ricorsivamente sulle feature che massimizzano l’information gain (riduzione di entropia). C4.5 (Quinlan 1993, libro “C4.5: Programs for Machine Learning”) è la versione matura: gestisce feature numeriche e categoriche, missing values, pruning post-construction. CART (Classification and Regression Trees, Leo Breiman, Jerome Friedman, Richard Olshen, Charles Stone 1984, libro Wadsworth) è la versione statistica con criterio Gini per classificazione e MSE per regressione.

I decision tree singoli sono interpretabili (un albero piccolo si legge come una sequenza di domande IF-THEN-ELSE) ma instabili: piccole variazioni nei dati di training producono alberi molto diversi. Gli ensemble curano questa instabilita.

Bagging (Bootstrap Aggregating, Breiman 1996) addestra molti modelli (tipicamente alberi) su bootstrap sample del training set — campioni casuali con replacement della stessa dimensione del dataset originale — e media le predizioni (regressione) o le vota (classificazione). Riduce la varianza del modello senza aumentare il bias.

AdaBoost (Adaptive Boosting, Yoav Freund e Robert Schapire 1995, paper completo “A Decision-Theoretic Generalization of On-Line Learning and an Application to Boosting”, JCSS 1997) è il primo algoritmo boosting pratico. Addestra weak learners in sequenza, ognuno pesando di più gli esempi che il precedente ha sbagliato. La predizione finale è una somma pesata dei weak learners. Pseudocodice:

inizializza pesi w_i = 1/n per ogni esempio i
per t = 1, ..., T:
addestra weak learner h_t sui dati pesati con w
calcola errore pesato eps_t = sum_i w_i * I(h_t(x_i) != y_i)
alpha_t = 0.5 * log((1 - eps_t) / eps_t)
aggiorna pesi: w_i <- w_i * exp(-alpha_t * y_i * h_t(x_i))
normalizza w
classifier finale H(x) = sign(sum_t alpha_t * h_t(x))

In parole povere: ogni round, trova il classifier debole che funziona meglio sui dati pesati, calcola un peso per quel classifier proporzionale alla sua bonta, e aumenta il peso degli esempi che ha sbagliato per il prossimo round. Il classifier finale è il voto pesato di tutti i deboli.

Random Forests (Breiman 2001, paper su Machine Learning) combina bagging con random feature selection a ogni split: costruisce N alberi indipendenti su bootstrap sample, e a ogni split sceglie il miglior split tra un sottoinsieme casuale di feature (tipicamente p\sqrt{p} feature su pp totali per classificazione). Le predizioni sono mediate. Il risultato è robusto, parallelizzabile, e ha pochissimi iperparametri da tunare (numero di alberi, dimensione del subsample di feature).

Gradient Boosting (Jerome Friedman, statistico americano di Stanford, 2001 “Greedy Function Approximation: A Gradient Boosting Machine”, Annals of Statistics) generalizza AdaBoost: ogni nuovo modello fitta i gradienti negativi della loss del modello corrente, in pratica i residui se la loss è MSE. XGBoost (Tianqi Chen e Carlos Guestrin, KDD 2016), LightGBM (Microsoft, 2017) e CatBoost (Yandex, 2017) sono le implementazioni industriali moderne, dominanti su tabular data ancora oggi.

L’RL (Reinforcement Learning) studia l’agente che apprende per tentativi: in ogni stato sceglie un’azione, riceve una ricompensa (reward) dall’ambiente, transita a un nuovo stato, aggiorna la sua policy (la funzione che dato uno stato sceglie un’azione). L’obiettivo è massimizzare la somma scontata delle ricompense future.

Il framework formale è il Markov Decision Process (MDP, Richard Bellman, matematico americano, anni 50): tupla (S,A,P,R,γ)(S, A, P, R, \gamma) con stati SS, azioni AA, transizioni P(ss,a)P(s' \mid s, a), reward R(s,a)R(s, a), discount factor γ[0,1]\gamma \in [0, 1] che pesa meno le ricompense future rispetto a quelle immediate.

Il TD-learning (Temporal Difference, Richard Sutton 1988, paper “Learning to Predict by the Methods of Temporal Differences”, Machine Learning) è il principio: aggiornare la stima del valore di uno stato sulla base della differenza tra la previsione corrente e la previsione successiva più reward osservata. È la spina dorsale di tutto l’RL value-based.

Il Q-learning (Christopher Watkins, informatico britannico, tesi PhD Cambridge 1989, paper Watkins-Peter Dayan 1992 “Q-learning”, Machine Learning) apprende la funzione Q(s,a)=Q(s, a) = expected return partendo da ss, eseguendo aa, e seguendo poi la policy ottimale. Update rule:

Q(s,a)Q(s,a)+α[r+γmaxaQ(s,a)Q(s,a)]Q(s, a) \leftarrow Q(s, a) + \alpha \left[ r + \gamma \max_{a'} Q(s', a') - Q(s, a) \right]

In parole povere: aggiorna la stima del valore di (s,a)(s, a) verso “reward immediata più valore scontato del migliore stato successivo”, con learning rate α\alpha. La cosa notevole è che QQ converge alla policy ottimale anche se l’agente esplora con una policy diversa (epsilon-greedy, per esempio): è un algoritmo off-policy.

TD-Gammon (Gerald Tesauro, IBM Research, 1992 “Practical Issues in Temporal Difference Learning”) è la dimostrazione pratica memorabile: una rete neurale che apprende per self-play a giocare a backgammon, usando TD(λ\lambda) come algoritmo di apprendimento. Tesauro lascia il sistema giocare contro se stesso per centinaia di migliaia di partite. TD-Gammon raggiunge livello expert e modifica strategie di apertura considerate ottimali da decenni di teoria umana — è uno dei primi casi documentati di un sistema artificiale che insegna qualcosa di nuovo agli umani in un dominio di gioco. È anche un antesignano diretto di AlphaGo (DeepMind 2016) e AlphaZero (DeepMind 2017), che usano la stessa idea di self-play + value network ma su domini molto più grandi.

Il libro fondante del campo è Sutton e Barto, “Reinforcement Learning: An Introduction” (MIT Press, prima edizione 1998, seconda edizione 2018). Disponibile gratuitamente online (incompleteideas.net/book/the-book-2nd.html), è il testo standard, scritto in stile didattico accessibile con focus sull’intuizione prima del formalismo. La seconda edizione integra anche il deep RL.

Il manifesto dell’NLP statistico è Christopher Manning (linguista computazionale australiano, professore a Stanford) e Hinrich Schutze (informatico tedesco, oggi a Monaco), “Foundations of Statistical Natural Language Processing” (MIT Press 1999). Il libro stabilisce il vocabolario del campo: n-gram language models, hidden Markov models per part-of-speech tagging, probabilistic context-free grammars, statistical parsing (Eugene Charniak parser, Michael Collins parser), word sense disambiguation come classificazione, information retrieval.

Gli n-gram language models sono il modello probabilistico minimale per il linguaggio:

P(wnw1,,wn1)P(wnwnk+1,,wn1)P(w_n \mid w_1, \ldots, w_{n-1}) \approx P(w_n \mid w_{n-k+1}, \ldots, w_{n-1})

per qualche kk piccolo (tipicamente 3, “trigram model”). In parole povere: la probabilita della prossima parola dipende solo dalle ultime k1k-1 parole, non dalla storia più lunga. È un’approssimazione brutale (il linguaggio ha dipendenze a lungo raggio) ma sorprendentemente efficace per molte applicazioni se il kk e i dati sono abbastanza grandi.

Le tecniche di smoothing (Kneser-Ney, Good-Turing, Witten-Bell) gestiscono il problema critico degli n-grammi mai visti nel training corpus: a un trigramma assente non si può assegnare probabilita zero, perché andrebbe a moltiplicare nella formula del language model e annullerebbe l’intera frase. Il smoothing redistribuisce massa di probabilita dai n-grammi visti a quelli non visti in modo principled.

Gli n-gram sono il backbone di ASR, MT, spell checking, e in generale di ogni applicazione NLP fino al 2010-2014. I language models neurali (Bengio 2003, poi LSTM-LM e Transformer-LM) li sostituiscono gradualmente dal 2010 in poi. La filiazione concettuale fra n-gram e modelli linguistici contemporanei (next-token prediction, probabilità condizionata su contesto) è discussa in “Applicazioni pratiche”.

La Statistical Machine Translation ha come pietra miliare il paper IBM “The Mathematics of Statistical Machine Translation: Parameter Estimation” di Peter Brown, Vincent Della Pietra, Stephen Della Pietra e Robert Mercer (Computational Linguistics 1993, idee dal paper del 1990). I “modelli IBM” (Modello 1, 2, 3, 4, 5, in ordine di complessità crescente) decompongono P(targetsource)P(\text{target} \mid \text{source}) tramite alignment latenti tra parole sorgenti e parole target, addestrabili da corpora paralleli con EM. I Hansards canadesi (atti parlamentari inglese-francese) sono il corpus di partenza.

L’idea è radicale: tradurre senza grammatiche esplicite, senza lessici fatti a mano, senza regole di trasferimento. Solo: dato un corpus di milioni di coppie di frasi tradotte, stimare la probabilita di una traduzione. La SMT domina il campo dal 1993 al 2014, quando la Neural Machine Translation (Sutskever, Vinyals, Le 2014; Bahdanau, Cho, Bengio 2014) la sostituisce. Ma il framing concettuale — modelli probabilistici addestrati su corpora paralleli, valutati con metriche statistiche come BLEU — resta lo stesso.

WordNet (George Miller, psicologo cognitivo a Princeton, sviluppato dal 1985, releases pubbliche dal 1995) è un database lessicale semantico per l’inglese: synset (gruppi di sinonimi) collegati da relazioni semantiche (iponimia “cane è un mammifero”, meronimia “ruota è parte di automobile”, antonimia “caldo vs freddo”). È il primo grande lexical resource computazionale ed è la spina dorsale di molte applicazioni NLP per due decenni. Gli embedding distribuzionali post-2013 (word2vec, GloVe) lo rimpiazzano largamente, ma WordNet è ancora usato dove serve struttura simbolica esplicita.

Tre tecniche dominano la computer vision pre-2012, tutte basate su feature engineering manuale seguita da classificazione statistica.

SIFT (Scale-Invariant Feature Transform, David Lowe, informatico canadese all’University of British Columbia, paper short 1999, paper completo “Distinctive Image Features from Scale-Invariant Keypoints” su IJCV 2004) costruisce descrittori di keypoint robusti a rotazione, scala, e illuminazione moderata. Lo scale-space è costruito tramite differenze di gaussiane (DoG, Difference of Gaussians); i keypoint sono estremi locali nello scale-space (massimi o minimi rispetto a vicini in spazio e scala); ogni keypoint è descritto da un istogramma di orientazioni del gradiente in finestre 4x4 attorno al punto. Il descrittore finale è un vettore 128-dimensionale.

SIFT è l’algoritmo di matching standard fino al 2012-2014. Usato per stitching di panorami (Photoshop, Hugin), 3D reconstruction da multiple foto (structure from motion), object recognition, robot vision, augmented reality. SIFT è brevettato (UBC, scaduto nel 2020) e per anni è stato disponibile in OpenCV solo nel modulo non-free.

Viola-Jones (Paul Viola e Michael Jones, ricercatori a Mitsubishi Electric Research Labs, paper “Rapid Object Detection using a Boosted Cascade of Simple Features”, CVPR 2001) è il primo face detector real-time. Usa Haar-like features (somme di intensità su rettangoli adiacenti, una specie di filtri rapidi di edge detection), una integral image che permette di calcolare qualsiasi somma rettangolare in O(1)O(1) dopo un preprocessing O(N)O(N), AdaBoost per selezionare le feature più discriminative tra le centinaia di migliaia possibili, e una cascade di classifier che scarta rapidamente i rectangle non-face nei primi stadi e dedica calcolo agli stadi successivi solo ai candidati promettenti.

Diventa lo standard nelle fotocamere digitali e webcam (face detection in fotocamera Canon, Sony, Nikon, ecc.) per circa un decennio. Quando vedi il rettangolo verde attorno alla faccia nel mirino di una compatta del 2008, dietro c’è Viola-Jones.

HOG (Histogram of Oriented Gradients, Navneet Dalal e Bill Triggs, ricercatori INRIA Rhone-Alpes, paper “Histograms of Oriented Gradients for Human Detection”, CVPR 2005) è la spina dorsale del pedestrian detection. Divide l’immagine in celle di pixel, calcola istogrammi di orientazioni del gradiente per cella, normalizza in blocchi sovrapposti per robustezza all’illuminazione. Combinato con SVM lineare, da’ detection di pedoni di qualità commerciale. HOG-SVM è lo standard fino a R-CNN (Girshick et al. 2014).

Il pattern comune di tutti e tre: pipeline a due stadi di feature extraction (calcolo manuale di feature visive significative) seguita da classificazione statistica (SVM, AdaBoost, random forest). Il deep learning post-2012 unifica i due stadi imparando le feature direttamente dai dati. Ma fino al 2012, separare feature engineering e classifier era il paradigma di default.

Il mito comune che “le reti neurali erano morte negli anni 90” è falso. Esistevano e producevano risultati pratici, ma non dominavano.

LeNet-5 (Yann LeCun, Leon Bottou, Yoshua Bengio, Patrick Haffner, paper “Gradient-Based Learning Applied to Document Recognition”, Proceedings of the IEEE 1998) è una CNN deployata in produzione per il riconoscimento di codici postali (USPS) e per la lettura automatica di assegni bancari ai Bell Labs e poi a NCR. LeNet-5 ha 7 layer (convoluzionali e fully-connected alternati), addestrata su MNIST con backpropagation. Processa, secondo i numeri pubblicati, una buona percentuale degli assegni cartacei degli USA negli anni tardo-90.

LSTM (Long Short-Term Memory, Sepp Hochreiter e Jurgen Schmidhuber, informatici tedeschi-austriaci, paper “Long Short-Term Memory”, Neural Computation 1997) introduce le gating cells che risolvono il problema del vanishing gradient nelle RNN classiche. L’idea è un meccanismo di gating (input gate, forget gate, output gate) che decide cosa scrivere in una cell state lineare, permettendo al gradiente di propagarsi indietro nel tempo per centinaia di passi senza esplodere o annullarsi. È un’idea fondamentale, ma poco usata fino al 2010-2014, quando hardware e dati permettono di addestrare LSTM su sequenze lunghe e diventano lo stato dell’arte in speech recognition, MT, language modeling per qualche anno.

Le Hopfield networks (John Hopfield, fisico americano, 1982) e le Self-Organizing Maps di Teuvo Kohonen (informatico finlandese, anni 80-90) restano in nicchia, soprattutto in psicologia computazionale e in alcune applicazioni di clustering visualizzativo.

NIPS (Neural Information Processing Systems, prima conferenza 1987 a Denver, oggi NeurIPS) cresce costantemente come venue per il connectionism e per il statistical machine learning. La famosa frase di Geoffrey Hinton (informatico-cognitivista britannico-canadese, 1947-, professore a Toronto, Turing Award 2018), we can’t get no respect, riassume la posizione marginale ma non morta della ricerca neural net dei 90. Hinton, LeCun e Bengio mantengono la fiamma del connectionism per vent’anni di marginalita prima di vedere la rivincita post-2012.

L’information retrieval matura come campo. TF-IDF (term frequency-inverse document frequency, formalizzato da Karen Sparck Jones, linguista computazionale britannica, e Gerard Salton, informatico tedesco-americano, negli anni 70-80) è la metrica base per pesare termini in documenti. BM25 (Best Matching 25, Stephen Robertson e collaboratori, anni 90) raffina TF-IDF con una saturazione del peso dei termini frequenti.

Latent Semantic Analysis (LSA, Scott Deerwester, Susan Dumais, et al. 1990) applica la SVD (Singular Value Decomposition) alla matrice term-document, producendo una rappresentazione vettoriale a bassa dimensione di documenti e termini. È antesignana degli embedding moderni: due termini con significati simili finiscono in punti vicini nello spazio LSA, anche se non co-occorrono mai esplicitamente nello stesso documento. LSA non scala oltre corpora medi (la SVD su matrici sparse di milioni di documenti è costosa), ma l’idea concettuale resta: rappresentare significati come vettori in uno spazio appreso.

PageRank (Larry Page e Sergey Brin, dottorandi a Stanford, paper “The Anatomy of a Large-Scale Hypertextual Web Search Engine”, WWW conference 1998) calcola l’autorità di una pagina web come distribuzione stazionaria di un random walk sul grafo dei link. Algoritmo eigenvector / power iteration. Non è AI in senso stretto, ma usa lo stesso vocabolario matematico (catene di Markov, decomposizioni spettrali) ed è parte della stessa cultura statistico-algoritmica. Google viene fondata sull’idea, e nel giro di pochi anni domina il search.

Il campo si professionalizza. ICML (International Conference on Machine Learning) si consolida. NIPS cresce. KDD (Knowledge Discovery and Data Mining, prima conferenza 1995) nasce come venue dedicato al data mining applicato. Il textbook di Tom Mitchell (informatico americano, professore a CMU), “Machine Learning” (McGraw-Hill 1997), è il primo trattato organico del campo. Mitchell propone la definizione operativa che resta canonica:

A computer program is said to learn from experience E with respect to some task T and performance measure P, if its performance on T, as measured by P, improves with experience E.

In parole povere: un programma “impara” se, dato più esperienza, fa meglio una task secondo una metrica misurabile. La definizione è importante perché è operativa: non parla di intelligenza, di comprensione, di significato. Parla di una metrica che migliora con i dati. È la definizione che permette al campo di andare avanti senza impantanarsi nelle questioni filosofiche del paradigma simbolico.

Il libro di Trevor Hastie, Robert Tibshirani e Jerome Friedman, “The Elements of Statistical Learning” (Springer 2001, seconda edizione 2009, disponibile gratuitamente su hastie.su.domains/ElemStatLearn/), è il riferimento statistico avanzato: regression, classification, splines, additive models, trees, boosting, SVM, neural nets, unsupervised learning. Stabilisce il ponte tra statistica accademica e ML applicato.

KDD come campo enfatizza la pipeline pratica: data cleaning, feature extraction, pattern discovery, evaluation, deployment. Apriori (Rakesh Agrawal e Ramakrishnan Srikant, IBM Almaden, paper “Fast Algorithms for Mining Association Rules”, VLDB 1994) è l’algoritmo per association rule mining. L’esempio canonico (probabilmente apocrifo ma didattico) è “i clienti che comprano pannolini il venerdi sera comprano anche birra” — una correlazione che permetterebbe a un retailer di posizionare i due prodotti vicini.

Classification trees, clustering (k-means, DBSCAN), anomaly detection sono la cassetta degli attrezzi standard. I casi business paradigmatici: customer segmentation in banking e telco, market basket analysis in retail, fraud detection in carte di credito (uno dei primi grandi successi del ML in produzione, Visa e MasterCard adottano sistemi neural network e statistici nei mid-90s che processano transazioni in tempo reale), credit scoring, churn prediction.

La rete Asia (Lauritzen-Spiegelhalter 1988) è l’esempio didattico canonico di Bayesian network. Otto variabili binarie (descritte sopra), edge dal grafo, CPT specificate.

Considera un paziente che arriva in clinica con dyspnea (D = true) e radiografia toracica positiva (X = true). Vogliamo calcolare la probabilita di lung cancer dato l’evidenza: P(L=trueD=true,X=true)P(L = \text{true} \mid D = \text{true}, X = \text{true}).

Procedimento (variable elimination):

  1. Marginalizza A: P(T)=AP(TA)P(A)P(T) = \sum_A P(T \mid A) P(A).
  2. Calcola P(E)=TLP(ET,L)P(T)P(LS)P(S)P(E) = \sum_T \sum_L P(E \mid T, L) P(T) P(L \mid S) P(S) per ogni valore di S.
  3. Combina con l’evidenza X = true: P(EX=true)P(X=trueE)P(E)P(E \mid X = \text{true}) \propto P(X = \text{true} \mid E) P(E).
  4. Combina con D = true: incorpora P(D=trueE,B)P(BS)P(D = \text{true} \mid E, B) P(B \mid S).
  5. Marginalizza tutto eccetto L per ottenere il posterior su L.

Il risultato puntuale dipende dalle CPT specifiche; concettualmente, la rete combina due fonti di evidenza (X positiva, D positiva) per inferire la probabilita di una causa nascosta. Una pipeline di codice Python con la libreria pgmpy o bnlearn (R) implementa il calcolo in poche righe.

Esempio 2: SVM con kernel RBF su dati non separabili

Sezione intitolata “Esempio 2: SVM con kernel RBF su dati non separabili”

Dataset sintetico: 200 punti in R2\mathbb{R}^2, distribuiti in due classi. Classe 0: 100 punti dentro un cerchio di raggio 1 centrato nell’origine. Classe 1: 100 punti in un anello tra raggio 2 e raggio 3.

from sklearn import svm
from sklearn.model_selection import train_test_split
# X: matrice (200, 2), y: vettore (200,) con valori 0 o 1
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
# SVM lineare: errore alto per costruzione
clf_linear = svm.SVC(kernel='linear', C=1.0)
clf_linear.fit(X_train, y_train)
acc_linear = clf_linear.score(X_test, y_test) # circa 0.5
# SVM con kernel RBF: separa correttamente
clf_rbf = svm.SVC(kernel='rbf', gamma=1.0, C=1.0)
clf_rbf.fit(X_train, y_train)
acc_rbf = clf_rbf.score(X_test, y_test) # > 0.95

L’SVM lineare ha accuracy ~50% perché le due classi sono concentriche e nessun iperpiano (linea retta) le separa. L’SVM con kernel RBF realizza implicitamente una mappa in uno spazio di Hilbert a infinite dimensioni dove i due cerchi diventano linearmente separabili, e l’accuracy supera il 95%.

Visualizzazione: la decision boundary in R2\mathbb{R}^2 è una curva chiusa che racchiude la classe 0 e separa la classe 1 esterna. Non è una linea retta perché il kernel RBF la curva implicitamente.

Mondo: griglia 3x3 con stato iniziale in (0, 0), goal in (2, 2) con reward +10, pit in (1, 1) con reward -10 e terminazione, altri stati con reward -1 (per incentivare percorsi brevi). Azioni: up, down, left, right. Discount γ=0.9\gamma = 0.9, learning rate α=0.1\alpha = 0.1, esplorazione epsilon-greedy con ϵ=0.1\epsilon = 0.1.

Pseudocodice Q-learning:

Q = {(s, a): 0 for s in states for a in actions}
for episode in range(1000):
s = (0, 0)
while not terminal(s):
if random() < epsilon:
a = random_action()
else:
a = argmax_a Q[(s, a)]
s_next, r = step(s, a)
Q[(s, a)] += alpha * (r + gamma * max_a Q[(s_next, a)] - Q[(s, a)])
s = s_next

Dopo 1000 episodi, la Q-table converge. Esempi di valori finali: Q((1,2),down)8.5Q((1, 2), \text{down}) \approx 8.5 (alto, vicino al goal); Q((1,0),up)7Q((1, 0), \text{up}) \approx -7 (basso, l’azione manderebbe al pit); Q((0,0),right)5Q((0, 0), \text{right}) \approx 5 (positivo, parte del percorso ottimo). La policy ottimale derivata, π(s)=argmaxaQ(s,a)\pi^*(s) = \arg\max_a Q(s, a), aggira il pit e raggiunge il goal in quattro passi: (0,0) -> (0,1) -> (0,2) -> (1,2) -> (2,2).

Tag set: {NOUN, VERB, ADJ, DET, ADV, …}. Stati nascosti: tag sequence. Osservazioni: parole della frase. Parametri stimati da Penn Treebank:

  • Transizione: P(NOUNDET)=0.7P(\text{NOUN} \mid \text{DET}) = 0.7, P(VERBDET)=0.05P(\text{VERB} \mid \text{DET}) = 0.05, ecc.
  • Emissione: P("the"DET)=0.6P(\text{"the"} \mid \text{DET}) = 0.6, P("cat"NOUN)=0.001P(\text{"cat"} \mid \text{NOUN}) = 0.001, ecc.

Frase: “the cat sleeps”. Algoritmo di Viterbi calcola la sequenza di tag più probabile via DP. Per ogni parola e ogni tag, mantiene la probabilita massima di una sequenza di tag che termina con quel tag avendo emesso le parole fino a quel punto.

Output: DET NOUN VERB. Il vincolo di Markov sul tag rende il modello tractable; il decoupling tra transizioni e emissioni permette stima statistica robusta dei parametri. Su Penn Treebank, gli HMM POS tagger raggiungono accuracy >95%, paragonabile a CRF e baseline LSTM moderne.

Dataset 2D, due classi non linearmente separabili (es. due half-moon interleaved). Weak learner: decision stump (decision tree di profondità 1, cioe un singolo split su una feature). Da solo, uno stump ha accuracy ~60% sul problema.

Round 1: AdaBoost pesa tutti gli esempi uniformemente. Trova lo stump che minimizza errore pesato (es. ”x1>0.5x_1 > 0.5 \Rightarrow classe 1”). Errore ϵ1=0.3\epsilon_1 = 0.3. Peso del classifier α1=0.5log((10.3)/0.3)0.42\alpha_1 = 0.5 \log((1 - 0.3) / 0.3) \approx 0.42. Aggiorna i pesi degli esempi: gli esempi mal classificati ricevono peso maggiore.

Round 2: stump diverso, ”x2>0.3x_2 > 0.3 \Rightarrow classe 0”. Errore pesato ϵ2=0.4\epsilon_2 = 0.4. α20.20\alpha_2 \approx 0.20. Pesi aggiornati di nuovo.

Dopo 50 round, il classifier finale è sign(tαtht(x))\text{sign}(\sum_t \alpha_t h_t(x)). Empiricamente raggiunge ~95% accuracy su problemi 2D dove un singolo stump ne fa 60%. Il guadagno è costruito da decine di stump deboli ognuno specializzato su un sottoproblema diverso del dataset.

L’eredità del paradigma statistico anni 90 è viva nel 2026, in modi diretti e indiretti.

Bayesian networks: ancora vive in fault diagnosis (NASA, Boeing per turbine aeronautiche, sistemi industriali con migliaia di sensori), risk assessment in compagnie assicurative, biologia computazionale (gene regulatory networks, dove i geni sono nodi e le regolazioni sono edge), alcuni sistemi clinici di supporto decisionale. Il successore concettuale è la causal inference di Pearl post-2009 (libro “Causality”, Cambridge UP), che influenza econometria, epidemiologia, e in parte ML moderno (causal ML, do-calculus, interventional vs observational distributions). Pearl stesso è diventato critico vocale del deep learning, accusandolo di essere “curve fitting senza causalità”.

SVM: ancora competitive su dataset piccoli/medi tabulari. Default in scikit-learn per molti problemi. In bioinformatica restano scelta canonica per certi task (classificazione di sequenze, microarray analysis). Nei sistemi embedded a basso costo computazionale, una SVM lineare addestrata è un classifier inferenza-veloce con buon trade-off.

Random Forests e Gradient Boosting: dominano ancora le competizioni Kaggle su tabular data. XGBoost è lo standard de facto in molte applicazioni industriali (rischio credito, churn prediction, ad ranking di Microsoft Bing e Yandex, recommendation, demand forecasting). LightGBM e CatBoost sono varianti production-grade ottimizzate per dataset grandi e categorical features. Nel mondo reale, su dati tabulari, gradient boosting batte spesso reti neurali profonde — un risultato controintuitivo per chi pensa “deep learning ha vinto su tutto”, ma documentato in benchmark sistematici (Shwartz-Ziv e Armon 2022, “Tabular Data: Deep Learning is Not All You Need”).

HMM: ancora usati in bioinformatica (HMMER per gene prediction, profile HMM per family detection di proteine), part-of-speech tagging come baseline, alcuni sistemi speech recognition embedded a basso consumo (Snips originale, alcuni keyword spotting su microcontrollori). Sostituiti da RNN/Transformer in ASR moderno cloud-side, ma vivi in nicchie specifiche.

Statistical NLP: i language models moderni (GPT, Claude, Gemini) sono concettualmente discendenti diretti degli n-grammi: stessa struttura di probabilita condizionata sulla sequenza precedente, scalata di mille volte con architetture neurali al posto di tabelle di conteggi smussate. Quando senti “next-token prediction” in un contesto di LLM, stai sentendo l’eco del trigram model di IBM degli anni 90, esteso e neuralizzato.

Reinforcement learning: il filone dell’RL anni 90-2000 (Sutton-Barto) è la base teorica di tutto ciò che sta dietro AlphaGo (DeepMind 2016), AlphaZero (DeepMind 2017), OpenAI Five (Dota 2, 2018-2019), e dei sistemi RLHF (Reinforcement Learning from Human Feedback) moderni che addestrano gli LLM a essere helpful e harmless. Q-learning, policy gradient, actor-critic restano fondamenti — il PPO di OpenAI, usato per addestrare GPT con RLHF, è una variante diretta di policy gradient.

Computer vision pipeline classiche: SIFT, HOG, Viola-Jones esistono ancora in OpenCV, sono usati in robotica embedded, AR low-power, sistemi industriali dove non si può permettere una GPU. Per tracking, calibration, SLAM (Simultaneous Localization and Mapping) rimangono scelte tipiche. Anche dove un CNN moderna sarebbe migliore in accuracy, le pipeline classiche vincono in latenza, footprint, interpretabilità.

Fraud detection in pagamenti: gli stack moderni di Visa, MasterCard, Stripe combinano modelli neural (LSTM, transformer su sequenze di transazioni), gradient boosting per risk scoring, e reti bayesiane per modeling causale di pattern di frode. L’eredità degli anni 90 è visibile in produzione, accanto al deep learning.

Il paradigma statistico anni 90 ha limiti precisi, alcuni risolti dal deep learning post-2012, altri ancora aperti.

Feature engineering manuale dominante. Il ML pre-2012 richiedeva ingegneria di feature manuali. Per riconoscere un volto, serviva pensare a Haar features. Per riconoscere un pedone, serviva pensare a HOG. Per classificare un documento, serviva costruire bag-of-words o TF-IDF. Il knowledge engineering era stato sostituito dal feature engineering: il bottleneck si era spostato, non era stato eliminato. Il deep learning post-2012 risolve questo limite imparando le feature direttamente dai dati grezzi. È il salto qualitativo che i modelli statistici classici non potevano fare a parita di tecnica.

Modelli relativamente piccoli, nessuna rappresentazione gerarchica appresa. Una SVM con kernel RBF, anche su milioni di esempi, ha capacità rappresentativa limitata. Un random forest è un ensemble di modelli locali. Nessuno di questi apprende rappresentazioni gerarchiche (low-level edges -> mid-level shapes -> high-level objects) come fanno le CNN profonde. Questo limite è fondamentale quando il dominio richiede composizionalita (visione, linguaggio).

Domini specialistici, no transfer learning. Ogni problema richiedeva tecniche e expertise diverse. Un esperto di vision con SIFT e SVM non sapeva fare NLP con HMM e n-grammi. Un esperto di RL con Q-learning non sapeva fare bioinformatica con HMM profili. Le tecniche erano siloed. Il transfer learning come oggi lo conosciamo (pre-train un modello su un dominio, fine-tune su un altro) era un’idea embrionale; pratica industriale solo dopo il 2012 con CNN pre-addestrate, e veramente esplosa solo con i large language model post-2018.

Limiti di scala. Le tecniche del periodo non scalavano a milioni di parametri come fa il deep learning oggi. Una SVM con kernel RBF ha complessità di training O(n2)O(n^2) nel numero di esempi nn (per il calcolo della matrice kernel) e O(n3)O(n^3) per la soluzione QP nel caso peggiore. Su dieci milioni di esempi, intractable. Una BN con migliaia di nodi e densa è intractable per inferenza esatta. Random forest scala meglio ma satura in accuracy: aggiungere mille alberi a un modello da mille alberi non aggiunge molto.

Pattern problematici sopravvivono. Alcuni pattern del paradigma simbolico restano in forma probabilistica. L’overclaim su “Bayesian networks come AI razionale” che fa gridare alla rivoluzione filosofica per qualsiasi modello probabilistico. Il “brittleness” di sistemi narrowly-specialized: un classifier addestrato su MNIST non riconosce numeri scritti in stili che non ha mai visto. Il problema della distribution shift (il modello visto un dato distribuito secondo una distribuzione e poi deployato su una distribuzione diversa fallisce silenziosamente) è presente quanto nei sistemi esperti, solo in forma diversa.

Mito comune da correggere: “le reti neurali erano morte negli anni 90”. Falso. Esistevano e producevano risultati pratici (LeNet-5 in produzione, LSTM inventata, NIPS in crescita). Erano marginali nei dipartimenti di Computer Science mainstream, ma vive in laboratori specifici (Toronto, NYU, IDIAP, Bell Labs, IDSIA). La narrativa del “deep learning rinasce dal nulla nel 2012” è una semplificazione: rinasce dopo vent’anni di lavoro continuativo di una piccola comunità ostinata. Hinton, LeCun, Bengio sono state le figure centrali di questa continuita, e il Turing Award 2018 è il riconoscimento istituzionale.

Il problema della causalità. Pearl stesso, dopo aver fondato le BN come framework di ragionamento associativo, ha passato gli ultimi decenni a sostenere che le BN tradizionali (e anche il deep learning) non catturano causalità, solo correlazione. Distinguere “fumare causa cancro” da “fumare è correlato con cancro” richiede do-calculus, interventional probabilities, ragionamento controfattuale — tutti strumenti che i modelli puramente predittivi non hanno. È un limite teorico aperto, parzialmente affrontato dalla causal ML moderna ma non risolto.

Bias dei dati e fairness. Il paradigma statistico introduce un problema che il knowledge engineering non aveva: il bias dei dati di training si trasferisce nel modello. Se i tuoi dati di training riflettono pattern di discriminazione storica (su prestiti, assunzioni, sentencing), il modello li replicheraq e amplificherà. Questo problema esplode dopo il 2015 (libro “Weapons of Math Destruction” di Cathy O’Neil 2016) ma è radicato nel paradigma statistico in se: niente nel framework di “minimizza loss su dati di training” ti protegge da bias sistemici nei dati.

  • secondo-inverno-ai — il punto di partenza temporale: la rinascita statistica è la risposta tecnica e culturale alla morte dei sistemi esperti. Senza la fine traumatica del paradigma simbolico, il rebranding in “ML” non sarebbe stato necessario.
  • sistemi-esperti — il paradigma scalzato. La rinascita statistica costruisce il “non-paradigma” rispetto al rule-based: non regole esplicite ma probabilita stimate dai dati.
  • ai-simbolica-anni-60 — la radice profonda del paradigma simbolico, opposto a quello probabilistico. Capire la rinascita statistica significa capire da cosa si emancipa.
  • primo-inverno-ai — pattern analogo ma su altra scala: anche allora il paradigma successivo (sistemi esperti) già maturava sotto la superficie mentre il paradigma corrente collassava.
  • storia-sintesi — la rinascita statistica è uno snodo cruciale della timeline globale, e ne riceve un trattamento sintetico.
  • bayesian-networks (Parte VII, futuro) — approfondimento tecnico di BN, d-separation, inferenza.
  • inferenza-probabilistica (Parte VII, futuro) — approfondimento di variable elimination, belief propagation, junction tree, MCMC.
  • svm (Parte VIII, futuro) — capitolo dedicato alle SVM e al kernel trick, formalizzato in modo completo.
  • random-forest (Parte VIII, futuro) — capitolo dedicato a bagging e random forest, con esempi pratici.
  • gradient-boosting (Parte VIII, futuro) — XGBoost, LightGBM, CatBoost in dettaglio.
  • mlp-backprop (Parte VIII, futuro) — la backpropagation che era stata rilanciata nel 1986 e attendeva il deep learning.
  • q-learning (Parte V, futuro) — approfondimento del Q-learning come algoritmo RL value-based.
  • markov-decision-process (Parte V, futuro) — il framework MDP, fondamento dell’RL.
  • viterbi (Parte VI, futuro) — algoritmo di decoding su HMM, esempio paradigmatico di programmazione dinamica.
  • reti-neurali-80-90 (futuro) — il filone neural che convive in nicchia durante l’era statistica.
  • imagenet-alexnet-2012 (futuro) — la fine del paradigma statistico classico in computer vision e l’inizio del deep learning.
  • Pearl, J. (1988). “Probabilistic Reasoning in Intelligent Systems: Networks of Plausible Inference”. Morgan Kaufmann. Il libro che fonda il paradigma probabilistico in AI. Tecnico ma molto leggibile, con focus su intuizione e algoritmi.

  • Cortes, C., & Vapnik, V. (1995). “Support-vector networks”. Machine Learning, 20(3), 273-297. Paper canonico delle SVM con soft margin. Lettura obbligata per capire come è nato il kernel methods era.

  • Sutton, R. S., & Barto, A. G. (1998 / 2018). “Reinforcement Learning: An Introduction”. MIT Press. Il testo standard di RL. Disponibile gratuitamente su incompleteideas.net/book/the-book-2nd.html. Stile didattico ineguagliato nel campo.

  • Mitchell, T. M. (1997). “Machine Learning”. McGraw-Hill. Primo trattato organico del campo. Definizione operativa canonica. Ancora utile come introduzione a un sapere consolidato.

  • Hastie, T., Tibshirani, R., & Friedman, J. (2009). “The Elements of Statistical Learning” (2nd ed.). Springer. Riferimento avanzato di statistical learning. Disponibile gratuitamente su hastie.su.domains/ElemStatLearn/. Tratta in profondità SVM, ensemble, additive models, neural nets dal punto di vista statistico.

  • Manning, C. D., & Schutze, H. (1999). “Foundations of Statistical Natural Language Processing”. MIT Press. Manifesto dell’NLP statistico. Utile per capire da dove vengono i language models moderni.

  • Halevy, A., Norvig, P., & Pereira, F. (2009). “The Unreasonable Effectiveness of Data”. IEEE Intelligent Systems, 24(2), 8-12. Articolo breve di Google che teorizza il “more data beats better algorithms” come legge empirica del paradigma statistico tardo. Eco del classico di Eugene Wigner del 1960.

  • Russell, S., & Norvig, P. (2010). “Artificial Intelligence: A Modern Approach” (3rd ed.). Pearson. Il textbook AIMA. La terza edizione è particolarmente sintomatica del paradigma statistico in piena maturità: capitoli su BN, HMM, RL, ML coprono la maggior parte del libro.