מודל מרקוב חבוי

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש
מודל מרקוב חבוי: העיגולים בשורה העליונה (x) מציינים מצבים נסתרים מעיני הצופה, הריבועים בשורה התחתונה מציינים אותיות הפלט (y), החצים המסומנים ב-a מציינים הסתברויות מעבר בין מצבים וכאלו המסומנים ב-b מייצגים הסתברות לפלט

מודל מרקוב חבוי (Hidden Markov model; ובקיצור HMM) הוא מודל סטוכסטי המאפשר למדל מערכת כתהליך מרקובי עם מצבים חבויים (כאלו שאינם ידועים לצופה).

הבסיס המתמטי והאלגוריתמים הבסיסיים המשמשים לניתוח מודל זה פותחו על ידי לאונרד באום, לויד וולש ואנדרו ויטרבי, כשפיתוחים דומים נעשו עוד קודם לכן על ידי המדען הרוסי רוסלן סטרטונוביץ'.

במודל מרקובי פשוט (כמו שרשרת מרקוב) המצב ידוע לצופה ולפיכך הפרמטרים היחידים הם הסתברויות המעבר בין מצבים. במודל מרקוב חבוי לעומת זאת המצב אינו גלוי לצופה בצורה ישירה, אך הפלט, אשר תלוי במצב ידוע לצופה. לכל מצב יש התפלגות של הסתברויות המגדירה את האותיות שאותן הוא יכול לפלוט. רצף אותיות הפלט שאותו מייצר המודל המרקובי החבוי מספק מידע מסוים על רצף המצבים הנסתר.

למודל מרקוב חבוי שימושים בתחומים רבים, בהם למשל זיהוי תבניות בדיבור, כתב יד, חלקי דיבר וביואינפורמטיקה.

הגדרה פורמלית[עריכת קוד מקור | עריכה]

ניתן להגדיר מודל מרקוב חבוי באופן הבא‏[1]:

  • \{ S_1, S_2... S_N \} - קבוצה של N המצבים במודל.
    • נסמן \ q_t המצב המתאים לתצפית בזמן t
  • \{ \sigma_1, \sigma_2... \sigma_M \} - קבוצה של M אותיות אלפבית (אותיות הפלט של המצבים)
  • A =\{ a_{ij} \} - מטריצת הסתברויות מעבר בין מצבים, כאשר a_{ij}=P[q_{t+1}=S_j|q_t=S_i], כלומר הסתברות מעבר ממצב i למצב j. המטריצה מגדירה הסתברויות ובהתאם צריך להתקיים 0 \leq a_{ij} \leq 1 ולכל i מתקיים: \sum_j a_{ij}=1
  • B =\{ b_i(k) \} - כאשר b_i(k) היא ההסתברות לפלט k כאשר נמצאים במצב S_i, כלומר b_i(k)=P[v_k at t|q_t=S_j]
  • \Pi = \{ \pi_i  \} - כאשר  \pi_i היא ההסתברות למצב ההתחלתי S_i

בהיתן מודל עם כל הפרמטרים לעיל, ניתן להשתמש בו כדי ליצור רצף תצפיות: \ O =  o_1 ,..., o_T

בעיות[עריכת קוד מקור | עריכה]

באמצעות מודל מרקוב חבוי ניתן לענות על מספר שאלות בנוגע לרצף תצפיות, וכאשר נעשה שימוש בתכנון דינמי ניתן לחשב ביעילות פתרון להן.

הסתברות לרצף תצפיות[עריכת קוד מקור | עריכה]

בהינתן רצף תצפיות O=o_1,\dots,o_T\, ובהינתן מודל עם כל פרמטרים לעיל ניתן לחשב את ההסתברות לרצף התצפיות:

P(O)=\sum_{X}P(O\mid X)P(X),\,

כאשר הסכימה נעשית על כל המצבים החבויים האפשריים:

X=q_1, \dots, q_T.\,

אלגוריתם מבוסס תכנון דינמי הפותר בעיה זו הוא אלגוריתם Forward.

הסתברויות למצבים חבויים[עריכת קוד מקור | עריכה]

