در سالهای گذشته انسانها فکر میکردند که خودشان تنها موجودات هوشمندی هستند که از توانایی یادگیری برخوردارند. امروزه بشر ماشینهایی طراحی کرده است که با بهرهگیری از شیوه یادگیری مغز انسان میتواند بیاموزد. یادگیری ماشین همان تکنولوژی نوظهوری است که با کمک الگوریتمهای خاص خود میتواند دادهها را جمعآوری کرده و تجربیات خود را در تشخیص مسائل پیرامون و حل آنها افزایش دهد.
در عوض الگوریتمهای یادگیری ماشین به کامپیوترها امکان آموزش ورودی دادهها و استفاده از تجزیه و تحلیل آماری برای گرفتن خروجی در یک محدوده خاص را میدهد.
به عبارت دیگر یادگیری ماشینی روشی برای تجزیه و تحلیل داده است که این امکان را فراهم میکند تا یک مدل تحلیلی را به صورت خودکار بسازیم. این حوزه در واقع شاخهای از هوش مصنوعی است که مبتنی بر این ایده است که سیستمها می توانند از دادهها یاد بگیرند، الگوها را شناسایی کنند و با کمترین دخالت انسان تصمیم بگیرند.
به همین دلیل یادگیری ماشین کار کامپیوترها را در ساخت مدل از دادههای نمونه تسهیل میکند تا فرایندهای تصمیمگیری بر اساس ورودی دادهها بهصورت خودکار انجام شود.
امروزه تقریباً تمام افرادی که از تکنولوژی استفاده میکنند، از مزایای یادگیری ماشین بهرهمند میشوند. مثالهایی از کاربردهای یادگیری ماشین عبارتاند از:
در ماشین لرنینگ وظایف بهطورکلی در دستههای گستردهای قرار میگیرند. این دستهبندیها بر اساس چگونگی دریافت یادگیری یا نحوه بازخورد سیستم توسعهیافته در یادگیری انجام میشود.
ولی به طور کلی یادگیری ماشین شامل سه زیر حوزه اصلی است:
1- یادگیری نظارت شده (Supervised Learning)
2- یادگیری بدون نظارت (Unsupervised Learning)
3- یادگیری تقویتی (Reinforcement Learning)
در یادگیری ماشین نظارت شده ورودیهایی با برچسب خروجی دلخواه به ماشین داده میشود. هدف این الگوریتم این است که ماشین بتواند خروجی واقعی را با خروجی آموزش داده شده مقایسه کرده و مدل را متناسب با آن اصلاح کند؛ بنابراین یادگیری نظارت شده از الگوهایی برای پیشبینی ورودیهای جدید استفاده میکند.
بهعنوانمثال تصور کنید با یادگیری نظارت شده تصاویری از کوسه با برچسب ماهی و تصاویری از دریاها با برچسب آب به سیستم دادهاید. حالا سیستم شما باید بتواند تصاویر جدید کوسهها بدون برچسب را بهعنوان ماهی و تصاویر دریاها بدون برچسب را با عنوان آب شناسایی کند.
از الگوریتم یادگیری ماشین نظارت شده برای پیشبینی وقایع احتمالی آینده با کمک دادههای تاریخی استفاده میشود. از دیگر کاربردهای یادگیری نظارت نشده میتوان به پیشبینی نوسانات آینده بازار بورس، فیلتر کردن ایمیلهای هرزنامه و غیره اشاره کرد.
در یادگیری بدون نظارت دادههای ورودی برچسب ندارند؛ بنابراین الگوریتم یادگیری ماشین نظارت نشده تلاش میکند نقاط مشترک بین دادههای ورودی را پیدا کند (در این نوع از یادگیری مدل ورودیها بر اساس ویژگی ها، تفکیک و دسته بندی میشوند). از آنجایی که تعداد دادههای بدون برچسب همواره بیشتر از دادههای با برچسب است، فراگیری آموزش یادگیری ماشین نظارت نشده اهمیت ویژهای دارد.
کشف الگوهای پنهان در یک مجموعه داده میتواند یکی از اهداف یادگیری نظارت نشده باشد. هدف دیگری که برای این الگوریتم میتوان بیان کرد این است که یک ماشین محاسباتی بتواند دادههای خام را به طور خودکار طبقهبندی کند.
یکی از کاربردهای مهم یادگیری نظارت نشده استفاده از آن در دادههای معاملاتی است. تصور کنید یک مجموعه داده بزرگ از مشتریان و خریدهای آنان دارید، دستهبندی آنها و تفکیک انواع خریدها برای انسان کار دشوار و زمانبری است؛ بنابراین این الگوریتم به شما کمک میکند که بهراحتی این کار را انجام دهید.
یادگیری تقویتی یک روش آموزش یادگیری ماشینی است که بر اساس پاداش دادن به رفتارهای دلخواه و/یا تنبیه رفتارهای نامطلوب است. به طور کلی، یک عامل یادگیری تقویتی قادر است محیط خود را درک و تفسیر کند، اقداماتی انجام دهد و از طریق آزمون و خطا یاد بگیرد. این حوزه به خصوص در حوزه رباتیک کاربرد دارد. همانطور که در شکل زیر میبینید با اعمال یک اکشن خروجی مدل اندازه گیری شده و با مقایسه با خروجی مطلوب آن، آن ویژگی تقویت یا تضعیف میشود.
اگر به آموزش یادگیری ماشین علاقه دارید، باید الگوریتمهای یادگیری ماشین را بهخوبی درک کنید. یادگیری ماشین ارتباط تنگاتنگی با آمار محاسباتی دارد؛ بنابراین داشتن دانش پیشزمینه در آمار برای درک و استفاده از الگوریتمهای یادگیری ماشین مفید است.
اگر هیچ مطالعهای در زمینه آمار نداشتهاید، یادگیری تعریف همبستگی و رگرسیون برای شما لازم است. زیرا این روشها معمولاً برای بررسی رابطه بین متغیرهای کمی استفاده میشوند.
رویکردها و الگوریتمهای یادگیری ماشین به طور مدام در حال توسعه هستند؛ بنابراین شما باید همواره اطلاعات خود را بهروز نگه دارید. شیوه آموزش افراد ممکن است با هم متفاوت باشد. بعضی با مطالعه کتاب یادگیری ماشین را فرا گرفتهاند و بعضی در دوره یادگیری ماشین شرکت کردهاند.
اگر آن دسته از افرادی هستید که با شرکت در دوره بهتر یک مطلب را یاد میگیرید، دوره یادگیری ماشین مکتبخونه را به شما عزیزان توصیه میکنیم. پس از فراگیری این موضوع باید زبان های برنامهنویسی یادگیری ماشین را یاد بگیرید. دوره آموزش یادگیری ماشین با پایتون از بهترین دورههایی است که به شما در این راه کمک میکند.
دورههای فراوان و متنوع با عناوین مختلفی در حوزه یادگیری ماشین ساخته شده و در دسترس کاربران وجود دارد که برای شروع هر کاربری حجم این تعداد عنوان آموزشی باعث گیجی و سردرگمی همه افراد میشود. ما در مکتبخونه سعی کردیم مسیر مشخص و جذابی رو برای علاقه مندان این حوزه ایجاد کنیم:
برای شروع این حوزه پیشنهاد میکنیم حتما دوره هوش مصنوعی برای همه با تدریس Andrew NG و زیرنویس اختصاصی مکتبخونه را ببینید. این دوره شما رو با کلیت این حوزه آشنا کرده و تصویری خوب برای ادامه به شما میدهد.
یکی از اساسیترین پیشنیازهای حوزه یادگیری ماشین، زبان برنامهنویسی پایتون است. پیشنهاد میکنیم اگه آشنایی کافی با این حوزه ندارید حتما دوره های پایتون جادی رو از دست ندید.
برای فهم ریاضیات یادگیریماشین لازم است که با مباحث احتمالاتی آشنا باشید و پیادهسازی آن را در پایتون بلد باشید. مکتبخونه دوره آموزش آمار و احتمال در پایتون برای این منظور ایجاد کرده است که میتوانید از آن استفاده کنید.
در ادامه دوره آموزش یادگیری ماشین با پایتون جادی و همچنین دوره های آموزش یادگیری ماشین دکتر منثوری و دکتر تهرانی پور را پیشنهاد میکنیم. دوره اول تصویری کلی از تئوریهای یادگیری ماشین به شما میدهد و شما را با ریاضیات حدساده آشنا میکند و سپس این مطالب را به صورت عملی در محیط پایتون پیاده سازی میکند. دوره دوم اما با سرفصل جامعی که داره ریاضیات هر موضوع به تفصیل توسط دکتر منثوری بیان میشوند و در ادامه پیاده سازیهای این مباحث در ادامه توسط دکتر تهرانیپور انجام میشه.
پس اگر به تازگی وارد این حوزه شده اید دوره آموزش یادگیری ماشین با پایتون جادی با بیانی ساده و روان میتواند خیلی به شما کمک کند و اگر میخواهید به صورت خیلی جدی تر با ریاضیات این حوزه هم آشنا بشید به هیچ عنوان دوره آموزش یادگیری ماشین دکتر منثوری و دکتر تهرانیپور رو از دست ندهید.
در ادامه برای یادگیری تقویتی هم دورهای نسبتا پیشرفته برای علاقمندای این حوزه تهیه شده است که میتوانید از آن استفاده کنید.
حوزه یادگیری ماشین حوزهایست که باید به صورت کاربردی مطالعه شود. از این جهت در حال آمادهسازی درس یادگیری ماشین کاربردی (که شامل پیادهسازی کلی پروژه و تمرین است) هستیم و به زودی در اختیاران علاقهمندان این حوزه خواهد بود.
برای قدمهای بعدی نیز دورههای متنوعی مثل دوره یادگیری عمیق با تنسورفلو کراس وجود دارد. پس لازم نیست نگران مسیر یادگیری خود باشید زیرا به خوبی پوشش داده شده است و همچنان در حال بهبود و غنیتر شدن است.
امیدواریم از این مسیر هیجان انگیز لذت ببرید.
متداولترین الگوریتمهای یادگیری ماشین که کاربرد بیشتری دارند و احتمالاً تاکنون بارها اسم آنها را شنیدهاید، عبارتاند از:
الگوریتم K نزدیکترین همسایه (KNN) یک مدل تشخیص الگوست که میتواند برای طبقهبندی و رگرسیون استفاده شود. این روش از سادهترین الگوریتمهای یادگیری ماشین است که کاربردهای بسیاری دارد. خروجی این روش عضویت در یک کلاس است. در الگوریتم KNN یک شیء جدید را به کلاس متداول در نزدیکی همسایههای آن اختصاص میدهند.
به طور عمومی، درختهای تصمیمگیری برای ارائه بصری، نشان دادن و اطلاعرسانی تصمیمها استفاده میشود. هنگام کار با دادهکاوی و یادگیری ماشین، از درختهای تصمیمگیری بهعنوان یک مدل پیشبینی استفاده میشود. این مدلها مشاهدات مربوط به دادهها را برای نتیجهگیری درباره مقدار هدف دادهها ترسیم میکنند.
درختها یکی از قدرتمندترین و پرکاربردترین الگوریتمهای یادگیری ماشین هستند که جزو دسته الگوریتمهای نظارت شده محسوب میشوند. هدف از یادگیری درخت تصمیمگیری ایجاد مدلی است که ارزش یک هدف را بر اساس متغیرهای ورودی پیشبینی کند.
در مدل پیشبینی، شاخههای درخت ویژگیهای دادهها را که از طریق مشاهده تعیین میشوند، نشان میدهند. نتیجهگیری در مورد مقدار هدف دادهها هم در برگها نمایش داده میشود.
هنگام تشکیل یک درخت تصمیمگیری برای یادگیری ماشین باید دقت کنید که چه ویژگیهایی را برمیگزینید، از چه شرایطی برای تقسیم استفاده میکنید و همچنین بدانید که در چه حالتی درخت تصمیم به یک پایان مشخص میرسد.
یادگیری عمیق در تلاش است تا چگونگی پردازش محرکهای نور و صدا را در بینایی و شنوایی انسان تقلید کند. یک معماری یادگیری عمیق از شبکههای عصبی بیولوژیکی الهام گرفته شده و از چندین لایه در شبکه عصبی مصنوعی متشکل از سختافزار و GPU تشکیل شده است.
یادگیری عمیق برای استخراج یا تبدیل ویژگیهای دادهها یا نمایش آنها از مجموعهای از لایههای واحد پردازش غیرخطی استفاده میکند. خروجی یک لایه ورودی لایه بعدی محسوب میشود. در یادگیری عمیق الگوریتمها ممکن است نظارت شده باشند و طبقهبندی دادهها را انجام دهند یا اینکه بدون نظارت بوده و الگو را تجزیه و تحلیل کنند.
در میان الگوریتمهای یادگیری ماشین که در حال حاضر مورداستفاده و توسعه قرار میگیرد، یادگیری عمیق بیشترین داده را جذب میکند و حتی میتواند در بعضی از وظایف شناختی انسان را شکست دهد. با وجود این ویژگیهاست که یادگیری عمیق به روشی با پتانسیل قابلتوجه در فضای هوش مصنوعی تبدیل شده است.
بینایی کامپیوتری و تشخیص گفتار از جمله پیشرفتهایی هستند که با کمک یادگیری عمیق به ثمر نشستهاند. IBM Watson یک نمونه شناخته شده از سیستمی است که از یادگیری عمیق بهره میبرد.
هنگام انتخاب یک زبان برنامهنویسی برای یادگیری ماشین شاید به دنبال مهارتهای ذکر شده در آگهیهای استخدام یا کتابخانههای موجود در زبانهای مختلف برای استفاده در فرایندهای یادگیری ماشین باشید.
خوب است بدانید که یادگیری ماشین با پایتون بیشترین تقاضا و محبوبیت را در بین زبانهای برنامهنویسی دارد. پس از پایتون زبانهای برنامهنویسی جاوا، R و سپس C++ بیشترین کاربرد را در یادگیری ماشین دارند.
محبوبیت پایتون ممکن است به دلیل افزایش توسعه فریمورکهای یادگیری عمیق باشد که اخیراً در دسترس کاربران قرار گرفته است. از جمله آنها میتوان به TensorFlow، PyTorch و Keras اشاره کرد. پایتون توانایی استفاده بهعنوان یکی زبان اسکریپتنویسی را دارد و سینتکس آن قابل خواندن است.
این زبان قدرتمند و آسان هم برای پردازش دادهها و هم کار مستقیم با آنها استفاده میشود. کتابخانه یادگیری ماشین scikit-learn در بالای چندین پکیج موجود پایتون ساخته شده است که توسعه دهندگان ممکن است تاکنون با آنها آشنا شده باشند. NumPy، SciPy و Matplotlib از جمله این پکیجها هستند.
برای شروع کار با پایتون میتوانید از دورههای آموزش پایتون و دوره آموزش یادگیری ماشین با پایتون مکتبخونه استفاده کنید.
زبان جاوا به طور گستردهای در برنامهنویسیهای سازمانی استفاده میشود. این زبان در توسعه اپلیکیشنهای دسکتاپ فرانتاند برای کار روی یادگیری ماشین در سطح سازمانی کاربرد فراوانی دارد.
جاوا معمولاً اولین انتخاب برای تازهواردان حوزه یادگیری ماشین نیست، اما کسانی که سابقه بیشتری در این حوزه دارند کار با جاوا را ترجیح میدهند. چراکه جاوا از نظر برنامههای یادگیری ماشین در صنعت، امنیت بیشتری نسبت به پایتون دارد. در واقع احتمال حملات سایبری و کلاهبرداری در این زبان کمتر است.
در بین کتابخانههای یادگیری ماشین برای جاوا میتوان به Deeplearning4j اشاره کرد. این یک کتابخانه یادگیری ماشین عمیق منبع باز و توزیعشده برای جاوا و Scala است.
R یک زبان برنامهنویسی منبع باز است که در درجه اول برای محاسبات آماری استفاده میشود. این زبان طی سالهای اخیر مورد استقبال افراد زیادی بهخصوص دانشجویان قرار گرفته است. R معمولاً در محیطهای تولید صنعتی استفاده نمیشود، اما چون منافع زیادی برای علم داده دارد، امروزه کاربرد آن در صنعت هم افزایش یافته است.
پکیجهای محبوب برای یادگیری ماشین در R شامل caret مخفف short for Classification And REgression Training برای ایجاد مدلهای پیشبینیکننده، randomForest برای طبقهبندی و رگرسیون و e1071 میشود. e1071 شامل توابع آماری و نظریه احتمالات است.
C++ زبان انتخابی برای یادگیری ماشین و هوش مصنوعی در اپلیکیشنهای بازی یا ربات (مانند ربات لوکوموشن) است. توسعهدهندگان سختافزار محاسباتی تعبیه شده و مهندسان الکترونیک به دلیل مهارت و سطح کنترل در این زبان، C یا C++ را برای اپلیکیشنهای یادگیری ماشین ترجیح میدهند.
بعضی از کتابخانههای یادگیری ماشین که شما میتوانید با C++ استفاده کنید، عبارتاند از: کتابخانه مقیاسپذیر mlpack، Dlib که الگوریتمهای یادگیری ماشین با طیف وسعی پیشنهاد میدهد، modular و Shark منبع باز.
درست است که ماشینها خروجی را بر اساس تجزیهوتحلیل حاسباتی و پردازش دادهها تحویل میدهند، اما آنها هم عینی، عادلانه و دقیقاً درست نیستند. در واقع تعصبات انسانی در نحوه جمعآوری، سازماندهی و در نهایت در الگوریتمهایی که چگونگی تعامل یادگیری ماشین با دادهها را مشخص میکند، نقش دارند.
بهعنوانمثال ممکن است شما تصاویری از ماهیهای قرمز با برچسب ماهی به سیستم بدهید. در این صورت احتمال دارد سیستم کوسه را بهعنوان ماهی نشناسد. یا حتی هنگام کار با عکسهای انسانها شاید سیستم نتواند بهدرستی افراد رنگین پوست یا زنان/مردان را بهدرستی طبقهبندی کند.
از آنجایی که این قبیل تعصبات ممکن است روی دیگران تأثیر منفی بگذارد، آگاهی از آنها و تلاش برای از بین بردنشان بسیار مهم است. یکی از راههای دستیابی به این هدف این است که افراد متنوع در پروژه یادگیری ماشین حضور داشته باشند و افراد مختلفی آن را بررسی و آزمایش کنند.
افزایش آگاهی در مورد تعصبات، هوشیاری از تعصبات ناخودآگاه خودمان، برقراری عدالت در پروژههای یادگیری ماشین و پایپلاینها میتواند در این زمینه مفید واقع شود.
یادگیری ماشین مدام در حال تغییر و ایجاد نوآوری است؛ بنابراین اگر قصد فعالیت در این حوزه را دارید، باید همواره مهارتها و علم خود را بهروز کنید. مکتبخونه دورههای متنوعی در زمینه یادگیری ماشین، الگوها و الگوریتمهای متفاوت آن، زبانهای برنامهنویسی برای یادگیری ماشین و غیره ارائه میدهد. اگر علاقهمند به این حوزه هستید، دوره آموزش یادگیری ماشین مکتبخونه را از دست ندهید.