Algoritmul Viterbi

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 23 aprilie 2017; verificările necesită 7 modificări .

Algoritmul Viterbi  este un algoritm pentru găsirea celei mai potrivite liste de stări (numită calea Viterbi ), care, în contextul lanțurilor Markov, obține cea mai probabilă succesiune de evenimente care au avut loc.

Este un algoritm de programare dinamică . Este folosit în algoritmul de decodare convoluțional Viterbi .

Algoritmul a fost propus de Andrew Viterbi în 1967 ca algoritm pentru decodarea unui cod convoluțional transmis prin rețele cu zgomot. [1] Algoritmul a fost utilizat pe scară largă în decodarea codurilor convoluționale ale telefoanelor mobile GSM și CDMA , modemurilor dial-up și rețelelor fără fir 802.11 . De asemenea, este utilizat pe scară largă în recunoașterea vorbirii , sinteza vorbirii , lingvistică computațională și bioinformatică . De exemplu, în recunoașterea vorbirii, un semnal sonor este perceput ca o succesiune de evenimente, iar o linie de text este „sensul ascuns” al semnalului acustic. Algoritmul Viterbi găsește cea mai probabilă linie de text pentru un semnal dat.

Algoritmul face mai multe ipoteze:

Algoritm

Să existe un model Markov ascuns (HMM) cu spațiu de stare , unde este numărul de stări diferite posibile ale rețelei. În același timp, stările pe care le acceptă rețeaua sunt invizibile pentru observație. Indicați prin starea rețelei în acest moment . La ieșirea rețelei , valoarea vizibilă pentru observare apare în momentul de față , unde este numărul de valori diferite observate posibile la ieșire. Fie probabilitatea inițială ca rețeaua să fie în stare și fie probabilitățile tranziției rețelei de la stare la stare .

Să fie observată secvența la ieșirea rețelei . Apoi, cea mai probabilă secvență de stări de rețea pentru secvența observată poate fi determinată folosind următoarele relații recursive: [2]

Aici  , este probabilitatea secvenței celei mai probabile de stări corespunzătoare primelor valori observate, care se termină în starea . Calea Viterbi poate fi găsită folosind pointeri pentru a reține care stare a apărut în a doua ecuație. Fie  o funcție care returnează valoarea folosită pentru a calcula dacă , sau dacă . Apoi

Aici folosim definiția standard a arg max .
Complexitatea acestui algoritm este .

Vezi și

Note

  1. 29 apr 2005, G. David Forney Jr: The Viterbi Algorithm: A Personal History . Consultat la 10 ianuarie 2012. Arhivat din original pe 2 iunie 2016.
  2. Xing E, slide 11, URL: http://www.cs.cmu.edu/~epxing/Class/10708-07/schedule.html Arhivat la 18 ianuarie 2015 la Wayback Machine