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 ¸