شبکههای عصبی مصنوعی یک نوع ارتباط گرایی برای سیستمهای محاسباتی هستند که از شبکههای عصبی طبیعی الهام گرفته شدهاند. در چند سال اخیر حوزههای هوش مصنوعی به سمت یادگیری عمیق(Deep Learning) و زنده ماندن یک هوش غیر واقعی در شرایط مختلف حرکت کردهاند، با توجه به این مهم بازی شطرنج خود یک محیط آزمایشی برای زنده ماندن آن است. در این پروژه قصد داریم که یک مأمور(Agent) برای بازی Minecraft طراحی کنیم.
۱. چکیده
مجموعه ای از آزمایش ها با استفاده از عوامل مختلف برای حل مسئله ی پروژه مالمو مایکروسافت در محیط مایکروسافت با هدف شناسایی و ارزیابی
مجموعه ای از تکنیک های هوش مصنوعی انجام شد. سه عامل از پیچیدگی های متغیر اجرا شد. اولین عامل، یک عامل تصادفی برای فراهم کردن به عنوان اندازه گیری عملکرد پایه بود. عامل دوم، استفاده از جستجوی آفلاین را با دانشی جامع و همه جانبه نگر از محیط، که توسط جستجوی اکتشافی *A مدل سازی شده، مورد بررسی قرار داد. عامل نهایی یک شبکه ی عصبی را به عنوان ابزاری از Q-learning با رویکرد تقریبی تابع به منظور حل مسئله از طریق فرایندهای یادگیری که شامل تکرارهای مختلف (یا قسمتهای مختلف) از مسئله است، اجرا کرد. این عامل ساده مسیر بهینه ای را در تمام قسمت ها پیدا کرد، اگرچه،
به وجود یک محیط کاملا قابل مشاهده وابسته است. عامل واقع گرایانه نیازمند چندین قسمت یادگیری برای دستیابی به یک سیاست مطلوب بود و می توانست هدف ماموریت را به طور پیوسته با تنظیم پارامترهای فوق العاده خاص از جمله میزان یادگیری و مقادیر E greedy تکمیل کند. با تطبیق این پارامترهای
فوق العاده، اثربخشی آن افزایش پیدا کرد و مدل نهایی را فراهم کرد که مجموعه ای از نتایج همگرا به یک عملکرد واحد و کامل موفق از ماموریت پیوسته را به دست آورد.
۲. مقدمه
پروژه مایکروسافت مالمو [1]، محققان را قادر ساخت تا با یک محیط Minecraft از طریق یک API ارتباط برقرار کنند. این موضوع به محققین این هوش
مصنوعی اجازه می دهد تا محیط ها را شبیه سازی کنند و تکنیک های مختلف را اعمال کنند و ارتباط و عملکرد آنها را مشاهده کنند. انتخاب خاصی از یک الگوریتم هوش مصنوعی برای استفاده، به شدت بستگی دارد به ویژگی های محیطی که یک عامل در آن عمل خواهد کرد. Malmo جهت شبیه
سازی گستره ای از رده هایی از این دامنه های مشخص شده متفاوت به محیط اجازه می دهد که اصلاح شود. در این گزارش دو محیط کلیدی و تکنیک های متناظر هوش مصنوعی به خوبی یک عامل پایه برای مقایسه اجرا می شود. عامل مبنا عاملی است که به طور تصادفی عمل می کند و هیچ تکنیک هوش مصنوعی را به کار نمی گیرد. عامل دوم محیطی کاملا قابل مشاهده دارد و از یک روش جستجوی گرافیکی آفلاین بهره می برد. عامل نهایی دارای یک محیط واقعی است که شامل عناصر خطای تصادفی است، و از q-learning به منظور حل مسئله استفاده می کند.
به منظور درک کامل دامنه و چگونگی اثرگذاری تکنیک ها، ابتدا شبیه سازی Minecraft باید به شاخصه های اصلی خود با استفاده از آنالیز PEAS تجزیه شود/ ساده شود/ برگردانده شود. هر چند، نحوه ای که هر عامل میتواند با دامنه ارتباط برقرار کند، کمی متفاوت است و بنابراین محیط های کار مخصوص برای هر عامل نیز ساده/ شکسته می شود.
۳. 1.1 آنالیز PEAS
اندازه گیری عملکرد برای هر یک از عامل ها شامل ترکیبی از سه مقدار است: زمان انجام شده برای تکمیل هدف، تعداد اقدامات انجام شده در رسیدن به هدف و پاداش انباشته ناشی از اتمام مسئله. بنابر این یک عامل "منطقی" در این مورد به به گونه ای رفتار می کند تا اقداماتی را اتخاذ نماید که هم زمان و هم شمار عملیات را به حداقل برساند، در حالی که پاداش انباشته را ، به واسطه ی تکمیل مسئله به حداکثر برساند.
محیط ماموریت برای سه عامل شامل یک نقشه تولید شده در Minecraft است. سه اندازه مجزای نقشه تعریف شده اند؛ کوچک، متوسط و بزرگ. در این گزارش راه حل ها بر روی اندازه نقشه ی کوچک تمرکز دارند، اگرچه اعمال همان پیاده سازی ها/ روندها به انواع اندازه های نقشه چندان حائز اهمیت نیست. نقشه ها استاتیک هستند و به صورت گسسته در نظر گرفته می شوند، که در اینجا به این معنی است که جایگاه عامل در هر لحظه باید یک نقطه شبکه ای گسسته باشد. در حالی که محیط یکسان است، روش هایی که عامل ها ممکن است با محیط تعامل داشته باشند، متفاوت است . هر نقشه همچنین شامل یک هدف مشخص و مشهود و یک گزینش از الماس هایی که به طور تصادفی واقع شده اند، می باشد.
برای همه ی عامل ها، عملگرها یکسان هستند. عامل ممکن است فقط بر اساس یک مجموعه گسسته از عمل های ممکن (حرکت-شمال، حرکت-جنوب، حرکت-شرق و حرکت-غرب)، با یک مربع شبکه در هر لحظه حرکت کند. این به ماهیت گسسته محیط مرتبط است، به این معنی که نقشه به عنوان یک مجموعه محدود از حالتهای ممکن وجود دارد. عامل ها ممکن است الماس ها را در صورتی که با آن ها در نقشه مواجه شوند، بردارند، اگرچه این امر به عنوان یک مکانیک پیش فرض Minecraft انجام می شود و هدف اصلی این است که به هدف نهایی برسیم، زیرا پاداش الماس ها به طور کلی پایین تر است. عامل ها مفهوم محیط و موقعیت آنها را یا به طور مستقیم از Malmo از طریق یک شیء oracle و یا با استفاده از کلاس ارائه شده عامل کمک کننده، که ممکن است پیشتر بر روی عامل، برای سهولت پیدا کردن مسیر آفلاین، اجرا شده باشد؛ می فهمند. مجددا سنسورها یکسان هستند، اما روندی که آن ها به خدمت گرفته می شوند، درهر عامل نسبت به عامل دیگر، بسته به مسئله، متفاوت است
۴. 1.2 محیط وظیفه
محیط وظیفه ویژه برای هر عامل متفاوت است و بنابراین انواع تکنیکهای مسیریابی قابل اجرا گزارش شده است. یک خلاصه از این تفاوتها در جدول 1 نشان داده شده است.
عمال ساده و عامل تصادفی در محیط وظیفه خودهمانند هستند. هر دوی انها می توانند تمام گستره نقشه (که البته برای عامل تصادفی معنایی ندارد) مشاهده کنند. عامل واقعی تنها می تواند محیط اطراف(!) خود، محل عامل و نقشه اطراف با شعاع یک بلوک را مشاهده کند. علاوه بر این عامل واقعی همچنین به صورت نامعین (تصادفی) با احتمال خیلی کم (در موارد ارائه شده توسط ما 10%) می باشد که خروجی واقعی یک عمل همیشه خروجی مورد انتظار نیست. سرانجام عامل واقعی به صورت قسمتی است که به منظور پیدا کردن مسیر بهینه، چندین قسمت نیاز دارد با بعضی یادگیری ها از یک قسمت به قسمت بعدی انجام شده است.
۵. 2 روش
به منظور ارزیابی عملکرد و محدودیتهای تکنیکهای متنوع هوش مصنوعی، مجموعه ای از تستها در محیط مالمو اجرا شد. به طور مشخص، توانایی های هر عامل جهت حل مسئله ای که به صورت تصادفی تولید شده است؛ به منظور رسیدن به هدف نهایی با بیشترین مقدار جایزه مورد ارزیابی قرار گرفته است. مقدار جایزه بر اساس سه فاکتور اصلی که در بالا به آن اشاره شده است می باشد: زمان اتمام مسئله، تعداد حرکتها تا رسیدن به هدف، و مجموعه اختیاری الماسها در مسیر رسیدن به هدف.
هر سه عامل با استفاده از کتابخانه پایتون (Python) و مدول استاندارد برای تکرارپذیری و مشارکت پذیری همراه با مدول پای تورچ (PyTorch) به کار گرفته شد. این عاملها معمولا به عنوان یک قالب (فریم ورک) یادگیری عمیق برای به کارگیری هوش مصنوعی و شبکه عصبی مورد استفاده قرار می گیرد. عملکرد پایتون به منظور افزودن تکنیکهای یادگیری عمیق افزوده و پشتیبانی بومی برای اشیاء تنسور در پایتون توسعه داده شد . تمام تستها نمونه هایی از عاملها بودند که بر روی یک ماشین که کنترل بیشتری بر روی متغیر محیطی عملکرد و همچنین مقایسه مستقیم بین عملکرد هرکدام داشته است اجرا شدند.
ماموریت ها به قسمتهای 60 ثانیه ای تقسیم شدند که اندازه کوچک داده شده آنها، جهت اطمینان از این موضوع است که آ) اتمام مسئله با درگیر شدن واقعی از طرف عامل باشد و ب) مجموعه ای بزرگ از آزمایشها می تواند در یک چارچوب زمانی و بهرهوری معقول انجام گیرد. نتایج جمع آوری شده در تمام قسمتهای اجراشده برای هر عامل جهت مشاهده روندها مناسب بودند. این نتایج در بخش های بعدی ارائه شده اند. نتایج جامع بیشتر به دست آمده نیز در پیوست C ارائه شده است.
https://github.com/MohammadEhsanMirzaaee/Minecraft.git
۶. کارهای مرتبط
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