سه‌شنبه سر کلاس هوش مصنوعی یه مبحثی مطرح شد و تهش یه چراغی تو ذهن من روشن شد و برای خودم یه نتیجه‌گیری کردم ازش. نتیجه‌گیری، پاراگراف آخر مطلبه. بقیه‌ی پست توضیح اون موضوعه و با توجه به اینکه خودم تازه یادش گرفتم ممکنه کامل نباشه یا اشکالی داشته باشه، اما خلاصه کردنش برا خودم جالب بود. پیشاپیش از بزرگای حوزه‌ی هوش مصنوعی و ماشین لرنینگ بابت این که پا تو کفش‌شون کردم عذرخواهی می‌کنم!

تو یادگیری ماشین یه مبحثی هست به اسم یادگیری تشویقی۱. اینطوریه که ربات یا سیستم پاسخ درست حرکتی که قراره بکنه رو نمی‌دونه، اما هر بار بعد از انجام حرکت بسته به درست بودن یا نبودنش بهش پاداش داده میشه یا جریمه میشه. در نتیجه بعد از چندین بار انجام حرکات یاد می‌گیره چه حرکتی درسته و از اون به بعد همون حرکت درست رو انجام میده. مثلا این ویدیو رو ببینید، یه رباته که داره یاد می‌گیره پن‌کیک تو تابه رو برگردونه :))

یکی از اولین روش‌های بر این مبنا، Learning Classifier System بوده که الان دیگه منسوخ شده انگار. تو این روش سیستم ما یه مجموعه گزاره (که بهشون می‌گیم قانون) به شکل «اگر... (فلان شرط برقرار بود)، آنگاه... (فلان کارو بکن)» داره. سیستم، موقعیتی که باهاش مواجه میشه رو چک می‌کنه تا ببینه با بخش «اگر» از کدوم قانون منطبقه، بعد عملی که تو بخش «آنگاه» اون قانون اومده رو انجام میده. اما خیلی وقتا بیشتر از یه قانون با اون موقعیت تطبیق دارن و از بین‌شون باید یکی انتخاب بشه. مثل این می‌مونه که استاد سر کلاس یه سوالی بپرسه و یه تعداد دست‌شونو ببرن بالا، حالا استاد از بین اینا باید یه نفرو انتخاب کنه، اگه طرف جواب درست داد نمره‌ی مثبت می‌گیره و اگر جواب اشتباه داد، نمره‌ی منفی. این انتخاب در واقع رندومه، مثل چرخوندن یه گردونه‌ی شانس، اما گردونه‌ای که قطاع‌هاش مساوی نیستن. قبل از شروع کار تمام قوانین یه امتیاز اولیه دارن که در واقع احتمال فعال شدن‌شونه. قطاع‌های گردونه‌ی شانس به نسبت این احتمال‌ها تقسیم شدن؛ یعنی هر چی یه قانون امتیاز بیشتری داشته باشه، احتمال انتخاب شدنش هم بیشتره.

حالا اینجا بحث ریسک‌پذیری مطرح میشه. قانونی که دست‌شو برده بالا (به این معنی که با شرایط تطبیق داشته) نمی‌دونه که قراره پاداش بگیره یا جریمه بشه. (چون سیستم پاسخ درست رو از قبل نمی‌دونه!) در عوض قانونی که هیچ‌وقت دست‌شو نبرده بالا، همین‌طوری نشسته و امتیازش دست نخورده. پس ممکنه به مرور امتیازش نسبت به بعضی قوانین دیگه زیاد بشه و در نتیجه احتمال انتخاب شدنش بره بالا! شاید بگین چه اهمیتی داره وقتی هیچ‌وقت با شرایط مَچ نمیشه؟ نکته همین‌جاس! اصلا همچین قانونی چرا باید تو سیستم باشه؟! در واقع امتیاز قوانین یه جای دیگه هم مهم میشه و اون وقتیه که می‌خوایم قوانین به درد نخور رو با قوانین جدید جایگزین کنیم. حذف قوانینِ به درد نخور با عکس امتیازشون رابطه داره (گردونه‌ی شانسی که این بار قطاع‌هاش به نسبت عکس امتیازها تقسیم شدن). ما می‌خوایم هم قوانینی که همه‌ش اشتباه جواب دادن کم‌کم حذف بشن، هم قوانینی که هیچ‌وقت با شرایط مَچ نمی‌شن. دسته‌ی اول که جریمه می‌شن و اینطوری امتیازشون کم میشه. اما دسته‌ی دوم که امتیازشون ثابت مونده چی؟ میایم هرچند وقت یک بار از تمام قوانین یه امتیازی تحت عنوان مالیات کم می‌کنیم که اون غیرفعال‌ها هم کم‌کم امتیاز از دست بدن...!

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

پ.ن. مخاطب این حرفا اول از همه خودم بودم که می‌دونم ریسک‌پذیریم زیاد نیست. :)


1) Reinforcement Learning