Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ДИПЛОМНА "Ефективність застосування ПММ для поб...docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
690.8 Кб
Скачать

2.3 Алгоритм Вітербі

Алгоритм Вітербі — алгоритм пошуку найбільш відповідного списку станів (званого шляхом Вітербі), який в контексті ланцюгів Маркова отримує найбільш ймовірну послідовність подій, що відбулися.

Він є алгоритмом динамічного програмування. Алгоритм використовується в CDMA і GSM цифрового зв'язку, в модемах і космічних комунікаціях. Він знайшов застосування в розпізнаванні мови та письма, комп'ютерній лінгвістиці та біоінформатиці, а також в алгоритмі згорткового декодування Вітербі.

Алгоритм робить кілька припущень:

  • спостережувані і приховані події повинні бути послідовністю. Послідовність найчастіше впорядкована за часом;

  • дві послідовності повинні бути вирівняні: кожна спостережувана подія має відповідати рівно одній прихованій події;

  • обчислення найбільш вірогідної прихованої послідовності до моменту t повинно залежати тільки від спостережуваної події в момент часу t, і найбільш вірогідної послідовності до моменту t - 1.

Є набір спостережуваних величин (власне, звук) та ймовірнісна модель, які співвідносяться прихованому стану (фонеми) і спостережуваним величинам. Алгоритм Вітербі дозволяє відновити найбільш ймовірну послідовність прихованих станів.

Для реалізації алгоритму Вітербі необхідно вибрати послідовність станів Q = {q1, q2, ... }, яка з найбільшою ймовірністю породжує зазначену послідовність.

Вводяться змінні:

(2.17)

δt (i) = max P (qt = Si | q1q2 ... qt-1, o1o2 ... ot, λ),

тобто максимальну ймовірність того, що при заданних спостереженнях до моменту t послідовність станів завершиться в момент часу t в стані Si, а також введемо змінну ψt (i) для зберігання аргументів, що максимізує δt (i).

Отже, алгоритм Вітербі:

1 крок. Для всіх i від 1 до N:

(2.18)

δ1(i)=πibi(o1)

ψ1(i)=0

2 крок. Для всіх j від 1 до N і t від 2 до T:

(2.19)

(2.20)

δt(j)=

max

t-1(i)aij|bj(ot)

i=1..N

ψt(j)=

arg max

t-1(i)aij|

i=1..N

3

(2.21)

(2.22)

крок. Отримуємо найбільшу ймовірність спостереження послідовності o1o2 ... oT, яка досягається при проходженні якоїсь оптимальної послідовності станів Q* = {q*1, q*2, ... q*T}, для якої на цей момент відомо тільки останній стан:

P*=

max

T(i)|

i=1..N

q*T,=

arg max

T(i)|

i=1..N

4 крок. Відновлюємо оптимальну послідовність станів (зворотній прохід). Для всіх t від T-1 до 1 ( крок =-1):

q

(2.23)

*t = ψt+1(q*t+1)

Алгоритм Вітербі досить простий у реалізації (використовується динамічне програмування) і працює за час, пропорційний добутку кількості станів ПMM на число фреймів. Однак не завжди нам досить знати найвірогідніший шлях; наприклад, при тренуванні акустичної моделі потрібна оцінка ймовірності кожного стану на кожному фреймі. Для цього використовується алгоритм Forward-Backward.

Однак акустична модель - це всього лише одна зі складових системи. Що робити, якщо словник розпізнавання складається не з двох слів, як в розглянутому вище прикладі, а з сотень тисяч або навіть мільйонів? Багато хто з них будуть дуже схожі за вимовою або навіть збігатися. Разом з тим, при наявності контексту роль акустики падає: невиразно вимовлені, зашумлені або неоднозначні слова можна відновити «за змістом». Для обліку контексту знову-таки використовуються ймовірнісні моделі. Наявність фіксованого контексту задає розподіл ймовірностей для наступного слова, яке відображає як семантику, так і морфологію. Такий тип мовних моделей називається n-gram language models.