Основание вероятностной графической модели (6) - Направленная графическая модель (скрытая марковская модель)

машинное обучение

概率图模型家族族谱

思维导图


1. Определения

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

Цепь МарковаОпределение: процесс вt>t_0Состояние и процессы на данный моментt_0Предыдущее состояние не имеет значения. (при условии, что «настоящее» уже известно, его «будущее» не имеет ничего общего с «прошлым») Математически выражается как:\begin{align} P \{X(t_n) = x_n|X(t_1)=x_1, X(t_2)=x_2,....,X(t_{n-1})=x_{n-1} \} \\ = P\{X(t_n) = x_n|X(t_{n-1})=x_{n-1} \} \tag {1.1} \end{align}


2. Кейсы

2.1 Подготовка модели

Боб и Алиса хорошие друзья. Настроение Боба связано с погодой. Если погода хорошая, тосолнечно, обозначается как S, Боб вообще всчастливый, обозначается как Hстатус, если погодадождь, обозначаемый как R, настроение Боба обычно всварливый, обозначается как Gстатус. Что касается Алисы, то она очень аккуратная и наблюдательная девочка, собирала ее 14 дней.погодные условия, и 15-дневный срок БобаЧувство.

Количество переходов состояний в статистическом графе:

погода предыдущего дня погода второй день количество Доля
sunny sunny 8 0.8
sunny rain 2 0.2
rain sunny 2 0.4
rain rain 3 0.6

图2. Bob心情与天气对应关系

Количество переходов состояний в статистическом графе:

Погода Чувство количество Доля
sunny happy 8 0.8
sunny grumpy 2 0.2
rain happy 2 0.4
rain grumpy 3 0.6

图.2 天气状态转换统计以及心情对应统计图

Нарисуйте рисунок ниже.

图3

Несколько значений вероятности на рис. 3-1 называютсяtransition probabilities

图3-1

Несколько значений вероятности на рис. 3-2 называютсяemission probabilities
图3-2

2.2 Рассмотрим три вопроса:

Вопрос 1: Если Алиса выбирает случайный день и Алиса не получает новостей от Боба, будет солнечно или дождливо?

На [Рисунок 2. Соответствие между настроением Боба и погодой] имеется десять солнечных дней и пять дождливых дней.Когда у Боба нет информационных подсказок, доля солнечных дней равна2/3, доля дождливых дней1/3. Так что ответ на первый вопрос - да2/3Вероятность солнечная,1/3Возможны дождливые дни.

Вопрос 2: Если Боб счастлив сегодня, какова вероятность солнечных и дождливых дней?

На самом деле это байесовская проблема: известныйP(Sunny)=2/3, P(Rain)=1/3, P(Happy)=2/3, P(Grumpy)=1/3, P(Happy|Sunny)=0.8, P(Grumpy|Sunny)=0.2, P(Happy|Rain)=0.4, P(Grumpy|Rain)=0.6

попрошайничествоP(Sunny| Happy)иP(Rain| Happy)Вероятность.

P(Sunny| Happy) = \frac{P(Happy|Sunny)P(Sunny)}{P(Happy)}=0.8

P(Rain| Happy) = \frac{P(Happy|Rain)P(Rain)}{P(Happy)}=0.2

Вопрос 3: Какое у Боба было настроение в течение трех дней подряд?Happy-Grumpy-Happy, какая погода в последний день?

image.png

В течение трех дней подряд в общей сложности2^3=8Среднее возможное:

  1. Sunny - Sunny - Sunny
  2. Sunny - Sunny - Rain
  3. Sunny - Rain - Sunny
  4. Sunny - Rain - Rain
  5. Rain - Rain - Rain
  6. Rain - Rain - Sunny
  7. Rain - Sunny - Rain
  8. Rain - Sunny - Sunny

В качестве примера возьмем третий случай:

image.png

Таким образом, 8 случаев рассчитываются отдельно, и берется тот, который имеет наибольшую вероятность.


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

Если настроение Боба «Счастливый-Счастливый-Сварливый-Сварливый-Сварливый-Счастливый», спросите погоду в последний день?
2.3.1 Идеи

