Ho parlato qualche giorno fa di mutua informazione tra X e Y, I(X;Y), che è la differenza tra l’entropia della distribuzione di probabilità congiunta, H(X,Y) e le entropie delle distribuzioni marginali, H(X)+H(Y).
Ho fatto l’esempio di una variabile X, con otto stati 1..8 che sono tutti ugualmente probabili se non abbiamo ancora incontrato nessuna evidenza; e una variabile Y, con gli stati 1..4, che sono tutti equiprobabili in assenza di evidenza. Quindi se calcoliamo le entropie marginali H(X) e H(Y), troviamo che X ha 3 bit di entropia, e Y ha 2 bit.
Tuttavia sappiamo anche che X e Y sono entrambi pari o entrambi dispari; e questo è tutto quello che sappiamo della relazione tra loro. Quindi la distribuzione congiunta (X,Y) ha solo 16 possibili stati, tutti equiprobabili, per un’entropia congiunta di 4 bit. Questo corrisponde a una carenza di entropia di 1 bit, confrontandolo con i 5 bit di entropia se X e Y fossero indipendenti. Questa riduzione di entropia è la mutua informazione — l’informazione che X ci dà su Y, o viceversa, così che non siamo più altrettanto incerti di prima sull’uno dopo aver imparato lo stato dell’altro.
Supponiamo però che ci sia una terza variabile Z. Z ha due stati, “pari” e “dispari”, perfettamente correlati con la parità di (X,Y). In effetti possiamo supporre che Z sia semplicemente la domanda “X e Y sono pari o dispari?”
Se non abbiamo evidenze su X e Y, allora Z stessa ha necessariamente 1 bit di entropia. C’è 1 bit di mutua informazione tra Z e X, e 1 bit di mutua informazione tra Z e Y. E, come notato in precedenza, 1 bit di mutua informazione tra X e Y. Quindi, qual è l’entropia totale del sistema (X,Y,Z)? Potresti ingenuamente aspettarti che
H(X,Y,Z)=H(X)+H(Y)+H(Z)-I(X;Z)-I(Z;Y)-I(X;Y)
ma non è così.
Il sistema congiunto (X,Y,Z) ha solo 16 possibili stati — poiché Z è semplicemente la domanda “X e Y sono pari o dispari?” — quindi H(X,Y,Z) = 4 bit.
Ma se calcolate la formula appena vista ottenete
(3+2+1-1-1-1) bit = 3 bit = SBAGLIATO!
Perché? Perché se consideriamo la mutua informazione tra X e Z, e la mutua informazione tra Y e Z, queste possono comprendere parte della stessa mutua informazione che abbiamo calcolato che esiste tra X e Y. In questo caso, ad esempio, sapere che X è pari ci dice che Z è pari, e sapere che Z è pari ci dice che anche Y è pari, ma questa è la stessa informazione che X ci darebbe su Y. Abbiamo contato doppio parte della nostra conoscenza, e quindi ci risulta un’entropia troppo bassa.
La formula corretta è (credo):
H(X,Y,Z)=H(X)+H(Y)+H(Z)-I(X;Z)-I(Z;Y)-I(X;Y|Z)
Dove l’ultimo termine, I(X;Y|Z), significa “l’informazione che X ci dà su Y, considerato che conosciamo già Z”. In questo caso X non ci dice niente di nuovo su Y che non ci sia già stato detto da Z, quindi il termine conta come zero — e l’equazione ci dà la risposta corretta. Ecco, non è bello?
“No,” mi potreste rispondere correttamente, “perché non ci hai detto come calcolare I(X;Y|Z), hai solo dato una giustificazione verbale del fatto che deve essere zero.”
Calcoliamo I(X;Y|Z) proprio nel modo che vi aspettereste. I(X;Y)=H(X)+H(Y)-H(X,Y), e quindi:
I(X;Y|Z)=H(X|Z)+H(Y|Z)-H(X,Y|Z)
E ora, immagino, volete sapere come calcolare l’entropia condizionale? Beh, la formula originale per l’entropia è:
H(S)=Sum i: p(Si)*-log2(p(Si))
Se abbiamo imparato un nuovo fatto Z0, la nostra rimanente incertezza su S sarà:
H(S|Z0)=Sum i: p(Si|Z0)*-log2(p(Si|Z0))
Quindi, se stiamo per imparare un nuovo fatto su Z, ma non sappiamo ancora quale, allora, in media, ci aspettiamo che dopo la nostra incertezza di S sia intorno a:
H(S|Z) = Sum j: (p(Zj) * Sum i: p(Si|Zj)*-log2(p(Si|Zj)))
E questo è come si calcola l’entropia condizionale; dalla quale possiamo ottenere la mutua informazione condizionale.
Ci sono una quantità di teoremi accessori, come:
H(X|Y) = H(X,Y) – H(Y)
e
se I(X;Z) = 0 e I(Y;X|Z) = 0 allora I(X;Y) = 0
ma non mi ci dilungherò.
“Ma,” mi chiederete, “che cos’ha a che fare questo con la natura delle parole e la loro struttura bayesiana nascosta?”
Sono incredibilmente contento che mi abbiate fatto questa domanda, perché intendevo dirvelo che vi piacesse o meno. Ma prima ci sono ancora un paio di preliminari.
Ricorderete — sì, sono sicuro che ve lo ricordate — che c’è una dualità tra la mutua informazione e l’evidenza bayesiana. La mutua informazione è positiva se e solo se la probabilità di almeno alcuni eventi congiunti P(x, y) non è uguale al prodotto delle probabilità degli eventi separati P(x)*P(y). Questo, a sua volta, è esattamente equivalente alla condizione per cui esiste un’evidenza bayesiana tra x e y:
I(X;Y) > 0 =>
P(x,y) != P(x)*P(y)
P(x,y) / P(y) != P(x)
P(x|y) != P(x)
Se condizioniamo su Z, possiamo aggiustare di conseguenza l’intera derivazione:
I(X;Y | Z) > 0 =>
P(x,y|z) != P(x|z)*P(y|z)
P(x,y|z) / P(y|z) != P(x|z)
(P(x,y,z) / P(z)) / (P(y, z) / P(z)) != P(x|z)
P(x,y,z) / P(y,z) != P(x|z)
P(x|y,z) != P(x|z)
La cui ultima riga si legge: “Anche conoscendo Z, imparare lo stato di Y modifica la nostra stima di X.”
Viceversa, come nel nostro caso originale in cui Z è “pari” or “dispari”, Z isola X da Y — cioè, se noi sappiamo che Z è “pari”, imparare che Y è in stato 4 non ci dice niente di più sul fatto che X sia 2, 4, 6, o 8. O se sappiamo che Z è “dispari”, imparare che X è 5 non ci dice niente di nuovo sul fatto che Y sia 1 o 3. Conoscere Z ha reso X e Y condizionalmente indipendenti.
L’indipendenza condizionale è un concetto enormemente importante nella teoria della probabilità — per citare solo un esempio, senza indipendenza condizionale l’universo non avrebbe struttura.
Oggi però intendo parlare di un solo tipo particolare di indipendenza condizionale — il caso di una variabile centrale che scherma altre variabili che la circondano, come un corpo centrale con tentacoli.
Prendiamo cinque variabili U, V, W, X, Y; e supponiamo inoltre che per ogni coppia di queste variabili, una variabile sia evidenza per l’altra. Se prendiamo U e W, ad esempio, imparare che U=U1 ci dice qualcosa che non sapevamo prima sulla probabilità che W=W1.
Un ingestibile casino inferenziale? Evidenze impazzite? Non necessariamente.
Magari U è “Parla una lingua”, V è “Due braccia e dieci dita”, W è “Porta vestiti”, X è “Vulnerabile alla cicuta”, e Y è “Sangue rosso”. Ora, se incontri una cosa-nel-mondo-reale, che potrebbe essere una mela o un sasso, e scopri che questa cosa parla cinese, è facile che tu assegni una probabilità molto più alta al fatto che porti abiti; e se scopri che la cosa non è vulnerabile alla cicuta, ridurrai la stima di probabilità sul fatto che abbia sangue rosso.
Alcune di queste regole sono più forti di altre. C’è il caso di Fred, a cui manca un dito a causa di un incidente con un vulcano, e il caso di Barney il Bambino che non sa ancora parlare, e il caso di Irving l’IRCBot che produce frasi ma non ha sangue. Quindi se impariamo che una certa cosa non porta abiti, non scherma tutto quello che la sua capacità di parlare può dirci sul colore del suo sangue. Se la cosa non porta abiti ma parla, magari è Nellie la Nudista.
Questo è un caso più interessante che, diciamo, cinque variabili intere che sono tutte dispari o pari, ma non altrimenti correlate. In quel caso, conoscere una qualsiasi delle variabili schermerebbe tutto quello che conoscere una seconda variabile potrebbe dirci di una terza.
Ma qui abbiamo dipendenze che non spariscono non appena impariamo il valore di una sola variabile, come mostra il caso di Nellie la Nudista. Quindi abbiamo un pasticcio inferenziale ingestibile?
Niente paura! Perché potrebbe esserci una sesta variabile Z che, se la conosciamo, scherma veramente ogni coppia di variabili l’una dall’altra. Ci può essere una variabile Z — anche se potremmo doverla costruire invece che osservarla direttamente — tale che:
p(u|v,w,x,y,z) = p(u|z)
p(v|u,w,x,y,z) = p(v|z)
p(w|u,v,x,y,z) = p(w|z)
…
Forse, dato che una cosa è un “umano”, le possibilità che parli, si vesta e abbia il numero standard di dita sono tutte indipendenti. A Fred può mancare un dito — ma non è più probabile che sia un nudista di chiunque altro; Nellie non porta mai vestiti, ma sapere questo non rende meno probabile il fatto che parli; e Barney non parla ancora, ma non gli manca nessun arto.
Questo è chiamato il metodo “Bayesiano Naive”, perché spesso non è proprio corretto, ma far finta sia vero può semplificare la vita quando si devono fare i calcoli. Noi non calcoliamo separatamente l’influenza del fatto di portare abiti sulla capacità di parlare dato il numero di dita. Usiamo semplicemente tutte le informazioni osservate per stimare la probabilità che questa cosa sia un umano (o in alternativa qualcosa d’altro, come uno scimpanzé o un robot) e poi utilizziamo le nostre convinzioni relative alla classe centrale per prevedere quello che non abbiamo ancora osservato, come la vulnerabilità alla cicuta.
Ogni osservazione di U, V, W, X, e Y funge semplicemente da evidenza per la variabile della classe centrale Z, e poi usiamo la distribuzione a posteriori di Z per fare le necessarie predizioni sulle variabili non osservate tra U, V, W, X, e Y.
Suona familiare? Dovrebbe:
In effetti, se usiamo il tipo giusto di rete neurale, questa “rete neurale” diventa esattamente, matematicamente equivalente al Bayesiano Naive. L’unità centrale richiede solo una soglia logistica — una curva di risposta a S — e i pesi degli input devono corrispondere ai logaritmi dei rapporti di probabilità, eccetera. È in effetti probabile che questa sia una delle ragioni per cui le risposte logistiche funzionano spesso così bene nelle reti neurali — permettono all’algoritmo di introdurre un po’ di ragionamento bayesiano mentre il progettista non sta guardando.
Solo perché qualcuno ti presenta un algoritmo e lo chiama una “rete neurale”, appiccicandogli sopra parole come “trasandato” e “emergente”, affermando orgogliosamente di non avere idea di come la rete apprenda — beh, non date per scontato che il loro piccolo algoritmo di IA sia davvero Al Di Là del Regno della Logica. Perché questo accrocchio ad hoc, se funziona, avrà probabilmente una struttura bayesiana; potrebbe persino essere esattamente equivalente a un algoritmo del tipo chiamato “Bayesiano”.
Anche se non sembra bayesiano, superficialmente.
E a questo punto sai che i Bayesiani cominceranno a spiegare esattamente come funziona l’algoritmo, quali assunzioni di base riflette, quali regolarità ambientali sfrutta, quando funziona e quando fallisce, e persino come dare un significato comprensibile ai pesi della rete.
Secante, vero?