ویرگول
ورودثبت نام
Amir Ali Ebrahim Zadeh
Amir Ali Ebrahim Zadeh
خواندن ۳ دقیقه·۲ سال پیش

یادگیری ماشین علیه یادگیری انسان

یه مقاله مهم سال 2013 منتشر شد با عنوان آتاری بازی کردن با یادگیریِ تقویتیِ عمیق که 9000 تا هم سایت خورد. نویسندگان مقاله تونستن agentی طراحی کنن که هر بازی آتاری‌ رو بازی می‌کرد و یاد می‌گرفت، بدون این که درباره بازی اطلاعاتی از قبل بهش بدیم. مقاله کوتاه و به نسبت آسونه و می‌تونید با رد کردن ریاضیاتش و با کمی سرچ بفهمید چی می‌گه.

هوشِ مصنوعی طراحی شده 10 میلیون بار یه game خاص آتاری رو بازی می‌کرد تا بتونه اون رو یادبگیره، و در نهایت از 7 بازی متفاوت، تو 3 تاش از قرمان جهان امتیاز بهتری آورد و تو 4 تاش شکست خورد.

چیزی که برام عجیب بود اینه که چرا اینقد agentها بد یادمی‌گیرن. هیچ انسانی 10میلیون بار هیچ کاری رو تمرین نکرده. شما حتی اگر آتاری رو به چشمتون هم ندیده باشید، حداکثر با 3 بار بازی کردن کلیت بازی دست‌تون می‌آد و با ده بیست بار بازی کردن تسلط پیدا می‌کنید، یادگیری ماشین چه فرقی با یادگیری انسان داره که اینقدر کُندتره و مجبوره با سرعت محاسبه بالاش این کُند بودنش رو جبران کنه؟ برای پاسخ به این سوال دو روش یادگیری ماشین رو بررسی می‌کنیم و بعدش به چگونگی یادگیری انسان می‌پردازیم.

بازی آتاری Seaquest
بازی آتاری Seaquest

فرض کنید یه بازی آتاری داریم که توش بازیکن صاحب یک کشتی هست که باید با پرتاب موشک کشتی‌های دشمن رو بزنه تا امتیاز بگیره. روش اول اینه که مدل‌مون یه جدول بسازه و هر تصویری که از بازی می‌بینه رو یه وضعیت در بازی در نظر بگیره، مثلا این وضعیت که کشتی خودی تو موقعیت 1 و کشتی‌های دشمن تو موقعیت 2 و 3 هستن، در این وضعیت یک عمل انجام می‌ده، مثل شلیک موشک به راست، و بررسی می‌کنه که سود حاصل چقدره، مثلا اگه دشمن نابود شد سودِ انجام اون عمل زیاده. بعدش می‌ره تو جدول یادداشت می‌کنه که تو این وضعیتِ خاص عملِ فلان رو انجام دادم و فلان‌قدر سود گرفتم، و بر اساس چیزی که یادداشت کرده برای دفعات بعد می‌تونه تصمیم بگیره کدوم عمل سود بهتری می‌ده.

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

R(s, a)

که برامون تخمین بزنه به ازای وضعیت s اگر عملِ a (مثلا حرکت به راست) رو انجام بدیم، سود احتمالی چقدر هست. بدیهیه که این تابع خیعلی پیچیده‌ست و کلی پارامتر داره، و نتیجتا برای یادگیری و تنظیم این پارامترها شبکه عصبی‌مون باید کلی عکس از وضعیت‌های مختلف بازی ببینه تا یادبگیره.

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

بلافاصله سوالات زیادی مطرح می‌شه. این توانایی انتزاع و فهم فیزیکِ بازی از کجا می‌آد؟ چجوری می‌شه مهندسیش کرد؟ اصلا می‌شه؟ و خب اگه استقبال شد از این متن، شاید پاسخ‌های احتمالی رو گفتم :")


پی‌نوشت: و ما ادراک ما المقاله

هوش مصنوعییادگیری ماشینعلوم کامپیوترفلسفه
دانشجوی کارشناسی کامپیوتر و ماینور فلسفه علم دانشگاه شریف :)
شاید از این پست‌ها خوشتان بیاید