Учитывая шесть дней, то всего2^6=64возможность, каждый дополнительный день, возможность рассмотреть увеличивается в геометрической прогрессии, здесь необходимо использоватьдинамическое программированиеподумал о.

  • step1: Последний день может быть Дождь или Солнечно, поэтому необходимо вычислить счастливое состояние Боба в случае Солнечно и состояние Счастливого в состоянии Дождь и сравнить вероятность.

    step 1

  • step 2: Принимая во внимание, что последний день — солнечный, вероятность того, что солнечный день вызовет у Боба раздражение в предпоследний день, и вероятность того, что дождь вызовет у Боба раздражение в предпоследний день, выберите значение с наибольшей вероятностью. Сделайте то же самое для Дождя в предпоследний день.

    step 2

  • Повторяйте Шаг 1 и Шаг 2, пока состояние не будет завершено.

Happy Grumpy Happy
Солнечно:PS_1=0.67 Sunny :PS_2 Sunny :PS_3
Rain : PR_1=0.33 Rain PR_2 Rain :PR_3

\begin {align} PS_2 =& max(init\_state\ from \  PS_1, init\_state\ from\ PR_1) \\ =& max(0.8*0.67*0.8*0.2, 0.4*0.33*0.4*0.2) \\\\ PR_3 =& max(init\_state\ from \  PS_2, init\_state\ from\ PR_2) \\ \end {align}


2.3.2 Код случая (алгоритм Витерби)

# 根据图中定义天气之间状态转移概率(transition probability)
Weather2Weather_Prob = {
    'sunny': {
        'sunny': 0.8,
        'rain': 0.2
    },
    'rain': {
        'sunny': 0.4,
        'rain': 0.6
    }
}
# 定义发射概率(emission probability)

Mood2Weather_Prob = {
    'happy': {
        'sunny': 0.8,
        'rain': 0.4,
    },
    'grumpy': {
        'sunny': 0.2,
        'rain': 0.6
    }

}

weather_state = ['sunny', 'rain']
mood_state = ['happy', 'grumpy']

# 初始化两种天气的概率
sunny_init_prob = 2/3
rain_init_prob = 1/3

def predictMood(BobMood):
    weather = {}
    weather_prob = {}
    # 定义概率矩阵
    for iday in range(len(BobMood)+1):
        weather_prob[iday] = {
            'sunny': 0,
            'rain': 0
        }
    weather_prob[0] = {
        'sunny': sunny_init_prob,
        'rain': rain_init_prob
    }
    # 根据Bob的心情,计算每一天可能的概率
    for iday, iday_mood in enumerate(BobMood):
        # 考虑当前天气的状态数量
        for icurrent_weather_state in weather_state:
            weather_prob[iday][icurrent_weather_state] *= Mood2Weather_Prob[iday_mood][icurrent_weather_state]
            # 考虑状态转移之后的概率
            for ifuture_weather_state in weather_state:
                weather_prob[iday+1][ifuture_weather_state] = max(
                    weather_prob[iday][icurrent_weather_state] * Weather2Weather_Prob[icurrent_weather_state][ifuture_weather_state],
                    weather_prob[iday + 1][ifuture_weather_state]
                )

        weather[iday] = 'sunny' if weather_prob[iday]['sunny'] > weather_prob[iday]['rain'] else 'rain'

    return weather, weather_prob

if __name__ == '__main__':


    BobMood = ['happy', 'happy', 'grumpy', 'grumpy', 'grumpy', 'happy']

    weather, weather_prob = predictMood(BobMood)
    print('weather is:')
    print(weather)

    print('probabilities are:')
    print(weather_prob)



3. Научный вывод скрытого Маркова

3.1 Основные понятия

  • Последовательность состояния: соответствует вышеуказанному рисункуy
  • Последовательность наблюдения: соответствует приведенному выше рисункуx
  • Момент: каждая позиция последовательности, соответствующая рисунку выше.i

