محمد جواد نجادی
محمد جواد نجادی
خواندن ۳۹ دقیقه·۷ ماه پیش

اربابان حلقه ! انگشترهای قدرت همان pre-trained model ها در هوش مصنوعی هستند!

# پارت 3: می خواهیم مدل های پیش آموزش دیده و محیط های شبیه شازی که برای آموزش در رباتیک استفاده می شوند (Atari, OpenAI Gym2, MuJoCo, RoboCup, RoboCup Soccer, Humanoid-Gym) و همچنین با چالش های آنها بیشتر آشنا شویم.

«تا زمانی که آنها پیدا نشدند متوقف نشوید. شما درد را نمی شناسید، ترس را نمی شناسید. گوشت انسان را خواهید چشید!»
سارومان


این تصویر توسط Ideogram خلق شده است
این تصویر توسط Ideogram خلق شده است


این مقاله در 3 پارت در مورد pre-trained model تکمیل خواهد شد که به شرح زیر است:

# پارت 1 : مهم ترین pre-trained model برای text, را از آغاز بررسی و مقایسه خواهیم کرد.

# پارت2 : ما مدلهای پیشآموزش دیده مهم در زمینه تصویر (AlexNet ,VGG , GoogLeNet ,ResNet, MobileNet, MobileNetV2) را از ابتدا تا امروز بررسی و با هم مقایسه خواهیم کرد.

# پارت 3 : پارت 3: می خواهیم مدل های پیش آموزش دیده و محیط های شبیه شازی که برای آموزش در رباتیک استفاده می شوند (Atari, OpenAI Gym2, MuJoCo, RoboCup, RoboCup Soccer, Humanoid-Gym) و همچنین با چالش های آنها بیشتر آشنا شویم.

در این سه گانه می خواهیم pre-trained model ها در سه پارت Text ,Image, Robotics بررسی کنیم و مختصری راجع به ایده و چگونگی پیدایش اونها صحبت کنیم و ببینیم که این مدل ها چطور کار می کنند؟ چه معماری دارند ؟ انواع مختلف اونها رو بررسی کنیم. پرقدرت ترین های اونها کدوم ها هستند؟ آیا راز بزرگ و نقطه قوت اصلی LLMs ها همین مدل های pre-trained model و Transformer ها هستند؟ اگر pre-trained model و Transformer نبود الان چت بات قدرتمندی مثل ChatGPTوجود داشت ؟ البته امروزه دیگه چت بات ها هم متفاوت شدن و فقط در حوزه ی NLP نیستند. امروزه می بینیم مثلا GPT-4 چند وجهی است چون که فقط محدود به تولید متن نیست. آیا کارکردی شبیه RL دارند؟ برای Robotics چه pre-trained model هایی داریم؟ برای مدل های Multimodal Models کدام ها بهترهستند ؟ آیا pre-trained model ها الان هم فقط برای NLP کاربرد دارن؟ در حوزه Image قدرتمند ترین مدل ها کدام ها هستند؟ برای استفاده از هر کدام از این مدلها چطور آنها را Fine-tuning کنیم یا Hyperparameter Tuning کنیم؟ با من در این 3 گانه همراه باشید تا با هم به این سوالات پاسخ دهیم.


مقدمه

در پارت 1 و 2 راجع به pre-trained model مناسب برای text و Image آموختیم و مدل هایی را بررسی کردیم که امروزه هم مورد استفاده قرار می گیرند. معماری این مدل ها را دیدیم و اینکه چگونه می توان آنها را فراخوانی کرد و برای تسک خاص مورد نظرمان استفاده کنیم. در واقع دو ستون اصلی که برای رسیدن به AGI نیاز داریم یعنی قابلیت درک زبان و اینکه ماشین علاوه بر فهمیدن زبان بتواند از زبانی به زبان دیگر ترجمه کند و دیگری قابلیت دیدن در ماشین ها. تسک های بسیار زیادی برای این دو قابلیت وجود دارد. حال تصور کنید که توانستیم این دو را کامل انجام داده و به نقطه ی مورد نظر بهینه ای برای ماشین رسیده ایم. امروزه می بینیم که ماشین ها چه در زمینه امنیت و چه سلامتی و غیره چقدر می توانند مفید باشند. حال می خواهیم آن ها را در ماشین هایی به کار ببریم که به صورت فیزیکی در بین ما باشند. ربات ها.

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

ربات چیست ؟

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

تاریخچه ربات ها

بشر همیشه و در طول تاریخ به دنبال راحت تر کردن کارها و همچنین پیشبرد کارهایش در زمان های کوتاه تر بوده و همین طرز فکر باعث پیشرفت های بشر تا به امروز است. از زمان باستان و ساختن ساعت خورشیدی تا آسیاب های بادی و سد ها تا رسیدن به انقلاب صنعتی و ماشینی شدن بسیاری از کارها. با ظهور فناوری های جدید و مخصوصا در عصر ظهور کامپیوتر ها و سریع تر شدن انجام محاسبات ایده داشتن ربات های پیشرفته تر بیش از پیش مطرح شد. اولین مقاله ای که می توان گفت بعد از مطرح شدن هوش مصنوعی برای رباتیک مطرح شد مقاله "Computing Machinery and Intelligence" در سال 1950 توسط آلن تورینگ منتشر اشاره کرد. ایده اصلی "تست تورینگ" برای اولین بار در این مقاله مطرح شد.

https://academic.oup.com/mind/article/LIX/236/433/986238


