You are currently viewing پازل های شطرنج در حال تکامل  کاوش هوش مصنوعی تکاملی |  توسط رابرت المز

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


کاوش در هوش مصنوعی تکاملی

رابرت المز
به سوی علم داده
یک پازل شطرنج که با استفاده از نظریه تکامل ساخته شده است. مات در 2 حرکت برای سفید…

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

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

پازل شطرنج یک موقعیت شطرنج قانونی است که در آن ترکیبی منحصر به فرد از حرکات منجر به پیروزی می شود که اغلب به مات ختم می شود. اینها معمولاً با تجزیه و تحلیل پایگاه های داده بازی های رقابتی بین بازیکنان انسانی یافت می شوند.

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

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

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

در زیر می توانید یکی از ویژگی های من را مشاهده کنید هیئت مدیره کلاسی که لیستی از حرکات را برمی گرداند.

public List<(int[] from, int[] to)> GetAllPotentialMoves(Colour currentColour) 
{
var activePieces = ActivePieces.Find(p => p.colour == currentColour);
var allLegalMoves = new List<(int[] from, int[] to)>();

foreach (var piece in activePieces.pieces)
{
var moves = piece.GetLegalMoves(this);

allLegalMoves.AddRange(moves);
}

return allLegalMoves;
}

هنگامی که جمعیتی از موقعیت ها ایجاد شد، بخش سخت واقعی شروع می شود. کلید هر الگوریتم تکاملی این است که چگونه اکتشافی خود را ارزیابی می کنید. در مورد من، تنها موقعیت هایی که یک راه حل منجر به مات می شود به عنوان یک پازل حساب می شود. پس از محدود کردن این نتایج، اکتشافات معیاری است که نشان می دهد انتخاب حرکات صحیح برای برنده شدن در بازی چقدر دشوار است. اما چگونه یک برنامه کامپیوتری می تواند تخمین بزند که تفسیر یک موقعیت شطرنج برای انسان چقدر دشوار است؟

پازلی که با استفاده از یک اکتشافی به نفع شوالیه های روی تخته تولید شده است. مات در 2 حرکت.

یک گزینه این است که به ساختار پازل نگاه کنید. آیا پادشاه در امان است؟ آیا حرکاتی وجود دارد که معما را حل نمی کند اما خوب به نظر می رسد؟ آیا ما چیزی را قربانی می کنیم؟ چه قطعاتی را حرکت می دهیم؟ با ارزیابی بسیاری از عوامل، می توانیم میزان سختی را ایجاد کنیم. مشکل این رویکرد این است که تصمیم گیری در مورد چگونگی ایجاد یک نتیجه نهایی از عوامل بسیار بسیار دشوار است. قوانین سختگیرانه نیز سوگیری ها را در ادراک انسان کاملاً نادیده می گیرند. ممکن است حتی تغییرات ظریف در موقعیت شطرنج، انتخاب حرکت صحیح را برای برخی افراد دشوارتر کند.

بنابراین چگونه می توانیم درک بهتری از عملکرد انسان به دست آوریم؟ با استفاده از پایگاه‌های داده بزرگ پر از بازی‌های واقعی، مدل‌های یادگیری ماشینی برای بازی شطرنج مانند بازیکنان در سطوح مشخص آموزش داده می‌شوند. از طریق این الگوها، می‌توانیم ایده بهتری در مورد اینکه چگونه بازیکنان با توانایی‌های مختلف ممکن است برای حل یک پازل تلاش کنند، به دست آوریم. آیا هوش مصنوعی آموزش دیده بر روی 1200 بازیکن رتبه بندی شده می تواند پازل را حل کند؟ 1600، 1900 چطور؟ مزیت این رویکرد این است که عمیق تر در ذهن بازیکنان واقعی نفوذ می کند. با این حال، مدل‌های یادگیری ماشینی بدون نقص نیستند. این هوش مصنوعی ها به عنوان یک بازیکن واقعی بازی نمی کنند، بلکه به صورت تقریبی از یک بازیکن بازی می کنند. آنها همچنین در بازی های واقعی و معمولی آموزش دیده اند، به این معنی که ممکن است در ارزیابی موقعیت های تصادفی شطرنج غیرقابل اعتماد باشند.

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

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

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

