بازی اسنیک؛ آیا هوش مصنوعی‌ها می‌توانند بازی کردن را بیاموزند؟

زمان مورد نیاز برای مطالعه: ۱۲ دقیقه
Snake mobile game

اخیرا فکر و ذکرم درگیر هوش مصنوعی شده است. خصوصا سناریوهایی که بتوان در آن به هوش مصنوعی آموخت تا هدفی انتزاعی را برآورده کند بدون اینکه با مجموعه‌ی داده‌ها تمرین ببیند یا دستورالعمل‌های واضحی از سیستم دریافت کند.

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

اسنیک روی نوکیا

بازی اسنیک

اسنیک قوانین ساده‌ای دارد:

  1. شکل جهانْ شطرنجی و مربعی‌ است.
  2. اسنیک تنها در زوایای قائم می‌تواند حرکت کند.
  3. این جهانْ مرزی دارد که اسنیک به محض برخورد با آن می‌میرد.
  4. اسنیک هرگز نمی‌تواند بایستد یا متوقف شود.
  5. اگر اسنیک به بخشی از بدن خودش برخورد کند، می‌میرد.
  6. هر وقت که اسنیک چیزی بخورد، بلندتر می‌شود.
  7. هدف این است که تا جای ممکن بلند شد و رشد کرد.

زمان انجام بازی، هر وقت که اسنیک قدمی رو به جلو می‌گذارد باید بین چند گزینه دست به تصمیم بگیرد: مستقیم برود، سمت چپ بپیچد یا سمت راست.

هدف ما ساخت هوش مصنوعی‌ای است که بتواند این تصمیمات را خودش یاد بگیرد. ابتدا جهانی که اسنیک در آن هست ارزیابی می‌شود، سپس حرکتی را انتخاب می‌کند که او را زنده نگه داشته و به رشد او ادامه دهد.

روش کار اسنیک

هوش مصنوعی ابتدا تعیین می‌کند در چه وضعیتی است، سپس تصمیم می‌گیرد دامنه‌ی آزادی‌اش برای حرکت بعدی چقدر است، سپس دست به بهترین حرکت می‌زند (حرکت به سوی غذا).

انتخاب یک روش

روش‌ها، الگوریتم‌ها و فنون زیادی وجود دارند تا اسنیک را حل کرد. برخی از آنها زیر چتر هوش مصنوعی هستند. من فقط روی یک روش تمرکز خواهم کرد: جهش تصادفی ژنتیکی یک شبکه‌ی نورونی/genetic random mutation of a neural network

به این دلایل که:

۱. دیگرانی که اسنیک را بازی کرده و رکوردهای بالا ثبت کرده‌اند، من به مجموع داده‌های آنها دسترسی ندارم، پس نمی‌توانم به شبکه‌ی نورونیْ داده‌ای بدهم تا از روی آنها الگوبرداری کند.

۲. شخصا علاقه دارم ببینم آیا ممکن است منطق انجام بازی اسنیک را صرفا با جهش‌های تصادفی به سیستم آموخت یا نه.

«جهش تصادفی ژنتیکی یک شبکه‌ی نورونی» احتمالا ناآشناترین عبارتی است که در این مقاله خیلی از خوانندگان با آن برخورد می‌کنند — پس بیاییم آن را شکافته و قبل از آنکه ادامه دهیم به زیربنای آن بپردازیم.

سنتیسایزر

شبکه‌های نورونی مثل یک سنتیسایزر ماژولار هستند. یک کلید را فشار می‌دهید، سیگنالی الکتریکی به پیکره‌ی مدارها ارسال می‌شود، مدارهایی که موزیسین قبلا آن را طراحی کرده تا آن صوت مطلوبش را دریافت کند — مثل یک صوت بم و تند، یا صوتی که به آرامی به پژواک درمی‌آید.

شبکه‌ی نورونی چیست؟

شبکه‌ی نورونی نوعی الگوریتم است که می‌تواند برای تعیین روابط انتزاعی بین داده‌های ورودی و خروجی مطلوب استفاده شود. معمولا، شبکه‌ی نورونی با تمرین دیدن بر اساس هزاران مثال [یا همان داده‌های جمع‌آوری‌شده] به آن خروجی مطلوب ما می‌رسد. به مرور زمان، شبکه یاد می‌گیرد جنبه‌های مختلف داده‌های ورودی چیست و مفیدترین آنها برای رسیدن به نتیجه‌ی مطلوب کدام است. بنابراین، شبکه‌ی نورونی به آرامی با ضرایب و دیگر فرمول‌های پیچیده، داده‌های ورودی را در هر مثالی که به او نشان داده می‌شود پردازش می‌کند.

