Capitolo 8

Transcript

Capitolo 8
Indice
8 Teoria dell’Informazione per sorgenti
8.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.2 Codifica di sorgente . . . . . . . . . . . . . . . . . . . . . . .
8.2.1 Classificazione tecniche di codifica di sorgente . . . . .
8.3 Teoria dell’Informazione per sorgenti: premesse matematiche
8.3.1 Entropia si sorgenti senza memoria . . . . . . . . . . .
8.3.2 Codifica di sorgenti senza memoria . . . . . . . . . . .
8.4 La codifica di Huffman . . . . . . . . . . . . . . . . . . . . . .
8.5 Conclusioni e riferimenti bibliografici . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
123
. 123
. 123
. 124
. 125
. 127
. 128
. 130
. 133
A Riassunto formule principali sulla Teoria dell’Informazione per sorgenti135
121
122
Capitolo 8. Teoria dell’Informazione per sorgenti
Dispense Comunicazioni Elettriche, M. Beardo. Ultimo aggiornamento: 30 settembre 2010.
Capitolo 8
Teoria dell’Informazione per
sorgenti
8.1
Introduzione
La Teoria dell’Informazione costituisce la base matematica delle trasmissioni numeriche
moderne. Si divide in due grandi ambiti:
1. Teoria dell’Informazione per sorgenti (solitamente chiamata codifica di sorgente): è
alla base delle tecniche di compressione.
2. Teoria dell’Informazione di canale (solitamente chiamata codifica di canale): è alla
base delle tecniche di codifica, protezione di errore, etc. Sarà introdotta in corsi
successivi, a partire da ”Trasmissione Numerica”.
La figura 8.1 mostra la struttura di un sistema di trasmissione digitale.
• Codifica di sorgente: sistema che, data una certa sorgente di informazione digitale,
cerca di ridurre al massimo il bit-rate da trasmettere (compressione).
Idea base: togliere ”ridondanza” alla sorgente.
• Codifica di canale: sistema che rende la trasmissione resistente agli errori, cioè
diminuisce la P (e) effettiva.
In questo capitolo, ci occupiamo di Teoria dell’Informazione per sorgenti. Si tratta di una
teoria atta a:
1. Caratterizzare le sorgenti di informazione in maniera statistica.
2. Introdurre i concetti di ”compressione” del flusso informativo.
Si tratta di una teoria molto complessa e articolata, pertanto una sua trattazione generale esula dagli scopi di questo corso. In questo capitolo vedremo solo alcuni concetti
introduttivi.
8.2
Codifica di sorgente
Come detto in precedenza, lo scopo della codifica di sorgente è di ridurre il bit-rate in
uscita da una sorgente, ed è molto efficiente su:
• Segnali analogici convertiti in digitale con PCM (ad esempio stream audio MPEG 3
o video MPEG-II);
• File di tipo testuale.
123
124
Capitolo 8. Teoria dell’Informazione per sorgenti
Figura 8.1: Schema a blocchi di un sistema di trasmissione digitale.
Esempio: video digitale
Consideriamo un segnale video con queste caratteristiche:
• 1000 * 800 pixel;
• 16 bit per pixel (circa 65000 colori);
• 50 refresh al secondo.
Bit-rate risultante senza compressione: 640 Mbit/s = 0.64 Gbit/s.
Con MPEG-II si riesce a trasmettere un buon segnale video con un bit-rate attorno a 4-6
Mbit/s.
Esempio: audio (PCM)
Audio digitalizzato, qualità telefonica. Dai 64 kbit/s tipici del PCM non quantizzato si
passa a:
• Circa 13 kbit/s per il cellulare GSM;
• Si riesce a scendere a qualche kbit/s per le tecniche tipiche delle applicazioni Internet
per lo streaming audio (Netmeeting, NetPhone).
8.2.1
Classificazione tecniche di codifica di sorgente
Facendo riferimento alla figura 8.2, possiamo dividere le tecniche di codifica di sorgente in
2 grandi famiglie:
• Compressione senza perdite (lossless): la cascata dei processi di compressionedecompressione porta esattamente allo stesso flusso digitale che si ha in ingresso. Ci
sono infatti molte applicazioni in cui è importante che il processo di compressionedecompressione non generi perdita di informazione. La compressione lossless si usa
solitamente per comprimere dati ”discreti”, come testo, dati generati da computer e
alcuni tipi di immagini e video.
Dispense Comunicazioni Elettriche, M. Beardo. Ultimo aggiornamento: 30 settembre 2010.
8.3. Teoria dell’Informazione per sorgenti: premesse matematiche
125
Figura 8.2: Classificazione tecniche di codifica di sorgente: senza perdite e con perdite.
• Compressione con perdite (lossy): la cascata dei processi di compressionedecompressione porta in uscita ad un flusso digitale diverso da quello in ingresso.
Tuttavia, si fa in modo che la ”perdita” sia tollerabile (o addirittura irrilevante) per
l’utente finale. La compressione con perdite ha il vantaggio che può ottenere tassi
di compressione molto più elevati rispetto a quella senza perdite. La compressione
lossy si usa solitamente per comprimere audio o video, in applicazioni dove un’esatta
ricostruzione dei dati non è fondamentale.
In questo corso, ci occupiamo solo del primo caso (lossless) dove la cascata di codificatoredecodificatore (di sorgente) possono ricostruire in maniera ideale il segnale. L’argomento
è molto complesso, e noi daremo solo i concetti base e un metodo di codifica.
Osservazione generale: i metodi senza perdite si basano sulle caratteristiche statistiche della sorgente; vedremo che in alcuni casi non è possibile ottenere una significativa
compressione.
8.3
Teoria dell’Informazione per sorgenti: premesse matematiche
Facendo riferimento alla figura 8.1, supponiamo di avere una sorgente caratterizzabile
come segue:
• Discretizzata su tempi ed ampiezze;
• Per ogni intervallo di tempo, emette un ”simbolo” preso da un alfabeto di M simboli.
Un semplice esempio di una sorgente di questo tipo è una tastiera che emette caratteri
ASCII.
Commento: nell’ambito della Teoria dell’Informazione alcuni termini assumono significati diversi da altri ambiti.
Dispense Comunicazioni Elettriche, M. Beardo. Ultimo aggiornamento: 30 settembre 2010.
126
Capitolo 8. Teoria dell’Informazione per sorgenti
Indichiamo i simboli dell’alfabeto di sorgente con l’insieme:
X = {m1 , · · · , mM }
Caratterizziamo statisticamente la sorgente con le probabilità di emissione p1 , · · ·, pM
di ciascun simbolo, dove pi = P (mi ). Supponiamo che la sorgente emetta un flusso di
simboli che, in istanti diversi, siano statisticamente indipendenti tra di loro. L’ipotesi di
indipendenza è detta ipotesi di ”sorgente senza memoria”. Questa ipotesi non è vera in
moltissimi casi. La facciamo solo per semplificare la trattazione. Molti sistemi di codifica
traggono vantaggio proprio dalla correlazione temporale tra i vari simboli (ad esempio:
frame successivi di un segnale video).
Idee base:
1. Sfruttare il fatto che i simboli non sono in generale equiprobabili.
2. Associare ad ogni simbolo una opportuna stringa di valori binari ”01001...” con una
associazione a lunghezza variabile.
3. Associare codifiche più corte per i simboli di sorgente più probabili.
In questo contesto i ”bit” delle stringhe di codifica saranno in realtà chiamati ”digit”.
Nell’ambito della Teoria dell’Informazione, il termine ”bit” ha un altro significato (che
vedremo tra poco).
La teoria che presenteremo si basa sull’uso di una ”codifica a lunghezza variabile”. Si
associano codifiche più corte (in numero di digit) per i simboli di sorgente più probabili.
La codifica a lunghezza variabile è il nocciolo della questione, e andrà confrontata con la
soluzione più semplice di codifica a lunghezza fissa, su:
IN Tsuperiore [log2 (M )] = dlog2 (M )e
Esempio: se ho 256 simboli, la codifica più ovvia è quella a lunghezza fissa su:
log2 (256) = 8 digit/simbolo
Se i simboli sono da emettere ogni Tm secondi, il digit-rate necessario è dato da:
1
dlog2 (M )e
Tm
Lo scopo della Teoria dell’Informazione per sorgenti è di cercare di ridurre questa quantità
passando a codifica a lunghezza variabile.
Si ricorda la formula per il calcolo di logaritmi in base 2:
log2 (x) =
log10 (x)
loge (x)
=
log10 (2)
loge (2)
e inoltre che:
log2 (2x ) = x
Dispense Comunicazioni Elettriche, M. Beardo. Ultimo aggiornamento: 30 settembre 2010.
8.3. Teoria dell’Informazione per sorgenti: premesse matematiche
8.3.1
Quantità di
127
Entropia si sorgenti senza memoria
Imponendo due semplici condizioni, intuitivamente desiderabili, ovvero che l’informazione
portata da un simbolo sia tanto maggiore quanto meno il simbolo è probabile; e che
l’informazione di una coppia di simboli indipendenti sia la somma delle rispettive quantità
di informazione, Shannon riconobbe che si deve definire la quantità di informazione di
uno specifico simbolo mi avente probabilità pi come:
informazione
4
I(mi ) = log2
³ ´
1
pi
(8.1)
La quantità di informazione si misura in ”bit”. Vediamo alcune caratteristiche della
quantità di informazione definita dalla (8.1), ricordando che 0 < pi < 1:
1. I(mi ) > 0, cioè è sempre una quantità non negativa (è un numero reale, e può essere
anche minore di 1).
2. Al crescere di pi si ha che I(mi ) decresce.
Esempio: Se pi = P (mi ) = 0.5 ⇒ I(mi ) = 1 bit.
Se pi = P (mi ) = 1 ⇒ I(mi ) = 0 bit.
Interpretazione: un simbolo ”sicuro” non porta informazione.
3. Se m1 e m2 sono due simboli indipendenti, si ha che I(m1 m2 ) = I(m1 ) + I(m2 ).
Infatti:
·
¸
·
¸
1
1
= log2
=
P (m1 m2 )
P (m1 )P (m2 )
¸
·
¸
·
1
1
+ log2
= I(m1 ) + I(m2 )
= log2
P (m1 )
P (m2 )
I(m1 m2 ) = log2
Si definisce come entropia di sorgente la quantità di informazione media di tutta la
sorgente:
4
H(x) = E[Ii ] =
PM
i=1
pi log2
³ ´
·
1
pi
bit
simbolo
¸
Esempio: entropia di sorgente con due elementi
Consideriamo una sorgente con due soli simboli {m1 , m2 } con probabilità p1 = p e p2 =
1 − p. La sua entropia vale:
µ ¶
H(x) = p log2
1
p
µ
+ (1 − p) log2
1
1−p
¶
La figura 8.3 mostra H(x) in funzione di p. L’entropia della sorgente è massima (e in
questo caso vale 1 bit/simbolo) per p = 0.5, cioè per simboli equiprobabili. L’entropia
tende a zero per p → 0 e per p → 1.
Entropia di sorgente con M elementi
Il precedente risultato si estende anche a sorgenti con M > 2 simboli. In particolare si
dimostra (non lo facciamo) che l’entropia è massima per simboli equiprobabili, cioè per:
pi =
1
M
∀pi
Dispense Comunicazioni Elettriche, M. Beardo. Ultimo aggiornamento: 30 settembre 2010.
Entropia di
sorgente
128
Capitolo 8. Teoria dell’Informazione per sorgenti
Figura 8.3: Entropia di sorgente con 2 simboli.
e in tal caso l’entropia vale:
·
H(x) = log2 (M )
Bound
bit
simbolo
¸
In generale si ha sempre il seguente bound superiore per l’entropia di una sorgente con M
simboli:
·
sull’entropia di
H(x) ≤ log2 (M )
sorgente con M
bit
simbolo
¸
simboli
8.3.2
Lunghezza
Codifica di sorgenti senza memoria
Sia ni la lunghezza della codifica del simbolo mi in numero di digit.
Si definisce come lunghezza media di codifica:
media di
codifica
4
n = E[ni ] =
PM
i=1
p i ni
La lunghezza media di codifica è un parametro essenziale per la codifica di sorgente.
Infatti, il digit-rate medio necessario dopo la codifica è dato da:
1
·n
Tm
·
digit
secondo
¸
Il digit-rate medio è un parametro fondamentale. Data una certa sorgente digitale, dopo
la compressione, dovrò ”comprare” un sistema di trasmissione che abbia una velocità di
trasmissione pari ad (almeno) il digit-rate medio.
Allora una codifica è tanto migliore quanto più n è inferiore alla codifica a lunghezza
fissa, dove si ha:
n = dlog2 (M )e
Il caso a lunghezza fissa è cioè da considerare come un riferimento a cui confrontare le
prestazioni del caso codificato a lunghezza variabile.
Dispense Comunicazioni Elettriche, M. Beardo. Ultimo aggiornamento: 30 settembre 2010.
8.3. Teoria dell’Informazione per sorgenti: premesse matematiche
129
Teorema di Shannon della codifica di sorgente
Presentiamo ora un risultato fondamentale della Teoria dell’Informazione. Per qualunque
possibile codifica:
H(x) ≤ n
(8.2)
Inoltre, per qualunque sorgente, esiste una codifica tale per cui:
Teorema di
Shannon della
H(x) ≤ n ≤ H(x) + 1
(8.3)
codifica di
sorgente
Quest’ultimo risultato è noto anche come Teorema di Shannon per la codifica di sorgente.
La dimostrazione dei risultati (8.2) e (8.3) esula dagli obiettivi di questo corso. Questi
risultati sono essenziali poiché danno un limite teorico alla lunghezza media di codifica,
cioè a quanto si può comprimere (senza perdite). Questo limite è strettamente legato
all’entropia della sorgente, cioè alle sue caratteristiche statistiche.
Esempio: simboli equiprobabili. Se M = 256 e i simboli sono equiprobabili:
H(x) = 8 bit/simbolo
una codifica a lunghezza fissa richiede 8 digit/simbolo ed è dunque la migliore possibile.
Codici a lunghezza variabile a prefisso
Nei codici a lunghezza variabile non si vuole mettere un demarcatore di separazione tra le
codifiche di ciascun simbolo. Questo pone delle richieste sulle codifiche.
Esempio: consideriamo una codifica come in tabella 8.1. Supponiamo che la stringa da
SIMBOLO
A
B
C
D
CODIFICA
0
01
10
1
Tabella 8.1: Esempio codifica a lunghezza variabile.
codificare sia:
AB B C A ⇒ 00101100
Il decodificatore può indifferentemente decodificare in uno dei due modi mostrati in figura
8.4. E’ chiaro che un sistema di questo tipo non funziona. Nessuna delle due stringhe
decodificate è uguale a quella di partenza, pur avendo utilizzato la stessa tabella di decodifica. Il motivo è che il codice non è univocamente decodificabile: infatti 01 può essere
decodificato come B oppure come due simboli A e D.
Per risolvere il problema, si devono usare codici che siano univocamente decodificabili.
Data cioè una sequenza di digit deve essere possibile decodificarla univocamente. In questo
corso, per risolvere questo problema, useremo la regola del prefisso: nessuna codifica
può essere il prefisso della codifica di un altro simbolo. In questo modo siamo
Dispense Comunicazioni Elettriche, M. Beardo. Ultimo aggiornamento: 30 settembre 2010.
Regola del
prefisso
130
Capitolo 8. Teoria dell’Informazione per sorgenti
Figura 8.4: Due possibili modi per decodificare la stringa ABBCA codificata col
codificatore di figura 8.1. Si noti che entrambe le decodifiche sono errate.
Figura 8.5: Decodifica codice tabella 8.2. Si noti come in questo caso la decodifica sia
corretta, trattandosi di un codice a prefisso.
sicuri che un codice è univocamente decodificabile1 . Nel seguito, chiameremo i codici che
seguono la regola del prefisso codici a prefisso.
Esempio: consideriamo il codice di tabella 8.2. Si tratta di un codice a prefisso. Supponiamo
SIMBOLO
A
B
C
D
CODIFICA
0
10
110
111
Tabella 8.2: Esempio codice a lunghezza variabile a prefisso.
che la stringa da decodificare sia:
AB B C A ⇒ 010101100
In questo caso il decodificatore opera correttamente, come mostrato in figura 8.5. Si noti
come in questo caso non ci sia ambiguità nella decodifica.
8.4
La codifica di Huffman
Presentiamo ora il più semplice esempio di codifica di sorgente (senza perdite). Si tratta
della codifica di Huffman (dal nome del suo inventore). Si tratta del semplice algoritmo
descritto qui di seguito.
1
Si noti che esistono dei codici univocamente decodificabili che non seguono la regola del prefisso ma in
questo contesto non ci interessano.
Dispense Comunicazioni Elettriche, M. Beardo. Ultimo aggiornamento: 30 settembre 2010.
8.4. La codifica di Huffman
131
STEP (ALGORITMO DI HUFFMAN)
1. Ordinare i simboli per probabilità decrescenti.
2. Raggruppare i due simboli con probabilità più bassa, e considerarli come un unico
simbolo.
3. GOTO 2.
Alla fine, assegnare opportunamente i digit sulla struttura ad albero risultante. Su ciascuna ramificazione, assegnare ”0” verso il basso e ”1” verso l’alto.
Vediamo il funzionamento dell’algoritmo con un esempio.
Esempio (codifica di Huffman)
Si consideri l’alfabeto di tabella 8.3. Con una codifica a lunghezza fissa devo usare 3 digit
per simbolo.
SIMBOLO
A
B
C
D
E
Tabella 8.3:
Huffman).
PROBABILITA’
0.2
0.05
0.04
0.01
0.7
Alfabeto di sorgente con relative probabilità (per esempio codifica di
Calcolo dell’entropia:
H(x) =
5
X
µ
pi log2
i=1
1
pi
¶
= 1.29
bit
simbolo
Costruiamo ora una codifica di Huffman per questo alfabeto. L’albero per la codifica è
mostrato in figura 8.6. Una volta assegnati i digit, per trovare le parole di codice bisogna
percorrere l’albero da destra verso sinistra, dalla ”root” fino alle foglie (vedi figura 8.7).
Ad esempio per il simbolo C si ottiene la codifica ”1110”. Procedendo analogamente con
gli altri simboli, si ottengono i risultati schematizzati in tabella 8.4. Si ha:
SIMBOLI
A
B
C
D
E
pi
0.2
0.05
0.04
0.01
0.7
CODIFICA
10
110
1110
1111
0
ni
2
3
4
4
1
Tabella 8.4: Codifica Huffman esempio.
Dispense Comunicazioni Elettriche, M. Beardo. Ultimo aggiornamento: 30 settembre 2010.
132
Capitolo 8. Teoria dell’Informazione per sorgenti
Figura 8.6: Costruzione albero per esempio codifica Huffman.
Figura 8.7: Percorso per trovare la parola di codice relativa al simbolo C dell’esempio sulla
codifica Huffman.
n = 1.45
digit
simbolo
Notare che si è ottenuta una compressione rispetto al caso a lunghezza fissa pari a:
1.45
= 0.483 ≈ 48% di compressione
3
Dispense Comunicazioni Elettriche, M. Beardo. Ultimo aggiornamento: 30 settembre 2010.
8.5. Conclusioni e riferimenti bibliografici
133
Se la sorgente emette simboli a 1 kbaud2 :
• Con codifica a lunghezza fissa sono necessari:
3
kdigit
s
• Con questa codifica si ha:
1.45
kdigit
s
Conclusioni:
• L’algoritmo di Huffman è uno dei più semplici. Ha in generale una ottima efficienza;
• Tuttavia richiede una conoscenza completa delle statistiche della sorgente prima di
iniziare il processo di codifica. Ad esempio, per codificare un file di testo richiede
due passaggi: un primo passaggio per stimare le statistiche e stabilire la tabella di
codifica. Un secondo passaggio per effettuare la vera e propria codifica.
Esistono altri algoritmi più complessi, che in particolare:
• Creano la tabella di codifica ”in tempo reale” in contemporanea al processo di
codifica stessa;
• Tengono conto della correlazione dei simboli (memoria della sorgente).
Esempio: ”dictionary methods”. Esempi:
• Metodo di Lempel-Ziv (alla base di svariati software di compressione freeware);
• Metodo ZIP (alla base del software commerciale WinZip).
8.5
Conclusioni e riferimenti bibliografici
Questo capitolo ha presentato una breve introduzione alla Teoria dell’Informazione, con
particolare attenzione alla codifica di sorgente. Si tratta di un argomento molto vasto e
complicato. Una sua trattazione esaustiva esula dagli scopi di questo corso.
Si riportano qui di seguito alcuni testi di riferimento che consigliamo al lettore interessato ad ulteriori approfondimenti. Alcuni di questi testi saranno utili in corsi successivi.
• [1] Khalid Sayood, Introduction to Data Compression, Morgan Kaufmann
Publishers In.
Si tratta di un libro abbastanza semplice e molto ben fatto, che descrive i fondamenti
della compressione dati. Sarà utile anche per corsi successivi, soprattutto per chi
continuerà con la laurea specialistica. Caldamente consigliato.
2
1 baud = 1 simbolo/secondo.
Dispense Comunicazioni Elettriche, M. Beardo. Ultimo aggiornamento: 30 settembre 2010.
Riferimenti
bibliografici
134
Capitolo 8. Teoria dell’Informazione per sorgenti
Dispense Comunicazioni Elettriche, M. Beardo. Ultimo aggiornamento: 30 settembre 2010.
Appendice A
Riassunto formule principali sulla
Teoria dell’Informazione per
sorgenti
Si riportano in questa appendice le formule principali che sono state ottenute in questo
capitolo. Tali formule possono essere utili per lo svolgimento degli esercizi delle esercitazioni.
Si ricorda che è fondamentale, ed è compito dello studente, conoscere a fondo sia le
ipotesi sotto le quali sono state ottenute le varie formule, sia il significato esatto dei vari
parametri.
Per facilitare il ritrovamento di queste formule all’interno del capitolo, quando sono
state ottenute, sono state messe all’interno di un riquadro per evidenziarle meglio.
• Quantità di informazione:
µ
I(mi ) = log2
1
pi
¶
[bit]
• Entropia di sorgente:
H(x) = E[Ii ] =
M
X
µ
pi log2
i=1
·
H(x) ≤ log2 (M )
1
pi
¶ ·
bit
simbolo
bit
simbolo
¸
• Lunghezza media di codifica:
n = E[ni ] =
M
X
pi ni [digit]
i=1
• Relazioni fondamentali:
H(x) ≤ n
H(x) ≤ n ≤ H(x) + 1
135
¸