به همین ترتیب، می‌توانیم با چند حرکت به عقب و سپس به جلو، پازل‌ها را تغییر دهیم. بسته به تعداد حرکاتی که به عقب و جلو می روید، این می تواند پازل را به طور نامحسوس یا انبوه تغییر دهد. جهش بسیار زیاد است و ممکن است متوجه شوید که الگوریتم هرگز بهبود نمی‌یابد، خیلی کم است و بهترین نتیجه شما ممکن است خیلی سریع به یک مقدار واحد همگرا شود.

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

الگوریتم های تکاملی نیز می توانند بسیار کند باشند. شطرنج مطمئناً از این قاعده مستثنی نیست. انجام ارزیابی اکتشافی میلیون ها موقعیت شطرنج نیاز به مقدار قابل توجهی پردازش دارد. به طور کلی، هر چه مدت زمان بیشتری با یک ماشین شطرنج در یک موقعیت کار کنید، با دقت بیشتری می تواند بهترین حرکت بعدی را پیش بینی کند. با پیدا کردن نقطه شیرین در زمان صرف شده برای تجزیه و تحلیل هر موقعیت، انتخاب امیدوارکننده‌ترین آنها و نگاه کردن به آنها با جزئیات بسیار بیشتر، می‌توانم زمان را به میزان معقولی بهینه کنم. تصمیم گیری در مورد زمان توقف تولید نیز حیاتی است. اگر یک نمونه برای چندین نسل از پیشرفت خود متوقف شده باشد، بهتر است دوباره با یک جمعیت تصادفی جدید شروع کنید، زیرا ممکن است نتواند خیلی بیشتر بهبود یابد. پس از بهینه‌سازی‌های بی‌شمار، رایانه خانگی من قادر است روزانه بیش از 1000 پازل چالش برانگیز را با استفاده از تکامل تولید کند.

در نهایت، تشخیص خطاها می تواند بسیار دشوار باشد. با بسیاری از برنامه ها، می توانید نتایج خاصی را با ورودی های خاص انتظار داشته باشید. با تکامل، این یک کتری ماهی متفاوت است. من زمان زیادی را صرف این کردم که سرم را بخارانم و به این فکر کنم که چرا جمعیت من اینقدر سریع به هم نزدیک می‌شوند. آیا ایجاد موقعیت بود؟ آیا این روش های تکاملی بود، شاید روش اکتشافی؟ هنگامی که خروجی مورد انتظار یک برنامه نمی تواند به وضوح تعریف شود، می توان به راحتی متوجه نشد که اگر همه چیز طبق برنامه کار نمی کند.

با این حال، به کنار مسائل، قدرت و پتانسیل این تکنیک هوش مصنوعی برای همه درخشان است. فقط با استفاده از کامپیوتر قدیمی خود توانستم تقریباً 50000 پازل شطرنج را در عرض 3 ماه ایجاد کنم که حاوی موقعیت های عجیب و غریب و شگفت انگیز فراوانی بود.

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

این الگوریتم علاوه بر بهره وری فوق العاده، بسیار انعطاف پذیر است. شطرنج، تخته های شطرنج تاب دار، گسترش EA برای کار با هر مشتق شطرنج آسان است. این ماهیت مقیاس پذیر جایی است که تکنیک تکاملی واقعاً برتر است. شما فقط نمی توانید این کار را با پایگاه داده های بازی انجام دهید زیرا آنها به سادگی وجود ندارند!

الگوریتم پازل شاترنج را ایجاد کرد. آیا می توانید شاه سفید را در 2 حرکت مات کنید؟

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

شما می توانید پازل ها را خودتان در وب سایت من، chesspuzzler.com امتحان کنید.

مگر اینکه غیر از این ذکر شده باشد، همه تصاویر توسط نویسنده است.



Source link