شبکه‌های نورونی در اشکال، ابعاد و انواع مختلفی وجود دارند: پیچشی/convolutional، بازگشتی/recurrent، حافظه‌ی کوتاه-مدت-بلند-مدت/long-short-term-memory و غیره. طراحی شبکه‌ی نورونی مناسب برای مسئله‌ می‌تواند سخت باشد، گیج‌کننده، و یک‌جور فوت کوزه‌گری بطلبد. اینجاست که «ژنتیک» وارد قضیه می‌شود.

الگوریتم ژنتیکی چیست؟

عوض اینکه یک نوع شبکه‌ی نورونی انتخاب کرد و سپس به آرامی آن را بر اساس دیگر داده‌های جمع‌آوری‌شده از بازی آموزش داد تا از آنها تقلید کند، ما می‌خواهیم سناریویی بسازیم که در آن هوش مصنوعی بدون داده و با اتکا به خودش بازی را بیاموزد.

تمام تغییراتی که بر شبکه‌های نورونی اعمال می‌شود تصادفی خواهند بود — و نه از طریق فیدبک مستقیم و راهنمایی قدم به قدم هوش مصنوعی. به مرور، تغییرات تصادفی کوچک در این شبکه‌ی نورونی باعث ایجاد یک هوش مصنوعی کاملا کاربردی می‌شود چون تنها بازیکنان برتر در هر نسل زنده می‌مانند و توانایی‌شان را به نسل بعدی منتقل می‌کنند.

فرآیند تکاملی ما چنین عمل خواهد کرد:

۱. به‌طور تصادفی با دکمه و سیم‌های شبکه‌ی نورونی ور می‌رویم [یعنی پارامترهایی که وارد سیستم می‌کنیم اعداد تصادفی هستند] تا هر بازی اسنیک خاص خودش باشد.

۲. هر یک از این شبکه‌های نورونی را برای انجام بازی اسنیک آزاد می‌گذاریم.

۳. بعد از اینکه هر شبکه‌ی نورونی بازی را تمام کرد، تعیین می‌کنیم کدام‌یک از آنها عملکرد بهتری داشتند.

۴. با اعمال تغییرات تصادفی بر شبکه‌های نورونی که عملکرد بهتری از خود نشان دادند، دوباره نسل جدیدی از شبکه‌های نورونی با قابلیت‌های خاص خودشان می‌سازیم.

۵. بازگشت به مرحله‌ی دوم و تکرار مراحل بعدی.

پس حالا می‌توانیم آرام لم بدهیم و بگذاریم تا هوش مصنوعی به‌طور طبیعی تکامل پیدا کند، نه؟ اشتباه است.

هوش مصنوعی هنوز هم به یک طراح نیازمند است

الگوریتم ژنتیکی باعث می‌شود از اینکه به مجموع داده‌های مختلف دسترسی داشته و آن را برای آموزش به سیستم بدهیم معاف شویم، اما هنوز هم به عهده‌ی ماست (طراح) تا کلیات سیستم را طراحی کرده و این قابلیت را فعال کنیم. مخصوصا، باید داده‌ی ورودی و خروجی را انتخاب کنیم و تصمیم بگیریم «عملکرد خوب» در اسنیک دقیقا به چه معناست [یعنی خود سیستم نمی‌تواند بفهمد کدام نسل توانسته اسنیک را بهتر بازی کند و باید خود اپراتور انسانی آن را مشخص کند]. برای اینکه به استعاره‌ای که قبلا درباره‌ی سنیتایزر زدیم هم ربط داشته باشد: ما هنوز هم باید خودمان کیبورد و بلندگو بسازیم و تعیین کنیم چه صدایی را می‌خواهیم بشنویم.

صفحه‌ی اصلی بازی دیجی‌کالا مگ | اخبار بازی، تریلرهای بازی، گیم‌پلی، بررسی بازی، راهنمای خرید کنسول بازی


کنسول بازی سونی مدل PlayStation 5 ظرفیت 825 گیگابایت ریجن 1200 آسیا

کنسول بازی مایکروسافت مدل XBOX SERIES S ظرفیت 512 گیگابایت



دیدگاه شما

پرسش امنیتی *-- بارگیری کد امنیتی --

loading...
بازدیدهای اخیر
بر اساس بازدیدهای اخیر شما
تاریخچه بازدیدها
مشاهده همه
دسته‌بندی‌های منتخب برای شما
X