یه مقاله مهم سال 2013 منتشر شد با عنوان آتاری بازی کردن با یادگیریِ تقویتیِ عمیق که 9000 تا هم سایت خورد. نویسندگان مقاله تونستن agentی طراحی کنن که هر بازی آتاری رو بازی میکرد و یاد میگرفت، بدون این که درباره بازی اطلاعاتی از قبل بهش بدیم. مقاله کوتاه و به نسبت آسونه و میتونید با رد کردن ریاضیاتش و با کمی سرچ بفهمید چی میگه.
هوشِ مصنوعی طراحی شده 10 میلیون بار یه game خاص آتاری رو بازی میکرد تا بتونه اون رو یادبگیره، و در نهایت از 7 بازی متفاوت، تو 3 تاش از قرمان جهان امتیاز بهتری آورد و تو 4 تاش شکست خورد.
چیزی که برام عجیب بود اینه که چرا اینقد agentها بد یادمیگیرن. هیچ انسانی 10میلیون بار هیچ کاری رو تمرین نکرده. شما حتی اگر آتاری رو به چشمتون هم ندیده باشید، حداکثر با 3 بار بازی کردن کلیت بازی دستتون میآد و با ده بیست بار بازی کردن تسلط پیدا میکنید، یادگیری ماشین چه فرقی با یادگیری انسان داره که اینقدر کُندتره و مجبوره با سرعت محاسبه بالاش این کُند بودنش رو جبران کنه؟ برای پاسخ به این سوال دو روش یادگیری ماشین رو بررسی میکنیم و بعدش به چگونگی یادگیری انسان میپردازیم.
فرض کنید یه بازی آتاری داریم که توش بازیکن صاحب یک کشتی هست که باید با پرتاب موشک کشتیهای دشمن رو بزنه تا امتیاز بگیره. روش اول اینه که مدلمون یه جدول بسازه و هر تصویری که از بازی میبینه رو یه وضعیت در بازی در نظر بگیره، مثلا این وضعیت که کشتی خودی تو موقعیت 1 و کشتیهای دشمن تو موقعیت 2 و 3 هستن، در این وضعیت یک عمل انجام میده، مثل شلیک موشک به راست، و بررسی میکنه که سود حاصل چقدره، مثلا اگه دشمن نابود شد سودِ انجام اون عمل زیاده. بعدش میره تو جدول یادداشت میکنه که تو این وضعیتِ خاص عملِ فلان رو انجام دادم و فلانقدر سود گرفتم، و بر اساس چیزی که یادداشت کرده برای دفعات بعد میتونه تصمیم بگیره کدوم عمل سود بهتری میده.
طبعا برای بازیهای پیچیده تعداد وضعیتها خیعلی زیاده و نمیشه جدولی به این بزرگی رو ذخیره کرد، که تو این بازیا از شبکه عصبی استفاده میکنن. شبکههای عصبی رو یه سری تابعِ پیچیده در نظر بگیرید که میخوان یه عددی رو تخمین بزنن. مثلا ما در این جا میخوایم یه تابع داشته باشیم:
R(s, a)
که برامون تخمین بزنه به ازای وضعیت s اگر عملِ a (مثلا حرکت به راست) رو انجام بدیم، سود احتمالی چقدر هست. بدیهیه که این تابع خیعلی پیچیدهست و کلی پارامتر داره، و نتیجتا برای یادگیری و تنظیم این پارامترها شبکه عصبیمون باید کلی عکس از وضعیتهای مختلف بازی ببینه تا یادبگیره.
و اما درباره انسان، گویا یادگیری انسان اصلا این جوری نیست، وگرنه داده زیادی میخواست. ذهن انسان با یکی دو بار بازی کردن، منطق کلی بازی و روند و الگوها و معادله حرکت اجزا رو انتزاع میکنه و تعمیم میده. مثلا میفهمه که دشمن هر چند ثانیه یک بار یه موشک میزنه و موشکش با فلان سرعت و زاویه حرکت میکنه. و وقتی فیزیکِ دنیایِ بازی و الگوها رو استنتاج کرد، صرفا میمونه این که بیشتر تمرین کنه و ماهیچههاش رو بهتر با روند بازی هماهنگ کنه، همین :")))) و خب این روش خیعلی سریعتره...
بلافاصله سوالات زیادی مطرح میشه. این توانایی انتزاع و فهم فیزیکِ بازی از کجا میآد؟ چجوری میشه مهندسیش کرد؟ اصلا میشه؟ و خب اگه استقبال شد از این متن، شاید پاسخهای احتمالی رو گفتم :")
پینوشت: و ما ادراک ما المقاله