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

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

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

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

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

הגדרה פורמלית
ניתן להגדיר מודל מרקוב חבוי באופן הבא:
  - קבוצה של N המצבים במודל.
נסמן  המצב המתאים לתצפית בזמן t
 - קבוצה של M אותיות אלפבית (אותיות הפלט של המצבים)
 - מטריצת הסתברויות מעבר בין מצבים, כאשר , כלומר הסתברות מעבר ממצב i למצב j. המטריצה מגדירה הסתברויות ובהתאם צריך להתקיים  ולכל i מתקיים: 
  - כאשר  היא ההסתברות לפלט k כאשר נמצאים במצב , כלומר 
  - כאשר  היא ההסתברות למצב ההתחלתי 

בהינתן מודל עם כל הפרמטרים לעיל, ניתן להשתמש בו כדי ליצור רצף תצפיות:

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

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

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

הסתברויות למצבים חבויים
בהינתן רצף תצפיות  ובהינתן מודל עם כל הפרמטרים לעיל אז ניתן לחשב את ההסתברויות למצבים החבויים ולענות על מספר שאלות.
סינון - המטרה בבעיה זו היא לשערך את ההסתברות של המצב החבוי האחרון, . ניתן למצוא פתרון לבעיה באמצעות אלגוריתם Forward.
החלקה - המטרה בבעיה זו היא לשערך את ההסתברות למצב חבוי באמצע הרצף, כלומר , כאשר . אלגוריתם המבוסס גם כן על תכנון דינמי הפותר בעיה זו הוא אלגוריתם 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},
 }
בדוגמה לעיל הסתברויות התחלה (או ) מייצגים את אמונה של אליס באשר למצב מזג האוויר ביום הראשון שבוב מתקשר אליה (מזג האוויר נוטה יותר לגשום).

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

קישורים חיצוניים

הערות שוליים

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