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

13

Какие проблемы последовательного ввода лучше всего подходят для каждого? Определяет ли входная размерность, какое из них лучше подходит? Являются ли проблемы, для которых требуется «более длинная память», более подходящими для RNN LSTM, а проблемы с циклическими шаблонами ввода (фондовый рынок, погода) легче решаются с помощью HMM?

Кажется, что есть много совпадений; Мне интересно, какие тонкие различия существуют между ними.

возмещение
источник
+1 но вопрос может быть слишком широким ... Кроме того, насколько мне известно, они совершенно разные ..
Haitao Du
я добавил больше разъяснений
возмещение
В качестве примечания вы можете поместить CRF поверх RNN, например, github.com/Franck-Dernoncourt/NeuroNER
Franck Dernoncourt,

Ответы:

8

Резюме

Скрытые марковские модели (HMM) намного проще, чем рекуррентные нейронные сети (RNN), и полагаются на сильные предположения, которые не всегда могут быть верными. Если предположения являются правдой , то вы можете увидеть лучшую производительность от НММ , так как он менее привередлив , чтобы получить работу.

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

Наконец, не ограничивайтесь только этими двумя моделями для вашей последовательности задач, иногда могут победить более простые регрессии (например, ARIMA), а иногда другие сложные подходы, такие как сверточные нейронные сети, могут быть лучшими. (Да, CNN могут применяться к некоторым видам данных последовательности, точно так же как RNN.)

Как всегда, лучший способ узнать, какая модель является лучшей, - это создать модели и измерить производительность на длительном тестовом наборе.

Сильные предположения HMM

Изменения состояния зависят только от текущего состояния, а не от чего-либо в прошлом.

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

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

Вы должны предварительно определить общее количество состояний.

Возвращаясь к примеру сна, может показаться, что мы заботимся только о двух состояниях. Однако, даже если мы заботимся только о прогнозировании бодрствования или сна , наша модель может извлечь выгоду из определения дополнительных состояний, таких как вождение, принятие душа и т. Д. (Например, принятие душа обычно происходит непосредственно перед сном). Опять же, RNN может теоретически выучить такие отношения, если покажет достаточно примеров.

Трудности с РНН

Из вышесказанного может показаться, что RNN всегда превосходят. Я должен отметить, однако, что RNN могут быть трудными для работы, особенно когда ваш набор данных маленький или ваши последовательности очень длинные. У меня лично были проблемы с обучением RNN для обучения некоторым из моих данных, и у меня есть подозрение, что большинство опубликованных методов / руководств по RNN настроены на текстовые данные. При попытке использовать RNN для нетекстовых данных мне пришлось выполнить более широкий поиск гиперпараметров, чем мне хотелось бы, чтобы получить хорошие результаты по моим конкретным наборам данных.

В некоторых случаях я обнаружил, что лучшая модель для последовательных данных - это стиль UNet ( https://arxiv.org/pdf/1505.04597.pdf ) Модель сверточной нейронной сети, поскольку ее легче и быстрее обучать, и она способна принять во внимание полный контекст сигнала.

kbrose
источник
1

Давайте сначала посмотрим на различия между HMM и RNN.

Из этой статьи: Из учебника по скрытым марковским моделям и избранным приложениям в распознавании речи мы можем узнать, что HMM должен характеризоваться следующими тремя фундаментальными проблемами:

Задача 1 (Вероятность). Учитывая HMM λ = (A, B) и последовательность наблюдений O, определите вероятность P (O | λ).
Задача 2 (декодирование): учитывая последовательность наблюдений O и HMM λ = (A, B), найти наилучшую последовательность скрытых состояний Q.
Задача 3 (обучение): учитывая последовательность наблюдений O и набор состояний в HMM, узнать параметры HMM A и B.

Мы можем сравнить HMM с RNN с этих трех точек зрения.

Вероятность

сумма по всем скрытым последовательностям Вероятность в HMM (Рисунок A.5) Языковая модель в RNN
просто получить вероятность от функций Softmax

В HMM мы вычисляем вероятность как где представляет все возможные последовательности скрытого состояния, а вероятность является действительной вероятность на графике. В то время как в RNN эквивалент, насколько я знаю, является обратным недоразумением в языковом моделировании, где и мы не суммируем по скрытым состояниям и не получаем точная вероятность. P(O)=QP(O,Q)=QP(O|Q)P(Q)Q1p(X)=t=1T1p(xt|x(t1),...,x(1))T

Декодирование

В HMM задача декодирования состоит в том, чтобы вычислить и определить, какая последовательность переменных является основным источником некоторой последовательности наблюдений с использованием алгоритма Витерби, а длина результата обычно равна наблюдению; в то время как в RNN декодирование вычисляет и длина обычно не равен смотровая .vt(j)=maxi=1Nvt1(i)aijb(ot)P(y1,...,yO|x1,...,xT)=o=1OP(yo|y1,...,yo1,co)YX

смелый путь
Декодирование в HMM (рисунок A.10)

часть декодера
Декодирование в RNN

Обучение

Обучение в HMM намного сложнее, чем в RNN. В HMM обычно используется алгоритм Баума-Уэлча (особый случай алгоритма ожидания-максимизации), в то время как в RNN это обычно градиентный спуск.

Для ваших подвопросов:

Какие проблемы последовательного ввода лучше всего подходят для каждого?

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

Определяет ли входная размерность, какое из них лучше подходит?

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

Являются ли проблемы, для которых требуется «более длинная память», более подходящими для RNN LSTM, а проблемы с циклическими шаблонами ввода (фондовый рынок, погода) легче решаются с помощью HMM?

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

Я думаю, что вы можете использовать RNN, чтобы сделать почти

Ссылки

  1. Обработка естественного языка с углубленным изучением CS224N / Ling284
  2. Скрытые марковские модели
Лернер Чжан
источник
Но в ссылочной статье говорится, что HMM имеет скрытое состояние, хотя и дискретное?
Олег Афанасьев
@OlegAfanasyev Да. Я думаю, что я не прав, но я вернусь к этому ответу позже.
Лернер Чжан
Это было исправлено?
GENIVI-LEARNER
1
@ GENIVI-LEARNER Я переписал ответ и надеюсь, что он будет вам полезен, а также надеюсь, что вы дадите мне несколько советов о том, как его улучшить.
Лернер Чжан
0

Я нашел этот вопрос, потому что мне было интересно их сходство и различия тоже. Я думаю, что очень важно заявить, что скрытые марковские модели (HMM) не имеют входов и выходов в самом строгом смысле.

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

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

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

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

boomkin
источник