حل مکعب روبیک توسط یک دست رباتی

هدف این پژوهش، حل مکعب روبیک به وسیله یک دست رباتی است که شامل دو شبکه عصبی می شود. هر دو شبکه کاملا در محیط شبیه سازی و به وسیله کد یادگیری تقویتی مشابه با OpenAI Five و همچنین روش جدیدی به نام تصادفی سازی دامنه خودکار ( Automatic Domain Randomization ) آموزش پیدا کرده اند. این سیستم می تواند به شرایطی رسیدگی کند که هرگز در طول آموزش با آن ها رو به رو نشده است، مثل ضربه خوردن از سوی یک زرافه پلاستیکی! این قابلیت نشان می دهد که یادگیری تقویتی تنها ابزاری برای فعالیت های مجازی نیست، بلکه می تواند برای حل مشکلات دنیای واقعی که ملزم به دقت بی سابقه ای هستند، نیز به کار گرفته شود.

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

از ماه مِه سال ۲۰۱۷، ما در تلاش بوده ایم تا یک دست رباتی شبیه به دست انسان را برای حل مکعب روبیک آموزش دهیم، چون بر این باوریم که آموزش موفقیت آمیز چنین دست رباتی که بتواند فعالیت های پیچیده ای را انجام دهد، بنیان ربات های همه کاره را پایه گذاری می کند. ما در ماه ژوئیه سال ۲۰۱۷ توانستیم مکعب روبیک را در شبیه سازی حل کنیم. تا ژوئیه سال ۲۰۱۸ ربات ما تنها قادر به دستکاری یک مکعب ساده بود. اما حالا به نظر می رسد که به هدف اصلی خود رسیده ایم

حل مکعب روبیک با یک دست، حتی برای انسان نیز یک چالش بزرگ محسوب می شود. سال ها طول می کشد تا یک کودک بتواند به دقت لازم و کسب مهارت کافی برای حل مکعب روبیک برسد. ربات ما نیز هنوز تکنیک خود را به خوبی یاد نگرفته است و در ۶۰ درصد موارد می تواند معما را حل کند (و تنها ۲۰ درصد مواقع، اگر چیدمان بلوک ها بسیار سخت باشد).

رویکرد پیشنهادی

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

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

شبیه سازی حل مکعب روبیک با دست روباتی
تصادفی سازی دامنه ، شبکه عصبی را در معرض بسیاری از انواع مختلف از یک مساله قرار می دهد ، در این مثال، حل یک مکعب روبیک .

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

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

کار ما به شدت با POET مرتبط است ، که به طور خودکار محیط های ۲ بعدی ایجاد می کند. با این حال ، کار ما یک سیاست مشترک درباره همه محیط ها می آموزد ، که به هر محیط تازه تولید شده منتقل می شود.

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

اعمال تصادفی سازی دامنه خودکار که به اندازه مکعب روبیک





‌‌







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

مقایسه تصادفی سازی دامنه خودکار و دستی

تصادفی سازی دامنه خودکار روبیک

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

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

تحلیل

آزمایش مقاومت

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

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

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

با انجام آزمایشات، متوجه می شویم که سیستم آموزش یافته به وسیلۀ ADR به طور تعجب آوری در برابر آشفتگی مقاوم است، با اینکه آشفتگی هرگز به سیستم آموزش داده نشده است. ربات می تواند تحت آشفتگی های مختلف به طور موفقیت آمیز، اکثر چرخش ها را انجام دهد، هرچند که بهترین کارایی را از خود نشان نمی دهد.

یادگیری متای اضطراری

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

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

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



  • ریست کردن حافظه

  • ریست کردن مشخصات دینامیکی

  • مفصل شکسته


نمودار آشفتگی آموزش حل روبیک


نمودار آشفتگی آموزش حل روبیک با متغیر ها


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


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

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

درک شبکه های عصبی در این پژوهش

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

حافظه شبکۀ عصبی در بالا نشان داده شده است. ما از یک بلوک سازنده به نام فاکتورسازی ماتریس غیرمنفی استفاده کرده و این بردار حافظۀ بزرگ (با ابعاد بالا) را به شش گروه تقسیم می کنیم و رنگی انحصاری را برای هر دسته اختصاص می دهیم. سپس رنگ گروه غالب فعلی را برای هر گام زمانی نمایش می دهیم.

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

چالش ها

حل معمای مکعب روبیک با یک دست رباتی، هنوز کار بسیار چالش برانگیزی به حساب می آید. در حال حاضر، روش ما تنها در ۲۰ درصد از موارد توانسته مکعب را حل کند، آن هم با اعمال چیدمانی که حل آن به تنها ۲۶ چرخش سطحی احتیاج دارد. برای چیدمان های ساده تر که با ۱۵ حرکت حل می شود، ربات می تواند به نرخ موفقیت ۶۰ درصد برسد. اگر مکعب از دست رباتی بیفتد یا مهلت تمام شود، فرض را بر این می گیریم که ربات در حل مکعب روبیک با شکست مواجه شده است. به هر حال، شبکۀ ما قادر به حل مکعب روبیک از هر چیدمان اولیه ای است. بنابراین اگر مکعب از دست ربات بیفتد، ربات می توان مکعب را برداشته و به حل معما ادامه دهد.

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

پشت صحنه: نمونه اولیه مکعب روبیک

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

نمونه های اولیه مکعب های روبیک
نمونه های اولیه مکعب روبیک ، از چپ به راست: مکعب قفل شده ، مکعب سطحی ، مکعب کامل ، مکعب Giiker ، مکعب روبیک معمولی
نمونه اولیهموقعیت و تنظیمدرجه آزادی داخلی (سنسور)
مکعب قفل شدهدیداری۰ (بدون سنسور)
مکعب سطحیPhaseSpace2 (PhaseSpace)
مکعب کاملPhaseSpace6 (PhaseSpace)
مکعب Giikerدیداری۶ (سنسور داخلی)
مکعب روبیک معمولی دیداری۶ (دیداری)

گام بعدی

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

بیشتر بخوانید :

منبع OpenAI

همچنین ببینید

پلاک خوان های شهر گرینزبوروی آمریکا فعلاً قرار نیست افزایش پیدا کنند

پلاک خوان های شهر گرینزبوروی آمریکا فعلاً قرار نیست افزایش پیدا کنند

گرینزبورو (از شهرهای ایالت کارولینای شمالی)؛ بیش از دو سال از نصب اولین دوربین های پلاک …

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *