الگوریتم ویتربی

پیدایش و کاربردها

در بسیاری از کاربردهای مدل‌های پنهان مارکف، متغیرهای پنهان تفسیر معناداری دارند و در نتیجه یکی از مهم‌ترین مسائل در این حیطه، پیدا کردن محتمل‌ترین توالی از متغیرهای پنهان با داشتن یک توالی از مشاهدات است. به‌عنوان مثال، در حوزهٔ بازشناسی گفتار، می‌خواهیم یک توالی از واج‌ها با استفاده از توالی‌ای از آواها داشته باشیم.
این مسئله نباید با مسئلهٔ پیدا کردن محتمل‌ترین مجموعه از حالت‌های پنهان اشتباه گرفته شود. مسئلهٔ دوم می‌تواند با استفاده از الگوریتم پس‌رو-پیش‌رو حل شود. بدین صورت که ابتدا توزیع حاشیه‌ای برای هر متغیر نهان را به‌دست آورده و سپس جداگانه آن‌ها را بیشینه می‌کنیم. اما در حالت کلی، مسئلهٔ پیدا کردن محتمل‌ترین توالی پراهمیت‌تر بوده و الگوریتم بهینهٔ ارائه‌شده برای آن، الگوریتم جمع-بیشینه که در حیطهٔ مدل‌های پنهان مارکف، به آن الگوریتم ویتربی گفته می‌شود استفاده کرد.
در مسائل طبیعی مانند در ، همیشه واقعیت منطبق بر محتمل‌ترین مسیر نیست. اما بسیاری اوقات محتمل‌ترین مسیر نیز اطلاعات خوبی در اختیار می‌گذارد.

مدل‌های پنهان مارکف برای جزایز سی‌پی‌جی

در این بخش، به بررسی یکی از کاربردهای این مسئله در بیوانفورماتیک می‌پردازیم.  مسئله جزایر سی‌پی‌جی (CpG islands) -پیدا کردن ناحیه‌ای از ژنوم که فرکانس بالایی از مکان‌های CG در آن وجود دارد- است. این مسئله را می‌توان با استفاده از دو مدل مخفی مارکف مدل کرد. کافی است حالت‌های مخفی را دو حالتِ  و  در نظر گیریم به‌طوری که زمانی که در ناحیه‌ی سی‌جی‌پی قرار داریم و یا زمانی که در این ناحیه قرار نداریم. و حالت‌هایمان نیز حروف A، C، G و T که در واقع نوکلئوتیدهای روی رشته‌اند در نظر گیریم. پس مجموعاً ۸ حالت مخفی که در شکل زیر نمایش داده شده‌اند را داریم.

جستجوی کامل فضای مسئله

می‌توانیم تمامی مسیرهای ممکن را که مشاهده ما را تولید می‌کنند را پیدا کنیم، سپس با محاسبه احتمال آنها، محتمل‌ترین مسیر را بدست آوریم. به عنوان نمونه در مسئله آب و هوا (می‌توانید در مثال‌هایی برای مدل پنهان مارکف ببینید) مشاهدی ما به صورت خشک، نم‌دار، مرطوب است. برای به‌دست آوردن محتمل‌ترین مسیر باید احتمال زیر بیشینه شود:
Pr(توالی مشاهده شده | انتخابی از حالت‌های مخفی)
برای جستجوی تمامی فضای جواب باید این احتمال را برای تمامی مسیرها بدست بیاوریم:
Pr(خشک، نم‌دار، مرطوب | آفتابی، آفتابی، آفتابی)، Pr(خشک، نم‌دار، مرطوب | آفتابی، آفتابی، ابری)، Pr(خشک، نم‌دار، مرطوب | آفتابی، آفتابی، بارانی)، . . . Pr(خشک، نم‌دار، مرطوب | بارانی، بارانی، بارانی)
پیچیدگی زمانی این راه‌حل از اندازهٔ نمایی () بوده و بهینه نیست. برای سرعت بخشیدن به الگوریتم می‌توان از تکنیک شاخه و حد استفاده کرد اما یک راه حل در زمان چندجمله‌ای برای این مسئله وجود دارد که الگوریتم ویتربی است.

الگوریتم ویتربی

همان‌طور که در بخش قبل توضیح داده‌شد، تعداد حالت‌های ممکن برای متغیرهای پنهان یا معادلاً تعداد مسیرها نسبت به طول توالی از اندازهٔ نمایی است. شکل زیر، حالت‌های متغیرهای نهان یک مدل پنهان مارکف را به‌صورت یک شبکه نشان داده‌است که در آن، حالت‌های مختلف برای هر متغیر نهان با رنگ‌های متفاوت مشخص شده‌اند و متغیرهای نهان به‌صورت افقی از چپ به راست نمایش داده شده‌اند. با استفاده از الگوریتم ویتربی، می‌خواهیم محتمل‌ترین مسیر را در این شبکه بیابیم به‌طوری که هزینهٔ محاسباتی به‌صورت خطی با طول توالی افزایش یابد.

تعریف مسئله

با توجه به توضیحات داده‌شده، می‌دانیم می‌توان مسئله را به‌صورت زیر بازنویسی کرد:
می‌خواهیم مسیر بهینه‌ای مانند پیدا کنیم به‌گونه‌ای که داشته باشیم: . که در آن یک توالی از مشاهدات و یک توالی از متغیرهای پنهان باشد. 
می‌دانیم برای محاسبه‌ی احتمال بالا داریم: . که در آن  مقادیر احتمال‌های انتقال و  احتمال انتشار را نشان می‌دهد. برای اطلاعات بیشتر به صفحه‌ی مدل‌ پنهان مارکف مراجعه کنید.

ایده‌ی الگوریتم

اگر گره‌های گراف روبرو را با استفاده از دوتایی‌هایی که به‌ترتیب از شماره‌ی متغیر نهان و شماره‌ی حالت‌های ممکن برای آن‌ها تشکیل‌شده باشند، نمایش دهیم، می‌توان وزن بین دو گره‌ی و را برابر با مقدار تعریف کرد. حال می‌توان احتمال  برای یک مسیر مانند  به‌طوری که با یال  به گره‌ی ختم شود را به‌صورت زیر محاسبه کرد:
حال کافی است متغیر را به‌طوری تعریف کنیم که احتمال بهترین مسیر تا مکان باشد، به‌طوری که توالی مشاهدات به ختم شده‌باشد و متغیر نهان برابر با باشد. بنابراین طبق نتایج بالا داریم: