الگوریتم EM بین دو کار رفتوبرگشت میکند: با پارامترهای فعلی، سهم احتمالی هر جزء پنهان را حساب میکند؛ سپس با همان سهمها، پارامترها را تغییر میدهد. داشتنِ مسئولیتهای نرم، بدون اجرای گام دوم، یک دور کامل EM نیست. این تمرین دو دور واقعی را برای گروههای پرتاب سکه اجرا و درستنمایی مشاهدهها را مستقل کنترل میکند.
واحدِ متغیر پنهان یک گروه است
چهار گروهِ مرتبِ ۰۰۰،۰۰۱،۱۱۰ و۱۱۱ داریم. برای هر گروه، یک جزء پنهان از دو سکه انتخاب میشود و هر سه پرتابِ همان گروه از همان سکهاند. انتخابِ جداگانهٔ سکه برای تکتک پرتابها، مدل دیگری است. دادهها را خودمان برای آموزش ساختهایم و هویتِ واقعیِ سکهها معلوم یا کشفشده نیست.
در آغاز، سهم دو جزء هرکدام۱/۲ و احتمالِ یک برای آنها۱/۴ و۳/۴ است. احتمالِ رشتهٔ مرتب با h بار یک و طول m، برابر p^h×(۱−p)^(m−h) است. چون خود رشتهٔ مرتب مشاهده شده، ضریبِ ترکیبیِ شمارشِ همهٔ چینشهای دارای h یک را اضافه نمیکنیم.
گام E؛ احتمالِ هر جزء برای هر گروه
برای هر گروه و جزء k، سهمِ اولیهٔ pi_k را در احتمال همان رشته زیر p_k ضرب میکنیم. سپس دو حاصل را بر جمعشان تقسیم میکنیم. هر ردیفِ مسئولیت جمعِ یک دارد؛ این کنترل روی تمام ردیفها واقعاً اجرا میشود. این عدد برچسبِ قطعی یا درصدِ صحتِ مدل نیست.
جمعِ ستونِ مسئولیت، Nk است: تعدادِ مؤثرِ گروههای منتسب به آن جزء. مجموعِ مسئولیتِ هر گروه ضرب در تعدادِ یکهای آن، سرهای وزندار را میدهد. JSON ردیفهای مسئولیت، Nk و جمعِ وزندار را نگه میدارد تا تغییر پارامتر فقط یک خروجی مبهم نباشد.
گام M؛ مخرج را درست انتخاب کنیم
سهمِ تازهٔ هر جزء Nk÷۴ است. احتمالِ تازهٔ یک، سرهای وزندار تقسیم بر ۳Nk میشود؛ هر گروه سه پرتاب دارد. تقسیم بر تعدادِ گروهها بهجای تعدادِ مؤثرِ پرتابها، فرمول این مدل نیست و در کنترلِ عمدی حتی میتواند احتمالِ بیشتر از یک بسازد.
پس از دور اول، احتمالها۱۹/۸۴ و۶۵/۸۴ میشوند؛ دور دوم۶۰۹۵۵/۲۸۱۴۸۴ و۲۲۰۵۲۹/۲۸۱۴۸۴ میدهد. درستنماییِ لگاریتمیِ طبیعی پس از دو دور بهترتیب حدود−۷٫۷۴۷۴۴۲ و−۷٫۷۴۳۰۴۵ است. عددِ کمتر منفی اینجا بزرگتر است؛ این دو افزایش، اثباتِ بهینهٔ سراسری نیستند.
کنترلِ مستقل با تمام انتسابها
محاسبهٔ اصلی برای هر گروه، دو احتمال را جمع و سپس چهار حاصل را ضرب میکند. oracle جدا، تمام۱۶انتسابِ چهار گروه به دو جزء را میسازد، احتمالِ مشترکِ هر انتساب را حساب و آنها را جمع میکند. مقدار دقیقِ دو مسیر برابر است؛ فقط لگاریتمِ نمایشی ممیزشناور است. برای جلوگیری از صفرشدنِ عددِ مثبت هنگامِ تبدیل به float، لگاریتم از تفاضلِ لگاریتمِ صورت و مخرجِ صحیح ساخته میشود. در آزمونِ دو گروهِ تکپرتابی با p=۱/۱۰^۴۰۰، درستنماییِ دقیق مثبت است، هرچند float آن صفر میشود؛ لگاریتمِ ثبتشدهٔ متناهی با −۸۰۰×ln(۱۰) مستقلاً برابر میشود. این شاهد را درستنماییِ صفر نمینامیم.
در گام M، مشتقِ تابعِ برنولیِ وزندار در پارامترِ تازه صفر و مشتقِ دوم منفی است. این کنترل، بیشینهٔ همان مسئلهٔ وزندارِ گام M را میسنجد، نه بیشینهٔ جهانیِ کلِ مخلوط. نسبتدادنِ این نتیجهٔ محدود به کیفیتِ دادهٔ تازه درست نیست.
شروعِ متقارن میتواند همانجا بماند
با دو احتمالِ اولیهٔ برابر۱/۲، هر دو جزء پس از یک دور همچنان۱/۲ میمانند. جابهجایی نامِ دو جزء نیز احتمالِ مشاهدهها را عوض نمیکند. نامِ جزء هویتِ واقعیِ مشتری یا سکه نیست. شش ورودیِ نامعتبر، از گروهِ خالی تا احتمالِ مشاهدهٔ صفر، صریح رد میشوند.
دامنهٔ کد۱تا۶گروهِ همطول و۱تا۴پرتاب است. مخلوط گاوسی با پارامتر ثابت مسئولیت را میسنجد؛ بیز ساده مسئلهٔ دیگری دارد. ادامه در آموزش هوش مصنوعی؛ این تمرین اجرای محصول اپرا یا آموزش مدل واقعی را گزارش نمیکند.
فایل تمرین و منبع
کد مستقل تمرین و تمام کنترلها؛ Python · ورودی و تمام نتایج اجرای واقعی؛ JSON
منابع در 2026-11-04 خوانده شدند؛ این تاریخ، تاریخ انتشار منبع نیست. مثالها و فایلهای این راهنما آموزشی و ساختهٔ تحریریهاند.