giovedì 4 giugno 2020

I Teoremi di Gödel, l'IA e... un'ipotesi di lavoro! (seconda parte)

Nel post precedente (a cui rimandiamo) abbiamo introdotto i Teoremi di incompletezza di Gödel con l'obiettivo di mostrare poi (cioè in questo post) come essi ci pongano davanti ad una disgiunzione: o la mente umana è equivalente ad una macchina di Turing per quanto complessa oppure siamo in presenza di un fenomeno completamente nuovo, mai studiato prima.
Nota: vedi anche l'articolo "La disgiunzione di Gödel" di F. Beccuti.

Introduciamo quindi quella che è stata definita Macchina di Turing: in pratica questo termine indica uno qualsiasi degli attuali computer poiché essi sono realizzazioni fisiche di questa macchina ideale e universale in grado di eseguire qualsiasi algoritmo si possa formalizzare.

Come è noto si è dimostrata la perfetta equivalenza tra ogni sistema formale S e la macchina ideale di Turing: cioè è possibile programmare un computer che produca tutti e soli i teoremi di un dato sistema S e, viceversa, qualsiasi programmazione di un computer che produce formule, può essere rappresentata da un sistema formale S che derivi gli stessi risultati.

Quindi la scommessa dell'intelligenza artificiale è proprio quella di supporre che l'insieme delle capacità cognitive del nostro cervello, in particolare il processo del pensiero razionale, possa essere completamente riprodotto ed espresso da un programma evoluto per computer.

L'obiezione più nota a questo programma di ricerca è quella del filosofo Lucas nel celebre articolo "Menti, Macchine e Gödel" (del 1961):
"Data qualsiasi macchina che sia coerente e capace di fare semplice aritmetica, c'è una formula che essa è incapace di produrre come vera - cioè la formula è indimostrabile nel sistema - tuttavia noi la possiamo vedere come vera. Perciò nessuna macchina può essere un modello completo o adeguato della mente, le menti sono essenzialmente differenti dalle macchine"*.

Questa tesi segue proprio dall'argomento di incompletezza di Gödel, in particolare dal primo teorema (vedi il precedente post), ed è confermata dal Teorema di indefinibilità di Tarski (del 1936) che afferma che non è possibile definire la nozione di verità all'interno di un sistema formale.
Nota: si può definire la nozione di verità solo facendo una meta-analisi al di fuori del sistema, ad esempio usando la logica del secondo ordine.

Quindi sembrerebbe stabilita la tesi di Lucas secondo cui le nostre capacità cognitive, in particolare quelle che determinano il pensiero razionale, sono di certo superiori a quelle di una qualsiasi macchina o computer.

Tuttavia dobbiamo ricordare che il teorema di Gödel fa in effetti una affermazione che è del tutto condizionale:
"Se S è coerente allora G non è dimostrabile".
Ma la nostra mente è veramente in grado di riconoscere se un qualunque sistema formale è coerente dato che questa proprietà non può essere provata all'interno di un qualsiasi sistema?
Nota: se S non è coerente si può dimostrare G (ma anche non-G) quindi la mente potrebbe essere un sistema incoerente e dimostrare che G è vera.

Inoltre ciò dovrebbe valere per qualsiasi sitema formale (come ad esempio sistemi più complessi che includono gli assiomi dell'infinito), perciò non è detto che la mente umana riesca sempre a riconoscere che un sistema è coerente.
Nota: la mente umana potrebbe essere un sistema coerente che non può dimostrare G (e quindi è incompleta) ma che non sa di essere coerente.

Lo stesso Gödel, che non era proprio un meccanicista, affermò nella Gibbs Lecture (del 1951), che potrebbe essere che "la mente umana (nel regno della matematica pura) [...] sia dunque equivalente ad una macchina finita che è incapace di comprendere interamente il suo funzionamento".

In definitiva, chi si occupa di intelligenza artificiale o di processi cognitivi e apprendimento, è costretto a fare una ben definita scelta o ipotesi di lavoro:
a) la mente umana non è riducibile ad una macchina di Turing che computa, quindi dobbiamo studiare le sue capacità cognitive in modo del tutto nuovo, poiché non possiamo trattarla come se fosse un oggetto computazionale**;
oppure
b) il nostro cervello funziona come un computer per quanto evoluto, tuttavia se la nostra mente è coerente, siamo costretti ad accettare che ci siano dei problemi irresolubili, come ad esempio dimostrare la sua coerenza***.
Nota: per approfondire l'interessante tema mente-cervello vedi l'ottimo articolo di Paul e Patricia Churchland "Il problema mente-cervello".

