Vai al contenuto
coden

Reti bayesiane: perché l’erba è bagnata e che cosa significa per l’irrigatore

Distribuzione congiunta e sua fattorizzazione, rete bayesiana e tabelle di probabilità condizionate, inferenza per enumerazione, spiegazione alternativa, d-separazione e inferenza approssimata per campionamento — sulla rete nuvoloso, irrigatore, pioggia, erba bagnata.

13 minuti Matěj Žalmánek 2026-10-15

Serie Basi di IA Parte 40 di 52
  1. Mappa dell’intelligenza artificiale: che cos’è ciascuna cosa e come si incastra tutto
  2. Breve storia dell’intelligenza artificiale: da Turing ai modelli linguistici
  3. Dati, modello, addestramento, inferenza: i concetti di base su un unico esempio
  4. Come leggere la notazione matematica: simboli, indici, sommatorie e quantificatori
  5. Insiemi e relazioni: i mattoncini con cui si costruiscono le definizioni nell’IA
  6. Funzioni e applicazioni: perché ogni modello di IA è una funzione
  7. Logica e dimostrazioni: le regole con cui si ragiona nell’IA
  8. Grafi e alberi: la struttura su cui poggiano la ricerca e le reti neurali
  9. Algebra lineare per l’apprendimento automatico: vettori, matrici e perché l’IA soprattutto moltiplica
  10. Derivate, gradiente e regola della catena: come un modello capisce in quale direzione imparare
  11. Discesa del gradiente: come impara un modello
  12. Che cos’è la probabilità: dal lancio di un dado agli assiomi di Kolmogorov
  13. Probabilità condizionata e teorema di Bayes: come cambiare una stima quando scopri qualcosa di nuovo
  14. Variabile aleatoria e funzione di ripartizione: una sola funzione che dice tutto sulla distribuzione
  15. Funzione di densità e funzione di massa: perché una variabile continua ha probabilità zero in un punto
  16. Valore atteso, varianza e covarianza: dove si trova una distribuzione, quanto è larga e che cosa è legato a che cosa
  17. Panoramica delle distribuzioni di probabilità: Bernoulli, binomiale, Poisson, uniforme, normale ed esponenziale
  18. Legge dei grandi numeri e teorema del limite centrale: perché le medie si comportano in modo così prevedibile
  19. Statistica e stima dei parametri: massima verosimiglianza, MAP e intervalli di confidenza
  20. Teoria dell’informazione: entropia, entropia incrociata e divergenza KL — da dove vengono le funzioni di perdita
  21. Ricerca nello spazio degli stati: BFS, DFS, UCS e A* con animazioni
  22. Giochi e avversari: minimax, potatura alfa-beta e Monte Carlo tree search
  23. Soddisfacimento di vincoli: backtracking, propagazione dei vincoli e AC-3 su un sudoku e una mappa delle regioni ceche
  24. Logica e sistemi basati sulla conoscenza: concatenazione in avanti e all’indietro, risoluzione e sistemi esperti
  25. Pianificazione: STRIPS, il mondo dei blocchi, euristiche dal rilassamento e pianificazione negli agenti IA
  26. Ricerca locale e ricottura simulata: un commesso viaggiatore tra i capoluoghi di regione cechi
  27. Algoritmi genetici: popolazione, incrocio, mutazione e selezione su uno zaino per l’escursione
  28. Strategie evolutive e programmazione genetica: dalla regola di un quinto alla legge di Keplero
  29. Ottimizzazione con colonie di formiche: come una traccia di feromone trova un percorso breve
  30. Ottimizzazione a sciame di particelle: inerzia, esperienza propria ed esperienza dello sciame
  31. Neuroevoluzione: evoluzione dei pesi e della forma delle reti neurali e l’algoritmo NEAT
  32. Insiemi fuzzy e funzioni di appartenenza: come scrivere «un po’ caldo»
  33. Logica fuzzy e probabilità: perché «un po’ caldo» non significa «probabilmente caldo»
  34. Logica fuzzy: t-norme, implicazioni e regole SE–ALLORA
  35. Controllo fuzzy: Mamdani e Sugeno, dal ventilatore al pendolo inverso su un carrello
  36. Clustering fuzzy: l’algoritmo fuzzy c-means e i punti tra i cluster
  37. Sistemi neuro-fuzzy (ANFIS): regole fuzzy che imparano dai dati
  38. Catene di Markov: matrice di transizione, distribuzione stazionaria e PageRank
  39. Modelli di Markov nascosti: l’algoritmo di Viterbi e il casinò disonesto
  40. Reti bayesiane: perché l’erba è bagnata e che cosa significa per l’irrigatore
  41. Filtro di Kalman: come stimare da misure imprecise dove si trova un’auto e a che velocità va
  42. Tipi di apprendimento automatico: supervisionato, non supervisionato, semi-supervisionato e altri
  43. Prompt, contesto e RAG: come dare a un modello le informazioni giuste
  44. Autoencoder variazionali (VAE): immagini nuove da uno spazio latente continuo
  45. Reti generative avversarie (GAN): il falsario contro il detective
  46. Modelli di diffusione: come il rumore puro diventa un’immagine
  47. Processi decisionali di Markov: stati, azioni, ricompense ed equazioni di Bellman
  48. Q-learning e DQN: imparare il valore delle azioni, dalla tabella alla rete neurale
  49. Policy gradient e PPO: imparare direttamente la politica
  50. Come funziona un agente IA: un modello linguistico in un ciclo con strumenti
  51. Programmare con agenti IA: incarico, test e controllo
  52. Valutazione e sicurezza dei sistemi di IA: come misurare e come sorvegliare

