در مدل مارکوف پنهان یا HMM، وضعیت مستقیماً دیده نمیشود؛ فقط مشاهدهای داریم که احتمالِ آن به وضعیت وابسته است. پرسش این صفحه این است: با پارامترهای معلوم، احتمالِ یک دنبالهٔ مشاهده چقدر است؟ برای پاسخ، سهمِ تمام مسیرهای پنهان را جمع میکنیم؛ انتخابِ بهترین مسیر مسئلهٔ دیگری است.
سه قراردادِ مدلِ کوچک
دو وضعیت AوB و مشاهدههای نمادین R،BوGداریم؛ Bبهعنوان نماد مشاهده، با وضعیت Bدو متغیر متفاوت است. احتمال شروع[۳÷۵،۲÷۵]است. انتقال ازAبهAوBبهترتیب۳÷۴و۱÷۴و ازBبهAوBبرابر۱÷۵و۴÷۵است. درAاحتمال مشاهدهٔRبرابر۴÷۵وBبرابر۱÷۵است؛ در وضعیتBهمین احتمالها۳÷۱۰و۷÷۱۰هستند. Gدر هر دو وضعیت احتمال صفر دارد.
این جدولها اصیل و دستیاند؛ از گفتار، مشتری یا دادهٔ واقعی آموخته نشدهاند. جمعِ هر سطرِ انتقال و انتشار و جمعِ شروع یک است. در HMMمرتبهاولِ این تمرین، وضعیت بعد فقط به وضعیت فعلی و مشاهدهٔ هر گام فقط به وضعیت همان گام وابسته است؛ اینها فرض مدلاند، نه قانونِ همهٔ دنبالههای واقعی.
چرا یک ضربِ دلخواه کافی نیست؟
برای دنبالهٔ مشاهدهٔ R,B,R،هشت مسیرِ وضعیت ممکن داریم: هر جایگاه AیاBمیشود. احتمالِ مشترکِ هر مسیر و این مشاهدهها، حاصلضرب شروع، انتشارها و انتقالهای همان مسیر است. P(O)جمعِ این هشت احتمال است؛ برداشتنِ بزرگترینشان احتمالِ کلِ مشاهده را نمیدهد.
فایل Pythonهر هشت مسیر را جدا حساب میکند. سپس همان جواب را با Forwardمیسازد؛ این دو محاسبه برای ورودیِ کوچک باید یکسان باشند. روشِ شمارش برای طولهای بزرگ گران میشود؛ Forwardبا جمعکردنِ سهمهای همپایان، کار تکراری را کم میکند.
جدولِ آلفا چه چیزی را جمع میکند؟
آلفای گام اول برابر شروعِ هر وضعیت ضربدر احتمالِ مشاهدهٔ اول در آن است. برای گام بعد، سهمِ هر وضعیت قبلی را در انتقال به وضعیت تازه ضرب و جمع میکنیم؛ سپس احتمالِ مشاهدهٔ تازه را ضرب میکنیم. آلفا احتمالِ مشترکِ پیشوندِ مشاهده و پایان در آن وضعیت است، نه احتمالِ نرمالشدهٔ وضعیت با شرطِ مشاهده.
| گام | آلفا برایA | آلفا برایB |
|---|---|---|
| 1 | 12/25 | 3/25 |
| 2 | 48/625 | 189/1250 |
| 3 | 1098/15625 | 657/15625 |
جمعِ سطر آخر در کد 351/3125است. همهٔ عددها با Fractionحساب شدهاند. تقسیمِ هر سطر بر جمعش، محاسبهٔ شرطیِ متفاوتی میسازد؛ در این خروجی آلفاها را بیخبر نرمال نکردهایم.
احتمال صفر و دنبالهٔ خالی
مشاهدهٔ Gدر قرارداد مدل از هیچ وضعیت تولید نمیشود، پس احتمالِ دنبالهٔ دارایGصفر است. این به معنی ناممکنبودنِ همان رویداد در جهان واقعی نیست؛ مدل ما به آن امکان نداده است. برای دنبالهٔ خالی احتمال۱را قرارداد گذاشتهایم. نمادِ خارج از واژگان با خطا رد میشود و خودکار جای Gنمینشیند.
کد علاوه بر هشت مسیر، تمامِ هشت دنبالهٔ سهنمادیِ ساختهشده ازRوBرا حساب میکند و جمعِ احتمالشان را یک مییابد. هیچ آموزشِ Baum–Welch، تخمین پارامتر یا کتابخانهٔ HMMاجرا نشده است. ضرب احتمالهای بسیار کوچک در دنبالهٔ بلند به کنترل عددی مانند مقیاسگذاری یا فضای لگاریتم نیاز دارد؛ Fractionاین تمرین کوچک جای آن طراحیِ مقیاسپذیر نیست.
از احتمالِ مشاهده به پرسشِ درست
اگر خروجیِ موردنیاز، بهترین دنبالهٔ وضعیت باشد، راهنمای Viterbiو بازگردانی مسیر را بخوانید؛ آن صفحه maxو backpointerرا با مثالی دیگر اجرا میکند. حالت عددیِ RNN نیز توزیع وضعیتِ این مثال نیست. برای ادامه، مبانی هوش مصنوعی را ببینید؛ این تمرین معماریِ اپرانگار یا محصولِ تشخیص وضعیتِ مشتری را اعلام نمیکند.
فایل تمرین و منبع
جمعِ احتمال هشت مسیر و کنترلِ مستقلِ Forward · پارامترهای دستیِ مدل و قراردادِ مشاهدهٔ ناممکن
منابع در ۳ نوامبر ۲۰۲۶ خوانده شدند؛ این تاریخ، تاریخ انتشار منبع نیست. مثالها و فایلهای این راهنما آموزشی و ساختهٔ تحریریهاند.