Жасырын марковтық модельдерде ықтималдықтарды қалай шешуге болады?

Мен жасырын марковтық үлгілерді үйреніп жатырмын және вики беттерінде, сондай-ақ гитарада көптеген мысалдар бар, бірақ олардың көпшілігінде ықтималдықтар қазірдің өзінде бар (жаңбырдың 70% өзгеруі, мемлекеттің өзгеру ықтималдығы және т.б.) . Емлені тексеру немесе сөйлем мысалдары, кітаптарды оқып, сөздерді ықтималдығын бағалайды.

Сонымен, марковтық модельде ықтималдықтарды анықтаудың тәсілі бар ма, әлде басқа бір модельді алдын-ала есептеуге болады ма?

Кешіріңіз, бұл сұрақ өшірулі. Мен жасырын марковтық модельдің ықтимал тізбектерді қалай таңдағаны туралы ойланамын, бірақ ықтималдық бөлігі маған біраз сұр болып табылады (себебі оны жиі қамтамасыз етеді). Мысалдар немесе кез-келген ақпарат жақсы болар еді.


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 (күту максимизациясы) алгоритмін іздейсіз. Мүмкін, ең жиі қолданылатын: Баум-Welch алгоритмі, ол алға-кері алгоритмі.

Анықтама алу үшін мына жерде слайдтар жиынтығы Мен бұрын HMM хаттамаларын шолу үшін пайдаланылған. Ол Forward-Backward, Viterbi және Baum-Welch-ға жақсы шолу жасайды

4
қосылды
Көп рақмет. Слайдтар алдында оқыған сілтемелер шынымен жақсы болды. Олар менің сұрақтарымның анық бөлігін жасады, бірақ мен ықтималдықтың қалай анықталатынын білмей отырмын. Мысалы, слайдта 41 әр түйінге ықтималдығы бар (1/3,1/2 және т.б.). Мен оларды қалай алуға болатындығын білемін және оларды жаңартып отырамын. Мүмкін, слайдтарда мен оны жоғалтқан шығармын, мен мұны жаңадан бастаймын, сондықтан оны демалыс күндері мұқият оқып шығамын. Слайдтарға және жауапқа рахмет.
қосылды автор Lostsoul, көзі
Сізге алғыс айтамын. Менің матемым саған ұнайды, сондықтан маған не болып жатқанын түсіну үшін слайдтың (және голлингтің көптігі) бірнеше оқылымы бар еді. Мен математиканы толығымен түсінбеймін, бірақ қазір логиканы аламын. Тағы да рақмет, Дасти.
қосылды автор Lostsoul, көзі
@Dusty: Оқу/жаттығуды Алға-кері алгоритмді (ол HMM бастапқы параметрлерін берген кезде соңғы жағдайды есептейді) ішкі пайдаланатын Baum-Welch алгоритмі жасайды. Осылайша, HMM параметрлерін ескере отырып, Baum-Welch алгоритмі параметрлерін өздігінен оңтайландыруға тырысады. Мен дұрыс деп ойладым ба?
қосылды автор garak, көзі
@Lostsoul - Right, slide 41 және бұл аймақ ХММ қалай жұмыс істейтінін түсіндіреді. Слайдтың айналасында 68 байқаудың жиынтығынан параметрлерді (бірлесіп λ деп аталады) бағалау туралы қалай сөйлесуге болатынын айтуға болады. Сондай-ақ, бұл Баум-Уэлч болып табылатын алгоритм.
қосылды автор Dusty, көзі
@Lostsoul - Мазасыздық жоқ. Мен көмектесе алатыныма қуаныштымын.
қосылды автор Dusty, көзі