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

ساختار داخلی آلفازیرو
بیایید مستقیم به سراغ موضوع اصلی برویم. یادگیری آلفازیرو با استفاده از یک **شبکه عصبی** صورت میگیرد که میتوان آن را به صورت زیر تصویر کرد:
شبکه عصبی آلفازیرو، تلاشی برای ساخت یک سیستم کامپیوتری است که بیشتر شبیه به **مغز انسان** عمل کند تا یک کامپیوتر سنتی. ورودی، یعنی وضعیت فعلی صفحه شطرنج، در سمت چپ قرار میگیرد. این ورودی توسط اولین لایه از نورونها پردازش میشود، که هر کدام خروجی خود را به نورونهای لایه بعدی ارسال میکنند و این فرآیند ادامه مییابد تا زمانی که آخرین لایه نورونها، خروجی نهایی را تولید کند. در آلفازیرو، این خروجی دو بخش دارد:
- ارزیابی موقعیت شطرنج ارائه شده.
- ارزیابی هر حرکت قانونی در آن موقعیت.
این شبیه به نحوه تفکر یک شطرنجباز است: “سفید در اینجا کمی بهتر است، و حرکات **Bg5** یا **h4** خوب به نظر میرسند!”

شبکه عصبی آلفازیرو
پس این نورونها باید واحدهای پردازشی هوشمندی باشند، درست است؟ یک نورون در واقع یک واحد پردازش بسیار ساده است (که میتواند در نرمافزار یا سختافزار پیادهسازی شود) که تعدادی ورودی را میپذیرد، هر یک را در وزن خاصی ضرب میکند، نتایج را جمعآوری کرده و سپس یک **تابع فعالسازی** را اعمال میکند که خروجی را معمولاً در محدوده ۰ تا ۱ تولید میکند. نکته مهم این است که خروجی یک نورون به طور بالقوه به هر نورون دیگری در شبکههای قبل از خود وابسته است. این ویژگی به شبکه امکان میدهد تا ظرافتها را درک کند، درست مانند شطرنج که در آن وضعیت قلعهرفته شاه سفید امن به نظر میرسد، اما پس از حرکت **h3** این ارزیابی تغییر میکند، زیرا سیاه میتواند ستون **g** را با **g7-g5-g4** باز کند.
بر اساس دادههای منتشر شده برای AlphaGo Zero (مدل پیشین آلفازیرو در بازی Go)، شبکه عصبی آلفازیرو احتمالاً تا ۸۰ لایه و صدها هزار نورون دارد. با یک محاسبه ساده متوجه میشوید که این به معنای صدها میلیون **وزن** است. وزنها از اهمیت بالایی برخوردارند، زیرا **آموزش شبکه** (که به آن یادگیری نیز گفته میشود) با اختصاص مقادیری به این وزنها انجام میشود تا شبکه بتواند شطرنج را به خوبی بازی کند. تصور کنید نورونی وجود دارد که در طول تمرین، نقش ارزیابی امنیت شاه را بر عهده گرفته است. این نورون ورودیها را از تمام نورونهای قبلی در شبکه دریافت میکند و یاد میگیرد که چه وزنهایی باید به آنها بدهد. اگر آلفازیرو پس از حرکت دادن همه پیادههای خود در مقابل شاهش مات شود، وزنهای خود را تنظیم میکند تا احتمال تکرار این خطا کاهش یابد.

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

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