Programma completo della serie 52 di 83 argomenti pubblicati

Cosa porterai a casa
  • Come una rete bayesiana riduce un’enorme tabella di probabilità a poche tabelle piccole.
  • Come una rete ragiona dagli effetti alle cause e che cos’è la spiegazione alternativa (explaining away).
  • Come leggere dal grafo quali variabili sono indipendenti e come si stimano le probabilità per campionamento.

Utile sapere prima: Probabilità condizionata e teorema di Bayes: come cambiare una stima quando scopri qualcosa di nuovo, Grafi e alberi: la struttura su cui poggiano la ricerca e le reti neurali

Al mattino esci di casa e l’erba è bagnata. Ha piovuto o è andato l’irrigatore? E quando poi il vicino ti dice che durante la notte ha piovuto — cambia quello che pensi dell’irrigatore? Una persona ragiona così senza pensarci. Anche una macchina ci riesce, purché sappia che cosa è collegato a che cosa. Una rete bayesiana è un disegno di questi collegamenti da cui si può calcolare la risposta a qualunque domanda. Judea Pearl ha ricevuto per essa e per la teoria della causalità che ne è nata il premio Turing nel 2011.

Riprende le parti Probabilità condizionata e teorema di Bayes e Grafi e alberi.

1. Il problema della grande tabella

L’informazione completa su più variabili aleatorie è la loro distribuzione congiunta — la probabilità di ogni combinazione di valori. Per quattro variabili sì/no le combinazioni sono 16, cioè 15 numeri indipendenti. Per 37 variabili (tante ne ha la nota rete medica ALARM per il monitoraggio dei pazienti in anestesia) sarebbero oltre 137 miliardi di numeri, anche se fossero tutte solo sì/no. Una tabella del genere nessuno la costruisce, la memorizza o la stima dai dati. Ci salva il fatto che la maggior parte delle variabili è collegata solo indirettamente.

Definizione — distribuzione congiunta e numero dei suoi parametri

La distribuzione congiunta delle variabili discrete X1, …, Xn è la funzione P(x1, …, xn) = P(X1 = x1, …, Xn = xn), non negativa e con somma 1 su tutte le combinazioni di valori. Per n variabili sì/no ha 2n valori; l’ultimo si ricava dagli altri (la somma è 1), quindi i parametri indipendenti sono 2n − 1.

Calcolo. 24 − 1 = 15; 237 − 1 = 137 438 953 471.

Teorema — regola della catena

Per variabili qualsiasi e ogni combinazione di valori con probabilità positiva vale

P(x1, …, xn) = P(x1) · P(x2 | x1) · P(x3 | x1, x2) ⋯ P(xn | x1, …, xn−1) = ∏i=1n P(xi | x1, …, xi−1).

Dimostrazione: dalla definizione di probabilità condizionata si ha P(x1, …, xn) = P(xn | x1, …, xn−1) · P(x1, …, xn−1). Applichiamo lo stesso al secondo fattore e così via, finché resta P(x1). ∎

