Скрытые марковские модели

Скрытые марковские модели (СММ), спецификация которых была опубликована еще в конце 60-х годов, в последнее время стали очень популярны. Во-первых, математическая структура СММ очень богата и позволяет решать математические проблемы различных областей науки. Во-вторых, грамотно спроектированная модель дает на практике хорошие результаты работы. В этом руководстве мы рассмотрим скрытые марковские модели и их применение в отдельных аспектах распознавания речи.

Введение править

Происходящие явления можно описывать как сигналы. Сигналы могут быть дискретными, как письменная речь, или непрерывными, как фонограмма или кардиограмма. Сигналы с постоянными статистическими свойствами называются стабильными (стационарными), а с меняющимися — нестабильными (нестационарными). Сигнал может быть чистым, а может и искаженным, с помехами или посторонними сигналами.

Для описания сигналов часто нужны математические модели. В модели сигнала на основе его характеристик может быть предусмотрен определенный механизм обработки, который позволяет получить желаемый выход при анализе сигнала. Например, если надо очистить сигнал, искаженный и зашумлённый при передаче, мы можем смоделировать его и рассмотреть эту модель отвлечённо от искажений и шумов в сигнале. Модели позволяют также генерировать и исследовать сигнал без его источника. В этом случае, имея под рукой хорошую модель, мы можем имитировать сигнал и изучить его по этой имитации.

Модели очень успешно применяются на практике, позволяя создавать эффективные рабочие системы: системы прогноза, распознавания, идентификации. Грубо все модели можно разделить на детерминистические и статистические. Детерминистические используются, если известны фундаментальные характеристики сигнала: что сигнал — это синусоидальная волна или, например, сумма экспонент. В таком случае достаточно просто описать подобную модель сигнала — для этого нужно всего лишь подобрать (вычислить) параметры этой модели: для синусоидальной волны — это амплитуда, частота, фаза. Второй класс — это вероятностные модели, для разработки которых возможно используются статистические характеристики сигнала. Эти модели описывают гауссовские, пуассоновские, марковские процессы, а также подобные им процессы. В общем, вероятностные модели описывают сигнал как определённый случайный процесс, параметры которого могут быть качественно определены.

В области распознавания речи используются оба типа моделей, но в этом руководстве мы обсудим только одну, вероятностную модель, а именно — скрытую марковскую модель (СММ).

Сначала рассмотрим цепи Маркова, ибо их понимание необходимо для успешного изучения СММ, затем перейдём к скрытым марковским моделям и к трём главным вопросам проектирования СММ, покажем, что эти три главных вопроса решаемы, а спроектированную СММ мы сможем применить в области распознавания речи.

Теория скрытых марковских моделей не нова. Её основы опубликовал Баум и его коллеги в конце 60-х — начале 70-х годов. Тогда же, в начале 70-х, Бейкер и Джелинек с коллегами из IBM применили СММ в распознавании речи.
Тем не менее, широкое распространение СММ получили совсем недавно:

  • основы теории скрытых марковских моделей были опубликованы в журналах для математиков, не очень популярных среди инженеров, занимающихся распознаванием речи;
  • опубликованная теория не содержала соответствующих обучающих материалов, которые бы объяснили возможности и способы применения СММ в различных прикладных областях.

В результате несколько вышедших подробных обучающих материалов о скрытых марковских моделях инициировали исследования по их применению в области распознавания речи.

В этом руководстве рассматриваются основы теории скрытых марковских моделей, общие вопросы практического применения СММ. Использование СММ обсуждается на примере распознавания речи. Это руководство, собранное по материалам различных источников, надеюсь, станет основой для различных исследований.

Структура учебника следующая. В главе 2 мы обсудим теорию дискретных цепей Маркова и покажем пример эффективного применения концепции скрытых состояний, когда наблюдение является результатом текущего состояния и соответствующих вероятностей. Теория будет проиллюстрирована двумя простыми примерами: «подбрасыванием монеты» и классическим примером «шаров в урне».

Дискретные марковские процессы править

Рассмотрим систему, которую в любой момент времени можно описать одним из   состояний,  , (рис. 1), где для простоты  .

 
Рис. 1. Цепь Маркова с 5 состояниями (обозначены  ) с переходами между состояниями (обозначены   где   - исходное состояние,   - конечное состояние))