تاکنون دیدهایم که آلفازیرو چگونه شبکه عصبی خود را آموزش میدهد تا بتواند موقعیت شطرنج را ارزیابی کند و تخمین بزند کدام حرکات احتمالاً خوب هستند (بدون محاسبه عمیق).
در اینجا اصطلاحات بیشتری وجود دارد: بخشی از شبکه که موقعیتها را ارزیابی میکند، **شبکه ارزش** نامیده میشود، در حالی که بخش “پیشنهاد دهنده حرکت” **شبکه سیاست** نامیده میشود. حال بیایید ببینیم که چگونه این شبکهها به آلفازیرو در بازی شطرنج کمک میکنند.
به یاد بیاورید که مشکل بزرگ در شطرنج، **انفجار تغییرات** است. فقط برای محاسبه دو حرکت جلوتر از یک موقعیت باز، باید به حدود ۱۵۰,۰۰۰ موقعیت نگاه کرد، و این عدد به ازای هر حرکت عمیقتر به طور تصاعدی افزایش مییابد. آلفازیرو تنها با در نظر گرفتن آن دسته از حرکاتی که شبکه سیاست آن توصیه میکند، تعداد تغییراتی که باید به آنها نگاه شود را کاهش میدهد. همچنین از شبکه ارزش خود استفاده میکند تا از نگاه کردن به خطوطی که ارزیابی آنها نشان میدهد که به وضوح تصمیمگیری شدهاند (برنده/بازنده) خودداری کند.

طبق شبکه سیاست، فرض کنید به طور متوسط سه حرکت ممکن مناسب وجود دارد. سپس با نرخ بسیار بالای ۸۰,۰۰۰ موقعیت در ثانیه که توسط آلفازیرو به کار میرود، میتواند در عرض یک دقیقه حدود هفت حرکت کامل جلوتر را بررسی کند. این را با اعمال ارزیابی غریزی آن که توسط شبکه ارزش آن ارائه میشود در موقعیتهای نهایی تغییراتی که به آن نگاه میکند، همراه کنید، و در واقع یک **موتور شطرنج** بسیار قدرتمند خواهید داشت.
سختافزار مورد نیاز آلفازیرو
جای تعجب نیست که شبکه عصبی آلفازیرو بر روی سختافزار تخصصی، یعنی **واحدهای پردازش تانسور گوگل (TPU)** اجرا میشود. آلفازیرو از ۵۰۰۰ واحد TPU نسل اول برای تولید بازیهای خودبازی استفاده میکند که برای آموزش شبکه به کار میروند، و از ۶۴ واحد TPU نسل دوم برای انجام آموزش واقعی استفاده میکند. این مقدار عظیمی از **قدرت محاسباتی** است. برای بازی واقعی شطرنج، فقط از چهار واحد TPU استفاده شد.
چرا گوگل از ۵۰۶۰ واحد TPU دیگر نیز استفاده نکرد؟ احتمالاً برای نشان دادن این موضوع که آلفازیرو برای اجرای مؤثر به سختافزار عظیمی نیاز ندارد.
همانطور که یک شبکه عصبی مقادیر را بین لایههای خود منتشر میکند، هر ورودی به هر نورون در وزن خاصی ضرب میشود، که اساساً **ضرب ماتریسی** است (از ریاضیات یادتان هست؟). TPU توسط گوگل صرفاً برای آموزش و اجرای شبکههای عصبی طراحی شده است و بنابراین در انجام ضرب ماتریس تخصص دارد. یک عملیات ضرب ماتریسی که یک CPU معمولی در لپتاپ شما به یک سری محاسبات طولانی نیاز دارد، یک TPU میتواند در یک چرخه ساعت انجام دهد (و TPU نسل اول ۷۰۰ میلیون سیکل در ثانیه انجام میدهد). ماشینی را در کارخانهای در نظر بگیرید که میتواند روی ۱۰۰ بطری نوشابه به طور همزمان درپوش بگذارد، در مقابل یک کارگر ساده که آنها را یک به یک روی آن قرار میدهد.