В **"Если настроение Боба "Счастливый-Счастливый-Сварливый-Сварливый-Сварливый-Счастливый", спросите погоду в последний день?"середина:последовательность наблюденияэто БобаЧувство**,последовательность состоянийэтоПогода.

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

  • Qсоответствует приведенному выше примеруПогода,Vсоответствует приведенному выше примеруЧувство.N=2 \ (Sunny、Rain),M=2 (Happy、Grumpy)
  • I=[S, S, S, S, R, R, R, S, S, S, S, R, R, S, S]: 15-дневная последовательность погоды,O=[G, H, H, H, G, G, H, G, H, H, H, G, H, H, H]: последовательность настроения Боба за 15 дней.
  • матрица перехода состоянийA(можно перечислить согласно рисунку 3)
p(i+1=S|i=S) = 0.8\\ p(i+1=R|i=S) = 0.2\\ p(i+1=S|i=R) = 0.4\\ p(i+1=R|i=R) = 0.6\\ A=\begin{bmatrix}  0.8& 0.2\\   0.4& 0.6  \end{bmatrix}
  • Матрица вероятности наблюденияA(можно перечислить согласно рисунку 4)
p(o=H|i=S) = 0.8\\ p(o=G|i=S) = 0.2\\ p(o=H|i=R) = 0.4\\ p(o=G|i=R) = 0.6\\ A=\begin{bmatrix}  0.8& 0.2\\   0.4& 0.6  \end{bmatrix}
  • вектор вероятности начального состояния\pi_i(Вопрос 1): Да\pi_S=2/3,\pi_R=1/3.


3.2 Скрытая предпосылка Маркова




4. Приложения Маркова.

Примером Алисы, предсказывающей погоду по настроению Боба, является задача 3 — задача предсказания.

4.1 Проблемы расчета вероятности

Объясните на простом примере:

《统计学习方法》P177

4.1.1 Прямой алгоритм

\alpha_2(1)от имениt_2На данный момент последовательность наблюдений такова: красный 1 (первый красный шар) и вероятность того, что ящик 1 — белый шар.

Делится на следующие этапы:

1. ПройтиМатрица вероятности наблюдениярассчитать первыйнаблюдение за даннымииз разныхгосударствофорвардная вероятность .

существуетt_1На данный момент вероятность красного шара равна

box at t_1 probability
1 (вероятность того, что ящик 1 — красный шар) 0.2*0.5=0.1
2 (вероятность того, что ящик 2 — красный шар) 0.4*0.4=0.16
3 (вероятность того, что ящик 3 — красный шар) 0.4*0.7=0.28
2. Пройтиматрица вероятности переходаВычислить для создания следующегогосударствовероятность, то черезМатрица вероятности наблюденияВычислить для создания следующегоНаблюденияВероятность

существуетt_2На данный момент вероятность переложить 3 ящика в разные ящики и вероятность образования белого шара показаны в таблице ниже.

box at t_2 trans_probability
1 (вероятность перехода трех ящиков с красными шарами в ящик 1) 0.1*0.5+0.16*0.3+0.28*0.2=0.154
2 (вероятность перехода красного шара из трех ящиков в ящик 2) 0.1*0.2+0.16*0.5+0.28*0.3=0.184
3 (вероятность перехода красных шаров из трех ящиков в ящик 3) 0.1*0.3+0.16*0.2+0.28*0.5=0.202
box at t_2 probability
1 (1 коробка вероятность возникновения красного шара) 0.154*0.5=0.077
2 (ящик 2 дает вероятность выпадения красного шара) 0.184*0.6=0.1104
3 (вероятность того, что в ящике 3 выпадет красный шар) 0.202*0.3=0.0606
3. Повторяйте шаг 2, покапоследовательность наблюденияпрекращение.
4. Добавьте окончательные значения вероятности.

Полный процесс выглядит следующим образом:


4.1.2 Обратные вычисления

Рассмотрим сзади наперед:

\beta_1(1)от имениt_1На данный момент при условии, что ящик 1 — красный шар, последовательность наблюдений такова: вероятность белого, красного 2 (второго красного шара).

1. Последнийнаблюдение за даннымиЭто было определено, поэтому инициализируйте тригосударствоВероятность равна 1.