مهم ترین سوالی که تورینگ در این مقاله مطرح می کند و می خواهد به آن پاسخ دهد این است : " آیا ماشین ها می توانند فکر کنند ؟ " که هم از جنبه فلسفی و هم از جنبه فنی به آن می پردازد. برای اولین بار در آن ایده «بازی تقلید» را مطرح کرد که همان تست تورینگ معروف است. در آن دو نفر و یک ماشین در بازی هستند که یک شخص با پرسیدن سوال از ماشین و شخص مقابل سعی می کند بفهمد چه کسی ماشین است و چه کسی انسان. هدف این بازی تقلید، این است که ماشین بتواند به گونه‌ای هوشمندانه عمل کند که مشاهده‌گر را به اشتباه بیاندازد و او را مجاب کند که این ماشین را به عنوان یک انسان در نظر بگیرد. در زمینهٔ رباتیک نیز، ارزیابی عملکرد ربات‌ها در تعامل با انسان و تصمیم‌گیری‌های هوشمندانه، به ‌کمک مفهومی شبیه به بازی تقلید انجام می‌شود. مفهوم بازی تقلید به طور گسترده در حوزهٔ یادگیری تقویتی یا RL (Reinforcement Learning) نیز استفاده می‌شود. یادگیری تقویتی یک روش یادگیری ماشینی است که مدل‌ها را به گونه‌ای آموزش می‌دهد که از تجربیات خود بهبود یابند و تصمیمات هوشمندانه‌تری بگیرند. در یادگیری تقویتی، یک ماشین یا عامل با تعامل با محیط، تجربه‌هایی را به دست می‌آورد و از این تجربیات برای ارزیابی و بهبود عملکرد خود استفاده می‌کند.

پس از مقاله تورینگ، زمینه رباتیک تحت تأثیر قرار گرفت و توسعه‌های بسیاری در این زمینه صورت گرفت. یکی از مهم ترین آنها مقاله "The Stanford Cart and the CMU Rover" اثرHans Moravec که در سال 1983 منتشر شد.

https://apps.dtic.mil/sti/citations/ADA133207

این مقاله به معرفی دو ربات معروف Stanford Cart و CMU Rover پرداخت و به بررسی توانایی‌های آن‌ها در حرکت و تعامل با محیط می‌پردازد. ربات Stanford Cart در دانشگاه Stanford توسعه یافته بود، یکی از نمونه‌های اولیه خودروهای خودکار بود.

Stanford Cart with cable, 1961: source
Stanford Cart with cable, 1961: source


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

ربات CMU Rover که در Carnegie Mellon University’s توسعه یافته بود، رباتی دیگر که برای حرکت در محیط‌های خارجی طراحی شده بود.

Iris, a small, boxy robot designed by CMU students, has passed its critical design review by NASA and is on track to land on the moon in the fall of 2021. source
Iris, a small, boxy robot designed by CMU students, has passed its critical design review by NASA and is on track to land on the moon in the fall of 2021. source


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

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

انواع مهم ترین Pretraining data

بعضی از پرکاربردترین Pretraining data ها که برای Reinforcement Learning مورد استفاده قرار می گیرند را بررسی می کنیم. انواع مهم ترین Pretraining data هایی که می توانیم استفاده کنیم شامل:

داده های شبیه سازی شده

این نوع داده ها از طریق شبیه سازی کامپیوتری تولید می شوند. D4RLو Meta-World یا Roboschoolرا می توان نام برد. داده‌های شبیه‌سازی شده به راحتی تولید و مدیریت می‌شوند و کم هزینه و به راحتی در دسترس هستند. ایمنی بالایی دارند چرا که استفاده از داده‌های شبیه‌سازی به معنای عدم وجود خطرات و تهدیدات فیزیکی برای ربات یا محیط است. با استفاده از این داده ها می‌توان شرایط و ویژگی‌های مختلف محیط را با دقت کنترل و آزمایش‌های متعددی را انجام داد.

البته می تواند باعث عدم تطبیق با محیط واقعی شود چون داده‌های شبیه‌سازی نمایانگر شرایط و ویژگی‌های محیط واقعی نیستند و ممکن است مدل ربات در محیط واقعی با شرایط متفاوت روبرو شود. شبیه‌سازی محیط‌ها همیشه نمی‌تواند به طور کامل واقعیت را بازتاب دهد و ممکن است با مشکلاتی مانند تفاوت در فرکانس برخورد با اشیاء، نقص‌های دقت حرکت و ... مواجه شود و گاهی باعث بروز مشکل در انتقال یادگیری می شود چرا که گاهی آموزش با داده‌های شبیه‌سازی، قابلیت انتقال یادگیری به محیط واقعی را ندارند و نیاز به تطبیق و تجربه در محیط واقعی دارند. محیط‌هایی مانند OpenAI Gym، MuJoCo، RoboCup Soccer Simulationو ... هستند. این محیط‌ها به عنوان یک منبع مهم برای تولید داده‌های شبیه‌سازی استفاده می‌شوند.

داده های واقعی

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

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

داده های ترکیبی

این نوع داده ها از تنوع داده‌های واقعی و شبیه‌سازی برخوردار هستند، می‌توان میزان کنترل بر شرایط محیطی را افزایش داد. همچنین می‌توانند انتقال یادگیری به محیط‌های واقعی را بهبود بخشند. تا حدودی ضعف های دو نوع داده دیگر را بهبود می دهد. البته مدیریت و تجزیه و تحلیل داده‌های ترکیبی پیچیده‌تر است و جمع آوری آن هزینه بالاتری را هم به دنبال دارد. به طور مثال Gym Retro از داده‌های تجربیات انسانی در بازی‌های کلاسیک Atari برای آموزش مدل‌های یادگیری تقویتی استفاده می‌کند. شرکت‌های فناوری معروف مانند Boston Dynamics و Tesla ممکن است از این روش‌ها برای آموزش مدل‌های خود استفاده کنند تا عملکرد و کارایی ربات‌ها و دستگاه‌های خود را بهبود بخشند. به‌عنوان مثال، تسلا ممکن است از داده‌های ترکیبی برای آموزش خودروهای خودران استفاده کند تا بهبود عملکرد خودروهای خود را در شرایط واقعی افزایش دهد و ایمنی رانندگی را ارتقاء دهد.

محیط شبیه سازی شده

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

روش‌های pre-training در Robotic