مقایسه آلفازیرو با استاکفیش
پس از چهار ساعت آموزش، امتیاز آلفازیرو از استاکفیش فراتر رفت. پنج ساعت دیگر تمرین کرد، اما در این زمان پیشرفت کمی کرد یا اصلاً پیشرفت نکرد (بله، این به خودی خود جالب است، اما محققان اطلاعات بیشتری برای امکان تفسیر ارائه نکردند). در این مرحله، این دو یک مسابقه ۱۰۰ بازی انجام دادند که هر حرکت یک دقیقه بود و آلفازیرو با نتیجه ۶۴-۳۶ و بدون باخت پیروز شد. به نظر میرسد این یک پیروزی قاطع باشد، اما در واقع تنها با اختلاف ۱۰۰ امتیاز در رتبهبندی Elo مطابقت دارد. در مورد عادلانه بودن یا نبودن این مسابقه صحبتهای زیادی شده است. استاکفیش از **کتاب گشایش** خود که نمونهای رایج در مسابقات کامپیوتری است، محروم شد. استاکفیش از ۶۴ رشته (thread) استفاده کرد که نشان میدهد روی یک رایانه شخصی بسیار قدرتمند اجرا میشد، اما فقط از اندازه هش متوسط ۱ گیگابایت استفاده میکرد. در مقابل، آلفازیرو ۵۰۶۴ واحد TPU در اختیار داشت، اما تنها از چهار عدد از آنها در مسابقه استفاده کرد.
بسیاری از مردم نحوه ایجاد یک مسابقه عادلانه بین این دو را پیشنهاد کردهاند، اما این واقعاً ممکن نیست، زیرا آنها بر سختافزار کاملاً متفاوتی متکی هستند. مسابقه بین یک شخص و یک اسب تنها با اجازه دادن به استفاده از دو پا “عادلانه” نمیشود.

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

چقدر نزدیک میشود؟ بیایید چند محاسبه بسیار تقریبی انجام دهیم. بخشی از رایانه شما که برای محاسباتی که آلفازیرو انجام میدهد مناسبتر است، **GPU** یا **واحد پردازش گرافیکی** است. ممکن است عجیب به نظر برسد، اما گرافیک همه چیز در مورد ضرب ماتریس است، چیزی که یک شبکه عصبی نیز به آن نیاز دارد. گوگل تخمین میزند که TPU آن حدود ۲۰ برابر سریعتر از یک GPU معاصر باشد، بنابراین ماشین ۴-TPU که استاکفیش را شکست داد، ۸۰ برابر بیشتر از یک رایانه معمولی به سرعت بیشتری متکی است. بنابراین در حال حاضر، این فراتر از توانایی کاربر خانگی خواهد بود.
انقلابی در زمینه **هوش مصنوعی** در حال وقوع است، جایی که شبکههای عصبی برای مقابله با مشکلاتی که قبلاً برای یک رویکرد محاسباتی بسیار پیچیده دیده میشدند، استفاده میشوند. رویکرد همهمنظوره آلفازیرو آن را قادر میسازد تا درک شطرنج (نه فقط محاسبه تغییرات) را بسیار بهتر از هر رویکرد خاص شطرنج بیاموزد. و این کار را برای **گو** و **شوگی** نیز انجام داد، بازیهای رومیزی با پیچیدگی محاسباتی بالاتر از شطرنج. خیلی بعید است که گوگل علاقهمند به پیشبرد پروژه شطرنج بیش از این باشد؛ آنها به مشکلات چالشبرانگیزتر و ارزشمندتر توجه خواهند کرد.

بنابراین همه اینها برای شطرنج آنطور که ما میشناسیم چه معنایی دارد؟ این یک گام عظیم است که یک کامپیوتر اکنون میتواند خود شطرنج را تا این سطح بالا بیاموزد، و بیشتر بر **یادگیری انسانمانند** تکیه میکند تا بر محاسبه سنتی و بیرحم. این یک فرورفتگی در تصور ما از **برتری انسان** ایجاد میکند. این بدون شک بر چگونگی تکامل **موتورهای شطرنج** در آینده تأثیر خواهد داشت و ممکن است مجبور باشیم با اکراه بپذیریم که هوشمندانهترین شطرنج توسط ماشینها بازی میشود.
سختافزاری که آلفازیرو روی آن اجرا میشود به این زودی در دسترس عموم شطرنجبازان قرار نخواهد گرفت، اما فراموش نکنید که زمانی که **Deep Thought** (مدل پیشین Deep Blue) ساخته شده بود، در سال ۱۹۸۸ **بنت لارسن** را شکست داد، سازندگان آن به سختی آن آینده را تصور میکردند که بچههای مدرسه آن نوع قدرت محاسباتی را در جیب خود حمل میکنند.
همانطور که میگویند: **”منتظر بمانید و ببینید.”**