رفتن به محتوای اصلی
بازگشت به وبلاگ

داده و اتصال فنی

متروپولیس–هستینگز؛ پیشنهاد نامتقارن را درست بپذیریم

ماتریس انتقالِ سه‌حالتی را با کسر دقیق بسازید؛ تعادلِ نه جفت و ضدنمونهٔ حذف نسبت پیشنهاد نشان می‌دهند چرا پذیرش مهم است.

در Metropolis–Hastings، پیشنهاد یک حرکت با پذیرفتنِ آن یکی نیست. وقتی احتمالِ پیشنهادِ رفت و برگشت برابر نباشد، نسبتِ احتمالِ مقصد به مبدأ کافی نیست. این تمرین یک زنجیرهٔ سه‌حالتی را از ابتدا می‌سازد و با کسرهای دقیق بررسی می‌کند که حذفِ نسبتِ پیشنهاد، توزیعِ موردنظر را عوض می‌کند.

سه حالت، دو توزیع متفاوت

حالت‌ها را صفر، یک و دو می‌نامیم. توزیع هدف pi برابر۱/۲،۱/۳ و۱/۶ است؛ می‌خواهیم اگر زنجیره با این توزیع شروع شد، پس از یک انتقال هم همین توزیع را داشته باشد. توزیع پیشنهاد q برابر۱/۳،۱/۲ و۱/۶ است. در این مثال، پیشنهادِ مقصد از حالتِ فعلی مستقل است، اما احتمالِ رفت و برگشتِ هر جفت لزوماً برابر نیست.

برای حرکت از i به j، پذیرش را با کوچک‌ترِ یک و pi[j]×q[i]÷(pi[i]×q[j]) حساب می‌کنیم. همهٔ جرم‌ها در قراردادِ این فایل مثبت‌اند؛ بنابراین مخرج صفر نداریم. این محدودیت، انتخابِ تمرین است و شرحِ همهٔ حالت‌های پشتیبانی در الگوریتمِ عمومی نیست.

پیشنهاد را به انتقال تبدیل کنیم

احتمالِ انتقال به یک حالتِ متفاوت، حاصل‌ضربِ احتمال پیشنهاد و احتمال پذیرش است. باقیِ احتمالِ سطر را روی ماندن در حالت فعلی می‌گذاریم؛ پیشنهادِ خودِ حالت و ردِ پیشنهادها هر دو می‌توانند به ماندن منجر شوند. جدول پذیرش به‌تنهایی ماتریس انتقال نیست.

مبدأبه صفربه یکبه دو
صفر۲/۳۲/۹۱/۹
یک۱/۳۱/۲۱/۶
دو۱/۳۱/۳۱/۳

کد همهٔ درایه‌ها را غیرمنفی و جمعِ هر سطر را دقیقاً یک کنترل می‌کند. این بررسی ضروری است، ولی به‌تنهایی ثابت نمی‌کند هدفِ انتخاب‌شده حفظ شده است.

تعادلِ رفت و برگشت را جدا بسنجیم

برای هر نه جفتِ i و j، جرمِ pi[i]×P[i,j] را با pi[j]×P[j,i] مقایسه می‌کنیم. برای جفت صفر و یک، هر دو۱/۹ می‌شوند. سپس مستقل از این برابری‌های جفتی، بردارِ pi را در کلِ ماتریس ضرب می‌کنیم؛ خروجی دوباره۱/۲،۱/۳ و۱/۶ است.

این‌ها محاسبهٔ دقیق برای ماتریسِ ساخته‌شده‌اند. نمونه‌گیریِ محدود، سرعتِ نزدیک‌شدن از شروعِ دلخواه، تعدادِ گامِ لازم یا استقلالِ خروجی‌های متوالی از آن‌ها نتیجه نمی‌شود. دربارهٔ ماتریسِ آماده و توزیع پایا، راهنمای زنجیرهٔ مارکوف را جدا بخوانید.

نسخهٔ ناقص واقعاً چه جوابی می‌دهد؟

همان کد را عمداً با پذیرشِ کوچک‌ترِ یک و pi[j]÷pi[i] اجرا می‌کنیم؛ نسبتِ پیشنهاد حذف شده است. حاصلِ pi×P اکنون۱۷/۳۶،۴/۹ و۱/۱۲ می‌شود. این بردار با هدف فرق دارد؛ جدول JSON هم ماتریسِ ناقص و هم خروجیِ اشتباه را نگه می‌دارد.

بنابراین تنها نامیدنِ کد به نام Metropolis کافی نیست. اگر پیشنهادِ این مثال را نامتقارن نگه داریم، پذیرشِ مخصوصِ پیشنهادِ متقارن پاسخِ دیگری می‌سازد. خطا با اجرای واقعیِ ضدنمونه دیده می‌شود، نه با ادعای کلی دربارهٔ خوب یا بد بودنِ یک روش.

مسیرِ شش‌گامی، نمونهٔ تصادفی نیست

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

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

فایل تمرین و منبع

کد مستقلِ تمرین و کنترل‌ها؛ Python · ورودی‌ها و تمام خروجی واقعیِ همین تمرین؛ JSON

منابع در 2026-11-04 خوانده شدند؛ این تاریخ، تاریخ انتشار منبع نیست. مثال‌ها و فایل‌های این راهنما آموزشی و ساختهٔ تحریریه‌اند.

برای این نیاز، کدام خدمت مناسب‌تر است؟

تماس و منشی، چت سایت و تحلیل مکالمه سه مسیر متفاوت‌اند. ابتدا خدمت متناسب نیازتان را انتخاب کنید.

انتخاب میان سه خدمتراهنمای شروع با تیم اپرا

برآورد هزینه