شبکههای عصبی مصنوعی یک نوع ارتباط گرایی برای سیستمهای محاسباتی هستند که از شبکههای عصبی طبیعی الهام گرفته شدهاند. در چند سال اخیر حوزههای هوش مصنوعی به سمت یادگیری عمیق(Deep Learning) و زنده ماندن یک هوش غیر واقعی در شرایط مختلف حرکت کردهاند، با توجه به این مهم بازی شطرنج خود یک محیط آزمایشی برای زنده ماندن آن است. در این پروژه قصد داریم که یک مأمور(Agent) برای یکی ازنقشههای بازی Doom طراحی کنیم.
۱. مقدمه
بگذارید با این سؤال شروع کنم چرا به هوش مصنوعی نیاز داریم؟ از گذشته تا به امروز همواره آدمی بدنبال راحتی بیشتر در کارهایش بوده است. انسان در تلاش بوده که با سپردن کار خود به دیگران همواره باری را از روی دوش خود خالی بنماید، اما مشکل اساسی اینجا بوده و میباشد که انسانهای دیگر بدون چشم داشت کاری را برای یکدیگر انجام نمیدهند. کارگران بازای کارشان دستمزد دریافت میکردند و یا یک راهب و شاه با ساختن تصاویر دروغین و باورهای ناسالم آنها را متقاعد به انجام کاری میکردند. با این حال دو مشکل اساسی همواره در مقابل کنترلگر بوده است یکی ایجاد اطاعت صد در صد که موجب شود کنترل شونده نظرات شخصی خود را وارد کار ننماید و دیگری کیفیت انجام کار. ماشینها تا حد بسیار خوبی این مشکل را رفع کردهاند. یک ماشین در مقابل سازندهاش به هیچ عنوان قیام نخواهد کرد(حداقل با دانش امروز) و اگر قیامی هم باشد ریشه آن در نوع ساخت ماشین توسط سازنده است و قیام بخواست خود ماشین صورت نمیگیرد بلکه ناشی از ضعف وارده به سیستم توسط سازنده میباشد پس اگر قیامی هم صورت گیرد ناشی از اقدامات خود کنترلگر است، پس در مطیع بودن ماشین نسبت به انسان هیچ شکی موجود نیست و در مورد کیفیت انجام کار نیز ماشینها اگر دقیق ساخته شوند درصد خطای بسیار کمتری نسبت به رقیب انسانی خود دارند
اما سؤال دیگر اینجاست چرا از واژه "هوش" استفاده مینماییم؟ پاسخ این سؤال از پاراگراف فوق قابل استنتاج است با این حال، سؤال کاملاً بجایی است زیرا ممکن است کسی باشد که بگوید چرا از واژه ید مصنوعی (Intelligence Hand) استفاده نمینماییم؟ در بازه زمانی که ما در آن قرار داریم به طبع به دنبال طراحی ابتدایی ترین بخش این ماشین هوشمند قرار داریم و طبیعتاً ابتدایی ترین بخش همان قسمتی است که به سایر بخشها فرمان صادر میکند والا یک ید بدون فرمان بی دلیل به انجام حرکاتی دست میزند که ممکن است خرابی نیز داشته باشد.
با این حال سؤال دیگری مطرح میشود که چه چیزی به حرکات این ید جهت میدهد؟ هدف! هدف خواسته ایست که توسط سازنده ماشین برای آن تعریف میشود. اگر بخواهیم هدف تمام انسانها فراق از آنچه در blind(آنچه دیگران می دانند و خود نمیداند)، secret(آنچه خود میداند و دیگران نمیداند)، unconscious(آنچه نه خود میداند و نه دیگران-ناخودآگاه) را مورد مطالعه قرار دهیم و معیار را همان public(آنچه خود میداند و دیگران هم میدانند) قرار دهیم در ابتدا با چند دستگی بسیاری در اهداف مواجه خواهیم بود اما با کمی دقت به یکسانی و اشتراکاتی میرسیم که در قالبهای به ظاهر متفاوت جلوه پیدا کردهاند. شاید بتوان گفت اهداف سازندگان امروز ماشینها بیشتر بر روی اجرایی شدن همین نیازهای ابتدایی شکل گرفته باشد و بعید نیست در آینده تفاوتها و سلیقهها در مسیر رسیدن به اهداف برای کاربران ماشینها نیز نیاز شود.
سؤال دیگری که شاید مطرح شود این است که چرا برای ساخت ماشین انسان را معیار قرار میدهیم؟ این سؤالی است که خیلی وقت پیش به گونهای دیگر به پاسخ آن رسیدم. سالهاست که در روشهای هوش مصنوعی کلاسیک ملاک را بر الگوریتمهای ریاضی برای رسیدن به اهداف قرار داده بودند، اما آیا ما به اندازه کافی زمان و نیرو برای پیاده سازی تمام حالاتی که ممکن است برای یک انسان پدید بیآید را داریم و نکته دیگر اینکه برای انتقال تمام صفات انسان به یک کامپیوتر ما نمیتوانیم محدود به دانش ریاضی و برنامه نویسی گروهی از انسانها باشیم و شاید اگر قادر بودیم از روح القدسی(و یا هر آنچه انسان کامل خوانده میشود) کمک بگیریم مسیر سادهتر میشود و اینجاست که به کمک گرفتن از خود انسان برای برای ساخت هوش مصنوعی میرسیم و موضوع داغ Cognitive Learning میرسیم.
سؤال آخر اینکه چطور ماشین ما میتواند به هدف نائل شود؟ اینجاست باید به انسان باز گردیم، یک انسان باید برای رسیدن به هدف ابزارهایی را در اختیار بگیرد و برای استفاده از ابزارها باید نحوه استفاده از آنها را بیاموزد. پس ریشه استفاده از ابزارها در یادگیری آنهاست و از طرفی یادگیری بدون سعی و خطا محقق نمیشود. اینجاست که وارد مبحث Deep-Q-learning میشویم.
با در نظر گرفتن تمام مقدمات فوق قصد داریم در این پروژه از تمام فرضیات بالا استفاده کنیم. میخواهیم یک فضای حالت را در نظر بگیریم که در اینجا یکی نقشههای بازی Doom است و یک agent تعریف کنیم که باید همچون یک انسان شروع به یادگیری نماید. یادگیری باید با سعی و خطا صورت گیرد زیرا اگر ما از قبل روشهایی را برای او تعریف کنیم به نوعی cheat انجام دادهایم و agent ما خود باید با انجام حرکاتی که برای او تعریف شده(حرکت به طرفین و شلیک و ...) را بصورت تصادفی انجام دهد تا بازی کردن را یاد بگیرد. خب موضوع دیگر که مطرح است این است که از کجا باید یاد بگیرد چگونه این حرکات منجر به پیروزی او میشود. ما این کار را از طریق تعیین prize انجام میدهیم،به این ترتیب که ما رسیدن به یک تعدادی از نتایج که مشخصترین آن در این بازی زنده ماندن است به او یاد میدهیم که چگونه به هدف قائل گردد. agent با قرار گرفتن در شرایط شکست فراوان و محاسبه اینکه در هر کدام از شرایط به هدف نهایی نزدیکتر میشود بازی را یاد میگیرد. تیر اندازی دقیق و بالا نگه داشتن جان هم میتوانند یک جایزه باشند اما باید توجه کرد که اینها خود منجر به cheat نشود چون اگر ما سر مهاجم را تعریف نماییم و بگوییم شلیک به آن منجر به مرگ میشود ماهیت کاری را که میخواهیم انجام دهیم زیر سؤال بردهایم.
۲. کارهای مرتبط
https://keon.io/deep-q-learning/
https://www.practicalai.io/teaching-ai-play-simple-game-using-q-learning/
https://medium.com/@pavelkordik/reinforcement-learning-the-hardest-part-of-machine-learning-b667a22995ca
۳. مطالب مرتبط
https://deepmind.com/research/alphago/
https://www.intelnervana.com/demystifying-deep-reinforcement-learning/
https://www.doc.ic.ac.uk/~nd/surprise_96/journal/vol4/cs11/report.html