La regola della catena non fa risparmiare nulla: l’ultimo fattore dipende ancora da tutte le variabili precedenti, quindi è solo un altro modo di scrivere la stessa enorme tabella. Il risparmio arriva quando alcune condizioni le togliamo.

2. Rete bayesiana

Definizione — rete bayesiana

Una rete bayesiana sulle variabili X1, …, Xn è un grafo orientato aciclico i cui nodi sono le variabili, con per ogni nodo una tabella di probabilità condizionate P(Xi | genitori(Xi)). La rete determina la distribuzione congiunta

P(x1, …, xn) = ∏i P(xi | genitori(Xi)).

In parole semplici

Le frecce vanno dalle cause agli effetti. Per ogni variabile basta sapere come dipende dalle sue cause dirette — niente di più. La probabilità dell’intera situazione è il prodotto di questi numeri locali. Invece di un’unica tabella enorme ne abbiamo qualcuna piccola.

Perché la rete può scrivere solo P(xi | genitori) e non tutta la storia precedente come la regola della catena? Perché sul grafo presuppone delle indipendenze condizionate.

Definizione — indipendenza condizionata

Le variabili A e C sono condizionatamente indipendenti dato E, e si scrive A ⊥ C | E, se per tutti i valori a, c, e con P(c, e) > 0 vale

P(a | c, e) = P(a | e)

P(a | c, e)
ciò che sappiamo di A quando conosciamo E e in più C
P(a | e)
ciò che sappiamo di A dal solo E; l’uguaglianza dice che C non aggiunge più nulla — tutto il legame tra A e C passa per E
In modo equivalente P(a, c | e) = P(a | e) · P(c | e). Per E vuoto è l’indipendenza ordinaria.
Teorema — la fattorizzazione è la regola della catena più le indipendenze locali

Ordiniamo le variabili topologicamente (ogni genitore prima dei suoi figli). Se ogni variabile Xi, noti i genitori, è condizionatamente indipendente da tutte le variabili che non sono sue discendenti (condizione di Markov locale), allora P(x1, …, xn) = ∏i P(xi | genitori(Xi)).

Dimostrazione: nella regola della catena in ordine topologico compare P(xi | x1, …, xi−1). Tra X1, …, Xi−1 ci sono tutti i genitori di Xi e nessun suo discendente (un discendente viene nell’ordine dopo di lui). Per la condizione di Markov possiamo togliere dalla condizione tutti gli altri e resta P(xi | genitori(Xi)). ∎

Vale anche il contrario: ogni distribuzione data da un prodotto di tabelle soddisfa la condizione di Markov locale. Per questo una rete bayesiana si può definire in entrambi i modi.

La nostra rete: quando è nuvoloso, la pioggia è più probabile ed è meno probabile che qualcuno accenda l’irrigatore. Sia la pioggia sia l’irrigatore rendono l’erba bagnata. I numeri vengono dal noto esempio di Kevin Murphy:

nuvoloso Z P(Z) 0,5 irrigatore P Z P(P) − 0,5 + 0,1 pioggia D Z P(D) − 0,2 + 0,8 erba bagnata T P D P(T) + − 0,9 + + 0,99 − + 0,9 − − 0
La rete «erba bagnata» con le tabelle di probabilità condizionate + sì, − no

La rete ha 1 + 2 + 2 + 4 = 9 numeri invece di 15. Con quattro variabili il risparmio è piccolo, con centinaia è enorme: se ogni nodo ha al massimo k genitori, il numero dei numeri cresce con n linearmente (n · 2k), non esponenzialmente (2n). La probabilità della situazione «nuvoloso, irrigatore spento, ha piovuto, erba bagnata» è 0,5 · 0,9 · 0,8 · 0,9 = 0,324.

P(z, p, d, t) = P(z) · P(p | z) · P(d | z) · P(t | p, d)

P(z)
nuvoloso non ha genitori, la sua tabella è un solo numero; nell’esempio 0,5
P(p | z)
l’irrigatore dipende solo dalle nuvole — qui non c’è nessuna differenza dalla regola della catena; nell’esempio era spento con il cielo nuvoloso: 1 − 0,1 = 0,9
P(d | z)
la regola della catena vorrebbe P(d | z, p); la rete presuppone che, noto il cielo, l’irrigatore non dica nulla sulla pioggia, e così p esce dalla condizione; nell’esempio 0,8
P(t | p, d)
la regola della catena vorrebbe P(t | z, p, d); l’erba «sa» delle nuvole solo attraverso la pioggia e l’irrigatore, e così esce z; nell’esempio (irrigatore no, pioggia sì) 0,9
Ogni termine tolto da una condizione è un’indipendenza condizionata che la rete presuppone — sono proprio queste a ridurre 15 numeri a 9.