Через определенный промежуток времени система может изменить свое состояние или остаться в прежнем состоянии согласно вероятностям, указанным для данных состояний. Моменты времени, когда мы регистрируем состояние системы, обозначим как  , а состояние в момент времени t обозначим  . Полное описание рассмотренной выше системы должно содержать текущее состояние (в момент времени t) и последовательность всех предыдущих состояний, через которые прошла система. В отдельных случаях описание системы сводится к указанию текущего и предыдущего состояния, то есть

 

Кроме того, мы также полагаем что процессы, протекающие в системе, не зависят от времени, о чем нам говорит правая часть формулы (1). Таким образом, систему можно описать множеством вероятностей   в виде

 

где   — это вероятность перехода из состояния   в состояние   в данный момент времени. Поскольку эти вероятности характеризуют случайный процесс, они имеют обычные свойства, то есть

 

 

Описанный выше случайный процесс можно назвать открытой марковской моделью, поскольку выходной сигнал модели — это последовательность состояний, регистрируемых во времени. Каждое состояние соответствует определённому (наблюдаемому) событию. Для того, чтобы лучше понять все вышесказанное, рассмотрим простую марковскую модель погоды, у которой будет всего три состояния. Предполагается, что мы один раз в день (например, в полдень) смотрим в окно и регистрируем в журнале текущее состояние погоды. Мы условились, что лишь одно из трех ниженазванных состояний в день   мы записываем в журнал:

  • Состояние № 1: дождь (или снег)
  • Состояние № 2: пасмурно
  • Состояние № 3: ясно

Матрица вероятностей изменения погоды   имеет вид

 

Исходя из того, что погода в первый день ( ) ясная (состояние 3), мы можем задать себе вопрос: какова вероятность (согласно нашей модели), что следующие 7 дней будет именно «ясно — ясно — дождь — дождь — ясно — пасмурно — ясно»? Точнее сказать, для данной последовательности состояний  , где   соответствует   , мы хотим на основе данной модели определить вероятность наблюдения последовательности  . Эта вероятность может быть выражена (и вычислена) следующим образом

       

где

 

это вероятность того, что начальное состояние системы будет  .

Есть и другой интересный вопрос, ответ на который нам даст эта модель: какова вероятность того, что модель сохранит свое состояние в течение ровно   дней? Эта вероятность может быть вычислена как вероятность наблюдения следующей последовательности

 

дает модель, в которой

 

Величина   — это вероятность того, что система будет находиться в состоянии   ровно   раз подряд. Соответственно есть функция распределения вероятности для продолжительности пребывания системы в одном состоянии, которая является характеристикой сохранения состояния для марковской цепи. Зная величины   мы можем вычислить среднее время, в течение которого система сохранит свое состояние (используем формулу математического ожидания):

 

 

Ожидается, что солнечная погода скорее всего простоит   дней, пасмурная — 2,5 дня, а вот дождливая погода, согласно нашей модели, вероятнее всего продержится 1,67 дня.

Переход к скрытым марковским моделям править

В вышеописанной марковской модели каждому физическому явлению соответствовало определенное состояние модели. Эта модель, к сожалению, слишком ограничена и ей не под силу решение многих актуальных проблем. В этом разделе мы рассмотрим марковские модели, в которых наблюдаемая последовательность — это результат переходов в соответствии с обозначенными вероятностями. В данном случае модель (скрытая марковская модель) — это результат двух случайных процессов. Первый — скрытый процесс — его никак нельзя зарегистрировать, но его можно охарактеризовать с помощью другого случайного процесса, который предоставляет нам набор сигналов — наблюдаемую последовательность. Проиллюстрируем это описание на примере подбрасывания монеты.

Пример подбрасываемой монеты. Действуем по следующему сценарию. Вы находитесь в комнате, а за перегородкой — в другой комнате — находится человек, который подбрасывает монету. Он не говорит, как именно он подбрасывает монету, а может он её вообще ленится подбрасывать. Он лишь говорит вам результат каждого падения монеты: орел или решка. В этом и заключается суть скрытого процесса (вы не знаете что происходит с монетой), когда о процессе вы можете судить лишь по наблюдаемой последовательности  , где   — это орел, а   — это решка.