(*) Per completare il sistema S potremmo aggiungere G come assioma, si otterrebbe però un sistema S' in cui c'è una nuova formula G' indecidibile e così via, senza risolvere il problema.
(**) Qui il punto è proprio quello di voler attribuire alla mente un carattere diverso da quello computazionale (e non tanto la sua eventuale somiglianza ad un computer che è solo un modello interpretativo).
(***) Se la mente segue le leggi della fisica può senz'altro essere simulata computazionalmente; in questo contesto cervello e mente sono elementi complementari: la mente (software) è una funzione del cervello (hardware).

(Per chiarimenti su questo post vedi l'ottimo video di Francesco Berto)

martedì 2 giugno 2020

I Teoremi di Gödel, l'IA e... un'ipotesi di lavoro! (prima parte)

In questo e nel prossimo post vogliamo mostrare come i due Teoremi di incompletezza di Gödel (del 1931), sebbene non vietino in alcun modo che l'intelligenza artificiale si possa realizzare (nel senso di seguito specificato), ci impongono tuttavia di operare una scelta, o meglio un'ipotesi di lavoro.

Qui con il termine Intelligenza Artificiale (IA) intendiamo un suo aspetto peculiare, secondo cui un sistema meccanico che computa potrebbe pensare in modo umano; in effetti se si suppone che la mente umana non è altro che una macchina computazionale, la tesi dell'IA ne discende direttamente.

Quindi l'IA suppone che pensare è computare e in particolare si pone l'obiettivo di realizzare una macchina che possa pensare umanamente, in modo cioè che "il processo che porta il sistema intelligente a risolvere un problema ricalchi quello umano" (vedi Wkipedia).

Tuttavia prima di introdurre i teoremi di incompletezza, dobbiamo definire cosa si intende con sistema formale (vedi Wkipedia):
"In logica matematica la nozione di sistema formale è utilizzata per fornire una definizione rigorosa del concetto di dimostrazione"; in pratica un sistema formale è un insieme di regole per costruire dimostrazioni.
Nota: si suppone che il sistema sia corretto, cioè se gli assiomi sono veri i teoremi che si deducono con le regole di inferenza sono anch'essi veri.

In breve il problema che Gödel riesce ad esprimere in modo formale nei suoi teoremi è quello dell'autoreferenza (vedi Wikipedia) che si presenta quando una proposizione fa una affermazione su se stessa in modo circolare; un problema già noto agli antichi greci come il Paradosso del mentitore.

Si consideri quindi un sistema formale S, evoluto almeno quanto quello piuttosto semplice dell'aritmetica di Peano; Gödel riesce a formalizzare all'interno del sistema S la seguente frase G che afferma (di se stessa):
(G): G non è dimostrabile in S.
Nota: grazie alla fattorizzazione in numeri primi è possibile assegnare ad una qualsiasi frase formale un numero univoco detto numero di Gödel.

Ora se si suppone che S sia un sistema formale corretto e quindi prova solo cose vere, allora G non è dimostrabile, dunque G è vera: ma allora esiste una verità G che il sistema S non può dimostrare!
Nota: se G fosse dimostrabile allora G (che dice di non essere dimostrabile) sarebbe falsa e quindi S non sarebbe corretto perché dimostra una falsità.

Inoltre se G è vera la sua negazione non-G è falsa (per definizione di negazione), ma allora il sistema S (che prova solo cose vere) non può provare nemmeno non-G: dunque l'enunciato G è indecidibile* in S!

-> Enunciamo quindi il primo teorema di Gödel (vedi Wikipedia):
In ogni teoria matematica S sufficientemente espressiva da contenere l'aritmetica, esiste una formula G tale che, se S è coerente**, allora né G né la sua negazione non-G sono dimostrabili in S.
Nota: con coerente si intende che S non è contraddittorio, d'altra parte se il sistema è corretto è anche coerente (non dimostrando falsità).

Si ricordi che se un sistema è incoerente si può dimostrare una certa proposizione P e la sua negazione non-P ma se così fosse qualsiasi proposizione potrebbe essere dimostrata vera (vedi Wikipedia): sarebbe quindi opportuno riuscire a dimostrare in modo certo la coerenza di S.

Tuttavia Gödel riuscì a mostrare formalmente che il seguente enunciato:
"Se S è coerente allora ciò implica G" 
si può dimostrare in S. Ma allora S non può dimostrare la sua coerenza altrimenti G sarebbe dimostrabile, e ciò è escluso dal primo teorema.

-> Ecco quindi il secondo teorema di Gödel (vedi Wikipedia): 
Sia S una teoria matematica sufficientemente espressiva da contenere l'aritmetica: se S è coerente, non è possibile provare la coerenza di S all'interno di S.
Nota: la coerenza dell'aritmetica fu poi dimostrata nel 1936 in ambito metamatematico da Gerhard Gentzen grazie agli ordinali transfiniti.

Nel prossimo post mostreremo come le argomentazioni espresse nei teoremi di Gödel non siano conclusive sulla possibile realizzazione dell'IA come sopra specificato, ma ci impongano una scelta ben precisa nell'approccio alla comprensione delle nostre capacità cognitive e quindi della nostra mente.

(*) Il risultato è notevole: si dimostra l'indecibilità di una formula G nel sistema S alla quale è tra l'altro collegata la coerenza di S (vedi oltre).
(**) In realtà Gödel richiese la w-coerenza di S che è più forte della sola coerenza, ma poi Rosser dimostrò che non era necessaria.

(Per chiarimenti su questo post vedi l'ottimo video di Francesco Berto)

lunedì 23 marzo 2020

Stati misti, intrecciati e...

Come anticipato nel post "Stati puri, miscele e sovrapposizioni!", ora analizziamo un sistema composto da due elettroni e verifichiamo se si tratta di uno stato di spin puro o misto grazie alla matrice densità prima definita*. 

Consideriamo ad esempio un sistema composto da due elettroni preparati separatamente nei seguenti stati di spin (dove u e d sta per up e down):
|Ψ>=ψu|u>+ψd|d>   e   |Φ>=φu|u>+φd|d>.
Lo stato prodotto che descrive il sistema combinato è:
|ΨΦ>=(ψu|u>+ψd|d>)⊗(φu|u>+φd|d>)
quindi sviluppando il prodotto tensoriale indicato con si ottiene:
|ΨΦ>=ψuφu|uu>+ψuφd|ud>+ψdφu|du>+ψdφd|dd>.
con le condizioni di normalizzazione:
ψuψu+ψdψd=1   e   φuφudφd=1.
Nota: ψu è il complesso coniugato di ψu e lo stesso vale per gli altri valori.

Tuttavia si osservi che in generale un sistema composto da due elettroni è descritto dal seguente stato di spin:
|Ψ>=ψuu|uu>+ψud|ud>du|du>dd|dd>
che non è sempre rappresentabile da uno stato prodotto (vedi sopra) e per il quale vale la condizione di normalizzazione:
ψuuψuu+ψudψudduψduddψdd=1.
Nota: questo stato combinato è detto stato entangled (o intrecciato) proprio perché non può essere fattorizzato in due stati separati.

Ad esempio consideriamo una coppia di elettroni, preparata con spin opposti, il cui stato combinato non fattorizzabile è:
|Ψ>=(1/2)1/2|ud>+(1/2)1/2|du>
dove la somma degli stati |ud> e |du> rappresenta due coppie di elettroni con spin opposti in sovrapposizione quantistica, mentre il fattore (1/2)1/2 indica che la misura di uno dei due stati è equiprobabile poiché:
ψudψudduψdu=1/2.
Nota: possiamo ad esempio pensare al caso descritto nell'esperimento EPR (per chiarimenti vedi il post "Un esperimento chiave: EPR").

Calcoliamo quindi la matrice densità, già introdotta nel post "Stati puri, miscele e sovrapposizioni!", che è così definita:
ρ=|Ψ><Ψ|=(1/2)(|ud>+|du>)(<ud|+<du|)
dalla quale svolgendo il prodotto si ottiene:
ρ=(1/2)(|ud><ud|+|ud><du|+|du><ud|+|du><du|).

Premesso che indicheremo i vettori colonna come vettori riga trasposti, scegliamo due vettori di base: |u>=(1,0)T e |d>=(0,1)T (dove T indica la matrice trasposta)** e sviluppiamo i prodotti tensoriali:
|ud>=(1,0)T⊗(0,1)T=(0,1,0,0)T   ,   |du>=(0,1)T⊗(1,0)T=(0,0,1,0)T
 <ud|=(1,0)⊗(0,1)=(0,1,0,0)   ,   <du|=(0,1)⊗(1,0)=(0,0,1,0).

Quindi, svolgendo i prodotti sopra definiti, si ottiene la matrice [4x4]:
Infatti come già visto nel precedente post, gli elementi di ρ sono i prodotti delle ampiezze di probabilità per i coniugati; in particolare nel nostro caso risulta:
ψudψududψduduψudduψdu=1/2 

mentre gli altri elementi di ρ sono tutti nulli (per come è stato definito lo stato |Ψ>=ψud|ud>+ψdu|du> con ψuddu=(1/2)1/2).

A questo punto possiamo verificare facilmente la relazione ρ=ρ2 (basta moltiplicare la matrice ρ per se stessa); ciò significa che siamo in presenza di uno stato puro quindi la conoscenza del sistema combinato è completa***.
Nota: il sistema è stato preparato in uno stato definito di spin perciò è puro, inoltre ciò implica una forte correlazione tra gli spin delle due particelle (poiché se un elettrone è misurato up l'altro è down e viceversa).

Tuttavia la matrice densità ρ riguarda tutto il sistema combinato mentre noi vorremmo descrivere lo stato di ogni singolo elettrone (chiamiamoli A e B).

A questo scopo introduciamo la matrice densità ridotta che permette di studiare uno dei due sottosistemi (supponiamo A) ed è così definita:

ρA=∑<i|ρ|i>=TrBρ
rispetto ad una base di vettori |i> del sistema B.
Nota: TrB è l'operatore traccia parziale sulla base di B; in modo equivalente si ha ρB=TrAρ. Inoltre se |Ψ> è uno stato prodotto risulta ρ=ρAρB.

Perciò nel caso considerato possiamo calcolare la matrice ridotta dello stato di spin dell'elettrone A (oppure di quello B) e risulta:
ρA=1/2(|u><u|+|d><d|)=1/2(1,0)T(1,0)+1/2(0,1)T(0,1)=(1/2)I
dove con I abbiamo indicato la matrice identità; da ciò si deduce subito che ρAρA2 cioè siamo in presenza di uno stato composto(!)
Nota: I è una matrice diagonale con tutti gli elementi pari a 1 perciò I2=I.

Ciò significa che gli stati dell'elettrone A (oppure di quello B) non sono in sovrapposizione quantistica, l'incertezza sullo spin è in realtà dovuta alla non completa conoscenza dello stato del sottosistema-elettrone e la probabilità statistica che lo spin sia up oppure down è pari a 1/2.
Nota: a differenza della meccanica classica però, nemmeno in linea di principio si può definire lo stato del sistema A (o B) prima della misura.

È interessante osservare che il famoso Paradosso del gatto di Schrödinger può essere trattato come lo stato entangled che abbiamo ora considerato; ciò significa che anche in questo caso non si ha sovrapposizione di due stati distinti (gatto vivo e gatto morto) poiché il sottosistema "gatto" si trova in uno stato misto di tipo statistico e non è in sovrapposizione quantistica.

(*) Nel precedente post abbiamo definito, per uno stato puro, la matrice densità ρ=|Ψ><Ψ| per la quale risulta ρ2=|Ψ><Ψ|Ψ><Ψ|=ρ; invece per uno stato misto si pone ρ=∑pi|Ψi><Ψi| dove pi è la probabilità che il sistema si trovi nello stato i-esimo e in questo caso risulta ρ≠ρ2.
(**) Si osservi che i vettori di base scelti soddisfano correttamente le condizioni di ortonormalità: <u|u>=<d|d>=1 e <u|d>=<d|u>=0.
(***) Le teorie a variabili nascoste affermano invece che la conoscenza quantistica del sistema composto non è completa proprio perché lo stato dei singoli sottositemi non è definito con certezza.

martedì 3 marzo 2020

Stati puri, miscele e sovrapposizioni!

Come è noto, definito uno stato |Ψ> di un qualsiasi sistema quantistico la sua evoluzione temporale, una volta fissato lo stato iniziale, è descritta dalla equazione di Schrödinger (vedi Wikipedia), scritta nella notazione di Dirac:
i(h/2π)∂|Ψ>/∂t=H|Ψ>
dove il valore medio dell'operatore hamiltoniano <H> rappresenta il valore di aspettazione dell'energia del sistema.

Si osservi che qui ci limitiamo a trattare il caso di uno spazio finito-dimensionale (cioè definito da n vettori di base |i>) per il quale si ha:
|Ψ>=∑ψi|i>
dove ψi sono le ampiezze di probabilità relative ai vettori di base |i>.
Nota: per chiarimenti sul vettore di stato di un sistema quantistico vedi i post "I numeri Compessi e la M.Q." e "Le grandezze Osservabili!".

È però possibile dare una descrizione alternativa ma equivalente a quella di Schrödinger definendo il seguente Operatore di densità*:
ρ=|Ψ><Ψ|
dove ρ è rappresentato da una matrice quadrata che si ottiene moltiplicando il vettore colonna |Ψ> per il suo duale vettore riga <Ψ|.
Nota: l'operatore |Ψ><Ψ| è un proiettore poiché applicato ad uno stato |Φ> si ha |Ψ><Ψ|Φ>=k|Ψ> con k=<Ψ|Φ> (cioè proietta |Φ> lungo |Ψ>).

Poiché il vettore di stato è definito rispetto ad una base ortonormale di vettori |i> si ha che gli elementi di matrice ρij sono dati da**
ρij=<i|ρ|j>
da cui segue subito (sostituendo ρ=|Ψ><Ψ| ed essendo ψi=<i|Ψ>):
ρij=<i|Ψ><Ψ|j>=ψiψj
cioè gli elementi di ρ sono i prodotti delle ampiezze di probabilità (associate ai vettori di base dello stato considerato) per i coniugati.
Nota: solo quando i=j il prodotto ψiψi=|ψi|2 rappresenta la probabilità che il sistema venga misurato nello stato i-esimo.

Inoltre se abbiamo a che fare con un sistema il cui stato non è ben definito, ma è dato da un ensemble statistico di stati possibili i} si può porre:
ρ=∑pi|Ψi><Ψi|
dove pi è la probabilità statistica che il sistema si trovi nello stato i-esimo: in pratica è la media pesata su tutti gli stati possibili del sistema con ∑pi=1.
Nota: la probabilità pi è di tipo statistico poiché è dovuta alla non esatta conoscenza dello stato del sistema (non è una sovrapposizione quantistica).

Si parla quindi di stato puro quando le pi sono tutte nulle tranne una (e pari a 1), mentre negli altri casi avremo uno stato misto poiché si determina una media pesata su tutti gli stati |Ψi> in cui si potrebbe trovare il sistema.

Facciamo subito un esempio di stato puro e consideriamo lo stato di spin di un singolo elettrone (vedi il post "I numeri Complessi e la M.Q.") che può essere descritto in generale (ad es. rispetto alle basi |u> e |d> lungo Z):
|Ψ>=ψu|u>+ψd|d>.
Ciò significa che, dato uno spin preparato in uno stato qualunque |Ψ> e un apparato di misura orientato lungo l'asse Z, i prodotti ψuψu e ψdψd sono le rispettive probabilità che lo spin si trovi nello stato |u> oppure |d>.
Nota: secondo i postulati quantistici, prima della misura lungo l'asse Z gli stati |u> e |d> sono in sovrapposizione quantistica.

Si ricordi infatti che il principale postulato della meccanica quantistica stabilisce che il prodotto ψiψi (cioè i|2) dà la probabilità che il sistema si trovi nello stato i-esimo (ψi è il complesso coniugato di ψi).

Perciò, come mostrato sopra, le componenti della matrice ρ sono:
ρuuuψu , ρuduψd , ρdudψu , ρdddψd
e in particolare risulta: Trρ=ρii=∑ψiψi=1.
Nota: Tr è l'operatore traccia cioè la somma degli elementi ψiψi della diagonale di ρ quindi si ha Trρ=1 (essendo normalizzata a 1).

Ad esempio se prepariamo (misuriamo) lo stato di spin dell'elettrone nella direzione dell'asse X positivo (detto stato right) allora possiamo scrivere (vedi il post "I numeri Complessi e la M.Q."):
|Ψr>=(1/2)1/2|u>+(1/2)1/2|d>
quindi risulta per tutti gli elementi della matrice ρ [2x2]:
ρuuuddu=ρdd=1/2

dove correttamente si ha Trρ=ρuudd=1/2+1/2=1 (cioè la condizione di normalizzazione ψuψudψd=1 è soddisfatta).
Nota: perciò la probabilità che lo spin, misurato lungo l'asse Z, sia up oppure down è pari a 1/2.

Ma ciò che risulta di grande interesse è che per uno stato puro, come quello appena trattato, vale la condizione*** ρ=ρ2 e ciò ci permette di distinguere, come vedremo nel prossimo post, uno stato puro da uno stato misto!
Nota: moltiplicando per se stessa la matrice ρ composta da elementi uguali a 1/2 si ottiene di nuovo la matrice ρ.

(*) L'evoluzione di ρ nel tempo è descritta dalla equazione di Von Neumann:
i(h/2π)∂ρ/∂t=[H,ρ] dove [H,ρ]=Hρ-ρH è il commutatore di H e ρ
(**) Posto |Ψ>=∑ψj|j> si ha <i|Ψ>=∑ψj<j|i>=ψi poiché solo quando j=i si ha <i|i>=1; inoltre dato un operatore A risulta Aij=<i|A|j> infatti possiamo scrivere <i|A|Ψ>=∑ψj<i|A|j>=∑ψjAij <i|A|Ψ>=<i|∑Φj|j>=Φi (per j=i), che rappresenta l'equazione A|Ψ>=|Φ> in forma matriciale.
(***) Per uno stato puro si ha ρ=|Ψ><Ψ| quindi ρ2=|Ψ><Ψ|Ψ><Ψ|=ρ essendo per la condizione di normalizzazione <Ψ|Ψ>=1.

venerdì 7 febbraio 2020

Informazione, codici e bit!

Ricordiamo che è grazie all'entropia informazionale (già trattata nel post "L'Entropia dell'informazione") che si può rispondere ad una fondamentale questione relativa alla memorizzazione e trasmissione di un messaggio:
"Qual è il numero minimo di bit che servono per memorizzare in media il messaggio di una sorgente?" (vedi Wikipedia).
Nota: si vuole cioè stabilire la quantità minima di bit che si devono trasmettere per comunicare un dato messaggio.

Ricordiamo che nel post "L'Entropia dell'Informazione" abbiamo definito l'entropia H(x) di una sorgente discreta (con un numero finito di elementi):
H(x)=<I(x)>
dove <I(x)> è il contenuto medio di informazione della sorgente: 
<I(x)>=∑P(xi)ln(1/P(xi))
mentre P(xi) definisce la probabilità che ogni simbolo xi venga trasmesso.

In particolare se P(x) è la stessa per tutti i simboli (cioè P(x)=1/N) risulta:
<I(x)>=ln(1/P(x))=I(x).
Nota: se P(x)=1/N si ha <I(x)>=lnN∑P(xi)=lnN=I(x) essendo P(xi)=1.

Si dimostra in generale che <I(x)>≤I(x) quindi l'entropia è sempre minore (o al massimo uguale) del contenuto di informazione* di una sorgente che trasmette simboli equiprobabili, cioè risulta: H(x)I(x).

Ora nella trasmissione di dati si sceglie quasi sempre la codifica binaria** indicata dai simboli 0 e 1 — sia per semplicità (perché è costituita da soli due simboli) ma soprattutto per affidabilità (poiché è difficile confondere fisicamente i due simboli) — la cui unità di informazione è detta bit.

Il contenuto di informazione I(x), per questo tipo di sorgente a due valori, viene definito in base-2:
I(x)=log2(1/P(x))
e se l'emissione dei due simboli è equiprobabile (cioè P(x)=1/2) si ha:
I(x)=log2(1/P(x))=1 bit
che è l'unità minima di informazione binaria.
Nota: per cambiare unità di misura e passare da bit a nat (cioè da log2 a ln) basta porre lnx=log2x/log2e≈log2x/1,4 (per le proprietà dei logaritmi).

In particolare con soli due simboli è possibile creare stringhe (cioè sequenze di 0 e 1) la cui lunghezza n determina 2n messaggi distinti; per esempio con stringhe composte da 3 bit possiamo codificare 23=8 messaggi diversi:
000 001 011 111 110 100 101 010
a cui possiamo far corrispondere altrettanti simboli.
Nota: ad esempio possiamo far corrispondere i numeri da 1 a 8 oppure i giorni della settimana (in questo caso sfrutteremmo solo 7 codici).

Ma vediamo un esempio legato all'alfabeto inglese composto da 26 lettere: se ogni lettera fosse trasmessa in modo equiprobabile (P(x)=1/26) il contenuto di informazione per ogni simbolo sarebbe:
I(x)=log2(1/P(x))=log2264,7 bit.
Quindi dovremmo utilizzare esattamente 5 bit per comporre messaggi con l'alfabeto inglese e codificarli in binario***.
Nota: essendo 25=32 sono disponibili sufficienti combinazioni binarie per codificare tutte le 26 lettere dell'alfabeto inglese.

Tuttavia sappiamo che ogni lettera dell'alfabeto viene usata con frequenze diverse (non solo nella lingua inglese) e quindi è opportuno calcolare il contenuto medio di informazione o entropia della sorgente:
H(x)=∑P(xi)ln(1/P(xi))
dove le P(xi) sono le probabilità di ogni lettera calcolate empiricamente.
Nota: un recente studio ha stabilito statisticamente il contenuto medio di informazione dell'alfabeto inglese pari a <I(x)>4,1 bit/simbolo.

Consideriamo ad esempio una sorgente S con soli quattro simboli:
S{A, B, C, D} 
che possiamo codificare utilizzando una sorgente binaria:
A=00, B=01, C=10 e D=11.

Supponiamo che le probabilità di emissione dei simboli sia diversa:
P(A)=1/2, P(B)=1/4 e P(C)=P(D)=1/8
possiamo quindi calcolare l'entropia della sorgente in base-2:
H(x)=∑P(xi)log2(1/P(xi))=(1/2)*1+(1/4)*2+2*(1/8)*3=1,75 bit/simbolo.

Si noti che se la probabilità di emissione fosse la stessa (cioè P(x)=1/4) avremmo:
H(x)=log2(1/P(x))=2 bit/simbolo
poiché l'entropia è in generale maggiore se i simboli sono equiprobabili e in effetti l'entropia è massima per quelle sorgenti completamente casuali.

Ora però ci chiediamo (data la diversa frequenza dei simboli) se non sia possibile ottimizzare il codice, in modo da utilizzare il minor numero possibile di bit nella trasmissione di messaggi.

Proponiamo quindi il seguente abbinamento simbolo-codice:
A=0, B=10, C=110 e D=111.
Nota: coerentemente ai simboli con maggior frequenza facciamo corrispondere meno bit e viceversa (come accade nel codice Morse).

Calcoliamo quindi il numero medio <N(x)> di bit usati per ogni simbolo (calcoliamo cioè la media pesata del numero di bit usati per ogni simbolo):
<N(x)>=∑N(xi)P(xi)=1*(1/2)+2*(1/4)+2*3*(1/8)=1,75 bit/simbolo
dove N(xi) è il numero di bit dell'i-esimo simbolo.

Tuttavia se avessimo usato la codifica precedente, con lo stesso numero di bit per ogni simbolo, avremmo ottenuto un valore più alto:
<N(x)>=∑N(xi)P(xi)=2*(1/2)+2*(1/4)+2*2*(1/8)=2 bit/simbolo
confermando che in generale risulta: H(x)<N(x)>.

Infine si osservi che per questo particolare esempio risulta (vedi sopra):
<N(x)>=H(x)=1,75 bit/simbolo
poiché le probabilità di emissione dei simboli sono diverse.

Ma il fatto che H(x)=<N(x)> è notevole poiché ciò significa, secondo il primo teorema di Shannon, che questa è la migliore codifica possibile(!)
Nota: il teorema è valido per una sorgente senza memoria, cioè quando ogni simbolo viene trasmesso in modo indipendente dal precedente.

(*) Si osservi che il contenuto o meglio la misura dell'informazione non riguarda il significato di un messaggio ma la sua composizione in simboli.
(**) In quasi tutti gli elaboratori elettronici si usa la logica binaria, rappresentata fisicamente da due diversi livelli di tensione elettrica.
(***) Calcoliamo ad esempio il contenuto minimo di informazione necessario per esprimere un orario in forma digitale: 00:00:00.
In totale gli stati dell'orario sono: 24 (ore) x 60 (min.) x 60 (sec.) = 86.400 stati, quindi I(x)=log286.400=16,4 bit cioè servono 17 bit.
Ma possiamo anche scrivere: I(ore)+I(min.)+I(sec.) dove I(ore)=log224=4,6 bit e I(min.)=I(sec.)=log260=5,9 bit per un totale di 5+6+6=17 bit.

venerdì 10 gennaio 2020

L'Entropia dell'Informazione

In generale "l'informazione è l'insieme di dati, correlati tra loro, con cui un'idea (o un fatto) prende forma ed è comunicata" (vedi Wikipedia).

Tuttavia la definizione data sopra può essere meglio specificata: in particolare nel campo dell'elaborazione e della trasmissione dei dati si afferma che l'informazione è il fattore che diminuisce l'incertezza sulla conoscenza di un evento. Ci poniamo quindi il problema di come misurare l'informazione associata alla comunicazione di un evento*.

Introduciamo quindi una nuova definizione, proposta da Claude Shannon, che specifica il contenuto di informazione di un dato messaggio relativo alla comunicazione di un evento.
Se assegnamo ad un evento x la probabilità P(x) di verificarsi, il contenuto di informazione I(x) della comunicazione dell'evento è così definito:

I(x)=ln(1/P(x))
o anche per le proprietà dei logaritmi: I(x)=-lnP(x) (essendo ln1=0).

Quindi questa definizione di contenuto di informazione è legata alla probabilità che un evento si possa verificare e non al contenuto semantico di un messaggio (come vedremo meglio di seguito).
Nota: ln indica il logaritmo naturale ma se la sorgente è, ad esempio, binaria si userà il logaritmo in base-2 per definire I(x) (misurata in bit).

Si osservi che questa particolare definizione è l'unica che rispetta, grazie alle proprietà dei logaritmi, i seguenti requisiti (vedi Wikipedia):
1) se l'evento è certo (cioè P(x)=1) allora il contenuto di informazione della comunicazione è nullo (poiché I(x)=ln1=0);
2) poiché in generale P(x)≤1 l'informazione aumenta (I(x)->∞) al diminuire della probabilità dell'evento (cioè quando P(x)->0);
3) dati due eventi indipendenti x e y la probabilità che si verifichino entrambi è P(x,y)=P(x)P(y) quindi in questo caso: I(x,y)=I(x)+I(y).
Nota: la definizione del contenuto di informazione può essere estesa a due (o più eventi): I(x,y)=ln(1/P(x,y))=ln[(1/(P(x))(1/P(y))]=I(x)+I(y).

In generale una data informazione viene generata da una sorgente che trasmette un insieme di simboli xi (ad esempio le lettere dell'alfabeto) ciascuno caratterizzato da una certa probabilità P(xi) di essere trasmesso dalla sorgente (che può anche essere la stessa per tutti i simboli): ciò significa che la trasmissione di ogni simbolo della sorgente viene valutato come un evento con la sua probabilità.

Perciò il contenuto medio <I(x)> di informazione per una data sorgente è definito dalla seguente relazione:
<I(x)>=∑P(xi)ln(1/P(xi))
si calcola cioè il valore medio di I(x) pesandolo con i coefficienti P(xi).
Nota: nel post "Informazione, codici e bit!" vengono descritti alcuni esempi.

Possiamo quindi definire la quantità H(x) detta entropia della sorgente:
H(x)=k<I(x)> 
che viene misurata in nat/simbolo (se poniamo k=1).
Nota: se invece poniamo k=1/ln2 possiamo esprime l'entropia in base-2 (poiché vale la relazione log2x=lnx/ln2).

In particolare se la probabilità è la stessa per tutti gli N simboli (cioè se P(xi)=1/N per ogni xi) allora
H(x)=∑P(xi)ln(1/P(xi))=lnN∑P(xi)=lnN
essendoP(xi)=1 e quindi per la definizione data sopra di Informazione I(x)=ln(1/P(x))=lnN segue subito
H(x)=I(x).
Nota: si può dimostrare che <I(x)>I(x) quindi in generale: H(x)≤I(x) cioè l'entropia è massima quando la sorgente è completamente casuale.

Poiché come abbiamo visto I(x)÷1/P(x) si può affermare che H(x) misura l'incertezza o meglio il livello di casualità di una data sorgente.
Ma per quale motivo la grandezza H(x) viene chiamata entropia?

Per capirlo ricordiamo innanzitutto che in termodinamica per definire l'entropia statistica – introdotta per la prima volta da Ludwig Boltzmann (vedi il post "L'Entropia secondo Boltzmann") – si considera ad esempio un sistema composto da N particelle distribuite sui vari livelli di energia Ei.

Quindi il numero di tutti i possibili microstati, corrispondenti ad un macrostato assegnato, è dato da (posto N=∑ni):
W=N!/(n1!n2!n3!...)
dove n1, n2, n3... è il numero di particelle per ogni livello E1, E2, E3... e l'entropia termodinamica è per definizione pari a
S=KBlnW
dove KB è la costante dimensionale di Boltzmann.
Nota: nel post "Entropia statistica e termodinamica" abbiamo dimostrato la equivalenza fisica della definizione statistica e di quella termodinamica (qui invece l'equivalenza tra entropia e informazione è solo formale).

In particolare si può dimostrare per N molto grande la seguente relazione**:
lnW≈N∑P(ni)ln(1/P(ni))
dove P(ni)=ni /N è la probabilità di trovare le particelle nello stato Ei.
Ma per analogia lnW può anche indicare, come visto sopra, la probabilità che un dato simbolo xi venga trasmesso da una sorgente:
lnW≈N∑P(xi)ln(1/P(xi))=N<I(x)>.

Quindi in definitiva si può scrivere:
S=KBlnWKBN<I(x)>
essendo come visto sopra lnWN<I(x)> e ciò giustifica almeno formalmente il nome di entropia attribuito al valore H(x)=<I(x)>.
Nota: è chiaro che nella analogia con H(x), la quantità N non indica il numero di simboli della sorgente ma il numero totale di simboli trasmessi.

Perciò se il numero N di particelle è molto grande la definizione delle due entropie è formalmente equivalente risultando:
S÷H(x).
Nota: ad ogni modo la definizione di H(x) resta valida per qualsiasi sorgente e non solo quando N è molto grande.

Tale equivalenza formale ha tuttavia spinto Léon Brillouin ad affermare che in realtà al contenuto di informazione <I(x)> corrisponde fisicamente una entropia termodinamica pari a S=KB<I(x)>, da calcolare ad esempio nel computo dell'entropia di un sistema in cui si fa uso di bit d'informazione***.
Nota: in pratica Brillouin ipotizza che acquisire informazione non è mai gratis ma ha sempre un costo in termini di energia.

(*) Con il termine incertezza di un evento in pratica si collega l'informazione alla probabilità che questo si possa verificare: per esempio sapere che ad agosto ha piovuto contiene più informazione di sapere che a novembre pioverà (essendo più probabile).
(**) Per l'approssimazione di Stirling se N è molto grande vale la relazione lnN!≈NlnN-N ed essendo lnW=lnN!-ln(n1!n2!n3!...) segue sostituendo: lnW≈NlnN-∑nilnni. Perciò poiché ni=NP(ni) ed essendo ∑P(ni)=1 si ha: lnW≈NlnN-[Nln∑P(ni)+N∑P(ni)lnP(ni)]≈N∑P(ni)ln(1/P(ni)).
(***) Il paradosso del diavoletto di Maxwell, che sembra violare il secondo Principio della termodinamica, può essere spiegato proprio grazie all'introduzione di S=KB<I(x)> nel calcolo dell'entropia del sistema.
Tuttavia la soluzione generale al paradosso deriva dal Principio di Landauer secondo cui l'eliminazione di 1 bit di informazione produrrebbe una quantità ciclica minima di calore non eliminabile pari a KBTln2.