روش‌های pre-training در رباتیک مجموعه‌ای از تکنیک‌ها و الگوریتم‌هایی هستند که برای آموزش و بهبود عملکرد مدل‌های رباتیک استفاده می شود که از قدیم تا الان به روش های مختلفی استفاده می‌شوند. این روش‌ها معمولاً در محیط‌های شبیه‌ سازی اجرا می‌شوند تا از پیچیدگی‌ها و هزینه‌های زمانی و مالی کمتری نسبت به آموزش در محیط‌های واقعی بهره‌برداری شود. برای تسک های پیچیده تر ربات ها از DNN استفاده می شود. بنابراین در آموزش آنها از CNN ها وRNN مخصوصا Transformers ها استفاده می شود.

مثلا مدل‌های برای تشخیص اشیا یا بینایی در ربات‌ها وجود دارد. ربات "Spot" که توسط شرکت "Boston Dynamics" تولید شده برای تشخیص و جلوگیری ازبرخورد با اشیا و موانع در مسیر خود از DNNاستفاده می‌کند. مدل‌های برپایه RNN برای تشخیص و تولید گفتار در ربات‌های تبادل اطلاعات با انسان مانند ربات "Kismet" که توسط مرکز مطالعات رباتیک MIT ساخته شده است، از RNN ها برای تشخیص احساسات انسانی مبتنی بر صدا و تولید پاسخ‌های مناسب با استفاده از گفتار استفاده می‌کند. مدل‌های برپایه RL برای آموزش ربات‌ها به عنوان عامل‌های هوشمند در محیط‌های پویا مانند ربات "DeepMind's AlphaGo" از مدل‌های برپایه RL برای بهبود استراتژی بازی در بازی‌های انتخابی مثل بازی Go استفاده می‌کند. همچنین مدل‌های برپایه یادگیری نظارتیبرای آموزش ربات‌ها برای انجام وظایف خاص در محیط‌های گوناگون مناسب است. شرکت "iRobot" برای آموزش ربات‌های خانگی خود مانند Roomba برای انجام وظایف خاص مانند تمیزکاری محیط‌های داخلی استفاده می‌کند. این مدل‌ها با استفاده از داده‌های واقعی آموزش داده شده‌اند تا بهترین عملکرد را در شرایط محیطی مختلف ارائه دهند.

برخی از روش‌های pre-training در رباتیک عبارتند از:

یادگیری تقویتی پیش‌آموزشی (Pretraining Reinforcement Learning)

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

منظور از Pre-training data داده‌هایی است که قبلاز شروع فرآیند یادگیری تقویتی جمع‌آوری می‌شوند و برای آموزش مدل استفاده می‌شوند. این داده‌ها ممکن است از تجربیات گذشته، مثلا داده‌های یک ربات که قبلاً در محیط شبیه‌سازی حرکت کرده و تجربیات حاصل از این حرکت‌ها ذخیره شده باشد. داده های شبیه‌سازی‌های محیطی (شبیه‌سازی‌های فیزیکی یا سه‌بعدی) این داده‌ها معمولاً به عنوان جایگزینی برای محیط واقعی استفاده می‌شوند تا مدل بتواند به صورت ایمن و بدون نیاز به آزمایش مستقیم در محیط واقعی آموزش داده شود. یا حتی تجربیات انسانی (از طریق راهنمایی انسانی) مثلا فرض کنید ربات برای کمک به افراد سالمند در یک مرکز در حال آموزش باشد به این صورت می تواند نحوه رفتار و تعامل با افراد سالمند را از تجربیات مراقبان انسانی یاد بگیرد.

اما آیا این روش برای آموزش همه انواع ربات ها مناسب است یا خیر؟ باید گفت که، بستگی به تسک خاصی دارد که مدل را برای آن‌ آموزش می دهیم. موفقیت در آموزش به وسیله RL بستگی به Pre-training data معتبر و مرتبط با وظیفه‌ی نهایی دارد. مثلا برای ربات های صنعتی که نیاز به مسیریابی و حرکت در محیط‌های پیچیده را دارد، یا ربات های خانگی که نیاز به یادگیری تعامل با اجسام مختلف در محیط خانه دارد، یا برای ماشین‌های خودران که نیاز به یادگیری حرکت در جاده‌ها و محیط‌های شهری دارند، می‌توان از این روش استفاده کرد. سپس، برای بهبود عملکرد ربات در دنیای واقعی از Pre-trained model به عنوان ورودی برای RL استفاده کنیم. در قسمت بعدی مهم ترین محیط های شبیه سازی رو با کد بررسی می کنیم با من همراه باشید.

مهم ترین محیط های شبیه سازی برای یادگیری RL

در قسمت قبل دیدیم که با Pre-training data چطور می توانیم یادگیری روش RL را داشته باشیم. حال می خواهیم محیط های شبیه سازی مهمی که برای این کار وجود دارد رو بررسی کنیم. مدل های زیادی برای این کار وجود دارد که مهم ترین آنها عبارتند از:

اتاری DQN: Atari

اولین بار در مقاله ای در سال 2013 توسط شرکت DeepMind ارئه شد.

https://arxiv.org/abs/1312.5602

سیستم DQN بر پایه پاداش و جزا بنا شده است. ربات در ازای انجام اقدامات مطلوب پاداش دریافت می کند و برای اقدامات نامطلوب جریمه می شود. شامل تجربیات بازی‌های Atari توسط عامل‌های یادگیری تقویتی جمع‌آوری شده‌اند که برای آموزش مدل‌های RL مورد استفاده قرار می‌گیرد. به طوری که هر تجربه شامل وضعیت (state) فعلی بازی، عمل (action)ی که عامل انجام داده است، پاداش (reward) کسب شده و وضعیت بعدی بازی است. این مجموعه داده ابتدا توسط پژوهشگران برای آموزش مدل‌های RL مانند DQNاستفاده شد. DQN مخفف Deep Q-Network است. این الگوریتم از یک شبکه عصبی عمیق برای تخمین تابع ارزش Q استفاده می کند. تابع ارزش Q تابعی است که ارزش هر اقدام در یک محیط معین را تخمین می زند. ربات وضعیت فعلی محیط را می بیند و یک اقدام را بر اساس تخمین تابع ارزش Q انتخاب می کند. سپس یک پاداش از محیط دریافت و سپس با الگوریتم یادگیری تقویتی عمیق تابع ارزش Q را بر اساس پاداش دریافتی به روزرسانی می کند. این الگوریتم از جمله در رباتیک، بازی و هوش مصنوعی عمومی استفاده شده است.

