PrimLagic

چطور یک هوش مصنوعی بی‌نقص برای دوز سه‌مهره‌ای ساختیم: حل‌کننده‌ی دقیق + Q-learning

نویسنده علی عبداللهی · · ۲ دقیقه مطالعه

چطور یک هوش مصنوعی بی‌نقص برای دوز سه‌مهره‌ای ساختیم: حل‌کننده‌ی دقیق + Q-learning

در TekTacTok هر بازیکن فقط سه مهره دارد. بعد از گذاشتن هر سه، به‌جای مهره‌ی جدید، یکی از مهره‌هایش را روی یک خانه‌ی خالی جابه‌جا می‌کند. بازی تا وقتی کسی سه‌تایی نشود ادامه دارد. این قانون ساده، مسئله‌ی جالبی می‌سازد: بازی می‌تواند تا ابد ادامه پیدا کند.

اول: این LLM نیست

بگذارم همین ابتدا روشن شود: هوش مصنوعی TekTacTok مدل زبانی بزرگ (LLM) نیست. نه متن می‌فهمد نه تولید می‌کند. ترکیبی از دو چیز است: یک حل‌کننده‌ی دقیق ریاضی و یک مدل Q-learning جدولی که با بازی کردن با خودش آموزش دیده.

بخش اول: حل‌کننده‌ی دقیق

فضای بازی کوچک است. با در نظر گرفتن تقارن‌های صفحه (چرخش و بازتاب)، حدود ۴۳٬۳۹۰ حالت متمایز قابل‌دسترسی وجود دارد (حدود ۳۴۷ هزار حالت خام). می‌شود همه‌ی آن‌ها را از پیش حل کرد:

  • حالت‌هایی که بازیکن فعلی با بازی درست می‌برد (برد)،
  • حالت‌هایی که می‌بازد (باخت)،
  • و بقیه (تساوی)، چون بازی تا ابد ادامه پیدا می‌کند و کسی نمی‌تواند مجبور به برد شود.

این کار با تحلیل «از آخر به اول» (retrograde analysis) انجام می‌شود: از حالت‌های پایانی شروع می‌کنیم و ارزش را به عقب پخش می‌کنیم. نتیجه یک جدول است که برای هر حالت، برد/باخت/تساوی و تعداد حرکت تا نتیجه را می‌گوید. اگر برنده شدن ممکن است، سریع‌ترین راه را انتخاب می‌کنیم؛ اگر باختن اجتناب‌ناپذیر است، طولانی‌ترینش را.

نتیجه‌ی جالب: در قانون پیش‌فرض، بازیکن اول با بازی درست می‌برد. پس اگر بازیکن دوم باشید و حریف «بی‌نقص» باشد، نمی‌توانید ببرید.

بخش دوم: Q-learning با self-play

وقتی چند حرکت هم‌ارزش داریم، کدام را انتخاب کنیم؟ اینجا یک مدل Q-learning وارد می‌شود: جدول ارزش حالت-حرکت که با بازی‌های خودِ مدل با خودش (self-play) و برنامه‌ی آموزشی با حریف‌های مختلف تکمیل شده است. حل‌کننده تضمین می‌کند حرکت اشتباه نمی‌شود؛ مدل بین حرکت‌های درست «سلیقه» می‌دهد.

چقدر خوب است؟

در ارزیابی خودمان، مدل یادگیری‌شده در ۲۰۰ بازی برابر بازیکن تصادفی ۲۰۰ برد و ۰ باخت داشت. اما نکته‌ی صادقانه: همان مدل بدون حل‌کننده، در حدود ۶۹۰ تصمیم برابر بازیکن تصادفی ۳ حرکت غیربهینه انجام داد. یعنی Q-learning تنهایی تقریباً عالی است، نه کاملاً. به همین دلیل ترکیب با حل‌کننده را نگه داشتیم.

چرا هر دو؟

  • حل‌کننده تنها: درست و بی‌نقص، ولی «بی‌شخصیت»؛ هر بار همان حرکت‌ها.
  • Q-learning تنها: انعطاف‌پذیر، ولی تضمینی ندارد.
  • ترکیب: تضمین درستی + تنوع.

در حالت «آسان» هم ۶۰٪ مواقع حرکت تصادفی انجام می‌شود تا بازی برای آدم‌ها قابل‌برد باشد.

امتحانش کنید

دموی آنلاین را می‌توانید همین حالا بازی کنید. مدل آموزش‌دیده و سورس کامل هم از همان صفحه قابل‌دانلود است.

هوش مصنوعیبازیTekTacTok