حل معمای احتمال 3Blue1Brown-از امید ریاضی تا شبیهسازی مونتکارلو
مسئلهای که 3Blue1Brown مطرح کرده بود، بهظاهر یک بازی ساده با چند رشته بود. فرض کنید تعدادی رشته درون یک جعبه قرار دارد. در هر مرحله، یک سرِ رشته بهصورت تصادفی انتخاب میشود و سپس سرِ دیگری از میان سرهای باقیمانده انتخاب میشود. اگر این دو سر متعلق به دو رشته متفاوت باشند، آن دو رشته به هم گره میخورند و یک رشته بلندتر ساخته میشود. اما اگر دو سر انتخابشده متعلق به یک رشته باشند، آن رشته به یک حلقه تبدیل میشود و از جعبه خارج خواهد شد.
پرسش اصلی این بود: اگر این فرایند تا زمانی ادامه پیدا کند که دیگر رشتهای در جعبه باقی نماند، بهطور میانگین چند حلقه ساخته میشود؟
این پرسش برای متخصصان داده، تحلیلگران، علاقهمندان به احتمال و حتی فعالان هوش مصنوعی جذاب است؛ زیرا نشان میدهد چگونه میتوان یک مسئله پیچیده را با چند مشاهده کلیدی سادهسازی کرد و به یک راهحل دقیق یا تقریبی رسید.
مسئله دقیقاً چه میگوید؟
در شروع، تعدادی رشته مستقل در جعبه وجود دارد. هر رشته دو سر دارد. در هر دور:
- یک سر رشته بهصورت تصادفی انتخاب میشود.
- سر دوم نیز از میان سرهای باقیمانده انتخاب میشود.
- اگر دو سر از یک رشته باشند، یک حلقه ایجاد میشود.
- اگر دو سر از دو رشته مختلف باشند، آن دو رشته به یک رشته بلندتر تبدیل میشوند.
- در هر دو حالت، تعداد رشتههای موجود در جعبه یک عدد کم میشود.
برای مثال، اگر با ۵۰ رشته شروع کنیم، دقیقاً ۵۰ دور خواهیم داشت؛ زیرا در هر دور، تعداد رشتهها یک واحد کاهش پیدا میکند. نکته مهم این است که تعداد مراحل تصادفی نیست؛ بلکه از قبل مشخص است.
چرا این مسئله برای علم داده مهم است؟
در نگاه اول، این معما فقط یک تمرین احتمال بهنظر میرسد؛ اما از دید علم داده، چند مهارت بنیادین را آموزش میدهد:
- شکستن مسئله پیچیده به اجزای کوچکتر
- تشخیص متغیرهای مهم و حذف جزئیات غیرضروری
- استفاده از امید ریاضی برای محاسبه مقدار مورد انتظار
- مقایسه راهحل تحلیلی با شبیهسازی مونتکارلو
- درک محدودیتهای هوش مصنوعی مولد در استدلال دقیق
در بسیاری از پروژههای واقعی داده، مسیر رسیدن به پاسخ از ابتدا روشن نیست. متخصص داده باید بتواند ساختار مسئله را تشخیص دهد، وابستگیها را بررسی کند، فرضیات را کنترل کند و در صورت نبود راهحل بسته، از شبیهسازی استفاده کند.
مشاهدههای کلیدی برای حل مسئله
برای حل این مسئله، چند مشاهده تعیینکننده وجود داشت.
نخست اینکه انتخاب اول اهمیت زیادی ندارد. هر سری که ابتدا انتخاب شود، فقط نقطه شروع است. نتیجه اصلی به انتخاب دوم وابسته است؛ چون انتخاب دوم تعیین میکند آیا حلقه ساخته میشود یا دو رشته به هم متصل میشوند.
دوم اینکه در هر دور، تعداد رشتهها دقیقاً یک عدد کم میشود. اگر حلقه ساخته شود، آن رشته از جعبه خارج میشود. اگر دو رشته به هم متصل شوند، دو رشته به یک رشته تبدیل میشوند. پس در هر حالت، تعداد رشتهها یک واحد کاهش پیدا میکند.
سوم اینکه تعداد دورها برابر با تعداد رشتههای اولیه است. برای ۵۰ رشته، ۵۰ دور خواهیم داشت. دور آخر همیشه با یک رشته باقیمانده انجام میشود و حتماً به حلقه ختم میشود.
چهارم و مهمتر اینکه برای شمارش تعداد حلقهها، هر دور را میتوان مستقل از دورهای قبلی تحلیل کرد. البته اگر هدف ما محاسبه طول حلقهها یا میانگین محیط حلقهها بود، این استقلال دیگر برقرار نبود؛ زیرا طول رشتهها به تاریخچه اتصالهای قبلی وابسته میشد.
راهحل تحلیلی؛ محاسبه امید ریاضی تعداد حلقهها
فرض کنیم در یک مرحله، تعداد رشتههای موجود در جعبه برابر با S باشد. هر رشته دو سر دارد؛ پس در مجموع 2S سر رشته وجود دارد.
پس از انتخاب سر اول، دیگر نمیتوان همان سر را دوباره انتخاب کرد. بنابراین برای انتخاب دوم، 2S – ۱ گزینه باقی میماند. از میان این گزینهها فقط یک گزینه، یعنی سر دیگر همان رشته، باعث ایجاد حلقه میشود.
پس احتمال ساخت حلقه در آن مرحله برابر است با:
1 / (2S - 1)
از آنجا که اگر حلقه ساخته شود مقدار شمارش حلقهها ۱ است و اگر ساخته نشود مقدار آن ۰ است، امید ریاضی تعداد حلقهها در آن مرحله نیز برابر خواهد بود با:
E(loop | S) = 1 / (2S - 1)
برای محاسبه کل تعداد حلقههای مورد انتظار، کافی است این مقدار را برای تمام مراحل جمع کنیم:
E(total loops) = Σ 1 / (2S - 1)
که در آن S از تعداد رشتههای اولیه تا ۱ کاهش پیدا میکند.
برای ۵۰ رشته، مقدار نهایی تقریباً برابر با ۲.۹۴ حلقه است. یعنی اگر این آزمایش بارها تکرار شود، میانگین تعداد حلقههای ساختهشده نزدیک به ۲.۹۴ خواهد بود.
چرا روش brute force مناسب نیست؟
راهحل ابتدایی برای چنین مسئلهای میتواند ساختن یک درخت احتمال باشد؛ یعنی همه حالتهای ممکن را شاخهبهشاخه بررسی کنیم. این روش برای تعداد کم رشتهها قابل انجام است، اما با افزایش تعداد رشتهها بهسرعت غیرعملی میشود.
برای مثال، در حالتی که ۵۰ رشته وجود دارد، تعداد شاخهها و حالتهای ممکن بسیار زیاد میشود. این همان مشکلی است که در علم داده و یادگیری ماشین نیز زیاد دیده میشود: راهحل خام و مستقیم ممکن است درست باشد، اما از نظر محاسباتی مقیاسپذیر نیست.
راهکار بهتر، یافتن ساختار درونی مسئله است. در اینجا، تشخیص اینکه هر مرحله از نظر شمارش حلقهها قابل تحلیل مستقل است، مسئله را از یک درخت احتمال پیچیده به یک جمع ساده از امیدهای ریاضی تبدیل کرد.
شبیهسازی مونتکارلو؛ راهکار عملی برای مسائل پیچیدهتر
هرچند این مسئله یک راهحل تحلیلی تمیز دارد، اما شبیهسازی مونتکارلو نیز میتواند پاسخ را تقریب بزند. در شبیهسازی مونتکارلو، فرایند تصادفی هزاران یا میلیونها بار تکرار میشود و سپس میانگین نتایج محاسبه میشود.
در این مسئله، الگوریتم کلی چنین است:
for simulation in range(num_simulations):
strings = create_strings(num_strings)
loop_counter = 0
while len(strings) > 0:
end_1, end_2 = select_random_ends(strings)
strings, is_loop = tie_ends(strings, end_1, end_2)
loop_counter += is_loop
results.append(loop_counter)
expected_loops = mean(results)
اگر تعداد شبیهسازیها زیاد باشد، میانگین خروجی به مقدار واقعی نزدیک میشود. برای نمونه، با ۱۰ هزار اجرای شبیهسازی و ۵۰ رشته، مقدار بهدستآمده معمولاً نزدیک به ۲.۹۵ است؛ یعنی بسیار نزدیک به پاسخ تحلیلی ۲.۹۴.
این تفاوت کوچک نشان میدهد که مونتکارلو یک روش تقریبی است، نه دقیق. اما مزیت اصلی آن در انعطافپذیری است.
مسئله سختتر: میانگین محیط حلقهها
اگر پرسش را تغییر دهیم و بهجای تعداد حلقهها، میانگین محیط حلقههای ساختهشده را بخواهیم، مسئله بسیار پیچیدهتر میشود. دلیل آن این است که طول هر حلقه به اتصالهای قبلی وابسته است.
در این حالت، دیگر نمیتوان هر مرحله را کاملاً مستقل در نظر گرفت. اگر چند رشته قبلاً به هم متصل شده باشند، طول رشته جدید تغییر کرده است و احتمال ساخت حلقه با یک محیط مشخص به تاریخچه فرایند وابسته میشود.
اینجاست که شبیهسازی مونتکارلو ارزش واقعی خود را نشان میدهد. بهجای تلاش برای استخراج یک فرمول بسته پیچیده، میتوان طول هر رشته را در کد نگه داشت و هنگام تشکیل حلقه، طول آن را ثبت کرد. سپس پس از تعداد زیادی شبیهسازی، میانگین محیط حلقهها محاسبه میشود.
این رویکرد در پروژههای واقعی داده نیز کاربرد دارد؛ مخصوصاً زمانی که مدل تحلیلی بسیار دشوار، پرهزینه یا حتی غیرممکن است.
راهکارهای عملی برای فعالان علم داده
برای کسانی که در حوزه علم داده، تحلیل داده، هوش مصنوعی یا مدلسازی آماری فعالیت میکنند، این مسئله چند درس عملی دارد.
اول، پیش از کدنویسی باید مسئله را دقیق تعریف کرد. بسیاری از خطاهای تحلیلی از جایی شروع میشوند که تیم داده، متغیر هدف یا فرایند تولید داده را درست نمیفهمد.
دوم، باید میان حل تحلیلی و حل شبیهسازی تمایز قائل شد. اگر فرمول بسته وجود دارد، معمولاً سریعتر، دقیقتر و قابل توضیحتر است. اما اگر مسئله وابستگیهای پیچیده دارد، مونتکارلو میتواند بهترین گزینه باشد.
سوم، استقلال رخدادها باید با دقت بررسی شود. در این مسئله، تعداد حلقهها را میتوان با جمع امید ریاضی مراحل حل کرد؛ اما طول حلقهها چنین خاصیتی ندارد. همین تفاوت کوچک میتواند مدلسازی را کاملاً تغییر دهد.
چهارم، نباید هوش مصنوعی مولد را جایگزین تفکر کرد. ابزارهایی مانند ChatGPT میتوانند در توضیح، کدنویسی، مستندسازی و تست سناریوها کمک کنند؛ اما تشخیص ساختار مسئله و اعتبارسنجی پاسخ همچنان به مهارت انسانی نیاز دارد.
جمعبندی
معمای رشتههای 3Blue1Brown نشان داد که حتی یک مسئله ساده احتمال میتواند درسهای مهمی برای عصر هوش مصنوعی داشته باشد. در شرایطی که بسیاری از کاربران برای حل مسائل به ابزارهای AI متکی شدهاند، این تمرین یادآور شد که مهارت اصلی متخصص داده همچنان در فهم عمیق مسئله، سادهسازی ساختار، انتخاب روش مناسب و اعتبارسنجی نتیجه است.
پاسخ تحلیلی مسئله برای ۵۰ رشته، حدود ۲.۹۴ حلقه بود؛ اما ارزش واقعی این تمرین فراتر از عدد نهایی است. این مسئله نشان داد چه زمانی باید از فرمولهای دقیق استفاده کرد و چه زمانی شبیهسازی مونتکارلو میتواند مسیر عملیتری برای حل مسئله باشد.
نوشته : Jarom Hulet
پرسشهای متداول
معمای احتمال 3Blue1Brown درباره چیست؟
این معما درباره تعدادی رشته در یک جعبه است که سرهای آنها بهصورت تصادفی انتخاب و به هم گره زده میشوند. هدف، محاسبه میانگین تعداد حلقههایی است که تا پایان فرایند ساخته میشود.
پاسخ مسئله برای ۵۰ رشته چقدر است؟
امید ریاضی تعداد حلقهها برای ۵۰ رشته حدود ۲.۹۴ است.
چرا انتخاب اول در هر مرحله اهمیت زیادی ندارد؟
زیرا انتخاب اول فقط یک سر رشته را مشخص میکند. آنچه تعیین میکند حلقه ساخته شود یا نه، انتخاب دوم است.
شبیهسازی مونتکارلو در این مسئله چه کاربردی دارد؟
مونتکارلو با اجرای چندینباره فرایند تصادفی، میانگین تعداد حلقهها را تخمین میزند. این روش برای نسخههای پیچیدهتر مسئله، مانند محاسبه طول یا محیط حلقهها، بسیار کاربردی است.
این مسئله چه ارتباطی با علم داده دارد؟
این مسئله نمونهای روشن از تفکر تحلیلی در علم داده است: تعریف مسئله، شناسایی متغیرهای مهم، استفاده از امید ریاضی، بررسی استقلال رخدادها و انتخاب میان راهحل تحلیلی و شبیهسازی.