DQN: Atari source
DQN: Atari source


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

محیط 2OpenAI Gym

این ابزار ابتدا در مقاله "OpenAI Gym" توسط Greg Brockman و دیگران از تیم OpenAI معرفی شد. این مقاله در اکتبر سال 2016 در کنفرانس بین‌المللی NIPS (Conference on Neural Information Processing Systems) ارائه شد.

https://arxiv.org/abs/1606.01540

محیط شبیه سازی OpenAI Gym یک کتابخانه برنامه‌نویسی Open source برای توسعه و آزمایش الگوریتم‌های RL است که امکان ایجاد و استفاده از محیط‌های آزمایشی متنوعی را برای توسعه‌دهندگان فراهم می‌کند. این ابزار از آن زمان به عنوان یکی از ابزارهای اصلی برای آموزش و توسعه الگوریتم‌های یادگیری تقویتی استفاده می‌شود.

برای فراخوانی OpenAI Gym در کد پایتون، فقط کافی است از کتابخانه Gym استفاده کنیم و محیط مورد نظر خودمان را فراخوانی کنیم. در ابتدا، باید کتابخانه Gym را نصب کنیم. به دستور زیر دقت کنید:

!pip install gym

حالا می‌توانیم محیط مورد نظر خود را با استفاده از تابع `make` فراخوانی کنیم. در کد زیر ما می‌خواهیم محیط CartPole یکی از محیط های معروف در OpenAI Gym است که برای تست و آموزش الگوریتم‌های RL مورد استفاده قرار می‌گیرد. به کد زیر دقت کنید:

import gym
# Choose the environment name
env_name = 'CartPole-v1'
# Create the environment
env = gym.make(env_name)
# Start the environment
observation = env.reset()

در محیط CartPole، یک عامل (agent) باید یک ستون به نام "cart" را با استفاده از یک "pole" بر روی آن به تعادل برساند. این ستون می‌تواند به چپ و راست حرکت کند و باید با استفاده از اقدامات مناسب، تعادل ستون را حفظ کند تا سیستم از وضعیت خود (که به سادگی به دلیل جاذبه واقعیت این محیط وزن‌گذاری می‌شود) جابجا نشود. در زمینه رباتیک، محیط CartPole می‌تواند به خصوص برای ربات‌هایی که باید تعادل خود را حفظ کنند بسیار مفید باشد. فرض کنید یک ربات انسان‌نما داریم که قرار است بتواند در مسیری سطح صاف و بدون مانع راه برود و سپس باید بتواند مثلا بچرخد و جسم خود را جابجا کند در عین حال تعادل خود را حفظ کند تا از افتادن خود جلوگیری کند.

OpenAI Gym. source
OpenAI Gym. source


محیط‌های موجود در OpenAI Gym شامل مجموعه‌ای از مسائل و وظایف مختلف هستند مثلا محیط‌ های بازی که شامل بازی‌های کلاسیک مانند Space Invaders، Breakout، Pac-Man و ... است. این محیط‌ها برای آزمون و ارزیابی الگوریتم‌های RL در زمینه بازی‌های ویدئویی بسیار مفیدند. محیط‌های کنترل محیطی شامل مسائل کنترل رباتیک و مسائل کنترل موتورها می‌باشد که به ارزیابی عملکرد الگوریتم‌های یادگیری تقویتی در مسائل کنترل پیچیدهکمک می‌کنند. همچنین محیط‌ های تصمیم ‌گیری گرافیکی مانند CartPole و Mountain Car که برای آزمون الگوریتم‌ های RL در مسائل ساده و انعطاف‌پذیر مورد استفاده قرار می‌گیرند. این کتابخانه همچنین ابزارهایی برای ثبت و ارزیابی عملکرد الگوریتم‌ها ارائه می‌دهد تا کاربران بتوانند نتایج خود را بهبود بخشند و تحلیل کنند.

محیط شبیه سازی MuJoCo

در سال 2004 توسط شرکت OpenAI توسعه داده شده است. این موتور برای استفاده در زمینه‌های مختلفی مانند رباتیک، کنترل حرکت، آموزش مدل‌های RLو تحقیقات علمی استفاده می‌شود. یک موتور شبیه‌ ساز فیزیکی open source که برای شبیه‌ سازی محیط‌ های فیزیکی و ایجاد محیط‌ های شبیه‌سازی برای آموزش مدل‌های RLاستفاده می‌شود. محیط ‌هایی شامل انواع مختلفی از مسائل مانند کنترل رباتیک، حرکت ماشین، مسائل پرنده‌های بدون سرنشین و غیره می‌شوند. از MuJoCo برای ایجاد محیط‌های شبیه ‌سازی با فیزیک دقیق و پویا استفاده می‌شود که به الگوریتم‌های RLامکان می‌دهد تا در یک محیط مطمئن و قابل کنترلآموزش ببینند و الگوریتم‌های خود را بهبود بخشند.

برای استفاده از MuJoCo، باید کتابخانه‌ای به نام mujoco-py برای استفاده در محیط‌های موجود در OpenAI Gym را نصب کنیم. این کتابخانه امکان فراخوانی موتور شبیه‌ساز MuJoCo را در پایتون فراهم می‌کند و اجازه می‌دهد تا محیط‌های شبیه‌سازی را ایجاد و کنترل کنید.

!pip install mujoco-py

برای استفاده از MuJoCo دو راه وجود داره هم می تونیم اون رو مستقیم صدا بزنیم و از کتابخانه های اون استفاده کنیم و هم می تونیم با استفاده از C API این کار رو انجام بدیم که البته برای C API باید مقداری تسلط به C++ داشته باشیم. برای استفاده از C API و خوندن اسناد اون میتونی به لینک گیت هاب زیر مراجعه کنید.

