مختصری درباره حل کردن مکعب روبیک با هوش مصنوعی
اجازه دهید پیش از اینکه درباره موضوع جالب حل کردن مکعب روبیک با هوش مصنوعی سخن بگوییم، اطلاعات مختصری از حال و روز فناوری هوشمند تا پیش از پژوهشهای دقیق محققان ذکر کنیم. موضوع این است که حوزه هوش مصنوعی (AI) رایانههایی ایجاد کرده است که میتوانند اتومبیلها را برانند، ترکیبات شیمیایی را سنتز کنند، پروتئینها را جمع کنند و ذرات پرانرژی را در سطح فوق انسانی شناسایی نمایند. با این حال، الگوریتمهای هوش مصنوعی قادر نیستند فرایندهای فکری پشت تصمیمهای خود را توضیح دهند. رایانهای که بر جمع کردن پروتئین تسلط داشته باشد و همچنین درباره قوانین زیستشناسی اطلاعات بیشتری به محققان بدهد، بسیار مفیدتر از رایانهای است که پروتئینها را بدون توضیح جمع میکند.
بنابراین، محققان هوش مصنوعی در حال حاضر، تلاشهای خود را به سمت توسعه الگوریتمهای هوش مصنوعی معطوف کردهاند، تا کاری کنند که انسانها بتوانند آنها را درک کنند. اگر قادر باشند این کار را انجام دهند، فناوری هوش مصنوعی نیز میتواند حقایق کشفنشدهای را درباره جهان به مردم بیاموزد و این کار به نوآوریهای جدیدی منجر خواهد شد.
یکی از زمینههای هوش مصنوعی به نام یادگیری تقویتی، به مطالعه این موضوع میپردازد که چگونه رایانهها میتوانند از تجربیات خود بیاموزند و بر اساس اقدامات خود بازخورد مثبت یا منفی دریافت کنند. این رویکرد منجر به ایجاد الگوریتمهایی شده است که به طور مستقل بازی شطرنج را در سطحی مافوق بشری میآموزد و قضایای ریاضی را بدون هیچ راهنمای انسانی اثبات میکند و حتی از یادگیری تقویتی برای ایجاد الگوریتمهایی استفاده میکند که نحوه حل پازلهایی مانند مکعب روبیک را میآموزند. این موضوع باعث شده است که حتی هوش مصنوعی از طریق یادگیری تقویتی، حل مشکلات حلنشدنی انسانها را یاد بگیرد.
چگونگی حل کردن مکعب روبیک
افراد زیادی قادرند از طرق خاصی دریابند که حل کردن مکعب روبیک با هوش مصنوعی و الگوریتمهای هوش مصنوعی به چه شکل انجام میگیرد. هر چند آن افراد به دلیل عدم توانایی کامپیوتر در بازگویی منطقی که در پشت راهحلهای حل مکعب است، بهسختی متوجه این موضوع میشوند.
به طور کلی، حل کردن مکعب روبیک و راهحلهای آن را میتوان به چند مرحله کلی تقسیم کرد. برای مثال، اولین مرحله میتواند ایجاد یک صلیب باشد، در حالی که مرحله دوم میتواند قرار دادن قطعات گوشه در جای خودش باشد. در واقع، مکعب روبیک بیش از 10 تا 19 ترکیب ممکن برای حلش وجود دارد. از آن رو که نزدیک شدن به یک مشکل با تقسیم کردن آن به مراحل مختلف، راهحل را آسانتر میکند، لذا یک راهنمای گام به گام تعمیمیافته برای حل مکعب روبیک منطقی به نظر میرسد. به عبارت دیگر، ایجاد الگوریتمهای هوش مصنوعی با این توانایی میتواند به افراد اجازه دهد، تا با هوش مصنوعی همکاری کنند و طیف گستردهای از مشکلات پیچیده را به مراحل آسانتر تقسیم نمایند.
به عبارت دیگر، به جای اینکه برنامه تلاش کند نحوه حل کل مکعب را بیاموزد، یاد میگیرد که چگونه آن را به پیکربندی سادهتر وارد کند، سپس پیکربندی سادهتر را انجام میدهد و به همین ترتیب تا زمانی که مکعب روبیک حل شود، کار را ادامه میدهد. این ساختار به این معنی است که هر مرحله از راهحل بسیار آسانتر از انجام کلی آن است.
حل کردن مکعب روبیک با هوش مصنوعی
فرایند حل کردن مکعب روبیک با هوش مصنوعی با استفاده از یک برنامه گام به گام شروع میشود. سپس الگوریتم به هر مرحله جداگانه نگاه میکند و بازخوردی در مورد اینکه کدام مراحل ممکن است، کدام غیرممکن است و راههایی که میشود طرح را بهبود ببخشد، ارائه میدهد. سپس طرح اولیه با استفاده از توصیههای هوش مصنوعی اصلاح میشود و این روند تا زمانی که مشکل حل شود، تکرار میگردد. امید این است که انسان و هوش مصنوعی در نهایت به نوعی درک متقابل برسند.
به عبارت دقیقتر، الگوریتم هوش مصنوعی میتواند یک طرح انسانی برای حل مکعب روبیک در نظر بگیرد، راهکارهای خوبی را برای آن طرح پیشنهاد دهد، طرحهایی را که کار نمیکنند تشخیص دهد و در نهایت، جایگزینهایی را پیدا کند که نتیجهبخش هستند. با انجام این کار، بازخوردی ارائه خواهد شد که منجر به یک طرح گام به گام برای حل کردن مکعب روبیک با هوش مصنوعی میشود که فرد بتواند آن را درک کند. گام بعدی، ساخت یک رابط بصری است که به الگوریتم اجازه میدهد، تا به مردم نحوه حل مکعب روبیک را آموزش دهد. بهترین نتیجه، تعمیم این رویکرد به طیف وسیعی از مشکلات مسیریابی است.
در حقیقت، انسان در شهود و احساسات قوی است و ماشین در قدرت محاسباتی و دقت الگوریتمی خود حرفی برای گفتن دارد. این رفتوآمد بین انسان و ماشین از نقاط قوت هر دو استفاده میکند. در واقع، میتوان گفت این نوع همکاری مسائل حلنشده قبلی را در همه چیز از شیمی گرفته تا ریاضیات روشن میکند و منجر میشود راهحلهای جدید، شهودات و نوآوریهایی ایجاد گردند.
حل مکعب روبیک با دست ربات
یک جفت شبکه عصبی برای حل کردن مکعب روبیک با هوش مصنوعی آموزش داده شدهاند، تا حل مکعب روبیک با دست ربات را حل کنند. شبکههای عصبی کاملاً در شبیهسازی آموزش داده شدهاند و از همان کد یادگیری تقویتی OpenAI Five با تکنیک جدیدی به نام «تصادفیسازی خودکار دامنه» (ADR) استفاده میکنند. این سیستم میتواند موقعیتهایی را که هرگز در طول تمرین ندیده است، شبیهسازی کرده، مدیریت نماید. این کار با یک دست ربات انجام میگیرد! در واقع، دستهای انسان به ما اجازه میدهد، تا وظایف مختلفی را انجام دهیم. اگر قرار بود در 60 سال گذشته، ربات، کارهای سختی را انجام بدهد که انسانها با دستهای خود انجام میدادند، به طور حتم، باید برای هر کار، یک ربات سفارشی در نظر گرفته میشد.
ماجرا از آنجا شروع میشود که از ماه می 2017، محققان تلاش کردند، تا یک دست رباتیک شبیه انسان را برای حل مکعب روبیک آموزش دهند و از این طریق حل مکعب روبیک با دست ربات انجام گیرد. در حقیقت، رباتی که آنها استفاده میکنند، در 15 سال گذشته هم وجود داشته است، اما رویکرد نرمافزاری آن جدید است. هدف آنها از این کار، تحقق بخشیدن به این ایده بود که آموزش موفقیتآمیز چنین رباتی پایه و اساس رباتهای همهمنظوره را برای انجام کارهای پیچیدهای که با دست انجام میشود، ایجاد میکند. نتیجه آن شد که مکعب روبیک در ژوئیه 2017 به صورت شبیهسازی حل شد؛ اما از جولای 2018، محدودیتها سر برآوردند. اکنون، محققان به هدف اولیه خود رسیدهاند.
این موضوع، زمانی اهمیت پیدا میکند که بدانید حل کردن مکعب روبیک با هوش مصنوعی از طریق یک دست، حتی برای انسانها نیز یک کار چالشبرانگیز است و چندین سال طول میکشد، تا کودکان مهارت لازم برای تسلط بر آن را به دست آورند. البته رباتی که مکعب روبیک را حل میکند، هنوز تکنیک خود را کامل نکرده است و میتوان گفت 60 درصد مواقع مکعب روبیک را حل میکند.
تصادفیسازی دستی دامنه
محققان برای انجام این کار از طریق آموزش شبکههای عصبی اقدام میکنند. در واقع، شبکههای عصبی برای حل کردن مکعب روبیک با هوش مصنوعی در شبیهسازی با استفاده از یادگیری تقویتی و الگوریتم Kociemba آموزش داده میشوند، تا به چرخشهای صورت و چرخشهای مکعب موردنیاز، دست پیدا کنند. بزرگترین چالشی که محققان با آن روبهرو هستند، این است که محیطهای متنوعی را در شبیهسازی ایجاد کنند که در حقیقت این محیطها به دنیای واقعی مربوط میشود. عواملی مانند اصطکاک، کشش و دینامیک اندازهگیری و مدلسازی، برای اجسامی به پیچیدگی مکعبهای روبیک یا عقربههای روباتیک بسیار دشوار است. به همین دلیل، آنها متوجه شدند که تصادفیسازی دستی دامنه، بهتنهایی کافی نیست.
برای غلبه بر این موضوع، آنها یک روش جدید به نام «تصادفیسازی خودکار دامنه» (ADR) را توسعه دادهاند که برای همیشه محیطهایی را ایجاد میکند که مسلماً تصور آنها در شبیهسازیها دشوارتر است. در واقع، این کار، انتقال شبکههای عصبی آموختهشده در شبیهسازی را قادر میسازد، تا در دنیای واقعی اعمال شود.
تصادفیسازی خودکار دامنه
تصادفیسازی خودکار دامنه (Automatic Domain Randomization) یا به اختصار ADR با یک محیط منفرد و غیرتصادفی شروع میشود که در آن یک شبکه عصبی حل کردن مکعب روبیک با هوش مصنوعی را میآموزد. وقتی شبکه عصبی بهمرور در کار بهتر عمل میکند و به آستانه عملکرد میرسد، میزان تصادفیسازی دستی دامنه به طور خودکار افزایش مییابد. این موضوع، کار را سختتر می کند، زیرا شبکه عصبی اکنون باید تعمیم به محیطهای تصادفیتر را یاد بگیرد. شبکه به یادگیری ادامه میدهد، تا زمانی که دوباره از آستانه عملکرد فراتر رود، زمانی که تصادفیسازی بیشتر شروع میشود و فرایند تکرار میگردد.
یکی از پارامترهای تصادفیسازی خودکار دامنه، اندازه مکعب روبیک است. در واقع، تصادفیسازی خودکار دامنه با اندازه ثابتی از مکعب روبیک شروع میشود و بهتدریج با پیشرفت تمرین، محدوده تصادفیسازی را افزایش میدهد. محققان همین تکنیک را برای تمام پارامترهای دیگر مانند جرم مکعب، اصطکاک انگشتان ربات و مواد سطح بصری دست اعمال میکنند. بنابراین، شبکه عصبی باید یاد بگیرد که مکعب روبیک را در تمام این شرایط سخت، حل کند.
تصادفیسازی دستی دامنه از دستاندرکاران میخواست که بهطور دستی محدودههای تصادفیسازی را مشخص کنند. این کار دشوار بود، چراکه تصادفیسازی بیش از حد، یادگیری را دشوار میکرد؛ اما تصادفیسازی بسیار کم مانع از انتقال به ربات واقعی میشود. در واقع، تصادفیسازی خودکار دامنه این مشکل را با گسترش خودکار محدوده تصادفیسازی در طول زمان و بدون دخالت انسانی حل میکند. این تصادفیسازی نیاز به دانش دامنه را از بین میبرد و استفاده از روشهای پژوهشگران را برای کارهای جدید سادهتر میکند. برخلاف تصادفیسازی دستی دامنه، تصادفیسازی خودکار، وظیفه خود را همیشه چالشبرانگیز نگه میدارد و حل کردن مکعب روبیک با هوش مصنوعی از این طریق انجام میگیرد.
تحلیل و بررسی حل کردن مکعب روبیک با هوش مصنوعی
اگر بگوییم ADR یا همان تصادفیسازی خودکار دامنه به دنبال این است که فاصله میان دنیای واقعی و محیطهای شبیهسازیشده را کاهش بدهد، سخنی به گزاف نگفتهایم. پژوهشگران از طریق تحلیل و بررسی حل کردن مکعب روبیک با هوش مصنوعی به نتایج خوبی دست یافتند. در حقیقت، این روش باعث میگردد انواع محیطهای شبیهسازیشده با ویژگیهای تصادفی ساخته شوند و یک مدل یادگیری ماشینی را آموزش دهد که در تمامی آنها قادر باشد کار کند. این تکنیک با تقلید از شرایط زیادی که در محیط متفاوت عمل میکنند، تصادفیسازی مدل را انعطافپذیرتر میکند. با استفاده از تصادفیسازی خودکار دامنه، میتوان شبکههای عصبی را در شبیهسازی آموزش داد که میتوانند حل کردن مکعب روبیک با هوش مصنوعی را انجام دهند و مکعب روبیک را روی دست ربات واقعی حل کنند. این به این دلیل است که تصادفیسازی خودکار دامنه، شبکه را در معرض انواع بیپایانی از شبیهسازیهای تصادفی قرار میدهد. در واقع، این قرار گرفتن در معرض پیچیدگی در طول آموزش است که شبکه را برای انتقال از شبیهسازی به دنیای واقعی آماده میکند، زیرا باید یاد بگیرد که به سرعت هر دنیای فیزیکی را که با آن مواجه میشود، شناسایی و سازگار کند.
محققان برای آزمایش محدودیتهای روش خود در خصوص تحلیل و بررسی حل کردن مکعب روبیک، انواع چالشها را آزمایش کردهاند. این کار نهتنها استحکام شبکه کنترل آنها را آزمایش میکند، بلکه شبکه بیناییشان را نیز میآزماید که از آن برای تخمین موقعیت و جهت مکعب استفاده میکنند.
پژوهشگران پس از این کار دریافتند که سیستمشان که با تصادفیسازی خودکار دامنه آموزش دیده است، به طرز شگفتانگیزی در برابر چالشها مقاوم است، حتی اگر هرگز با آنها آموزش ندیدهاند. بر این اساس، ربات میتواند اکثر چرخشها و چرخشهای صورت را تحت تمام اختلالات آزمایششده با موفقیت انجام دهد.
در واقع، باور اینکه تصادفیسازی خودکار دامنه میتواند به عنوان پیشنیازی کارا برای ساختن سیستمهای همهمنظوره استفاده شود، باور خطایی نیست، زیرا آنها را قادر میسازد، تا به سرعت با شرایط متفاوت در محیط خود سازگار شوند. به طور دقیقتر، ما فرض میکنیم که یک شبکه عصبی با ظرفیت محدود آموزشدادهشده در محیطهایی با پیچیدگی نامحدود، شبکه را مجبور میکند یک الگوریتم یادگیری با هدف خاص را یاد بگیرد، زیرا نمیتواند راهحلها را برای هر محیط فردی به خاطر بسپارد.
محققان برای آزمایش این روش، زمان موفقیت در هر چرخش مکعب روبیک (چرخشی که رنگ متفاوت مکعب، رو به بالا باشد) را برای شبکه عصبی خود تحت اختلالات مختلف، مانند تنظیم مجدد حافظه شبکه، تنظیم مجدد دینامیک، یا شکستن یک مفصل اندازهگیری میکنند. آنها این آزمایشها را در محیطی شبیهسازیشده انجام میدهند، تا میانگین عملکرد بیش از 10000 آزمایش در یک محیط کنترلشده انجام بگیرد، تا مگر از این طریق حل کردن مکعب روبیک با هوش مصنوعی بهدرستی انجام گیرد.
پژوهش دانشمندان در خصوص تحلیل و بررسی حل کردن مکعب روبیک، آنها را به این امر واقف کرده است که همانطور که شبکه عصبی برای حل مکعب روبیک، با موفقیت به راهکارهای بیشتری دست مییابد، موفقیت نیز کاهش مییابد، زیرا در آن راهکار، توالی در جریان است ولذا شبکه عصبی یاد میگیرد که خود را تطبیق دهد. هنگامی که حل مکعب به چالش کشیده میشود و راهحل با آشفتگی روبهرو میشود، موفقیت برای حل مکعب، افزایش مییابد. این به این دلیل است که استراتژی شبکهای که از آن استفاده میکند در محیط تغییریافته کار نمیکند. از طرفی، شبکه عصبی درباره محیط جدید مجدداً اطلاعاتی کسب میکند و دوباره زمان موفقیت به خط پایه قبلی کاهش مییابد. همچنین محققان، احتمال شکست را اندازهگیری کردهاند و آزمایشهای مشابهی را برای چرخشهای مکعب روبیک، مثلاً چرخش ۹۰ درجه در جهت عقربههای ساعت یا خلاف جهت عقربههای ساعت، انجام دادهاند.
خلاصه آنچه نوشتیم
مکعب روبیک یک پازل پیچیدهای است که سعی شده در کمترین زمان از طریق هوش مصنوعی حل شود. پژوهشگران این کار را از طریق یادگیری عمیق و آموزش شبکههای عصبی انجام دادهاند و بر این معتقدند که این رویکرد، باعث خواهد شد که مشکلات عدیدهای که حل آنها از عهده انسان خارج است، از این طریق حل گردد. بهترین راهکاری که محققان برای حل کردن مکعب روبیک با هوش مصنوعی انجام دادند، شبیهسازی محیط و موقعیت برای حل مکعب بود. این شیوه با نام تصادفیسازی خودکار دامنه یا ADR انجام شد. بر اساس این رویکرد، فاصله میان دنیای واقعی و محیطهای شبیهسازیشده کاهش مییابد و در نتیجه انواع محیطهای شبیهسازیشده با ویژگیهای تصادفی ساخته میشوند و یک مدل یادگیری ماشینی از جمله حل کردن مکعب روبیک با هوش مصنوعی آموزش داده میشود.
انواع کاربردهای هوش مصنوعی در صنایع مختلف را در هوشیو بخوانید