בהינתן רצף תצפיות o_1,\dots,o_T. ובהינתן מודל עם כל פרמטרים לעיל ניתן לחשב את הסתברויות למצבים החבויים ולענות על מספר שאלות.

  • סינון - המטרה בבעיה זו היא לשערך את ההסתברות של המצב החבוי האחרון, P(q_T\ |\ o_1,\dots,o_T). ניתן למצוא פתרון לבעיה באמצעות אלגוריתם Forward.
  • החלקה - המטרה בבעיה זו היא לשערך את ההסתברות למצב חבוי באמצע הרצף, כלומר P(q_T\ |\ o_1,\dots,o_T), כאשר k < T. אלגוריתם המבוסס גם כן על תכנון דינמי הפותר בעיה זו הוא אלגוריתם Forward-backward.
  • פענוח/רצף המצבים הסביר ביותר - בבעיה זו מנסים למצוא מהו רצף המצבים החבויים המסביר בצורה הטובה ביותר את רצף התצפיות לאורך כל הרצף. בעיה זו נפתרת באמצעות אלגוריתם ויטרבי.

למידה[עריכת קוד מקור | עריכה]

המטרה בבעיה זו היא בהינתן תצפית או אוסף תצפיות לבחור פרמטרים למודל שיתאימו בצורה מיטבית לתיאור התצפיות, כאשר לרוב מחפשים נראות מקסימלית. לא קיים פתרון מדויק לבעיה זו, אך קיים פתרון המאפשר מציאת מקסימום לוקלי של נראות, הידוע כאלגוריתם באום-וולש (Baum–Welch), שהוא מקרה פרטי של אלגוריתם Expectation–maximization.

דוגמה[עריכת קוד מקור | עריכה]

נתאר שני חברים, אליס ובוב, החיים רחוק זה מזו ושמדברים בטלפון מדי יום מה עשו באותו היום. תחומי העניין של בוב הם הליכה בפארק, קניות וניקיון הדירה. הוא בוחר את תעסוקתו היומית אך ורק על פי מזג האוויר באותו היום. לאליס אין מידע על מזג האוויר במקום מגוריו של בוב, אך יש לה מושג כללי, ובהסתמך על המידע שבוב משתף אותה בטלפון היא מנסה לנחש מה מזג האוויר.

אליס מאמינה שמזג האוויר פועל כשרשרת מרקוב, שבה יש שני מצבים "גשום" ו"בהיר". היא לא יודעת במדויק את המצבים מדי יום ולכן זה מידע "חבוי", אך היא יודעת איזו משלוש הפעילויות עשה בוב ("התצפיות").

לאליס יש מושג כללי על מזג האוויר והיא יודעת פחות או יותר מה בוב נוהג לעשות, ועל פי המידע הנ"ל ניתן להגדיר את הפרמטרים של מודל מרקוב חבוי כדלקמן (מתואר בתחביר Python):

מצבים = ('גשום', 'בהיר')
 
תצפיות = ('הליכה', 'קניות', 'ניקיון')
 
הסתברות התחלה = {'גשום': 0.6, 'בהיר': 0.4}
 
הסתברויות מעבר = {
   'גשום' : {'גשום': 0.7, 'בהיר': 0.3},
   'בהיר' : {'גשום': 0.4, 'בהיר': 0.6},
   }
 
הסתברויות פלט= {
   'גשום' : {'הליכה': 0.1, 'קניות': 0.4, 'ניקיון': 0.5},
   'בהיר' : {'הליכה': 0.6, 'קניות': 0.3, 'ניקיון': 0.1},
   }

בדוגמה לעיל הסתברויות התחלה (או \Pi ) מייצגים את המונה של אליס באשר למצב מזג האוויר ביום הראשון שבוב מתקשר אליה (מזג האוויר נוטה יותר לגשום).

הסתברויות מעבר מגדירות את הסתברויות לשינוי מזג האוויר בשרשרת מרקוב. בדוגמה זו, יש סיכוי של 30% בלבד שיום למחרת יום גשום יהיה בהיר. הסתברויות פלט מגדירות את נטייתו של בוב להעדיף פעילות מסוימת בהתאם למצב מזג האוויר. כאשר גשום יש סיכוי של 50% שיעסוק בניקיון; כאשר בהיר, יש סיכוי של 60% שיעשה הליכה בפארק.

תיאור גרפי של מודל מרקוב חבוי בדוגמה

הערות שוליים[עריכת קוד מקור | עריכה]