لینک گیت هاب C API (https://github.com/google-deepmind/mujoco/blob/main/README.md)

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

محیط RoboCup Soccer Simulation 2D/3D

شبیه ساز فوتبال RoboCup اولین بار در سال 1997 در مقاله ای تحت عنوان

https://www.researchgate.net/publication/220356386_Soccer_Server_A_Tool_for_Research_on_Multiagent_Systems

معرفی شد. هدف از این شبیه سازی ساختن یک محیط شبیه سازی قابل کنترل و قابل تکرار برای آزمایش الگوریتم های جدید هوش مصنوعی برای فوتبال رباتیک بود. فوتبال RoboCup یکی از مسابقات برجسته در حوزه رباتیک و هوش مصنوعی است. این مسابقات از سال 1997 هر ساله در مکان‌های مختلفی از جهان برگزار می‌شوند. هدف اصلی این مسابقات، توسعه و پیشرفت تکنولوژی‌های مرتبط با هوش مصنوعی، رباتیک، و یادگیری ماشینی است. RoboCup Soccer Simulation یک زمین فوتبال را شبیه سازی می کند که شامل ربات ها توپ و موانع است و قوانین فیفا را با اندکی تغییر که برای ساده سازی سبیه سازی دارد. ربات ها در آن از الگوریتم های هوش مصنوعی برای کنترل حرکات خود تصمیم گیری ها و تعامل با سایر ربات ها استفاده می کنند. به دو صورت 2D و 3D برگزار می‌شود. در مسابقات 2D، ربات‌ها در یک صفحه دوبعدی بازی می‌کنند و از بالایی نمایش داده می‌شوند.

2D game visualization. source
2D game visualization. source


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

3D game visualization. source
3D game visualization. source


برای استفاده از محیط RoboCup Soccer Simulation 2D/3D در پایتون، می‌توانیم از کتابخانه‌های مختلفی که این محیط را پشتیبانی می‌کنند، استفاده کنید. برخی از این کتابخانه‌ها شامل PySimulator و rcssserver3d می‌باشند. این کتابخانه‌ها محیط مسابقه را فراخوانی کنیم.

from rcssserver3d import Server
# Create a server instance
server = Server()
# Start the server
server.start()
# Interact with the robotic environment (code for interaction goes here)
# Stop the server
server.stop()

این کد یک سرور RoboCup 3D را فراخوانی کرده و به شما اجازه می‌دهد تا با محیط رباتیک تعامل کنید. لازم به ذکر است که برای استفاده از این کتابخانه‌ها، ابتدا باید آن‌ها را نصب کنید و مطابق با مستندات مربوطه آن‌ها را تنظیم کنید.

نصب و راه‌اندازی کتابخانه rcssserver3d بسیار پیچیده و وابسته به سیستم است. این کتابخانه به طور معمول بر روی سیستم‌های لینوکسی استفاده می‌شود و نیاز به تنظیمات و پیکربندی‌های اضافی دارد. مراحل نصب و راه‌اندازی بسیار پیچیده است و به عوامل مختلفی مانند سیستم عامل، نسخه‌های مختلف، وابستگی‌های نرم‌افزاری و ... بستگی دارد. راهنمای رسمی و مستندات کتابخانه rcssserver3d برای نصب و راه‌اندازی استفاده کنید. بعد از نصب ، می‌توانید از کدی مشابه کدی که در بالا می بینید، برای فراخوانی و استفاده از محیط RoboCup 3D استفاده کنید.

در قسمت بعد به بررسی نحوه دیگری از یادگیری در ربات ها می پردازیم.

یادگیری تقلیدی Imitation Learning (IL)

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

برای IL دو رویکرد اصلی می توانیم داشته باشیم:

شبیه سازی رفتاری : (Behavioral Cloning)

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

یادگیری تقویتی معکوس (Inverse Reinforcement Learning (IRL))

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

کاربردهای زیادی برای روش Imitation Learning می توان نام برد. مثلا از آن در رباتیک آموزش کارهایی که برای انسان آسان است مثل آشپزی کردن یا تا کردن لباس می توان بهره برد یا در بازی های ویدئویی اغلب از روش IL برای آموزش عامل های هوش مصنوعی استفاده می شود. به طوری که آنها نحوه بازی کردن را از بازیکنان ماهر یاد میگیرند. همچنین در رباتیک جراحی هم ربات با یادگیری از جراحان متخصص برای انجام جراحی های ظریف می تواند به خوبی عمل کند.

روش های پیاده سازی

برای روش IL، مدل‌های از پیش آموزش دیده وجود دارند. این مدل‌ها معمولاً با استفاده از روش‌هایی مانند CNN در Deep Learning آموزش داده می‌شوند. معمولا برای پیاده‌سازی IL، از محیط‌های شبیه‌سازی نیز استفاده می‌شود. برای استفاده از محیط‌های شبیه‌سازی می‌توانید از کتابخانه‌های مختلفی استفاده کنید. به عنوان مثال، اگر می‌خواهید با OpenAI Gym کار کنید، کتابخانه gym را می‌توانید نصب کنید و از محیط‌های آموزشی آن استفاده کنید. این محیط‌های شبیه‌سازی می‌توانند شبیه‌ساز‌های فیزیکی مانند OpenAI Gym، Mujoco، Unity ML-Agents و یا محیط‌های شبیه‌سازی موجود در ROS (Robot Operating System) باشند.

مهم‌ترین مدل‌های از پیش آموزش‌دیده برای روش IL

مدل‌های مبتنی بر DQN که در بالا به صورت کامل توضیح داده شد و برای آموزش ربات‌ها در وظایف مختلفی مانند کنترل بازو، ناوبریو بازی استفاده شده می شود. مثالهایی که می توان برای آن اشاره کرد مثل Humanoid-Gym توسط RobotEra، یک شرکت رباتیک مستقر در هنگ‌کنگ، معرفی شده است. این کتابخانه مجموعه‌ای از محیط‌های شبیه‌سازی برای آموزش ربات‌های انسان‌نما را ارائه می‌دهد. و ویژگی هایی مثل پویایی بدن، تعادل، و حرکات انعطاف‌پذیر انسان‌نماها را دارد. بیشتر برای آموزش الگوریتم‌های Imitation Learning و Reinforcement Learningاستفاده می‌شود.

در IL عموماً برای انجام حرکات صحیح، از مدل‌هایی که از داده‌های توصیفی یا داده‌های توصیفی و عملیاتییاد گرفته‌اند، استفاده می‌شود. داده‌های توصیفی فقط ویژگی‌های ورودی مورد نیاز برای مدل را شامل می‌شوند، بدون اینکه خروجی متناظر (عمل) را ارائه دهند. به عبارت دیگر، این داده‌ها اطلاعاتی را ارائه می‌دهند که توصیفی از وضعیت فعلی یا محیط است، اما عمل متناظر با آن وضعیت ارائه نمی‌شود. مثل تصاویر، ویدئوها، سنسورها، یا ویژگی‌های دیگری که وضعیت فعلی محیط را توصیف می‌کنند.

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

در واقع هدف اصلی در ILاین است که بتوانیم از داده‌های موجود (معمولاً یک مجموعه از تصاویر یا ویدئوها) یا از تعامل با محیط، یک مدل یادگیری ماشینی به نام "کارگر" ایجاد کنیم که توانایی تقلید حرکات را دارد. این حرکات می‌توانند عملیات مختلفی باشند، از جمله حرکات یک ربات، حرکات موشن کاربر در یک بازی ویدئویی، یا حتی حرکات انسان‌نما در یک محیط واقعی یا مجازی. هرچند که Humanoid-Gym ابزار قدرتمندی برای یادگیری تقلیدی است، و می تواند برای یادگیری تقویتی و سایر روش های یادگیری ماشینی هم استفاده شود. Humanoid-Gym یک ابزار فعالانه توسعه یافته است و به طور مداوم در حال بهبود است.

محیط شبیه سازی Humanoid-Gym

برای آموزش ربات‌های مختلف از جمله ربات‌های XBot-S و XBot-L خودِ شرکت RobotEraاستفاده شده است. شرکت هایی مثل Agility Robotics از Humanoid-Gymبرای آموزش ربات Digit خود استفاده کرده است. ANYbotics برای آموزش ربات ANYmal و OpenAI برای آموزش ربات Dactylخود استفاده کرده است. Humanoid-Gym یک ابزار قدرتمند برای آموزش ربات‌های انسان‌نما است. این کتابخانه به محققان و مهندسان اجازه می‌دهد تا الگوریتم‌های جدید کنترل ربات را بدون نیاز به سخت‌افزار واقعی ربات آزمایش و توسعه دهند.

مزایای استفاده از Humanoid-Gym یک محیط شبیه‌سازی شده است، بنابراین خطر آسیب رساندن به ربات یا انسان در حین آموزش وجود ندارد. به شما امکان می‌دهد تا الگوریتم‌های خود را سریع‌تر و کارآمدتر از روی ربات واقعی آموزش دهید و محیط شبیه‌سازی را برای مطابقت با ربات و وظیفه‌ی خاص خود تنظیم کنید. البته همیشه بین محیط شبیه‌سازی شده و دنیای واقعی شکافی وجود دارد. این شکاف می‌تواند بر عملکرد الگوریتم شما در ربات واقعی تأثیر بگذارد. همچنین Humanoid-Gymیک ابزار پیچیده است و ممکن است برای استفاده از آن به دانش تخصصی نیاز داشته باشید.

مدل‌های مبتنی بر Actor-Critic: A2C

این مدل از دو شبکه عصبی عمیق، Actor-Critic تشکیل شده اند. Actor که شبکه‌ عصبی‌ای است که مسئول تولید حرکات و اعمال عامل در محیط است و تصمیم‌ گیری‌های عملی را بر اساس خروجی‌های تابع Advantage Function انجام می‌دهد. به طور کلی، Actorبه دنبال انتخاب حرکتی است که مزیت بیشتری نسبت به حرکت‌های دیگر دارد. همچنین Criticشبکه‌ی عصبی دیگری است که مسئول تخمین Value Function وضعیت‌های مختلف در محیط است. Critic ارزش وضعیت‌ها را تخمین می‌زند تا Actor بتواند بهترین حرکت را انتخاب کند. در واقع با ترکیب این دو شبکه، Actor-Critic بهبود در عملکرد عامل را ایجاد می‌کند.

این الگوریتم با استفاده از Loss Function، که شامل مجموع خطاهای تابع ارزش و مزیت است، و بهبود در عملکرد عامل شبکه‌های عصبی را به‌روزرسانی می‌کند. این الگوریتم به دلیل ترکیب از Actor و Critic و همچنین استفاده از تجربه جریانی (online) می‌تواند به صورت مؤثر و سریع عملکرد عامل را بهبود بخشد. A2C برای آموزش ربات‌ها در وظایف مختلفی مانند کنترل بازو، ناوبری و بازی استفاده شده است.

مدل TRPO (Trust Region Policy Optimization)

الگوریتم TRPO (Trust Region Policy Optimization) اولین بار توسط John Schulman و همکارانش در سال 2015 ارائه شد و مقاله مربوط به آن با عنوان "Trust Region Policy Optimization" در کنفرانس بین‌المللی Machine Learning (ICML) ارائه شد.

https://arxiv.org/abs/1502.05477

یک روش پیشرفته در زمینه یادگیری تقویتیاست که برای آموزش سیاست (Policy) در محیط‌های پیچیده استفاده می‌شود. این الگوریتم با محدود کردن میزان تغییرات در سیاست آموزش، به مشکل تغییرات بزرگ و ناپایداری در آموزش راه‌حل ارائه می‌دهد. یکی از مهمترین ویژگی‌های TRPO استفاده از یک منطقه اعتماد (Trust Region) است که در آن تغییرات سیاست قابل قبول تلقی می‌شود. با اعمال این محدودیت، TRPOتضمین می‌کند که هر تغییر در سیاست آموزش که انجام می‌شود، به گونه‌ای باشد که موجب بالا رفتن عملکرد عامل شود، اما به حدی نباشد که عملکرد را بطور قابل توجهی تحت تأثیر قرار دهد.

ویژگی دیگر (Stable Progress) TRPO که سعی در ایجاد پیشرفت پایدار در آموزش دارد، به این معنی که هرگز سیاست جاری را به طور کامل جایگزین سیاست جدید نمی‌کند. به جای اینکه مستقیماً بهینه‌سازی شود، TRPOاز محدودیت‌های منطقه اعتماد استفاده می‌کند تا تغییرات در سیاست را کنترل کرده و از تغییرات ناپایدار جلوگیری کند.

ویژگی بعدی Direct Optimization Methodاست که برخلاف بسیاری از روش‌های یادگیری تقویتی که از روش‌های تخمین گرادیان استفاده می‌کنند، TRPOاز روش مستقیم کمینه‌سازی استفاده می‌کند. این به معنای این است که در هر مرحله، سعی می‌کند یک سیاست جدید را پیدا کند که میزان عملکرد را افزایش دهد، اما در همان زمان محدودیت‌هایی را اعمال می‌کند تا از تغییرات ناپایدار جلوگیری کند.

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

مدل PPO (Proximal Policy Optimization)

در سال 2017، John Schulmanو همکارانش الگوریتم PPO را در قاله ای با عنوان Proximal Policy Optimization Algorithms معرفی کردند.

https://arxiv.org/abs/1707.06347

مدل PPO بعد از TRPO معرفی شد و به عنوان یک روش ساده‌تر و مقیاس‌پذیرتر برای آموزش سیاست‌های تقویتی ارائه شد که با استفاده از مفاهیمی مانند محدودیت مستقیمی بر روی تغییرات سیاست و بهبودات در عملکرد بهبوداتی نسبت به TRPOارائه می‌کند. PPO یک روش یادگیری تقویتی است که بر مبنای الگوریتم‌های بهینه‌سازی مبتنی بر گرادیان عمل می‌کند و برای آموزش سیاست (Policy) در الگوریتم‌های Actor-Critic مورد استفاده قرار می‌گیرد. PPOبرای آموزش ربات‌ها در وظایف پیچیده‌تر مانند کنترل ربات انسان‌نما و ناوبری در محیط‌های شلوغ استفاده شده است. این الگوریتم بهبودهایی نسبت به روش‌های قبلی مانند ایجاد کرده است و برای مواجهه با مشکل تغییرات بزرگ در سیاست آموزش و overfittingدر الگوریتم‌های یادگیری تقویتی طراحی شده است. ارتباط این الگوریتم با مطلبی که در بالا ذکر شده، این است که هر دو الگوریتم (A2C و PPO) به عنوان روش‌های یادگیری تقویتی بر مبنای الگوریتم‌های Actor-Critic استفاده می‌شوند.

مدل T2T-ViL (Transformer to Transformer - Vision and Language)

یک مدل شبکه عصبی عمیق است که در سال 2021 توسط محققان دانشگاه Carnegie Mellon معرفی شد. این مدل از دو شبکه عصبی Transformer به نام‌های "Text Transformer" برای پردازش و تفسیر متن و "Vision Transformer" برای پردازش و تفسیر تصاویر تشکیل شده است. این دو شبکه به صورت همزمان و پیوسته با یکدیگر کار می‌کنند. حال میخواهیم ببینیم که این کار را چگونه انجام می دهد.

مدل Text Transformer

مدل T2T-ViL مشابه با مدل‌هایی مانند GPT (Generative Pre-trained Transformer) که از معماری Transformer برای پردازش متون زبان طبیعی مناسب است. به عنوان نمونه، GPT برای تولید متن بر اساس متن ورودی استفاده می‌شود، در حالی که Text Transformer برای پردازش و تفسیر متن در ارتباط با تصاویر به کار می‌رود. اما اصولاً هر دوی این مدل‌ها ازself-attentionو feed-forward networks برای پردازش متون استفاده می‌کنند.

مدل Vision Transformer

یک مدل نوظهور است که هنوز در حال توسعه است و پتانسیل بالایی برای استفاده در ربات‌های مختلف دارد. نوعی شبکه عصبی عمیق است که در T2T-ViLبه کار می‌رود، مزیت اصلی Vision Transformer نسبت به مدل‌های قبلی بر پایه CNN، این است که نیازی به بلوک‌های کانولوشنی ندارند و به جای آن از بلوک‌های Transformerاستفاده می‌کنند که می‌توانند به طور موثر‌تری الگوهای معنایی در تصاویر را کشف کنند. الگوهای معنایی پیچیده‌تری را در تصاویر شناسایی کنند. Vision Transformerنوعی مدل Transformer است که برای پردازش تصاویر طراحی شده و این مدل با مدل‌های Transformer سنتی که برای پردازش متن استفاده می‌شوند، تفاوت‌های ظریفی دارد. مدل Vision Transformer تصویر را به Bach های کوچک‌تر تقسیم می‌کند، و از هر Bach، ویژگی‌های بصری مانند رنگ، شکل و بافت را استخراج می‌کند، همچنین از self-attention برای تمرکز بر روی بخش‌های مرتبط تصویر استفاده می‌کند، در نتیجه خروجی مدل می‌تواند یک دسته، یک دنباله از اعمال، یک پاسخ به سوال یا ... باشد. همچنین از مکانیزم توجه برای تمرکز بر روی بخش‌های مرتبط تصویر استفاده می‌کند، در حالی که در Transformer سنتی این موارد ر ا برای متن و کلمات به کار می برد.

چنین مدل‌های پیچیده‌ای ابتدا Pre-trainingداده می‌شوند تا از محتوای تصاویر و متن دانش عمیقی را به دست بیاورند که به طور کلی شامل دو مرحله مهم است. مرحله اول Task-agnostic pre-trainingاست که مدل بر روی داده‌های بزرگ و گسترده‌ای از جمله متون و تصاویر متنوع است، آموزش داده می‌شود. مدل به طور خودکار الگوها، ویژگی‌ها و ارتباطات معنایی بین اجزای ورودی‌ها را فرا می‌گیرد. معمولاً در این مرحله از روش‌هایی مانند self-supervised learning و مدل‌های self-supervised models استفاده می‌شود. به عنوان مثال، مدل ممکن است به صورت خودنمایی یا بر پایه وظیفه‌های مانند پیش‌بینی کلمه بعدی در یک متن آموزش داده شود. مرحله بعدی Task-specific fine-tuningکه در آن، مدل پیش‌آموزش داده شده بر روی یک وظیفه خاص، مانند تشخیص اجسام در تصاویر یا ترجمه متن، به طور اختصاصی آموزش داده می‌شود. این فرایند به مدل کمک می‌کند تا دانش عمیقی در مورد وظیفه مورد نظر بدست آورد و عملکرد بهتری در آن وظیفه ارائه دهد.

این اطلاعات سپس می‌توانند در فرآیند Fine-tuning که پس از Pre-trainingمدل، انجام می‌شود تا مدل بر روی یک وظیفه خاصی مانند تصاویر و برچسب‌های آن‌ها یا متون و متناظر با آن‌ها، آموزش داده شود تا در انجام تسک ها عملکرد بهتری ارائه دهد.

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

سپس می‌توانید با فراخوانی مدل و اجرای آن بر روی داده‌ها، خروجی‌های مورد نظر را دریافت کنید.

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

نتیجه گیری :

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

در پارت 1 و 2 این مقاله به تفضیل در موردpre-trained models مناسبText و image صحبت کردیم و آنها را آموختیم در پارت 3 از تاریخچه ربات و مقالات مهم این حوزه و هم چنین نحوه آموزش آنها از ابتدا صحبت کردیم. صنعت رباتیک هنوز در حال پیشرفت است و راه درازی در پیش رو دارد. ربات ها با تمام پیشرفت هایی که داشته اند و در حال تکامل هستند. هنوز به نقطه قوی نرسیده اند. چرا که مثلا مانند LLM ها یا مدل های بینایی ماشین نیستند که در محیطی کنترل شده قرار داشته باشند. ربات ها برای تعامل با محیط واقعی و فیزیکی باید بهبود پیدا کنند. در محیط کنترل شده ربات ها می توانند بسیار خوب عمل کنند. اما در محیط واقعی و بدون کنترل اوضاع متفاوت است. به غیر از قوانین فیزیک که خیلی از آنها قابل پیش بینی نیست داده ها در محیط واقعی در لحظه در حال تولید شدن هستند و هزاران هزار احتمال برای چگونگی وقوع دارند. بنابراین ممکن است که آموزشی که ربات دیده است در خیلی از مسائل که در لحظه اتفاق می افتد مناسب نباشد.

انسان ها و موجودات زنده هم با هزاران سال زندگی و همچنین غریزه و نیروی زیستی توانسته اند به این مرحله برسند. شاید اگر در اینده مدلی طراحی شود مثلا که مانند نوزاد موجودات زنده بتواند در لحظه یادگیری انجام دهد. کلید حل مسئله باشد. حل همه این مسائل می تواند منجر به رسیدن به AGI شود. مدلی که بتواند درک کند که وجود دارد. ما می توانیم درک وجودی داشته باشیم ما میدانیم که الان در سیاره هستیم. هدف داریم. اما هوش مصنوعی هنوز به آن مرحله نرسیده است حال تصور کنید که این اتفاق رخ دهد . آیا باید از آن ترسید؟ باید خوشحال شویم ؟ انسان باهوش ترین موجود سیاره است البته تعاریف هوش متفاوت است و ممکن است خیلی از افراد تعریف دیگری داشته باشند. همچنیین میدانیم که هوش مصنوعی می تواند خیلی از ما باهوش تر باشد. اگر ربات ها به مرحله فهم از خود برسند ما دومین هوش برتر خواهیم شد. و اگر خطر این را هم در نظر نگیریم. مهم تر از آن کسی است که کلید AGI را در دست دارد . کنترل! سکانس های آخر فیلم ماتریکس 2 را به خاطر بیاورید زمانی که لئو با " کنترل " صحبت کرد. مقداری ترسناک می شود . اما از جنبه های دیگر هم میتوان به آن نگاه کرد. شاید جواب خیلی از سوالات و مسائل در طول تاریخ بی جواب مانده با AGI حل شود. نظر شما چیه ؟ لطفا در نظرات این مقاله ما من به اشتراک بگذارید.

ممنون از شما که با من همراه بودید . منتظر نظرات شما هستم.


ممنون از شما که در این سفر به دنیای Deeps با من همراه بودید.

لینک پارت 2 به انگلیسی در Medium

# پارت 1 : مهم ترین pre-trained model برایtext, را از آغاز بررسی و مقایسه خواهیم کرد.

# پارت2 : ما مدلهای پیشآموزش دیده مهم در زمینه تصویر (AlexNet ,VGG , GoogLeNet ,ResNet, MobileNet, MobileNetV2) را از ابتدا تا امروز بررسی و با هم مقایسه خواهیم کرد.

# پارت 3: می خواهیم مدل های پیش آموزش دیده و محیط های شبیه شازی که برای آموزش در رباتیک استفاده می شوند (Atari, OpenAI Gym2, MuJoCo, RoboCup, RoboCup Soccer, Humanoid-Gym) و همچنین با چالش های آنها بیشتر آشنا شویم.

لطفا اگر مایل بودید مقاله دیگر من " آیا DeepFakeفناوری آینده‌ای است یا یک تهدید؟ آیا خط میان واقعیت و ساختگی از بین خواهد رفت؟ " رو در ویرگول ببینید .

پلتفرم Hugging Faceچیست و چه کاربردهایی دارد؟

امیدوارم از مطالب لذت برده باشید .

هوش مصنوعییادگیری تقویتیشبیه سازیرباتیکدیتاساینتیست
جونیور دیتاساینتیتست
شاید از این پست‌ها خوشتان بیاید