فرض کنید n تا توپ قرمز داریم و m تا توپ آبی. توپها را میریزیم توی یک کلاه. حالا اگر یک توپ را به صورت تصادفی برداریم احتمال قرمز بودن توپ چقدر میشود؟
جواب ساده است، احتمال قرمز بودن توپ میشود
مثلا اگر ۲ تا توپ قرمز داشته باشید و ۳ تا توپ آبی، احتمال برداشتن یک توپ قرمز ۰/۴۰میشود.
*- حالا اگر من یک توپ از درون کلاه بردارم و بدون نگاه کردن به رنگ توپ بخواهم یک توپ دیگر بردارم، احتمال قرمز بودن توپ بعدی چقدر است؟
*- حالا اگر من اول k توپ بردارم و بدون نگاه کردن به رنگشان بخواهم توب k+1 را بردارم. توپ k+1 با چه احتمالی قرمز خواهد بود؟
این مساله خواص جالبی داره، که بعدا در مورد آنها خواهم نوشت.
پردهی اول:
یادش بخیر راهنمایی بودم که کتاب کوههای سفید را با یک از هم کلاسیها که اسمش یادم نیست خواندم. بعد تا مدتها توی کف داستان بودیم سعی میکردیم ادامهی اون را بسازیم.
پردهی دوم:
شهر طلا و سرب را خوب یادمه چی شد که پیدا کردم. دبیرستان بودیم سال سوم. یکی از بچههای ردیف چلو که حالا برای خودش آقای دکتری شده یک کتاب دستش بود داشت سر کلاس یواشکی معلم میخوندش. من هم از پش سر یک چیزهایی میدیدم. کتاب آشنا بود برام! بعد که کتاب را دیدم بلافاصله دیدم که این کتاب باید یک ربطی به کتاب کوههای سفید داشته باشه (مترجم نامرد, ننوشته بود که این کتاب ادامهی کوههای سفیده!) به این ترتیب من قسمت دوم را خواندم و آقای دکتر قسمت اول را
پردهی سوم:
اما خواندن قسمت سوم برمیگرده به دوران دانشجویی! حالا ملت چی میخوندند ما چی میخواندیم بماند
. اما به لطف وبلاگهای فارسی که اون موقع تازه جون گرفته بودند و گوگل هم اونها را کم-کم-ک توی نتایج جستجو نشان میداد, توانستم بفهمم که اسم قسمت داستان «برکهی آتش» است و آن را خواندم.
و امروز:
هر چند از شنیدن خبر مرگ جان کریستوفر ناراحت شدم. ولی حداقل خیالم راحت شد که داستان همان سه قسمتی را داشته که من خواندهام و قسمت چهارمی وجود نداشته.
پس نوشت: ظاهرا یک قسمت دیگر هم بوده (لینک) بروم پیداش کنم و بخوانمش
داستان از اینجا شروع شد که برای مینیم کردن خطای یک مدل نیاز داشتم گرادیان خطا نسبت به پارامترهای سیستم را حساب کنم و بعد هم با استفاده از یک روش بهینهسازی بر مبنای گرادیان نقطهی بهینه را پیدا کنم. وقتی کد حساب کردن تابع هدف و مشتقاش را نوشتم و به الگوریتم بهینهسازی دادم خیلی خوب کار کرد و مدل خیلی خوبی تحویلام داد. اما یک احساس درونی به من میگفت که باید بیشتر دقت کنم، برای همین تصمیم گرفتم که گرادیان را به روش عددی هم پیدا کنم و با خروجی برنامهام مقایسه کنم. واا! احساسم درست بود، مقادیر محاسبه شده کد غلط غلوط بود. ولی اگر غلطه پش چرا مدل بدست آمده خوب کار میکند؟ یک کمی که دیباگ کردم توانستم مشکل را پیدا و حل کنم. ولی چند روز گذشته ذهنم مشغول این نکته بود که چرا یک خروجی غلط باید به جواب درست منتهی بشود؟!؟ جوابی که بهش رسیدم (بدون اثبات ریاضی) این است که :
برای رسیدن به نقطهی بهینه توسط یک الگوریتم بهینهسازی بر مبنای گرادیان، چیزی که خیلی مهم است، علامت گرادیان است و این که کجاها مقدارش صفر میشود و وجود سایر خطاها فقط زمان رسیدن به نقطهی بهینه را طولانیتر میکنند.
در حال حاضر برای قضیهبالا یک اثبات ساده پیدا کردهام، البته برای حالتی که گرادیان واقعی تابع پیوسته باشد، از گامهای خیلی کوچک استفاده کنیم، الگوریتم بهینهسازی هم فقط به مشق اول نگاه کند و کاری به مشتقهای مرتبهی بالاتر کاری نداشته باشد.
بالاخره امروز موفق شدم که با رییس کوچک (شنگول) یک قرار ملاقات بگذارم. فکر کن یک هفته بدوی و ایمیل بزنی برای یک قرار ۱۰ دقیقهای!