Как же построить скрытую марковскую модель, соответствующую этой ситуации? Первый вопрос: сколько состояний будет у модели и что означает каждое состояние такой модели? Предположим, что мы подбрасываем одну единственную монету и других у нас нет. Тогда выбор мы остановим на модели с двумя состояниями, где одно состояние означает выпадение орла, другое — решки.

 
Рис. 2. Три примерных марковских модели, которые могут описать эксперимент со скрыто подбрасываемой монетой. (а) 1 монета участвует в подбрасвании, (2) 2 — монеты, (3) — три монеты.

Эта модель изображена на рисунке 2(а). В этом случае марковская модель является открытой и единственное, что мы можем сделать с этой моделью — это оптимизировать вероятность смены состояния. Следует заметить, что скрытая марковская модель, являющаяся аналогом модели, изображенной на рис. 2(а), будет представлять собой модель одного состояния. В этой модели единственное состояние означает, что подбрасывается всего лишь одна монета.

На следующем рисунке 2(б) изображена СММ двух состояний. В этом случае каждое состояние соответствует различным монетам, которые подбрасываются в ходе эксперимента (напр. 1 копейка и 5 рублей). Каждому состоянию соответствует распределение вероятностей между выпадением орла и решки, а также матрицей вероятностей переходов (матрицей переходов), указывающей вероятность перехода из одного состояния в другое. Переход из состояния в состояние согласно заданным вероятностям из матрицы переходов может осуществляется на основе того же подбрасывания монеты или на основе любого другого случайного события.

На третьем рисунке 2(в) представлена модель, учитывающая тот факт, что подбрасываются три различных монеты, причем выбор между ними осуществляется опять же на основе какого-либо случайного события.

Здесь, как и каждый раз при проектировании мы задаемся вопросом: какая из трех моделей наилучшим образом подходит для описания наблюдаемой последовательности? Хорошо видно, что первая модель (рис. 2(а)) имеет всего лишь 1 неизвестный параметр. Модель для двух монет (рис. 2(б)) имеет 4 неизвестных параметра. И наконец, модель для трех монет (рис. 3(в)) имеет 9 неизвестных параметров. Таким образом, СММ с большим количеством степеней свободы по существу более работоспособна, чем ее меньшие аналоги. Также теоретически доказано (и это мы увидим далее), что в современных условиях существуют ограничения на размер моделей. Более того, может оказаться, что в случае, когда человек за стеной подбрасывает одну единственную монету, мы выберем модель трех состояний. В таком случае выясняется, что состояния системы не соответствуют реальным состояниям за стеной; и, следовательно, мы используем избыточную модель.

Пример шариков в вазах. Сейчас мы дополним СММ новыми структурными элементами, для того чтобы она могла решать ряд более сложных задач. Поможет нам в этом пример с шариками в вазах (рис. 3).

 
Рис. 3. Модель с N состояниями (вазами) и шариками, цвета которых обозначают элементы наблюдаемой последовательности.

Допустим, у нас есть   стеклянных прозрачных ваз. В каждой вазе — большое число шариков разного цвета. Полагаем, что у нас в корзине лежат шарики   различных цветов. Физически это можно представить следующим образом. Человек находится в комнате с вазами. Каким-либо случайным образом он выбирает любую вазу, засовывает руку поглубже, и вытаскивает шар. Цвет шара записывается в журнал показаний — наблюдаемую последовательность, и человек кладет шар обратно в эту вазу. Потом наш человек выбирает новую корзину, идет к ней, и вытаскивает оттуда новый шар, и так далее. В результате мы получаем последовательность цветов — результат работы СММ — наблюдаемую последовательность.

Очевидно, что пример шариков в вазах соответствует скрытой марковской модели, где каждое состояние модели — это выбранная ваза, причем у различных ваз различная вероятность вытащить шарик красного (или другого) цвета, что соответствует различному распределению вероятностей для каждого состояния. То, какая ваза будет выбрана следующей, зависит от матрицы переходов СММ, то есть зависит и от того, у какой вазы мы сейчас находимся.

