Federico Soave Studio e applicazioni dell’Algoritmo di Viterbi i.t.i.s. “G. Marconi” Verona, Giugno 2010 Indice 1 Andrew Viterbi 1.1 Origini . . . . . . . . . . . . . 1.2 Studi . . . . . . . . . . . . . . 1.3 Impieghi . . . . . . . . . . . . 1.4 Riconoscimenti . . . . . . . . 1.4.1 Premi . . . . . . . . . 1.4.2 Lauree Honoris Causa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3 3 3 4 4 4 2 Algoritmo di Viterbi 2.1 Storia . . . . . . . . . . . . . . . . 2.2 Concetti . . . . . . . . . . . . . . . 2.2.1 Base matematica . . . . . . 2.2.2 Complessità computazionale 2.2.3 Un problema di calcolo . . . 2.3 Esempio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5 5 5 6 6 7 . . . . . . 8 8 8 8 9 10 10 . . . . . . . . . . . . 3 Catene di Markov 3.1 Definizione formale . . . . . . . . . . . . . . . . 3.1.1 Catene di ordine m . . . . . . . . . . . . 3.2 Esempio di catena di Markov . . . . . . . . . . 3.3 Modelli di Markov nascosti . . . . . . . . . . . 3.3.1 Problemi sui modelli di Markov nascosti 3.3.2 Esempio di modello di Markov nascosto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Andrew Viterbi Andrew James Viterbi è scienziato, ingegnere, imprenditore e filantropo. È considerato a pieno diritto uno dei padri della rivoluzione digitale delle telecomunicazioni. Ha inventato il famoso Algoritmo di Viterbi, che sta alla base del funzionamento dei telefoni cellulari e di altre numerose tecnologie di trasmissione delle informazioni. 1.1 Origini Andrea Viterbi nasce a Bergamo il 9 Marzo del 1935 da una famiglia di origine ebraica. Il padre, Achille, è cugino della moglie di Primo Levi. Nel 1939 fugge negli Stati Uniti per via delle leggi razziali ed il suo nome viene naturalizzato in Andrew1 . 1.2 Studi Si diploma alla “Boston Latin School” nel 1952 e successivamente studia Ingegneria Elettrotecnica al Massachusetts Institute of Technology (MIT), dove ha la possibilità di seguire i corsi di importanti professori. I suo interessi si concentrano sulle problematiche della trasmissione di segnali digitali e su un’innovativa tecnica trasmissiva chiamata “spread spectrum” 2 , che consiste nell’impiegare una gamma di frequenze più ampia rispetto a quella strettamente necessaria per l’invio dell’informazione desiderata. Nel 1962 consegue un Ph.D. presso la University of Southern California (USC), presentando una tesi sui metodi di codifica e decodifica. 1.3 Impieghi Lavora in un gruppo di lavoro presso il Jet Propulsion Lab e, proprio grazie ai suoi studi, contribuisce alla progettazione dell’impianto di telemetria del primo satellite artificiale americano, l’Explorer1. Nel 1963 viene assunto come professore presso la School of Engineering and Applied Sciences della University of California, Los Angeles (UCLA), posizione che mantiene fino al 1973. Assieme ai colleghi Irwin Jacobs e Leonard Kleinrock3 , nel 1968 fonda la società Linkabit, che riesce a procurarsi importanti commissioni da agenzie governative militari per le quali sviluppa apparecchiature per le comunicazioni radio. Alla base delle tecnologie impiegate da Linkabit negli apparecchi elettronici sta l’Algoritmo di Viterbi. Nel 1985, sempre insieme a Jacobs, fonda la Qualcomm Inc., gigante dell’industria delle telecomunicazioni. Viterbi contribuisce allo studio e perfezionamento di una innovativa tecnica di multiplazione, il CDMA (Code Division Multiple Access), che promette prestazioni nettamente superiori rispetto a quelle delle tecniche tradizionali. Durante la fase di 1 Nei paesi anglofoni Andrea è un nome solamente femminile. Traduzione di “spettro allargato”. 3 Leonard Kleinrock è un informatico; ha contribuito in maniera importante allo sviluppo di Arpanet, progenitrice di Internet. 2 3 1 Andrew Viterbi standardizzazione della seconda generazione di telefonia cellulare, la Qualcomm propone l’adozione del CDMA come alternativa alle altre tecniche: FDMA (Frequency Division Multiple Access) e TDMA (Time Division Multiple Access), riuscendoci. Ritiratosi dall’industria, Viterbi si dedica in particolar modo alla filantropia, attraverso la Viterbi Family Foundation. 1.4 Riconoscimenti Il 2 Marzo 2004, a scuola di ingegneria della University of Southern California, dove Viterbi aveva conseguito il dottorato di ricerca è stata rinominata “Andrew and Erna Viterbi School of Engineering”. In quell’occasione, Viterbi ha devoluto alla USC la somma di 52 milioni di dollari. 1.4.1 Premi • 1975: “Cristoforo Colombo”, del Consiglio Nazionale delle Ricerche (CNR) • 1984: “Alexander Graham Bell”, dell’IEEE • 1990: “Marconi International Fellowship Award” • 1992: “NEC C& C Award” • 1994: “Eduard Rhein Award” • 2001: “Grande Ufficiale della Repubblica”, Italia 1.4.2 Lauree Honoris Causa • Università di Technion in Israele • Università di Waterloo in Canada • Università di Notre Dame negli Stati Uniti • Università Tor Vergata di Roma • Università La Sapienza di Roma 4 2 Algoritmo di Viterbi 2.1 Storia L’algoritmo nasce nel 1966 come strumento didattico finalizzato a chiarire le potenzialità dei codici convoluzionali, argomento particolarmente difficile nell’attività di insegnamento che Viterbi svolge in quegli anni come professore alla University of California; viene pubblicato ufficialmente solo nell’Aprile del 19671 . Viterbi stesso non crede che sia ottimo e nemmeno che abbia risvolti pratici, perché richiede una quantità di memoria troppo elevata per le possibilità di quel tempo. È attribuito a Jim Massey e David Forney, revisori dell’articolo, il merito di aver riconosciuto nell’Algoritmo di Viterbi il corretto algoritmo ricorsivo per trovare il percorso minimo in un diagramma a traliccio e quindi un decoder ottimo. La valenza pratica dell’algoritmo è individuata da Jerry Heller, che riesce ad implementarne una soluzione hardware (grande quanto un armadio) al Jet Propulsion Lab, ottenendo buoni risultati. Ed è proprio Heller il primo dipendente assunto a tempo pieno alla società Linkabit, presso la quale l’impegno costante è finalizzato alla creazione di un chip economico per la decodifica di codici convoluzionali. Grazie agli incarichi governativi affidatale, la Linkabit riesce ad affermare il proprio decoder come standard per le trasmissioni nello spazio. Le diffusione e commercializzazione di soluzioni basate sull’Algoritmo di Viterbi è successivamente portata avanti da Qualcomm Inc. 2.2 Concetti 2.2.1 Base matematica Come definito in 3.3.1, l’Algoritmo di Viterbi è una soluzione ottima per il problema di Decoding su modelli di Markov nascosti. Dato un modello di Markov nascosto M (caratterizzato da uno spazio degli stati Ω, uno spazio degli eventi Φ, una matrice di transizione Λ, una matrice di emissione B e un vettore di probabilità a priori degli stati all’istante zero π), una sequenza di eventi osservati O = o0 , o1 , o2 , . . . , oT −1 e una sequenza di stati nascosti S = s0 , s1 , s2 , . . . , sT −1 , la probabilità che S abbia generato O è P (O|S) = P (s0 ) · P (o0 |s0 ) · P (s1 |s0 ) · P (o1 |s1 ) · P (s2 |s1 ) · P (o2 |s2 ) · . . . . . . · P (sT −1 |sT −2 ) · P (oT −1 |sT −2 ) = = P (s0 ) · P (o0 |s0 ) · TY −1 [P (ot |st ) · P (st |st−1 )] = t=1 = πs0 · bs0 ,o0 · TY −1 (bst ,ot · ast−1 ,st ) (2.1) t=1 1 Viterbi A. J., “Error bounds for convolutional codes and an asymptotically optimum decoding algorithm”, IEEE Transactions on Information Theory 13. 5 2 Algoritmo di Viterbi La sequenza più probabile di stati avrà quindi probabilità max s0 ...sT −1 h πs0 · bs0 ,o0 · TY −1 (bst ,ot · ast−1 ,st ) i (2.2) t=1 Introduciamo una variabile per facilitare il calcolo: δt (i) = max P (o0 , o1 , o2 , . . . , ot |s0 , s1 , s2 , . . . , st−1 , st = i) s0 ...st−1 (2.3) ovvero la probabilità massima della sequenza parziale di t stati, in cui st = i. La (2.3) è definibile ricorsivamente: ( bi,ot · max aj,i · δt−1 (j) 1 6 t < T j∈Ω (2.4) δt (i) = t=0 bi,ot · πi L’algoritmo restituisce la sequenza S ∗ di stati tale che P (S ∗ |O) = max δT −1 (i) (2.5) i∈Ω La natura ricorsiva dell’Algoritmo di Viterbi è quindi stata dimostrata, ma calcolare ricorsivamente il risultato porta a ripetere più volte gli stessi calcoli, sprecando tempo. La soluzione si ottiene utilizzando la tecnica della programmazione dinamica, che sfrutta la ricorsione ma procede in modo inverso ad essa. 2.2.2 Complessità computazionale La complessità nel tempo è O(N 2 T ), dove N = |Ω|. Questa si ottiene facilmente osservando la (2.4): per trovare la soluzione del problema si devono calcolare tutti i valori di δt (i), ∀t, i. Escluso il caso base per t = 0, il calcolo di δt (i) impiega N passaggi, perché la funzione di max viaggia sull’indice i ∈ Ω. 2.2.3 Un problema di calcolo L’implementazione dell’algoritmo, indipendentemente dalla tecnica utilizzata, presenta un problema relativo al calcolo numerico delle probabilità delle sequenze parziali: presa la (2.1), ci si accorge facilmente che la produttoria, fatta da numeri compresi tra 0 e 1, assume valori sempre più vicini allo zero all’aumentare di T . Il calcolatore trova difficile fare calcoli su numeri così piccoli e si può incorrere in perdita di precisione o addirittura underflow. La soluzione per ovviare al problema è applicare una trasformazione ai valori di probabilità, lavorando sui logaritmi. Estraendo il logaritmo di entrambi i membri, la (2.1) diventa TY −1 log P (O|S) = log πs0 · bs0 ,o0 · (bst ,ot · ast−1 ,st ) = t=1 = log πs0 + log bs0 ,o0 + T −1 X log bst ,ot + log ast−1 ,st t=1 e la (2.4) diventa ( log δt (i) = log bi,0t + max log aj,i + log δt−1 (j) 1 6 t < T j∈Ω log bi,ot + log πi t=0 Un altro vantaggio della trasformazione logaritmica è che le moltiplicazioni sono diventate somme, più veloci da eseguire. 6 2 Algoritmo di Viterbi 2.3 Esempio Applicato al mondo dell’ombrello, l’Algoritmo di Viterbi restituisce S ∗ =(pioggia, pioggia, ¬pioggia, pioggia, pioggia): Figura 2.1: Diagramma a traliccio del mondo dell’ombrello con i valori di δt (i) Tabella 2.1: calcolo dei valori di δt (i) 7 3 Catene di Markov Una catena di Markov o processo markoviano è un processo stocastico1 che ha la proprietà di Markov2 , la quale dice che la variabile casuale dello stato corrente dipende solamente dallo stato immediatamente precedente e da nessun altro. 3.1 Definizione formale Definita così la famiglia di variabili casuali indicizzate: St , ∀t ∈ T , la probabilità dello stato si dipende dallo stato si−1 : P (si |si−1 , si−2 , . . . , s0 ) = P (si |si−1 ) (3.1) dove si è lo stato i-esimo, s0 è lo stato iniziale e P rappresenta la probabilità associata allo stato. Ω è lo spazio campionario degli stati che può assumere una variabile aleatoria. La matrice Λ delle probabilità di transizione è composta dagli elementi ai,j = P (st = j|st−1 = i), ∀i, j ∈ Ω: a1,1 a1,2 · · · a1,N a2,1 a2,2 · · · a2,N Λ = {ai,j } = . .. .. , N = |Ω| .. .. . . . aN,1 aN,2 · · · aN,N Le probabilità di transizione devono rispettare i vincoli del processi stocastici, cioè • ai,j > 0, ∀i, j ∈ Ω • N X ai,j = 1, ∀i ∈ Ω j=1 3.1.1 Catene di ordine m Esistono catene di Markov di ordine m superiore al primo, nelle quali la probabilità dello stato sj dipende dagli m stati precedenti: P (sj |sj−1 , sj−2 , . . . , s0 ) = P (sj |sj−1 , sj−2 , . . . , sj−m ) Per m > 1 sono poco usate perché la loro notevole complessità le rende di difficile trattazione. 3.2 Esempio di catena di Markov Il classico esempio di processo markoviano è la passeggiata ad una o più dimensioni, in cui un punto si muove nello spazio. Per semplificare, consideriamo uno spazio discreto 8 3 Catene di Markov −1 0 +1 1 3 1 3 1 3 Tabella 3.1: descrizione delle probabilità di transizione: la prima riga rappresenta lo spostamento (negativo se verso sinistra, positivo se verso destra) e la seconda la probabilità associata a una dimensione. Ipotizziamo che gli spostamenti del punto ad un certo istante siano governati da una distribuzione di probabilità del tipo uniforme discreta, cioè: La matrice (infinita in questo caso) delle probabilità di transizione si presenterà così: .. .. .. .. .. . . . . . · · · 1/3 1/3 1/3 0 0 ··· 1 1 1 Λ= · · · 0 /3 /3 /3 0 · · · ··· 0 0 1/3 1/3 1/3 · · · .. .. .. .. .. . . . . . L’insieme degli stati è rappresentato dall’insieme Z dei numeri interi, ciascuno corrispondente a un punto sulla retta: Ω = {. . . , −2, −1, 0, 1, 2, . . .} La proprietà di Markov è verificata perché la probabilità di transizione verso lo stato successivo dipende esclusivamente dallo stato corrente. Figura 3.1: simulazione di passeggiata casuale di 1000 passi sulla retta. L’asse delle ascisse (t) rappresenta il tempo, quello delle ordinate (St ) lo stato assunto dalle variabili casuali 1 Un processo stocastico è un insieme ordinato di variabili casuali, indicizzate da un parametro t che spesso rappresenta il tempo. 2 detta anche “condizione di assenza di memoria” 9 3 Catene di Markov 3.3 Modelli di Markov nascosti Un modello di Markov nascosto3 è un processo markoviano in cui gli stati non sono direttamente osservabili ma sono invece osservabili gli eventi generati dagli stati. Chiamato Ω lo spazio campionario degli stati e Φ lo spazio campionario degli eventi, esiste una matrice di probabilità B = {bj,k } che descrive la probabilità che lo stato j generi l’evento k (bj,k = P (ot = k|st = j), dove t è l’istante corrente, ∀t ∈ T, ∀k ∈ Φ). Si assume che gli eventi siano statisticamente indipendente l’uno dall’altro. I seguenti vincoli stocastici devono essere rispettati: • bj,k > 0, ∀j ∈ Ω, ∀k ∈ Φ • |Φ| X bj,k = 1, ∀j ∈ Ω k=1 Figura 3.2: schema di rappresentazione di un modello di Markov nascosto: una freccia rappresenta una probabilità diversa da zero che lo stato da cui parte generi l’evento a cui arriva. Chiaramente, la somma dei valori delle frecce uscenti da uno stato sarà sempre uguale a 1. 3.3.1 Problemi sui modelli di Markov nascosti Dato un modello di Markov nascosto, esistono tre problemi di interesse: 1. problema di Evaluation: dato un modello, calcolare la probabilità di una sequenza particolare di eventi in uscita; 2. problema di Decoding: dato un modello e una sequenza di eventi generati, calcolare la sequenza di stati più probabile; 3. problema di Learning: data una sequenza di eventi, trovare l’insieme più probabile di transizioni tra stati e probabilità di uscita, ovvero stimare i parametri del modello che ha generato tale sequenza di eventi. Il secondo dei tre, il problema di Decoding, viene risolto proprio dall’Algoritmo di Viterbi. 3 chiamato anche “HMM” (Hidden Markov Model) 10 3 Catene di Markov 3.3.2 Esempio di modello di Markov nascosto Consideriamo il seguente esempio semplificato: supponiamo di essere la guardia di sicurezza di un’installazione sotterranea segreta. Vogliamo sapere se oggi sta piovendo, ma il nostro unico contatto con il mondo esterno avviene ogni mattina, quando vediamo arrivare il direttore con o senza ombrello. L’intervallo di tempo tra un istante di osservazione e l’altro è immutato ed è di un giorno esatto. Possiamo accettare l’ipotesi che i cambiamenti climatici siano provocati da un processo omogeneo4 e che le condizioni climatiche di un giorno dipendano esclusivamente dalle condizioni del giorno precedente. Il problema può quindi essere modellato con un modello di Markov nascosto di primo ordine in cui l’insieme degli stati è Ω = {pioggia, ¬pioggia} e l’insieme degli eventi è Φ = {ombrello, ¬ombrello}. Nel mondo dell’ombrello, la pioggia causa l’apparizione dell’ombrello, ma può capitare che il direttore porti l’ombrello solo per sicurezza, oppure che si dimentichi di portarlo anche se fuori piove. Il modello sensoriale è la distribuzione di probabilità che descrive il comportamento del direttore in relazione al tempo atmosferico. Dobbiamo quindi stabilire il modello di transizione, il modello sensoriale e la probabilità a priori degli stati all’istante zero. Proviamo ad applicare il problema di Decoding all’esempio: supponendo che (true, true, false, true, true) sia la sequenza delle apparizioni dell’ombrello nell’arco di cinque giorni, qual è la sequenza di condizioni atmosferiche più probabile per giustificare tali osservazioni? L’assenza dell’ombrello nel terzo giorno significa che non stava piovendo, o il direttore si è dimenticato di portarlo? E se non pioveva il giorno 3, forse (dato che il tempo tende a persistere) forse non pioveva neanche il giorno 4, ma il direttore ha portato l’ombrello per ogni evenienza. In tutto ci sono 25 sequenze possibili di stati. P pioggia ¬pioggia pioggia 0.7 0.3 1 ¬pioggia 0.3 0.7 1 Tabella 3.2: descrizion del modello di transizione del mondo dell’ombrello: ogni elemento ai,j della tabella è la probabilità di passare dallo stato i (riga) allo stato j (colonna). È messo in evidenza il vincolo stocastico. pioggia ¬pioggia ombrello 0.9 0.2 ¬ombrello 0.1 0.8 P 1 1 Tabella 3.3: descrizion del modello sensoriale del mondo dell’ombrello: ogni elemento bj,k della tabella è la probabilità che lo stato j (riga) generi l’evento k (colonna). È messo in evidenza il vincolo stocastico. s0 pioggia ¬pioggia P (s0 ) 0.2 0.8 Tabella 3.4: descrizione della distribuzione di probabilità a priori degli stati all’istante zero 4 un processo è omogeneo quando la sua matrice di transizione è uguale in ogni istante di tempo. 11 3 Catene di Markov Figura 3.3: diagramma a traliccio del mondo dell’ombrello 12