3. Inferenza: dall’effetto alla causa

Definizione — inferenza per enumerazione

La probabilità dell’interrogazione Q data l’evidenza E = e è

P(Q | e) = ∑y P(Q, e, y) / ∑q, y P(q, e, y),

dove si somma su tutti i valori y delle altre variabili (nascoste) e ogni termine è un prodotto dato dalla fattorizzazione della rete.

In parole semplici

Passiamo in rassegna tutti i mondi possibili che concordano con ciò che sappiamo (l’erba è bagnata) e guardiamo quanto pesano, fra questi, quelli in cui ha piovuto. È il teorema di Bayes della parte sulla probabilità condizionata, solo che si somma su più variabili alla volta.

P(Q | e) = ∑y P(Q, e, y) / ∑q, y P(q, e, y)

e
evidenza — i valori che abbiamo osservato (da noi l’erba bagnata); in tutti i mondi sommati sono fissi
∑y
le variabili nascoste (da noi nuvoloso e irrigatore) non le conosciamo e non ci interessano, quindi sommiamo su tutte le loro possibilità — marginalizzazione; i mondi si escludono a vicenda, quindi le probabilità si sommano
P(Q, e, y)
la probabilità di un mondo completo in cui valgono l’interrogazione e l’evidenza — un prodotto di numeri delle tabelle secondo la fattorizzazione
∑q, y P(q, e, y)
= P(e), il peso di tutti i mondi che concordano con l’evidenza; la divisione è la definizione di probabilità condizionata P(Q | e) = P(Q, e) / P(e) e garantisce che P(Q | e) + P(¬Q | e) = 1
Esempio — P(pioggia | erba bagnata) per enumerazione

L’evidenza è T = sì, l’interrogazione D, nascoste sono Z e P. I mondi con l’erba bagnata sono 23 = 8; ognuno è il prodotto P(z) · P(p | z) · P(d | z) · P(t | p, d):

pioggianuvolosoirrigatoreprodottoP(mondo)
sìsìsì0,5 · 0,1 · 0,8 · 0,990,0396
sìnosì0,5 · 0,5 · 0,2 · 0,990,0495
sìsìno0,5 · 0,9 · 0,8 · 0,90,3240
sìnono0,5 · 0,5 · 0,2 · 0,90,0450
nosìsì0,5 · 0,1 · 0,2 · 0,90,0090
nonosì0,5 · 0,5 · 0,8 · 0,90,1800
nosìno0,5 · 0,9 · 0,2 · 00,0000
nonono0,5 · 0,5 · 0,8 · 00,0000

Le prime quattro righe (ha piovuto) danno P(D, T) = 0,4581, tutte e otto P(T) = 0,6471. Le ultime due righe sono nulle: senza pioggia e senza irrigatore l’erba non è bagnata. Quindi

P(D | T) = 0,4581 / 0,6471 = 0,708.

def dotaz(Q, dukazy, sit):
    citatel = jmenovatel = 0.0
    for svet in vsechna_prirazeni(sit):              # 2^n mondi completi
        if any(svet[k] != v for k, v in dukazy.items()):
            continue                                 # non concorda con l’evidenza
        p = 1.0
        for uzel in sit:                             # fattorizzazione della rete
            p *= P(uzel, svet[uzel], svet[rodice(uzel)])
        jmenovatel += p                              # → P(e)
        if svet[Q]:
            citatel += p                             # → P(Q, e)
    return citatel / jmenovatel

A priori (senza alcuna osservazione) la probabilità della pioggia è 0,5 e quella dell’irrigatore 0,3. L’erba bagnata le aumenta entrambe: P(pioggia | erba bagnata) = 0,708 e P(irrigatore | erba bagnata) = 0,430. La pioggia è la spiegazione più probabile, perché piove più spesso di quanto vada l’irrigatore. L’erba bagnata aumenta anche la probabilità che fosse nuvoloso — da 0,5 a 0,576 —, benché l’erba e le nuvole non siano collegate direttamente. L’informazione scorre nella rete contro le frecce.

4. Spiegazione alternativa