Элементы скрытой марковской модели править

Приведенные выше примеры дают неплохое представление о СММ, и о возможных сферах их применения. Сейчас мы дадим формальное определение элементам СММ и объясним, как модель генерирует наблюдаемую последовательность. СММ определяется следующими элементами:

1.   — общее количество состояний в модели. Несмотря на то что состояния в СММ являются скрытыми, во многих случаях есть соответствие между состоянием модели и реальным состоянием процесса. В примере с подбрасыванием монеты каждое состояние соответствовало выбранной монете, а в примере с шариками в вазах состояние модели соответствовало выбранной вазе. В общем, переход в любое выбранное состояние возможен из любого состояния всей системы (в том числе и само в себя); с другой стороны, и это мы увидим впоследствии, лишь определенные пути переходов представляют интерес в каждой конкретной модели. Мы обозначим совокупность состояний модели множеством  , а текущее состояние в момент времени   как  .

2.  , количество возможных символов в наблюдаемой последовательности, размер алфавита наблюдаемой последовательности. В случае с подбрасыванием монеты — это 2 символа: орел и решка; в случае с шариками — это количество цветов этих самых шариков. Алфавит наблюдаемой последовательности мы обозначим как  .

3. Матрица вероятностей переходов (или матрица переходов)  , где

 

то есть это вероятность того, что система, находящаяся в состоянии  , перейдет в состояние  . Если для любых двух состояний в модели возможен переход из одного состояние в другое, то   для любых  . В остальных СММ для некоторых   у нас вероятность перехода  .

4. Распределение вероятностей появления символов в j-том состоянии,  , где

 

  — вероятность того, что в момент времени t, система, находящаяся в j-ом состоянии (состояние  ), выдаст k-тый символ (символ  ) в наблюдаемую последовательность.

5. Распределение вероятностей начального состояния  , где

 

то есть вероятность того,   — это начальное состояние модели.

Совокупность значений   и   — это скрытая марковская модель, которая может сгенерировать наблюдаемую последовательность

 

