بخشی از مقاله
چکیده
یکی از مهمترین دغدغهها در توسعه بازیهای ویدیویی، طراحی هوش مصنوعی کاراکترهای غیر قابل بازی است. مهمترین نیازمندی در طراحی هوش مصنوعی این کاراکترها، چالش برانگیز بودن و شکستپذیر بودن آنها به صورت توام است. به عبارت دیگر، هوش مصنوعی بازی باید به گونهای باشد که پیروز شدن در بازی را برای بازیکن سخت کند و در عین حال این میزان سختی نباید آنقدر زیاد باشد که لذت بازی کردن از بازیکن گرفته شود. به همین دلیل، در اغلب بازیهای تجاری به جای استفاده از تکنیکهای مدرن هوش مصنوعی مانند یادگیری ماشین، از تکنیکهای سادهای مانند ماشینهای حالت متناهی و سامانههای قانون مبنا استفاده میشود.
در این مقاله، با استفاده از روشهای پیشبینی ارزش در حوزه یادگیری تقویتی، روشی برای طراحی هوش مصنوعی کاراکترهای غیرقابل بازی ارائه میشود. از مهمترین مزیتهای این روش، میتوان به عدم قطعیت و قابلیت تنظیم میزان هوشمندی اشاره کرد. علاوه بر این، این روش مستقل از دامنه است و به همین دلیل به سادگی در بسیاری از بازیهای تجاری قابل استفاده است. در نهایت، نتایج استفاده از این روش در یک بازی سهبعدی شبیهسازی ضربات آزاد فوتبال گزارش میشود.
-1 مقدمه
بازیهای ویدیویی1 - یا به اختصار بازی - دستهای از نرمافزارهای بلادرنگ هستند که هدف اصلی آنها ایجاد سرگرمی برای کاربر است. بازیها اغلب بازیکن را در موقعیتهای پیچیدهای قرار میدهند؛ به طوری که بازیکن زمان زیادی برای انتخاب حرکت بعدی خود نداشته باشد. پیچیدگی این موقعیتها گاهی به قدری زیاد است که پیدا کردن حرکت مناسب میتواند کار دشواری باشد. در واقع همین موقعیتهای دشوار و چالشهای فکری دلیل اصلی محبوبیت و جذابیت بازیها است. به همین دلیل، همواره طراحی عاملهای هوشمند - یا به اختصار عامل - برای انجام بازیها، یکی از موضوعات چالش برانگیز و جذاب در حوزه هوش مصنوعی بوده است .[1]
به کاراکترهایی که کنترل آنها توسط هوش مصنوعی انجام میشود، کاراکترهای غیر قابل بازی1 - یا به اختصار - NPC گفته میشود. NPCها میتوانند کاراکترهای بیتاثیر در داستان - مانند عابرهای پیاده در یک بازی رانندگی - ، کاراکترهای دوست - مانند همتیمیها در بازی فوتبال - ، یا کاراکترهای دشمن - مانند دشمنها در یک بازی تیراندازی - باشند NPC .[2]ها نقشی حیاتی در طراحی بازیها ایفا میکنند؛ زیرا عاملی موثر در افزایش حس غوطهوری2 بازیکن محسوب میشوند. به همین دلیل، هوش مصنوعی یکی از شاخههای مهم و چالش برانگیز در صنعت بازیسازی محسوب میشود.
میان هوش مصنوعیِ علوم رایانهای و هوش مصنوعی بازی3 تفاوتهای بسیاری وجود دارد. دلیل اصلی این تفاوت به هدف نهفته در این دو نوع از هوش مصنوعی باز میگردد. درهوش مصنوعیِ علوم رایانهای، هدف این است که در کمترین زمانِ ممکن به بهترین پاسخِممکن برای یک مساله محاسباتی دست پیدا کنیم. این در حالی است که در هوش مصنوعیِ بازی، هدف این است که این توهم در ذهن بازیکن ایجاد شود که سایر کاراکترهای درون بازی از هوشمندی کافی برخوردار هستند. هوشمندی کافی برای یک NPC با توجه به سبک4 و طراحی بازی 5 و همچنین ویژگیهای کاراکتر مورد نظر مشخص میشود.
به عنوان مثال، به مساله مسیریابی از نقطه S تا نقطه G که در شکل 1 نشان داده شده است، توجه کنید. به دست آوردن مسیر بهینه - که با رنگ خاکستری نشان داده است - در چنین محیطی توسط الگوریتمهای مسیریابی متعارف - مانند - A* به سادگی امکانپذیر است .[3] اما اگر در یک بازی تیراندازی اول شخص6، یکی از کاراکترها چنین مسیری را طی کند، بازی بسیار غیرواقعی جلوه میکند. به همین دلیل، در بازیهای تیراندازی اول شخص معمولا از الگوریتمهای مسیریابی بسیار ساده که دقت پایینی دارند، استفاده میشود. با این حال، برای کاراکترهای درون یک بازی استراتژیک7، انتظار میرود که مسیریابی با سرعت و دقت بالا انجام شود تا بازی کسلکننده نشود.
با توجه به دلایل ذکر شده، برای طراحی هوش مصنوعی اغلب بازیها، از تکنیکهای سادهای مانند ماشینهای حالت متناهی1 و سامانههای قانون مبنا2 استفاده میشود .[4] به همین دلیل، تاکنون موارد بسیار کمی از استفاده از تکنیکهای پیشرفته هوش مصنوعی - مانند یادگیری ماشین - در بازیهای تجاری مشاهده شده است. در این مقاله، رویکردی مبتنی بر یادگیری تقویتی3 برای طراحی هوش مصنوعی کاراکترهای غیر قابل بازی پیشنهاد میشود. از مزیتهای اصلی این رویکرد، میتوان به این موارد اشاره کرد:
· مستقل از دامنه4 بودن: اکثر الگوریتمهایی که در هوش مصنوعی بازیها به کار میروند، وابستگی زیادی به قوانین بازی مورد نظر دارند و به همین علت امکان استفاده مجدد از آنها در بازیهای دیگر - حتی بازیهای همسبک - وجود ندارد .[4] این در حالی است که روشهای یادگیری تقویتی در حالت کلی نیازی به دانش اولیه در مورد جزییات و قوانین دامنه مقصد ندارد.
· تنظیم میزان هوشمندی: همانگونه که گفته شد، میزان هوشمندی NPCها با توجه به عوامل مختلف ممکن است نیاز به تغییر داشته باشد. در این مقاله راهکارهایی معرفی میشود که توسط آنها میتوان به شکلهای مختلف میزان هوشمندی NPC نهایی را تنظیم نمود.
· عدم قطعیت: یکی از نیازمندیهای مهم در طراحی هوش مصنوعی NPCها، غیر قابل پیشبینی بودن آنها است. به عبارت دیگر، اگر بازیکن بتواند رفتار NPC را به سادگی پیشبینی کند، پس از مدت کوتاهی به بازی مسلط شده و در نتیجه نسبت به آن بیمیل میشود. در رویکرد دنبال شده در این مقاله، به شیوههای مختلف میتوان عدم قطعیت در تصمیمگیری را به رفتار NPC اضافه کرد.
· انعطافپذیری: در این مقاله، مساله طراحی هوش مصنوعی NPC به یک مساله رگرسیون5 تبدیل میشود. به این ترتیب، امکان استفاده از اکثر ابزارهای متداول در تخمین تابع6 - مانند شبکههای عصبی مصنوعی - 7 در این رویکرد وجود دارد.
-2 کارهای پیشین
نمونههای زیادی از استفاده از یادگیری تقویتی برای طراحی هوش مصنوعی بازیها وجود دارد. یکی از نخستین نمونههای موفق و قابل توجه در این حوزه، یادگیری بازی تخته نرد با استفاده از شبکههای عصبی بود که در سال 1994 توسط تسارو ارائه شد. این روش که از یک شبکه عصبی جلورو استفاده میکرد، توانست از طریق یادگیری حاصل از بازی با خود8، بازی تخته نرد را تا سطح قابل قبولی یاد بگیرد .[5] همین مساله باعث شد که پژوهشگران حوزه یادگیری تقویتی توجه بیشتری به کاربردهای این حوزه در بازیها نشان دهند.
به همین دلیل، در سالهای اخیر در بسیاری از پژوهشهای موفق در حوزه یادگیری تقویتی، از بازیها به عنوان بستر تست استفاده شده است. در صدر این روشها میتوان به روش یادگیری تقویتی عمیق9 اشاره کرد که کارایی آن در ابتدا با تست بر روی 50 بازی آتاری اثبات شد .[6] نسخه جدیدتری از این روش، در سال 2016 موفق شد برای نخستین بار قهرمان دنیا در بازی Go را شکست دهد .[7]