یه متد جالبی توی هوش مصنوعی هست که من خیلی بهش علاقه دارم، به نام الگوریتم ژنتیک. وقتی استفاده میشه که ما میتونیم تطابق هر جواب با مسئله رو حساب کنیم، اما روش رسیدن به جواب رو نمیدونیم. مثلا میخوایم یه شبکه عصبی بنویسیم که بره خودش سوپرماریو (قارچخور) بازی کنه؛ از روی امتیاز یا تموم کردن بازی، راحت میشه فهمید کی بهتر بازی کرده اما سخته که خط به خط برنامه نویسی کنیم که یه سیستم بتونه خودش سوپرماریو بازی کنه. این موقع ریش و قیچی رو میسپریم دست هوش مصنوعی.
توی الگوریتم ژنتیک، یه محیط داریم و تعداد زیادی گونه. هر گونه یک جواب محتمل هست برای سوالِ این محیط. یعنی صدتا شبکه عصبیِ شانسی ساختیم و میخوایم ببینیم کدوم یکی از اینا میتونه بازیِ سوپرماریو رو تموم کنه. قاعدتا وقتی شانسی شبکه عصبی میسازیم، همشون توی بازی گند میزنن. اما بلاخره یکی کمتر و یکی بیشتر. مثل هدفهای دوران کودکی که خیلی آبروبر هستن. خوب حالا میزاریم همه شبکه عصبیها یه دور بازی کنن ببینیم چند مرده حلاجن و چند امتیاز میتونن کسب کنن. یا آرزوهای کودکیمون رو یکی یکی امتحان میکنیم ببینیم چقدر ممکنه و یا اگر ممکنه چقدر بهمون حال میده. خلاصه الان باید همه رو رده بندی کنیم. حالا کارِ این نسل تموم شده و باید نسل جدید تولید بشه. میایم شبکه عصبیهای مختلف رو با هم شانسی قاطی میکنیم، یا یه کوچولو شانسی تغییرشون میدیم. البته اینم باید در نظر بگیریم که احتمالِ ترکیب شدنِ شبکههایی که بهتر کار کردن باید بیشتر باشه. و اونایی که در مرحله ی قبلی خیلی ضعیف بودند باید حذف بشن. واسه آرزوها و هدفها هم همین صادقه. یعنی اونایی که خیلی پرت بودن رو دور میریزیم و اونایی که خوب بودن رو با هم قاطی میکنیم یه چیز جدید بدست بیاد. حالا محاسبات نسل جدید رو دوباره انجام میدیم. یعنی میبینیم هر شبکه یا هدف چقدر به درد میخوره و اونا رو رتبه بندی میکنیم و دوباره با هم قاطیشون میکنیم. هربار که این پروسه رو تکرار میکنیم به جواب بهتری میرسیم. پس قاعدتا باید بعد از چند [صد] نسل جوابهای بسیار معناداری داشته باشیم.
جالبه که وقتی داریم اینجوری مسئله رو حل میکنیم، ممکنه مسئله اصلا جوابِ یکتا نداشته باشه اما توی هر نسل به جواب بهتری میرسیم. زندگی هم همینه. هر دفعه به جواب بهتری میرسیم اما هیچوقت یه جواب نهایی برای اینکه چه هدفی داشته باشیم یا اینکه چطوری زندگی کنیم نخواهیم داشت.
یه چیز جالبتر اینکه این شبکهها به صورت ثابت پیشرفت نمیکنن. یعنی گاهی چند نسل میگذره اما هیچ پیشرفتی حاصل نمیشه و به نظر میرسه که دیگه به آخرش رسیدی و دیگه بیشتر نمیتونی پیش بری. (خط آبی در تصویر زیر) حتما این حس رو توی زندگی هم تجربه کردین. اما دقیقا همین موقع یهو یه اتفاق باعث میشه که شبکه یه جهش حسابی داشته باشه و دوباره این روند ادامه پیدا کنه. خیلی شبیه زندگی واقعیه نه؟
این متن از این نوشتهی امین آرامش عزیز الهام گرفته. برایش آرزوی گونههای مناسب، محاسبات قوی و جهشهای سریع دارم. 🙂
راستی: منم پنج شنبه D-14 هستم :))
۴ دیدگاه دربارهٔ «الگوریتم ژنتیک برای یافتن هدف زندگی»
دیدن این ویدیو هم خالی از لطف نیست
https://www.dalfak.com/w/xiv46
ـنها چیزی که این نمودار رو نجات میده همون نخبه سالاری ( التیسم) هست که امید همه به داشتن اون هست و از هر نسل به نسل دیگه مستقیم میره. کاش تفرکات ناب هر نسل ما هم مستقیم برای رشد به نسل های بعدی برسه.
فکر کنم بیشترین حسرت نصیبِ اون گونهها(آرزوها)یی میشه که شانسِ امتحان شدن رو هم نداشتن.
بعد هم همیشه فکر میکنی اون گونه بهترین گونه بوده لابد!
سلام ایمان عزیز.
من با دیدن این نمودار و جملات انتهایی یاد الگوریتم تپه-نوردی یا همون hill-climbing معروف افتادم. البته این دید شخصی منه.
یک :بعضی وقت ها به شانه میرسیم و فکر میکنیم که از هدف دور افتاده ایم و دیگر هدف را نمی بینیم.در حالی که هدف همان ماکزیمم سراسری است و احتما آنکه به آن دست بیابیم خیلی کم است.
دو: بعضی وقت ها در ماکزیمم محلی هموار قرار داریم و ماکزیمم محلی را میبینیم و سعی می کنیم که به آن برسیم و فکر می کنیم که همان هدف است. اما دریغا که هدف ماکزیمم سراسری است.
سه : به ماکزیمم محلی می رسیم و دیگر جستجو نمی کنیم و فکر می کنیم که به هدف رسیده ام و درجا می زنیم.
چهار : همواره در حالت فعلی قرار داریم و فقط و فقط جستجو می کنیم تا به حالت ماکزیمم سراسری برسیم. من عاشق این حالتم.
به قول خودت :” ما را هدفی از زنده بودن نیست. هرچه هست، شوق مسیر است و رنج ترک کردن. ما را به نرسیدن و تنها ماندن انذار مده.”
ارادتمند .
سعیدفعله گری.