(где   — один из символов алфавита  , а   — это количество элементов в наблюдаемой последовательности.

СММ строит наблюдаемую последовательность по следующему алгоритму

  1. Выбираем начальное состояние   в соответствии с распределением  
  2. Устанавливаем  .
  3. Выбираем   в соответствии с распределением   в состоянии ( ).
  4. Переводим модель в новое состояние   в соответствии с матрицей переходов   с учетом текущего состояния  .
  5. Устанавливаем время  ; возвращаемся к шагу 3, если  ; иначе — заканчиваем выполнение.

Подводя итог, заметим, что полное описание СММ состоит из двух параметров модели (  и  ), описания символов наблюдаемой последовательности и трех массивов вероятностей —  , и  . Для удобства мы используем следующую запись

 

для обозначения достаточного описания параметров модели.

Три основных задачи СММ править

Согласно описанию скрытой марковской модели, изложенному в предыдущем разделе, существует три основных задачи, которые должны быть решены для того, чтобы модель могла успешно решать поставленные перед ней задачи.

Задача 1

Дано: наблюдаемая последовательность   и модель  . Необходимо вычислить вероятность   — вероятность того, что данная наблюдаемая последовательность построена именно для данной модели.

Задача 2

Дано: наблюдаемая последовательность   и модель  . Необходимо подобрать последовательность состояний системы  , которая лучше всего соответствует наблюдаемой последовательности, то есть «объясняет» наблюдаемую последовательность.

Задача 3

Подобрать параметры модели   таким образом, чтобы максимизировать  .

Задача 1 — это задача оценки модели, которая заключается в вычислении вероятности того, что модель соответствует заданной наблюдаемой последовательности. К сути этой задачи можно подойти и с другой стороны: насколько выбранная СММ соответствует заданной наблюдаемой последовательности. Такой подход имеет большую практическую ценность. Например, если у нас стоит вопрос выбора наилучшей модели из набора уже существующих, то решение первой задачи дает нам ответ на этот вопрос.

Задача 2 — это задача, в которой мы пытаемся понять, что же происходит в скрытой части модели, то есть найти «правильную» последовательность, которую проходит модель. Совершенно ясно, что абсолютно точно нельзя определить эту последовательность. Здесь можно говорить лишь о предположениях с соответственной степенью достоверности. Тем не менее для приближенного решения этой проблемы мы обычно будем пользоваться некоторыми оптимальными показателями, критериями. Далее мы увидим, что, к сожалению, не существует единого критерия оценки для определения последовательности состояний. При решении второй задачи необходимо каждый раз принимать решение о том, какие показатели использовать. Данные, полученные при решении этой задачи используются для изучения поведения построенной модели, нахождения оптимальной последовательности её состояний, для статистики и т. п.

Решение задачи 3 состоит в оптимизации модели таким образом, чтобы она как можно лучше описывала реальную наблюдаемую последовательность. Наблюдаемая последовательность, по которой оптимизируется СММ, принято называть обучающей последовательностью, поскольку с помощью нее мы «обучаем» модель. Задача обучения СММ — это важнейшая задача для большинства проектируемых СММ, поскольку она заключается в оптимизации параметров СММ на основе обучающей наблюдаемой последовательности, то есть создается модель, наилучшим образом описывающая реальные процессы.

Для лучшего понимания рассмотрим все вышесказанное на примере системы, предназначенной для распознавания речи. Для каждого слова из словаря   мы спроектируем СММ с   состояниями. Каждое слово в частности мы представим как последовательность спектральных векторов. Обучение мы будем считать завершенным, когда модель с высокой точностью будет воспроизводить ту самую последовательность спектральных векторов, которая использовалась для обучения модели. Таким образом каждая отдельная СММ будет обучаться воспроизводить какое-либо одно слово, но обучать эту модель следует на нескольких вариантах произнесения этого слова; то есть например три человека (каждый по-своему) проговаривают слово «собака», а затем каждое сказанное слово конвертируется в упорядоченный по времени набор спектральных векторов, и модель обучается на основе этих трех наборов. Для каждого отдельного слова проектируются соответствующие модели. Сперва решается 3-я задача СММ: каждая модель настраивается на «произнесение» определенного слова из словаря  , согласно заданной точности. Для того чтобы интепретировать каждое состояние спроектированных моделей мы решаем 2-ую задачу, а затем выделяем те свойства спектральных векторов, которые имеют наибольший вес для определенного состояния. Это момент тонкой настройки модели. А уже после того, как набор моделей будет спроектирован, оптимизирован и обучен, следует оценить модель на предмет ее способности распознавать слова в реальной жизни. Здесь мы уже решаем 1-ую задачу СММ. Нам дается тестовое слово, представленное, разумеется, в виде наблюдаемой последовательности спектральных векторов. Далее мы вычисляем функцию соответствия этого тестового слова для каждой модели. Модель, для которой эта функция будет иметь наибольшее значение, будет считаться моделью названного слова.

В следующем разделе мы дадим четкое формальное решение трем задачам СММ.

Решение трех задач СММ править

Решение 1-ой задачи править

Нам необходимо вычислить вероятность того, что последовательность наблюдений   принадлежит модели  , то есть вычислить   В первую очередь в голову приходит решение подсчитать вероятность появления последовательности наблюдений для каждой возможной последовательности состояний модели. Рассмотрим такой способ на примере одной последовательности состояний

 

где   — это начальное состояние модели. Вероятность появления последовательности наблюдений   для последовательности состояний (12) равна

 

где мы подразумеваем статистическую независимость наблюдений. Отсюда получаем

 

Вероятность, что в модели состояния пройдут последовательность   равна

 

Вероятность совмещения   и  , то есть вероятность одновременного их проявления, выражается произведением

 

Вероятность появления   — это сумма вероятностей совмещения (15) по всем возможным комбинациям состояний состояний   системы:

   

Объяснить это можно так. Сперва (в момент времени  ) мы выбираем начальное состояние   в соответствии с вероятностью  , и генерируем символ   (в этом состоянии) с вероятностью  . Далее переходим к следующему моменту времени   и выполняем переход в состояние   с вероятностью  ; после чего генерируем символ   с вероятностью  . Этот процесс повторяется, пока мы не достигнем времени  . В конце мы переведем систему из состояния   в   с вероятностью   и сгенерируем символ   с вероятностью  .

Следует отметить, что прямое вычисление   по формуле (17) требует произвести порядка   вычислений, поскольку для каждого времени   существует   возможных состояний системы, то есть   возможных вариантов последовательности состояний; и для каждого варианта около   вычислений — для каждого слагаемого суммы в формуле (17). Для абсолютной точности скажем, что нам необходимо произвести   умножений и   сложений. Подобные вычисления невыполнимы даже для малых значений   и  ; то есть для   (состояний),   (наблюдений) количество вычислений будет порядка  ! Совершенно ясно, что для решения 1-ой задачи СММ требуется гораздо более эффективный алгоритм. К счастью существуют даже два таких алгоритма и называются они алгоритм прямого хода и алгоритм обратного хода.

Алгоритмы прямого и обратного хода.[1] Введем прямую переменную   и определим ее как

  то есть вероятность того что для заданной модели   к моменту времени   наблюдалась последовательность  , и в момент   система находится в состоянии  . Значение   мы можем найти методом индукции по следующему алгоритму:

1) Инициализация:

 

