Які способи вирішувати ймовірності в прихованих марковських моделях?

Я починаю вивчати приховані моделі Маркова, а на сторінці Вікі, а також на Github є багато прикладів, але більшість ймовірностей вже є (70% зміна дощу, 30% шанс зміни стану тощо). . Приклади перевірки орфографії або покарання, здається, вивчають книги, а потім оцінюють ймовірність слів.

Тож чи маркова модель включає спосіб з'ясування ймовірностей, чи ми вважаємо, що для якоїсь іншої моделі потрібно її попередньо обчислити?

Вибачте, якщо це питання вимкнено. Я думаю, це просто, як прихована марковська модель вибирає вірогідні послідовності, але частина ймовірності трохи сіра для мене (тому що її часто надають). Приклади або будь-яка інформація буде чудовою.


For those not familiar with markov models, here's an example(from wikipedia) http://en.wikipedia.org/wiki/Viterbi_algorithm and http://en.wikipedia.org/wiki/Hidden_Markov_model

#!/usr/bin/env python

states = ('Rainy', 'Sunny')

observations = ('walk', 'shop', 'clean')

start_probability = {'Rainy': 0.6, 'Sunny': 0.4}

transition_probability = {
   'Rainy' : {'Rainy': 0.7, 'Sunny': 0.3},
   'Sunny' : {'Rainy': 0.4, 'Sunny': 0.6},
   }

emission_probability = {
   'Rainy' : {'walk': 0.1, 'shop': 0.4, 'clean': 0.5},
   'Sunny' : {'walk': 0.6, 'shop': 0.3, 'clean': 0.1},
   }

#application code
# Helps visualize the steps of Viterbi.
def print_dptable(V):
    print "    ",
    for i in range(len(V)): print "%7s" % ("%d" % i),
    print

    for y in V[0].keys():
        print "%.5s: " % y,
        for t in range(len(V)):
            print "%.7s" % ("%f" % V[t][y]),
        print

def viterbi(obs, states, start_p, trans_p, emit_p):
    V = [{}]
    path = {}

    # Initialize base cases (t == 0)
    for y in states:
        V[0][y] = start_p[y] * emit_p[y][obs[0]]
        path[y] = [y]

    # Run Viterbi for t > 0
    for t in range(1,len(obs)):
        V.append({})
        newpath = {}

        for y in states:
            (prob, state) = max([(V[t-1][y0] * trans_p[y0][y] * emit_p[y][obs[t]], y0) for y0 in states])
            V[t][y] = prob
            newpath[y] = path[state] + [y]

        # Don't need to remember the old paths
        path = newpath

    print_dptable(V)
    (prob, state) = max([(V[len(obs) - 1][y], y) for y in states])
    return (prob, path[state])



#start trigger
def example():
    return viterbi(observations,
                   states,
                   start_probability,
                   transition_probability,
                   emission_probability)
print example()
6

1 Відповіді

Ви шукаєте алгоритм EM (maximization expectation) для обчислення невідомих параметрів з множини спостережуваних послідовностей. Напевно, найбільш часто використовуваним є алгоритм Baum-Welch , який використовує алгоритм вперед-назад .

Для довідки, це набір слайдів , які я використовував раніше для перегляду HMMs. Він має гарний огляд "Вперед-назад", "Вітербо" та "Баум-Уелч"

4
додано
Велике спасибі. Посилання, які я прочитав перед слайдами, були дійсно хорошими. Вони зрозуміли багато питань, які я мав, але я все ще не впевнений, як розраховується ймовірність. Наприклад, на слайді, 41 вони мають вірогідність для кожного вузла (1/3,1/2 та ін.). Я намагаюся зрозуміти, як їх отримати, і продовжувати оновлювати їх. Це, можливо, в слайдах, і мені це не вистачає, я новим для цього, тому я збираюся уважно вивчати її протягом вихідних. Дякую за слайди та відповідь.
додано Автор Lostsoul, джерело
Ще раз спасибі, я не можу подякувати вам. Моя математика сцє, тому мені потрібно було кілька читань слайда (і багато чого з Googling), щоб зрозуміти, що відбувається. Я повністю не розумію математику, але зараз я отримую логіку. Спасибі так багато разів, Дасті.
додано Автор Lostsoul, джерело
@Dusty: Навчання/навчання проводиться за допомогою алгоритму Баума-Вельша, який внутрішньо використовує алгоритм "зворотний і зворотний" (який обчислює кінцеву стану при заданих початкових параметрах HMM). Отже, при заданих параметрах HMM алгоритм Баума-Велша рекурсивно намагається оптимізувати самі параметри. Чи я зрозумів це правильно?
додано Автор garak, джерело
@ Лоцул - Правий, слайд 41, і цей регіон просто пояснює, як HMM працюють в цілому. Навколо слайду 68 він починає говорити про те, як ви збираєтеся оцінювати параметри (разом іменовані як λ) з набору спостережень. І алгоритм, який робить це, - Baum-Welch.
додано Автор Dusty, джерело
@ Лоссул - Не хвилюйся. Радий допомогти.
додано Автор Dusty, джерело