Ora veniamo a sapere che durante la notte ha piovuto davvero. Che cosa succede all’irrigatore?

00,51 0,30 0,43 0,19 irrigatore 0,50 0,71 0,32 pioggia causa dell’erba bagnata (categoria) probabilità P (0–1)
Irrigatore e pioggia: a priori, con l’erba bagnata e con l’erba bagnata quando conosciamo l’altra causa a priori l’erba è bagnata e conosciamo l’altra causa

La probabilità dell’irrigatore scende da 0,430 a 0,194. La pioggia ha già spiegato l’erba bagnata, quindi per l’irrigatore non resta alcun motivo. Al contrario, quando sappiamo che l’irrigatore era acceso, la probabilità della pioggia scende da 0,708 a 0,320. Questo fenomeno si chiama spiegazione alternativa (explaining away). Due cause che a priori erano collegate solo debolmente, appena osserviamo il loro effetto comune, cominciano a «scalzarsi» a vicenda. E se sapessimo che non ha piovuto, l’irrigatore dovrebbe per forza essere stato acceso: P(irrigatore | erba bagnata, niente pioggia) = 1, perché nella nostra rete l’erba non può bagnarsi da sola.

Esempio — la spiegazione alternativa in numeri

Dalla tabella dell’esempio precedente: i mondi in cui ha piovuto, l’irrigatore era acceso e l’erba è bagnata hanno insieme P(P, D, T) = 0,0396 + 0,0495 = 0,0891. Perciò

P(P | T, D) = P(P, D, T) / P(D, T) = 0,0891 / 0,4581 = 0,194,

P(D | T, P) = P(P, D, T) / P(P, T) = 0,0891 / 0,2781 = 0,320.

Formalmente la spiegazione alternativa è la disuguaglianza P(P | T, D) < P(P | T): la conferma di una causa abbassa la probabilità dell’altra (0,194 < 0,430).

5. Che cosa si legge nella rete: la d-separazione

Il grafo non dice solo come calcolare — dice anche quali variabili sono indipendenti tra loro, e senza un solo numero. Tutte le possibilità si compongono di tre forme di base:

  • Catena A → B → C: A e C sono collegate, ma quando conosciamo B, non più. (Nuvoloso → pioggia → erba bagnata: a chi sa se ha piovuto, le nuvole non dicono nulla sull’erba.)
  • Biforcazione A ← B → C: una causa comune rende A e C dipendenti; quando la conosciamo, la dipendenza sparisce. (Irrigatore e pioggia sono collegati a priori attraverso le nuvole: P(irrigatore | pioggia) = 0,18, ma P(irrigatore | niente pioggia) = 0,42. Quando sappiamo se è nuvoloso, sono indipendenti.)
  • Collisore A → B ← C: le cause sono indipendenti finché non osserviamo l’effetto comune — allora diventano dipendenti. È la spiegazione alternativa.
Definizione — d-separazione

Un cammino nel grafo (senza badare al verso delle frecce) è bloccato dall’insieme E se su di esso si trova una catena o una biforcazione con il nodo centrale in E, oppure un collisore tale che né il suo nodo centrale né alcun suo discendente sta in E. Le variabili A e C sono d-separate dall’insieme E se E blocca tutti i cammini tra di loro. Allora in ogni distribuzione determinata dalla rete sono condizionatamente indipendenti dato E.

In parole semplici

L’informazione scorre nel grafo lungo i cammini. Una variabile nota al centro di una catena o di una biforcazione ferma il flusso — è già «spiegata». Nel collisore è il contrario: finché non conosciamo l’effetto, lì il flusso è fermo; appena lo osserviamo, si apre. Dal disegno si capisce così che cosa serve misurare e che cosa è superfluo.

Nella nostra rete nuvoloso ed erba bagnata sono d-separati quando conosciamo sia l’irrigatore sia la pioggia — il calcolo lo conferma: la probabilità del cielo nuvoloso allora non dipende affatto dall’erba.