2) Индукция:

 

3) Завершение:

 

На шаге 1) подсчитываются вероятности совмещения состояния   и первого наблюдения  . Индукция является центральной частью вычисления; её схема показана на рис. 4 а).

 
Рис. 4. а) Иллюстрация последовательности действий требующейся для вычисления прямой переменной  . б) реализация вычисления   в виде сетки наблюдений   и состояний  

На этой схеме видно, каким путем система в момент времени   приходит в состояние   из   возможных состояний,  ,  , предыдущего момента времени  . Поскольку   — совмещенная вероятность проявления наблюдений   и нахождения системы в состоянии   в момент времени  , то произведение   является совмещённой вероятностью наблюдения последовательности   и перехода системы в состояние   в момент времени   через состояние   в момент времени  . Суммирование этих произведений по всем   возможным состояниям  ,   в момент времени   даёт в результате вероятность нахождения в состоянии   в момент времени   со всеми сопутствующими частичными наблюдениями. Когда это выполнено и   известно, несложно увидеть, что   получается с учётом наблюдения   в состоянии  , т.е. умножением суммарного значения на вероятность  . Вычисление выражения (20) выполняется для всех состояний  ,   для данного  ; дальше происходит итерация вычислений для  . Наконец, шаг 3) даёт искомое значение   как сумму терминальных прямых переменных  . Это так поскольку, по определению,

 

и следовательно   это просто сумма  .

Если оценить вычисления, выполняемые при нахождении значений  , можно увидеть, что они требуют порядка   операций вместо  , требуемых при прямом вычислении. (Вновь, чтобы быть точнее, необходимо   умножений и   сложений.) Для  , необходимо около 3000 операций методом прямого хода против   операций для прямого вычисления, экономия около 69 порядков.

По сути, вычисление прямой вероятности базируется на структуре сетки, показанной на рисунке 4 б). Смысл в том, что поскольку есть только   состояний (узлов в каждом временном столбце сетки), все возможные последовательности состояний будут переобъединяться в эти   узлов, вне зависимости от длины последовательности наблюдений. В момент времени   (первый временной столбец в сетке), необходимо вычислить значения  . В моменты времени   необходимо вычислять только  , где каждое вычисление включает только   предыдущих значений   поскольку каждая из   точек сетки достижима из из тех же   точек предыдущего временного столбца.

Подобным образом, [2] можно ввести обратную переменную  , определённую как
 
т.е. вероятность частичной последовательности наблюдений от   до конца, для заданного состояния   и модели  .

И вновь, решение для   может быть получено индуктивно:

  1. Инициализация:
     
  2. Индукция:
     

Примечания править

  1. Строго говоря, только прямая часть процедуры прямого-обратного хода нужна для решения задачи 1. Однако обратная часть процедуры вводится в этом разделе, поскольку она используется для решения задачи 3.
  2. Вновь напоминаем, что обратная процедура будет использоваться в решении задачи 3, и не нужна для решения задачи 1.

Ссылки править