مقایسه عملکرد الگوریتمهای تکاملی و یادگیری عمیق در بازیهای ویدئویی
این روزها شبکههای عصبی هیاهوی زیادی به پا کردهاند؛ اما رویکرد بسیار قدرتمندی نیز آماده اوج گرفتن است و آن چیزی نیست جز الگوریتمهای تکاملی. با هیجان زیادی که در خصوص شبکههای عصبی و تکنیکهای یادگیری عمیق مشاهده میشود؛ میتوان به سادگی تصور کرد که در دنیای علوم رایانه برای الگوریتمهای دیگر فضای زیادی باقی نمانده است. در هر حال شبکههای عصبی در وظایفی همچون شناسایی اشیا و چهره و در بازیهایی مانند شطرنج، گو و برخی بازیهای ویدئویی کلاسیک عملکردی بهتر از انسان ارائه میکنند.
این شبکهها مبتنی بر طرز کار مغز انسان هستند. احتمالاً شما نیز بر این باور هستید که هیچ الگوریتم دیگری پتانسیلی بالاتر از این برای این منظور نخواهد داشت؟ البته پاسخ منفی است. نوع کاملاً متفاوتی از محاسبات، پتانسیلی بسیار بالاتر از شبکههای عصبی و یادگیری عمیق دارند. این تکنیک بر پایه فرایندی است که موجب تکامل (فرگشت) مغز انسان شده است. به بیان دیگر یک توالی از تغییرات و گزینشهای تکراری که پیچیدهترین و پرظرفیتترین ماشینی که میشناسیم را به صورت انسانی با چشم، دست و پا، مغز و اندامهای دیگر خلق کرده است. باید به قدرت تکامل ایمان بیاوریم.
تاریخچه الگوریتمهای تکاملی
دانشمندان علوم رایانه مدتها است که در پی بهرهبرداری از قدرت تکامل هستند. این محاسبات تکاملی در طی 30 سال اخیر توجه قابل توجهی را جلب کردهاند، چون این زمانی بوده است که از آن برای بهینهسازی خطوط تولید تراکتور استفاده شده است. اما در طی سالهای اخیر این حوزه از علوم رایانه به عنوان جانشین قدرتمندی برای ماشینهای یادگیری عمیق و موفقیت خیرهکننده آنها مطرح شده است.
امروز جهان آماده قدردانی از تحقیقات دنیس ویلسون (Dennis Wilson) و همکارانش در دانشگاه تولوز فرانسه است. این محققان نشان دادهاند که محاسبات تکاملی چگونه میتوانند با عملکرد ماشینهای یادگیری عمیق رقابت کنند. این آزمایشها در زمینهای نمادین صورت گرفته است که نخستین بار موجب شهرت آنها در سال 2013 شد، یعنی توانایی رقابت با مغز انسان در بازیهای ویدئویی کلاسیک مانند Pong, Breakout و Space Invaders. این تحقیق نشان میدهد که محاسبات تکاملی میبایست دستکم به اندازه روابط مبتنی بر یادگیری عمیق جدی گرفته شوند.
محاسبات تکاملی در حوزهای کاملاً متفاوت از شبکههای عصبی عمل میکنند. هدف آنها این است که کد رایانهای تولید کنند که یک مسئله خاص را با استفاده از رویکردی حل کند که تا حدودی ضدشهودی و برخلاف روال معمول است.
رویکرد تولید کد
روش مرسوم برای ایجاد کد این است که آن را از مفاهیم ابتدایی و با داشتن هدف مشخصی در ذهن بنویسیم. محاسبات تکاملی از رویکرد متفاوتی استفاده میکنند. این الگوریتم با کدی که به صورت کاملاً تصادفی تولید شده است کار خود را آغاز میکند. و تنها از یک نسخه از کد استفاده نمیکند؛ بلکه با نسخههای زیادی که در برخی موارد تعدادشان به صدها هزار قطعه کد تصادفی میرسند، کار خود را آغاز میکند. هر یک از این کدها بررسی میشوند تا مشخص شود آیا به هدف مطلوب میرسند یا نه. و البته بدیهی است که همه کدها عملکرد بدی دارند، چون به طور تصادفی تولید شدهاند.
اما بر حسب تصادف برخی از کدها کمی بهتر از بقیه هستند. سپس این قطعه کدها در نسل جدیدی از کد که شامل کپیهایی از کدهای بهتر هستند، بازتولید میشوند. با این حال نسل بعد نمیتواند کپی یکسانی از کد اول باشد. بلکه به ترتیبی تغییری در آن ایجاد میشود. این تغییرات میتوانند شامل جابجایی جای دو بخش از کد باشد که نوعی جهش نقطهای است. یا ممکن است شامل دو کدی باشد که از نصف تقسیم شدهاند و این دو نیمه جای خود را با هم عوض میکنند، که فرایندی شبیه به بازترکیب جنسی است.
سپس هر یک از کدهای نسل جدید بررسی میشود تا مشخص شود عملکرد آن چگونه است. بهترین قطعههای کد در نسل بعد بازتولید میشوند و همین طور تا آخر. بدین ترتیب کد تکامل مییابد. در طی زمان کد بهتر میشود و پس از چند نسل اگر شرایط مناسب باشند، میتواند به کدی بهتر از هر کدی که یک انسان مینویسد تبدیل شود.
زمینههای کاربردی
دانشمندان رایانه از رویکردهای تکاملی در مورد مسائل مختلفی از طراحی روبوت تا ساخت اجزای فضاپیماها با موفقیت استفاده کردهاند. اما این حوزه از الگوریتمها به دلیل علاقه زیادی که به یادگیری عمیق وجود دارد، مغفول واقع شده است. بنابراین سؤال مهم این است که آیا الگوریتمهای تکاملی میتوانند عملکردی مشابه یادگیری عمیق داشته باشند. برای پاسخ به این سؤال ویلسون و همکارانش اقدام به توسعه کدی کردهاند که میتواند بازیهای رایانهای کلاسیک متعلق به دهههای 1980 و 1990 میلادی را کنترل کند.
این بازیها در پایگاه دادهای به نام محیط یادگیری کلاسیک (Arcade Learning Environment) وجود دارند. این پایگاه داده به طور فرایندهای برای تست رفتار انواع الگوریتمهای مختلف مورد استفاده قرار میگیرد. این پایگاه داده شامل 61 بازی آتاری مانند Pong, Space Invaders, Breakout, و Kung Fu Master. است.
هدف آن است که الگوریتمی ایجاد شود که یک بازی مانند Pong را تنها با نگاه به خروجیهای روی صفحه بازی کند. این همان روشی است که انسانها برای بازی استفاده میکنند. بنابراین الگوریتم باید موقعیت هر بازی را درک کند و سپس تصمیم بگیرد که چگونه حرکت کند تا بیشترین امتیاز را بگیرد.
کنترلهای همه بازیها مشابه هستند. این کنترلها به صورت هشت جهتی که کنترلر میتواند حرکت کند (بالا، پایین، چپ، راست و حرکتهای قطری) فشار دادن دکمه، حرکت در همان هشت جهت به همراه فشردن دکمه و دستآخر انجام ندادن هیچ کاری هستند. همه بازیها از 18 ترکیب ممکن استفاده نمیکنند و برخی تنها به چهار ترکیب کنترلی نیاز دارند.
روش کار ویسلون و همکاران
ابتدا باید کدی ایجاد شود. رویکرد تکاملی نیازمند فرهنگ واژگانی است که بتواند از آن استفاده کرده و کد رایانهای تولید کند. این واژگان از اقدامات ساده مانند ADD (x+y)/2 تا انواع پیچیدهتر مانند «اگر x اسکالر باشد، بردار x عنصر 1 را محاسبه کن» متفاوت هستند. انتخاب واژگانی که این فرهنگ را تشکیل میدهند، مهم است و ویلسون و همکارانش از فرهنگی که قبلاً از سوی گروه برنامهنویسی ژنتیک دکارتی جمعآوری شده بود، استفاده نمودهاند.
این فرایند با ایجاد تصادفی کدی شامل 40 واژه آغاز میشود. این همان ژنوم برنامه است. سپس این ژنوم تست میشود تا مشخص شود که تا چه حد میتواند بازی را کنترل کند و بر اساس امتیازی که به دست میآید داوری صورت میگیرد. سپس ژنوم بسته به میزان امتیاز به دست آمده با جهشها بازتولید میشود و مجدداً تست میشود و همین طور تا آخر. به طور کلی این تیم 10،000 ژنوم را بدین روش تست کرده است.
نتایجی که به دست آمدهاند جالب هستند. در ابتدا ژنومها عملکردی فاجعهبار در بازی کردن داشتهاند. اما در طی زمان رفتهرفته بهتر شدهاند. پس از گذر نسلهای متوالی آنها به خوبی بازی کردهاند و در برخی موارد از انسان نیز بهتر بازی میکنند. ژنومهای زیادی بدین صورت کار خود را خاتمه دادهاند که به طور کامل از راهبرد جدیدی برای بازی کردن استفاده کردهاند که در مواردی نیز بسیار پیچیده بوده است. اما ژنومهایی نیز یافت شدند که بسیار ساده بودند و از سوی انسان نادیده گرفته شده بودند.
بینشهای جدید
برای مثال الگوریتم تکاملی هنگام اجرای بازی Kung Fu Master کشف کرد که ارزشمندترین حمله به صورت مشت مستقیم است. این تکنیک به این دلیل کارآمد است که باعث میشود نسبت به نیمی از گلولههایی که به سمت بازیکن شلیک میشوند، جاخالی بدهد و همچنین به هر چیزی که در نزدیکی خود قرار دارد حمله کند. راهبرد الگوریتم این بود که به طور متوالی از این مانور استفاده کند و حرکت دیگری انجام ندهد. در این چارچوب استفاده از مشت مستقیم به طور خاص معنیدار است.
این راهبرد باعث شگفتی بازیکنان انسانی مشارکتکننده در این مطالعه شد. ویلسون بیان میکند: «استفاده از این راهبرد باعث کسب امتیازی بهتر از بازی کردن معمولی میشود و ما اینک در این بازی در زمان حمله تنها از مشت مستقیم استفاده میکنیم.»
در مجموع کد تکاملیافته توانست بسیاری از بازیها را به خوبی بازی کند و در مواردی مانند «Kung Fu Master» حتی عملکردی بهتر از بازیکن انسانی داشته باشد. کد تکاملیافته به اندازه رویکردهای یادگیری عمیق خوب بوده است و در بازیهایی مانند Asteroids, Defender, و Kung Fu Master بهتر از آنها عمل کرده است.
مزیتهای الگوریتمهای تکاملی
این مطالعه نتیجهای واضحتر نیز داشت است. ویلسون اظهار میکند: «با این که برنامهها نسبتاً کوچک هستند، اما بسیاری از کنترلرها با روشهای موجود برای بنچمارک آتاری در رقابت هستند و نیازمند زمان تمرینی کمتری هستند.»
کد تکاملیافته مزیت دیگری نیز دارد. از آنجا که این کد کوچک است مشاهده نحوه عملکرد آن آسانتر است. به طور عکس، مشکل شناختهشدهای که در تکنیکهای یادگیری عمیق وجود دارد آن است که برخی اوقات امکان درک این که چرا برخی تصمیمهای خاص گرفته شدهاند وجود ندارد و این مسئله میتواند نتایج پیچیده عملی و حقوقی داشته باشد.
در نهایت این مطالعه نتایج جذابی برای دانشمندان رایانهای که به طور خاص بر روی یادگیری عمیق متمرکز شدهاند دارد و به آنها اعلام میکند که شاید راه را اشتباه رفتهاند. رویکرد تکاملی جایگزین قدرتمندی است که میتواند در مجموعه گستردهای موقعیتها مورد استفاده قرار گیرد. در واقع برخی محققان شروع به استفاده از آن برای تکامل دادن ماشینهای یادگیری عمیق بهتر کردهاند.
اگر به این نوشته علاقهمند بودید، موارد زیر نیز احتمالاً مورد توجه شما قرار خواهند گرفت:
- آموزش خوشه بندی با استفاده از الگوریتم های تکاملی و فراابتکاری
- مجموعه آموزشهای هوش محاسباتی
- آموزش انتخاب ویژگی با استفاده از الگوریتم های فراابتکاری و تکاملی
- گنجینه آموزش های بهینه سازی هوشمند و محاسبات تکاملی
- الگوریتم ژنتیک و محاسبات تکاملی
- مقدمهای بر بهینهسازی به کمک الگوریتمهای فراابتکاری و محاسبات تکاملی
- بهینهسازی کلاسیک و هوشمند
==