Esempio — le tre forme verificate con il calcolo
  • Biforcazione irrigatore ← nuvoloso → pioggia. Senza conoscere il cielo: P(P | D) = 0,18 ≠ P(P) = 0,3, dipendenti. Con il cielo noto: P(P | Z, D) = 0,1 = P(P | Z), quindi P ⊥ D | Z.
  • Collisore irrigatore → erba bagnata ← pioggia. Con il cielo noto P e D sono indipendenti (P(P | Z, D) = P(P | Z, ¬D) = 0,1), ma appena osserviamo l’erba, non più: P(P | Z, D, T) = 0,109, mentre P(P | Z, ¬D, T) = 1.
  • D-separazione del cielo nuvoloso e dell’erba bagnata tramite l’insieme {P, D}: entrambi i cammini Z → P → T e Z → D → T sono catene con il nodo centrale noto, quindi sono bloccati. E infatti: P(Z | P, D) = 0,444 e P(Z | P, D, T) = 0,444; P(Z | P, ¬D) = 0,048 e P(Z | P, ¬D, T) = 0,048.

6. Inferenza approssimata per campionamento

L’inferenza per enumerazione passa in rassegna tutte le combinazioni delle variabili nascoste — in una rete generica un numero esponenziale. L’inferenza esatta nelle reti bayesiane è NP-difficile. Per le reti grandi le probabilità si stimano quindi con una simulazione.

Algoritmi — campionamento per rifiuto e ponderazione per verosimiglianza

Campionamento per rifiuto (rejection sampling): genera mondi dalla rete (dalle cause agli effetti, secondo le tabelle), scarta quelli che non concordano con l’evidenza e fra i rimanenti calcola la frazione in cui vale l’interrogazione.

Ponderazione per verosimiglianza (likelihood weighting): l’evidenza non estrarla a sorte, ma fissala; pesa ogni mondo generato con il prodotto delle probabilità dell’evidenza dati i valori dei suoi genitori. La stima è la frazione pesata.

In parole semplici

Il rifiuto è onesto, ma spreca: quando l’evidenza è rara, butta via quasi tutti i campioni. La ponderazione per verosimiglianza non butta via nulla — assegna solo a ogni campione un peso in base a quanto bene si accorda con ciò che sappiamo.

def zamitani(Q, dukazy, n, sit):
    prijato = ano = 0
    for _ in range(n):
        svet = {}
        for uzel in sit:                             # dalle cause agli effetti
            svet[uzel] = nahoda() < P(uzel, True, svet[rodice(uzel)])
        if any(svet[k] != v for k, v in dukazy.items()):
            continue                                 # nel cestino
        prijato += 1
        ano += svet[Q]
    return ano / prijato

def vazena(Q, dukazy, n, sit):
    s = s_ano = 0.0
    for _ in range(n):
        svet, w = {}, 1.0
        for uzel in sit:
            p = P(uzel, True, svet[rodice(uzel)])
            if uzel in dukazy:                       # l’evidenza non la estraiamo…
                svet[uzel] = dukazy[uzel]
                w *= p if dukazy[uzel] else 1 - p    # …ma pesiamo quanto è probabile
            else:
                svet[uzel] = nahoda() < p
        s += w
        s_ano += w * svet[Q]
    return s_ano / s

P̂(Q | e) = ∑k wk [Q vale nel campione k] / ∑k wk,   wk = ∏j P(ej | genitorik)

wk
il peso del campione (in verde come la curva della ponderazione per verosimiglianza nel grafico) — il prodotto delle probabilità di tutte le evidenze ej dati i valori dei loro genitori usciti nel campione k: l’evidenza non l’abbiamo estratta, ma imposta, quindi dobbiamo tenere conto di quanto sarebbe probabile con gli altri valori estratti — altrimenti la stima sarebbe distorta
[Q vale nel campione k]
1 se nel campione vale l’interrogazione, altrimenti 0 — contiamo solo il peso dei campioni in cui ha piovuto
∑k wk
il peso totale; dividendo per esso otteniamo una frazione, proprio come la divisione per P(e) nell’enumerazione. Grazie a essa non importa che i pesi non sommino a 1
Il rifiuto è un caso particolare: il peso è 1 per i campioni che concordano con l’evidenza e 0 per gli altri.
Esempio — i pesi con l’evidenza «l’erba è bagnata»

L’unica evidenza è T = sì, i suoi genitori sono l’irrigatore e la pioggia. Il peso di un campione è quindi semplicemente P(T = sì | p, d) dalla tabella dell’erba bagnata:

  • irrigatore e pioggia: w = 0,99,
  • solo uno dei due: w = 0,9,
  • nessuno dei due: w = 0 — un campione così non contribuisce a nulla, proprio come il rifiuto lo butterebbe via.

Dal cielo il peso non dipende: nuvoloso non è un genitore dell’erba.

