Viterbi algoritm

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 23 april 2017; kontroller kräver 7 redigeringar .

Viterbi-algoritmen  är en algoritm för att hitta den mest lämpliga listan över tillstånd (kallad Viterbi-banan ), som, i samband med Markov-kedjor, erhåller den mest sannolika sekvensen av händelser som har inträffat.

Det är en dynamisk programmeringsalgoritm . Den används i Viterbi faltningsavkodningsalgoritmen .

Algoritmen föreslogs av Andrew Viterbi 1967 som en algoritm för att avkoda en faltningskod som sänds över nätverk med brus. [1] Algoritmen har använts i stor utsträckning vid avkodning av faltningskoder för GSM- och CDMA -mobiltelefoner, uppringda modem och trådlösa 802.11 -nätverk . Det används också i stor utsträckning inom taligenkänning , talsyntes , datorlingvistik och bioinformatik . Till exempel, vid taligenkänning, uppfattas en ljudsignal som ett händelseförlopp och en textrad är den akustiska signalens "dolda betydelse". Viterbi-algoritmen hittar den mest sannolika textraden för en given signal.

Algoritmen gör flera antaganden:

Algoritm

Låt det finnas en dold Markov-modell (HMM) med tillståndsutrymme , där är antalet möjliga olika nätverkstillstånd. Samtidigt är de tillstånd som nätverket accepterar osynliga för observation. Ange med nätverkets status för tillfället . Vid utgången av nätverket visas det värde som är synligt för observation för tillfället , där är antalet möjliga olika observerade värden vid utgången. Låt vara den initiala sannolikheten för att nätverket är i tillståndet , och låt vara sannolikheten för nätverksövergången från stat till stat .

Låt sekvensen observeras vid utgången av nätverket . Sedan kan den mest sannolika sekvensen av nätverkstillstånd för den observerade sekvensen bestämmas med hjälp av följande rekursiva relationer: [2]

Här  är sannolikheten för den mest sannolika sekvensen av tillstånd som motsvarar de första observerade värdena, som slutar på tillståndet . Viterbi-banan kan hittas genom att använda pekare för att komma ihåg vilket tillstånd som dök upp i den andra ekvationen. Låta vara  en funktion som returnerar värdet som används för att beräkna if , eller if . Sedan

Här använder vi standarddefinitionen av arg max .
Komplexiteten i denna algoritm är .

Se även

Anteckningar

  1. 29 april 2005, G. David Forney Jr: Viterbi-algoritmen: En personlig historia . Hämtad 10 januari 2012. Arkiverad från originalet 2 juni 2016.
  2. Xing E, bild 11, URL: http://www.cs.cmu.edu/~epxing/Class/10708-07/schedule.html Arkiverad 18 januari 2015 på Wayback Machine