۰۰/۵/۱۹ سه شنبه
هرچند یادگیری ماشین علم تازه واردی به ایران است، کم کم دارد جای خودش را در بین علاقهمندان به هوش مصنوعی باز میکند. بد نیست بدانید که برخلاف ایران، در کشورهای پیشرفته یادگیری ماشین یکی از ترندترین شغلهای روز است. یکی از مهمترین کاربردهای یادگیری ماشین که به چشم دیدهاید سیستمهای توصیهگر یا Recommended Systemها هستند. یعنی همان کالاهایی که به شما در هنگام ورود به یک فروشگاه اینترنتی با توجه به سوابق بازدید و خرید شما به شما پیشنهاد داده میشود. نقشهها و پیشبینی مسیر بدون ترافیک و ماشینهای بدون راننده تنها نمونههایی از الگوریتمهای ماشینلرنینگ هستند. در این پست از بلاگ پلازیکا، به معرفی ماشین لرنینگ پرداخته و سپس به این سوال پاسخ میدهیم که از کجا یادگیری ماشین لرنینگ را شروع کنیم؟
برای اولین بار در سال ۱۹۵۹ آرتور سموئل (یکی از پیشتازان بازیهای کامپیوتری و هوش مصنوعی) اصطلاح یادگیری ماشین یا Machine learning را مطرح کرد. او این اصطلاح را این گونه تعریف کرد: «شاخه از علم که به کامپیوترها توانایی یادگیری را میدهد، بدون اینکه به طور مستقیم و صریح برنامهنویسی شده باشند. »
و این آغاز یادگیری ماشین بود! امروزه، یادگیری ماشین یکی از محبوبترین انتخابهای شغلی است. تا آنجا که طبق مقالهای از سایت Indeed مهندسی یادگیری ماشین یکی از بهترین شغلها با رشد ۳۴۴ درصدی و درآمد میانگین ۱۴۶ دلار در سال میباشد.
در یادگیری ماشین با استفاده هوش مصنوعی توانایی یادگیری یک عمل خاص را به کمک تجربه به ماشینها میدهیم. در یادگیری ماشین برنامهنویسی با هدف انجام آن عمل خاص صورت نمیگیرد. بلکه یادگیری از طریق تجربه و آزمون و خطا صورت میگیرد. برای انجام این فرایند ابتدا ماشین را با دادههای با کیفیت تغذیه میکنیم؛ سپس با استفاده از این دادهها و الگوریتمهای متنوع، مدلهای متعددی میسازیم تا با کمک آنها ماشین را آموزش دهیم. انتخاب الگوریتم به نوع دادهها و نوع فعالیتی که میخواهیم ماشین برایمان انجام دهد بستگی دارد.
مسیر پیشنهادی ما، مسیر دشواری است که به شما کمک میکند در مدت زمان نه چندان زیادی تبدیل به یک مهندس ماشین لرنینگ ماهر شوید. هر قسمت از این مسیر را میتوانید با توجه به نیازها و شرایط خود تغییر دهید.
اگر خودتان را یک نابغه میدانید، میتوانید از همین لحظه به سراغ یادگیری ماشین بروید اما اگر مثل من یک انسان معمولی با یک مغز معمولی هستید، پیشنهاد میکنم اول پیشنیازها را یاد بگیرید. پیشنیازهای یادگیری ماشین لرنینگ شامل جبر خطی، حساب دیفرانسیل و انتگرال چند متغیره، آمار و پایتون است. اگر هیچکدام از این مباحث را بلد نیستید، سکته نکنید!! لازم نیست در هر کدام از این درسها دکترا داشته باشید، فقط کافی است به مبانی و مفاهیم هر کدام مسلط باشید.
الف. یادگیری جبر خطی و حساب دیفرانسیل و انتگرال چند متغیره
هم یادگیری جبر خطی و هم حساب دیفرانسیل و انتگرال چند متغیره در یادگیری ماشین مهم هستند. با این حال اینکه چقدر در هر کدام از این مباحث عمیق شوید، بسته به نقشتان به عنوان یک دانشمند داده یا دیتا ساینتیست دارد. اگر تمرکزتان روی کاربردهای سنگین یادگیری ماشین است، پس نیازی نیست به صورت عمیق ریاضی یاد بگیرید. چون کتابخانههای زیادی فراهم است که برای انجام محاسبات ریاضی میتوانید از آنها استفاده کنید اما اگر تمرکزتان روی تحقیق و توسعه یادگیری ماشین است، تسلط بر روی جبر خطی و حساب دیفرانسیل و انتگرال چند متغیره برای شما لازم است. چون قرار است بسیاری از الگوریتمهای ماشین لرنینگ را از صفر پیادهسازی کنید.
دادهها نقش پررنگی در یادگیری ماشین ایفا میکنند. در واقع، نزدیک به ۸۰ درصد زمان شما به عنوان یک متخصص ماشین لرنینگ صرف جمعآوری و پاکسازی دادهها میشود. آمار رشتهای است که به جمعآوری، تجزیه و تحلیل و نمایش دادهها میپردازد. پس تعجبی ندارد اگر اسم این رشته را جزء پیشنیازهای یادگیری ماشین ببینیم.
برخی از مباحث کلیدی علم آمار که در یادگیری ماشین به دردمان میخورند، عبارت است از: مفاهیم آماری، توزیع احتمالات، آزمون فرضیات، رگراسیون و غیره. همچنین استنباط بیزی هم یکی دیگر از مباحث مهم و پرکاربرد در ماشین لرنینگ است.
ج. یادگیری زبان برنامهنویسی پایتون
برخی از افراد ترجیح میدهند از یادگیری جبر خطی، دیفرانسیل و آمار بگذرند و آنها را با آزمون و خطا در حین کار یاد بگیرند اما تنها چیزی که نمیتوانید برای یادگیری ماشین لرنینگ آن را به تعویق بیندازید، یادگیری پایتون است. هر چند زبانهای برنامهنویسی زیادی هستند که میتوانید به کمک آنها ماشین لرنینگ یاد بگیرید (مثل R، Scala و... )، در حال حاضر محبوبترین زبان برنامهنویسی در بین مهندسین یادگیری ماشین زبان برنامهنویسی پایتون است. در واقع، بسیاری از کتابخانههای پایتون مخصوص هوش مصنوعی و یادگیری ماشین به وجود آمده و توسعه یافتهاند. مثل Keras، TensorFlow، Scikit-learn و...
حالا که در مورد پیشنیازهای یادگیری ماشین لرنینگ صحبت کردیم، به قسمتهای جالبتر که همان مفاهیم ماشین لرنینگ است میرسیم. بهترین کار این است که از مفاهیم اولیه شروع کنیم و سپس برای یادگیری مفاهیم پیچیدهتر برنامهریزی کنیم. برخی از این مفاهیم اولیه عبارتند از:
الف. اصطلاحات رایج در ماشین لرنینگ:
مدل (Model): مدل نمایش خاصی است که از اعمال برخی از الگوریتمهای یادگیری ماشین روی دادهها توسط ماشینها به دست میآید. به مدلها فرضیه نیز میگویند.
ب. خاصیت (Feature): یک خاصیت یک ویژگی قابل اندازهگیری از دادهها است. مجموعهای از ویژگیهای عددی را میتوان به راحتی توسط بردار خاصیت توصیف کرد. بردارهای خاصیت میتوانند به عنوان ورودی وارد مدلها شوند. مثلا برای پیشبینی یک میوه، خواصی مثل رنگ، بو، مزه و غیره وجود دارند.
ج. هدف (Target): یک متغیر یا برچسب هدف مقداری است که توسط مدل ما پیشبینی میشود. مثلا در مورد مثال میوه که در بالا گفتیم، هدف هر کدام از ورودیها میتواند اسم میوهها باشد. مثل سیب، پرتقال، انار و...
د. آموزش (Training): مفهوم آموزش در یادگیری ماشن این است که مجموعهای از ورودیها (خواص) و خروجیهای مورد انتظار (برچسبها) را در اختیار ماشین بگذاریم تا بعد از آموزش یک مدل (فرضیات) را به عنوان خروجی به ما بدهد. با استفاده از این مدلها، ماشین میتواند دادههای جدید را در دستهبندیهایی که یاد گرفته است، جای دهد.
ه. پیشبینی (Predict): وقتی مدل ما آماده شد، میتوانیم آن را با مجموعهای از ورودیها تغذیه کنیم و به عنوان خروجی از آن خروجیهای پیشبینی شده (برچسبها) دریافت کنیم.
یادگیری تحت نظارت: این نوع یادگیری شامل یادگیری از یک دیتاست آموزشی است که با استفاده از مدلهای طبقهبندی و رگراسیون برچسبگذاری شده باشد. فرایند این نوع یادگیری آنقدر ادامه مییابد که سطحی از یادگیری که مدنظر مهندس ماشین لرنینگ است محقق شود.
یادگیری بدون نظارت: شامل استفاده از دادههای برچسبگذاری نشده و یافتن ساختارهای زیربنایی در داده برای یادگیری بیشتر و بیشتر در مورد دادهها است که برای این کار از مدلهای فاکتوری و تحلیل خوشهای کمک میگیرند.
یادگیری نیمه نظارتی: در این نوع یادگیری از دادههای برچسبگذاری نشده به همراه مقدار کمی داده برچسبگذاری شده استفاده میشود. استفاده از دادههای برچسبگذاری شده دقت یادگیری را افزایش زیادی میدهد و همچنین به دلیل استفاده از میزان کمتری از دادههای برچسبگذاری شده، این روش نسبت به روش یادگیری تحت نظارت مقرون به صرفهتر است.
یادگیری تقویتی: این نوع یادگیری شامل یادگیری اقدامات بهینه از طریق آزمون و خطاست. بنابراین تصمیمگیری در مورد اقدام بعدی با یادگیری رفتارهایی میسر میشود که برپایه وضعیت حاضر و افزایش پاداش در آینده باشند.
ج. چگونه ماشین لرنینگ را تمرین کنیم؟
در ماشین لرنینگ بیشتر زمان ما صرف جمعآوری، ادغام، پاکسازی و پیش پردازش دادهها میشود. حتما کار با دادهها را یاد بگیرید. چرا که در هوش مصنوعی ما نیاز به داده با کیفیت داریم اما مقدار زیاد همیشه باعث میشود که مجموعه دادهها کثیف شود. پس به عنوان یک مهندس ماشین لرنینگ حتما باید این سه مورد را یاد بگیرید.
در کنار قدمهایی که در این متن برای یادگیری ماشین لرنینگ گفتیم، اینکه بدانید چطور دادههای به دست آمده از مدلهای مختلف را تفسیر کنید هم اهمیت دارد. اگر پارامترها و متدهای نرمالسازی زیادی را بلد باشید، این کار برایتان سادهتر میشود.
مدلهای مختلف را یاد بگیرید و روی دیتاستهای واقعی تمرین کنید. این کار به شما کمک میکند به یک پس زمینه ذهنی برسید که در هر موقعیتی چه نوع مدلسازیای مناسب است.
ه. منابعی برای یادگیری ماشین لرنینگ:
منابع متنوع زیادی چه آنلاین و چه آفلاین، چه پولی و چه رایگان وجود دارند که میتوانند برای یادگیری ماشین لرنینگ مورد استفاده قرار گیرند. برخی از این منابع در را در ادامه مقاله آوردهایم:
برای معرفی گستردهتری از یادگیری ماشین کورس دانشگاه استنفورد از اندرو ان جی (Andrew NG) بسیار محبوب است. این آموزش روی ماشین لرنینگ، دیتا ماینینگ و تشخیص الگوهای آماری تمرکز دارد. در این دوره ویدئوهایی هست که فرضیات و مفاهیم کلیدی متعدد موجود در یادگیری ماشین را برای دانشآموزان دوره به صورت واضح توضیح میدهد.
اگر به دنبال یک راهنما برای خودآموزی ماشین لرنینگ هستید، پس کرش کورس ماشین لرنینگ از گوگل برایتان مناسب است. در این دوره سخنرانیها، پژوهشها و مطالعات واقعی و تمرینهای عملی به صورت ویدئوهایی برای معرفی شما به حوزه یادگیری ماشین فراهم شده است.
در صورتی که کورسهای آفلاین را ترجیح میدهید، کورس مفاهیم بنیادی GeeksforGeeks گزینه خوبی برای شماست. در این کورس مفاهیم مختلف یادگیری ماشین را به همراه تمرینهای عملی یاد میگیرید.
وقتی به اندازه کافی بر مفاهیم یادگیری ماشین مسلط شدید، میتوانید به قسمت هیجان انگیز ماجرا برسید. مسابقهها و رقابتها!! مسابقهها و رقابتها با ترکیب دانش تئوری و تمرینهای عملی، به شما کمک میکنند به تسلط بیشتری روی ماشین لرنینگ دست یابید.
یکی از سایتهایی که در آن میتوانید به رقابت با دیگران بپردازید، Kaggle است. پیشنهاد میکنم در صورتی که تصمیم دارید ماشین لرنینگ یاد بگیرید حتما به مسابقات این سایت هم سری بزنید.
در این پست از بلاگ پلازیکا در مورد مفاهیم اولیه یادگیری ماشین و قدمهایی که باید برای یادگرفتن این رشته جدید و تازه بردارید صحبت کردیم. امیدواریم با انجام این اقدامات بتوانید به یک مهندس ماشین لرنینگ ماهر تبدیل شوید.
در حال انجام عملیات