یادگیری ماشین یا ماشین لرنینگ (Machine learning)

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

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

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

یادگیری ماشین یا ماشین لرنینگ چیست؟

هوش مصنوعی یکی از عباراتی است که همه ما در سال‌های اخیر بیش از پیش آن را شنیده ایم. یکی از زیرمجموعه‌های بسیار مهم هوش مصنوعی، “یادگیری ماشین (Machine learning)” است. یادگیری ماشین مشابه همان یادگیری طبیعی در موجودات زنده (از جمله انسان) است، اما برای ماشین‌های مصنوعی ساخته شده توسط بشر.

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

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

یادگیری ماشین را می‌توان از جهت نوع یادگیری به سه دسته کلی تقسیم کرد:

انواع یادگیری ماشین
انواع یادگیری ماشین

یادگیری تحت نظارت (Supervised learning)

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

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

یادگیری تحت نظارت
یادگیری تحت نظارت

روش‌های k-Nearest Neighbor (kNN)، شبکه‌های عصبی (Neural networks)، Linear regression و Naïve Bayes از جمله الگوریتم‌های شناخته شده و پرکاربرد برای این نوع یادگیری هستند.

یادگیری بدون نظارت (Unsupervised learning)

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

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

یادگیری بدون نظارت
یادگیری بدون نظارت

روش‌های k-means، شبکه‌های عصبی (Neural networks) و DBSCAN از جمله الگوریتم‌های شناخته شده و پرکاربرد برای این نوع یادگیری هستند.

یادگیری تقویتی (Reinforcement learning)

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

مجددا همان مثال قبل را در نظر بگیرید. همچنان ربات قرار است میوه‌ها را دسته‌بندی کند، اما این بار هر میوه را که در سبد قرار داد با پاداش/تنبیه به او بازخورد داده می‌شود. مثلاً اگر پرتقالی را در کنار سایر پرتقال‌ها قرار داد، به او پاداش ۱۰+ می‌دهیم. اگر پرتقالی را در سبد نارنگی‌ها قرار داد به او پاداشی نمی‌دهیم (معادل عدد صفر). اما اگر پرتقالی را در کنار موزها قرار داد به او تنبیه ۱۰- را اختصاص می‌دهیم. انتظار می‌رود ربات پس از مدتی آزمون و خطا، در انتها تشخیص دهد که هر میوه‌ای را در چه سبدی قرار دهد.

یادگیری تقویتی
یادگیری تقویتی

روش‌های Monte Carlo، Q-Learning و SARSA از جمله الگوریتم‌های شناخته شده و پرکاربرد برای این نوع یادگیری هستند.

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

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

اساسی ترین مشکل یادگیری تقویتی نیز هزینه بسیار زیادِ احتمالیِ تعاملِ عامل (Agent) با محیط، و یا حتی عدم توانایی در تصمیم درست پس از یادگیری است. این هزینه می‌تواند مالی ( در صورت تعامل عامل با یک محیط فیزیکی و تخریب احتمالی آن در حین یادگیری) یا حتی جانی (جان باختن یک عابر پیاده در اثر تصادف با خودروی خودران شرکت اوبر در سال ۲۰۱۸) باشد.

دانشجوی مهندسی مکانیک باید از کجا شروع کند؟

امروزه در حوزه‌ی کنترل و رباتیک، پیاده‌سازی بسیاری از کنترلرها و عملگرها به کمک Reinforcement Learning و بینایی ربات‌ها توسط شبکه‌های عصبی پیچیده (CNNs) انجام می‌پذیرد. در حوزه‌ی سیالات، دانشمندان به دنبال آن هستند تا بتوانند بسیاری از روابط دیفرانسیل موجود در روابطی چون نویر – استوکس را به کمک شبکه‌های عصبی حل کنند و زمان مورد نیاز برای مدل‌سازی‌های کامپیوتری را چندین بار کاهش دهند. و در زمینه‌ی ارتعاشات هم عیب‌یابی و تعمیر و نگهداری پیش‌بینانه سیستم‌ها و تحلیل سیگنال‌های ارتعاشی آن‌ها، به وسیله‌ی هوش مصنوعی انجام می‌پذیرد و بازاری چند ده میلیارد دلاری در دنیا دارد.

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

گام دوم، آشنایی با شبکه‌های عصبی ساده و انواع روش‌های هوش مصنوعی است. کورس Machine Learning دانشگاه استنفورد ارائه شده توسط Andrew Ng در وبسایت بین‌المللی Coursera، یکی از پربازدیدترین دوره‌های موجود است. (این دوره‌ها به صورت رایگان قابل دسترس است و در صورت نگارش درخواست رسمی در وبسایت مربوطه، می‌توانید حتی به تمرین‌ها و کوییزها هم دسترسی پیدا کنید و در انتها مدرک به نام خودتان دریافت کنید).

بعد از فراگیری این دوره، مجموعه کورس‌های Deep Learning Specialization وبسایت کورسرا نیز می‌تواند شما را با مسائل چالشی‌تری آشنا کند. این دوره به صورت پنج کورس پیشرفته‌‌تر توسط Andrew Ng ارائه می‌شود و شما را با مفاهیم شبکه‌های عصبی پیچیده، شبکه‌های بازگشتی، شبکه‌های عمیق و … آشنا می‌کند. پس از گذراندن این دوره‌ها و با توجه به زمینه‌ی کاری و علایقتان، می‌توانید سراغ دوره‌های بسیاری که در اینترنت وجود دارند و یا کتاب‌های بسیار مفیدی که نگارش شده‌اند، سر بزنید و با انجام پروژه‌های واقعی، به مهارت خود بیفزایید.

مهندس مهدی عبداله چالکی
مهندس مهدی عبداله چالکی

نویسنده:

مهندس مهدی عبداله چالکی

دانشجوی کارشناسی ارشد مهندسی مکانیک دانشگاه تهران – گرایش طراحی کاربردی

مهندس بهنام یزدان‌خو
مهندس بهنام یزدان‌خو

نویسنده:

مهندس بهنام یزدان‌خو

دانشجوی دکترای مهندسی مکانیک دانشگاه تهران- گرایش طراحی کاربردی – شاخه دینامیک، کنترل و ارتعاشات

مراجع:

[۱] https://towardsdatascience.com/reinforcement-learning-101-e24b50e1d292

[۲] https://techvidvan.com/tutorials/types-of-machine-learning/

[۳] https://medium.com/ai%C2%B3-theory-practice-business/reinforcement-learning-part-1-a-brief-introduction-a53a849771cf

[۴] https://en.wikipedia.org/wiki/Machine_learning