0,60,70,8 101001 00010 000 campioni (numero, scala log.) stima P(pioggia | bagnata) (0–1)
Stima di P(pioggia | erba bagnata) in base al numero di campioni rifiuto ponderazione per verosimiglianza esatto 0,708

Con cento campioni il rifiuto ha dato la stima 0,686 e ne ha usati solo 70 — gli altri 30 avevano l’erba asciutta e sono finiti nel cestino. Con 10 000 campioni (di cui ne sono rimasti 6 524) la stima è 0,703, vicina al valore esatto 0,708. L’errore scende come 1/√N, come dice il teorema del limite centrale: per una stima dieci volte più precisa servono cento volte più campioni.

σP̂ = √(p(1 − p) / Nacc),   Nacc ≈ N · P(e)

p(1 − p)
la varianza di un singolo campione di tipo sì/no (distribuzione di Bernoulli con probabilità p); è massima per p = 0,5, quando un singolo campione è meno prevedibile
Nacc
il numero di campioni che contano davvero; nel rifiuto solo quelli che sono passati, e in media sono la frazione P(e) — con un’evidenza rara quasi nessuno. La varianza della media di N campioni indipendenti è N volte più piccola
La radice riporta la varianza alle unità della probabilità — per questo l’errore scende solo come 1/√N. (L’uguaglianza è approssimata: il numero di campioni accettati è esso stesso casuale.)
Esempio — quanto errore aspettarsi

Il valore esatto è p = 0,708 e P(e) = P(T) = 0,6471, quindi su 10 000 campioni ci aspettiamo circa 6 471 accettati (in realtà sono stati 6 524).

  • Nacc = 70: σ = √(0,708 · 0,292 / 70) = 0,054; errore effettivo |0,686 − 0,708| = 0,022.
  • Nacc = 6 524: σ = 0,0056; errore effettivo 0,0050.

Entrambi gli errori effettivi sono minori di una deviazione standard — in accordo con il fatto che circa due terzi delle stime cadono entro ±σ (distribuzione normale secondo il teorema del limite centrale).

7. Le reti bayesiane nella pratica

  • Diagnostica. Reti mediche (ALARM, QMR-DT con centinaia di malattie e migliaia di sintomi) e diagnostica dei guasti di macchine e reti: dai sintomi osservati ricavare la causa più probabile — e suggerire che cosa misurare dopo.
  • Apprendimento dai dati. Le tabelle si possono stimare dai dati contando (con il metodo della massima verosimiglianza della parte sulla statistica), anche quando alcuni valori mancano — con l’algoritmo EM, parente dell’algoritmo di Baum–Welch della parte precedente.
  • Causalità. Pearl ha mostrato che una rete letta come grafo di cause sa rispondere anche a domande del tipo «che cosa succederebbe se intervenissimo» — se accendessimo noi l’irrigatore —, cosa che dalle sole correlazioni non si ricava. Su questo poggia l’odierna inferenza causale in epidemiologia ed economia.
  • Parenti. Il classificatore bayesiano ingenuo (naive Bayes) è una rete bayesiana con una causa e molti effetti indipendenti. I modelli di Markov nascosti della parte precedente sono una rete bayesiana srotolata nel tempo.

8. Riepilogo

  • Una rete bayesiana è un grafo orientato aciclico con tabelle P(X | genitori); la distribuzione congiunta è il prodotto di queste tabelle. La nostra rete richiede 9 numeri invece di 15.
  • L’inferenza va anche contro le frecce: l’erba bagnata aumenta la probabilità della pioggia a 0,708 e quella dell’irrigatore a 0,430.
  • Spiegazione alternativa: quando sappiamo che ha piovuto, la probabilità dell’irrigatore scende a 0,194.
  • La d-separazione legge le indipendenze direttamente dal grafo — catena e biforcazione si chiudono con l’osservazione, il collisore si apre.
  • L’inferenza esatta è in generale NP-difficile; il campionamento dà stime con un errore che scende come 1/√N.

Vuoi toccarlo con mano? Fai costruire a un agente IA una rete bayesiana per un guasto della tua auto o del tuo computer («non parte — batteria o motorino di avviamento?») e prova come cambiano i sospetti quando aggiungi osservazioni.

La vedi diversamente? Scrivi a support@coden-app.com.

Un Agente sul tuo computer, guidato dal telefono