существуетt_{T}время

box at t_T probability
1 (вероятность того, что последовательность наблюдений равна [null] при условии, что ящик 1 — красный шар) 1
2 (вероятность того, что последовательность наблюдений равна [null] при условии, что ящик 2 — красный шар) 1
3 (вероятность того, что последовательность наблюдений равна [null] при условии, что ящик 3 — красный шар) 1
пройти черезМатрица вероятности наблюдениярассчитатьУкажите данные наблюденияВероятность (еще один способ понять таблицу выше)
box at t_{T} color_probability
1 (выбрать шар из ящика 1, вероятность того, что последовательность наблюдений пуста, то есть вероятность того, что выбран красный шар) 1*0.5=0.5
2 (выбрать шар из ящика 2, вероятность того, что последовательность наблюдений пуста, то есть вероятность того, что выбран красный шар) 1*0.4=0.4
3 (выберите шар из ящика 3, вероятность того, что последовательность наблюдений пуста, то есть вероятность того, что выбран красный шар) 1*0.7=0.7
2. Пересчитать перевод на другойгосударствоВероятность .

существуетt_{T-1}время

box at t_{T-1} probability
1 (вT-1Моменты для поля 1 необходимо учитыватьTВероятность того, что ящик 1 переместится в ящики 1, 2, 3 в данный момент) 0.5*0.5+0.4*0.2 + 0.7*0.3=0.54
2 (вT-1Моменты для вставки 2 необходимо учитыватьTВероятность перехода бокса 2 в бокс 1,2,3) 0.5*0.3+0.4*0.5 + 0.7*0.2=0.49
3 (вT-1Моменты для вставки 3 необходимо учитыватьTВероятность того, что ящик 3 переместится в ящики 1, 2, 3 в данный момент) 0.5*0.2+0.4*0.3 + 0.7*0.5=0.57

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

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

4.1.3 Отношения между вероятностями априорных и апостериорных членов

Заданные параметры модели\lambdaи наблюденияO, сейчасtв состоянииq_iВероятность записывается как:

\begin{align} \gamma_t(i)=& P(i_t=q_i|O; \lambda)\\ =&\frac{P(i_t=q_i,O; \lambda)}{P(O;\lambda)}\\ =&\frac{P(O|i_t=q_i; \lambda)P(i_t=q_i;\lambda)}{P(O;\lambda)}\\ =&\frac{P(O_1,O_2,...,O_t,O_{t+1},...,O_{T}|i_t=q_i; \lambda)P(i_t=q_i;\lambda)}{P(O;\lambda)}\\ =&\frac{P(O_1,O_2,...,O_t|i_t=q_i; \lambda)P(O_{t+1},...,O_{T}|i_t=q_i; \lambda)P(i_t=q_i;\lambda)}{P(O;\lambda)}\\ =&\frac{P(O_1,O_2,...,O_t,i_t=q_i; \lambda)P(O_{t+1},...,O_{T}|i_t=q_i; \lambda)}{P(O;\lambda)}\\ =&\frac{\alpha_t(i)\beta_t(i)}{P(O;\lambda)}\\ =&\frac{\alpha_t(i)\beta_t(i)}{\sum_{i=1}^{N}\alpha_t(i)\beta_t(i)}\tag{4.1} \end{align}


4.2 Алгоритмы обучения

В алгоритме обучения он делится наконтролируемое обучениеинеконтролируемое обучение.

4.2.1 Контролируемое обучение
Базовые концепты

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

  • Оценка матрицы перехода состояний:

  • Оценка матрицы вероятности наблюдения:

    image.png

  • Оценка вероятности начального состояния:

конкретный пример

Пример настроения и погоды Боба в «Формальном определении скрытой марковской модели» в «3.1 Основные понятия» раздела 3 «Научный вывод скрытой марковской модели» в этой статье.

4.2.2 Обучение без учителя

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

4.3 Алгоритмы прогнозирования

4.3.1 Алгоритм Витерби

Конкретные примеры см. в разделе 2.3 этой статьи: Алгоритм Витерби.


5. Ссылки