2011-10-28 10 views
6

मैं छिपे हुए मार्कोव मॉडल और विकी पेज पर सीखना शुरू कर रहा हूं, साथ ही गिथब पर भी बहुत सारे उदाहरण हैं लेकिन अधिकांश संभावनाएं पहले से ही हैं (बारिश का 70% परिवर्तन, राज्य बदलने का 30% मौका इत्यादि। ।)। वर्तनी जांच या वाक्यों के उदाहरण, किताबों का अध्ययन करने लगते हैं और फिर शब्दों की संभावनाओं को रैंक करते हैं।छुपे हुए मार्कोव मॉडल में संभावनाओं का निर्णय लेने के तरीके क्या हैं?

तो क्या मार्कोव मॉडल में संभावनाओं को समझने का एक तरीका शामिल है या क्या हम किसी अन्य मॉडल को पूर्व-गणना करने के लिए मानते हैं?

क्षमा करें अगर यह प्रश्न बंद है। मुझे लगता है कि यह सीधा तरीका है कि छिपी मार्कोव मॉडल संभावित अनुक्रमों का चयन कैसे करता है लेकिन संभावना भाग मेरे लिए थोड़ा भूरा है (क्योंकि इसे अक्सर प्रदान किया जाता है)। उदाहरण या कोई जानकारी बहुत अच्छी होगी।


मार्कोव मॉडल से परिचित नहीं उन लोगों के लिए, यहाँ (विकिपीडिया से) http://en.wikipedia.org/wiki/Viterbi_algorithm एक उदाहरण है और 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() 

उत्तर

4

आप एक ईएम (उम्मीद अधिकतमकरण) के लिए एल्गोरिथ्म से अज्ञात मापदंडों की गणना करने के लिए देख रहे हैं मनाए गए अनुक्रमों के सेट। शायद सबसे अधिक इस्तेमाल किया जाने वाला Baum-Welch एल्गोरिदम है, जो forward-backward एल्गोरिदम का उपयोग करता है।

संदर्भ के लिए, यहां एक set of slides है जिसका मैंने पहले एचएमएम की समीक्षा करने के लिए उपयोग किया है। इसमें फॉरवर्ड-बैकवर्ड, विटरबी, और बाम-वेल्च

+0

का बहुत अच्छा अवलोकन है। स्लाइड से पहले मैंने जो लिंक पढ़े हैं वे वास्तव में अच्छे थे। उन्होंने मेरे बहुत सारे प्रश्न स्पष्ट किए लेकिन मुझे अभी भी अनिश्चितता है कि संभावना को कैसे पता चला है। उदाहरण के लिए स्लाइड पर, 41 में प्रत्येक नोड (1/3,1/2, आदि ..) की संभावनाएं हैं। मैं यह समझने की कोशिश कर रहा हूं कि उन्हें कैसे प्राप्त किया जाए, और उन्हें अपडेट करना जारी रखें। यह शायद स्लाइड में है और मैं इसे याद कर रहा हूं, मैं इसके लिए नया हूं इसलिए मैं इसे सप्ताहांत में अधिक सावधानीपूर्वक अध्ययन करने जा रहा हूं। स्लाइड और उत्तर के लिए धन्यवाद। – Lostsoul

+0

@ लोस्टसौल - दाएं, स्लाइड 41 और वह क्षेत्र सिर्फ यह बता रहा है कि एचएमएम सामान्य रूप से कैसे काम करते हैं। स्लाइड 68 के आसपास, यह अवलोकनों के एक सेट से पैरामीटर (सामूहिक रूप से λ के रूप में संदर्भित) का अनुमान लगाने के बारे में बात करना शुरू कर देता है। और एल्गोरिदम जो बाउम-वेल्च करता है। – Dusty

+0

धन्यवाद फिर से मैं आपको धन्यवाद नहीं दे सकता। मेरा गणित बेकार है इसलिए यह समझने के लिए कि क्या हो रहा है, मुझे स्लाइड के कई रीडिंग (और गूगलिंग के बहुत सारे) ले गए। मैं गणित को पूरी तरह समझ नहीं पा रहा हूं लेकिन मुझे अब तर्क मिल गया है। बहुत बहुत धन्यवाद, धूलदार। – Lostsoul

संबंधित मुद्दे