در دنیایی زندگی میکنیم که رشد تکنولوژی به حدی زیاد شده که بسیاری از افراد نمیتوانند خود را با آن همراه کنند و از قافله جا میمانند. هوش مصنوعی یا Artificial Intelligent گرایش نسبتا جدیدی در علوم است که میخواهد تحولات اساسی در زندگی مردم ایجاد کند. تعریف هوش مصنوعی کمی دشوار است، اما میتوانیم بگوییم هوش مصنوعی ترکیبی از علوم مختلف برای هوشمند کردن ماشینها است. یکی از زیرشاخههای معروف هوش مصنوعی یادگیری ماشین یا Machine Learning میباشد که این روزها به شدت مورد بحث قرار میگیرد. تاثیر ماشین لرنینگ را هر روز در زندگی روزمره خود احساس میکنید و این علم تا حدودی در زندگی روزمره ما حضور دارد. اگر تصمیم گرفتید ماشین لرنینگ را یاد بگیرید و نمیدانید باید از کجا شروع کنید، این مقاله میتواند برایتان مفید باشد. در این مطلب بررسی میکنیم که ماشین لرنینگ چیست ؟ و چه کاربردهایی دارد؟ سپس بررسی میکنیم که چطور یک متخصص یادگیری ماشین شویم و درباره موقعیتهای شغلی این گرایش صحبت خواهیم کرد. اما قبل از هر چیز باید بدانیم برای یادگیری ماشین لرنینگ باید از اموزش برنامه نویسی مقدماتی شروع کنیم.
[note] اگر شما هم به مباحث ماشین لرنینگ علاقهمند هستید پیشنهاد میکنیم به صفحه دوره آموزش ماشین لرنینگ سر بزنید و از سرفصل دوره مطلع شوید . [/note]یادگیری ماشین یا ماشین لرنینگ چیست
اگر بخواهیم به زبان ساده تعریفی از Machine Learning داشته باشیم، باید بگوییم یادگیری ماشین علمی است که به ماشینها یاد میدهد چطور چیزهای جدید از خودشان یاد بگیرند. احتمالا بعد از شنیدن این جمله از خودتان میپرسید آخر چرا باید ماشینها از خودشان یاد بگیرند؟ این کار چه سودی برای ما دارد؟ با یک مثال این جمله را بررسی میکنیم.
فرض کنید میخواهیم کف یک زمین را تمیز کنیم. زمانی که یک انسان این کار را انجام میدهد، کیفیت کار میتواند بسیار متغیر باشد چون به عوامل مختلفی بستگی دارد. احتمال اینکه انسان مریض شود یا بعد از چند ساعت کار خسته شود یا حتی بخواهد از زیر کار در برود بسیار زیاد است.
اما اگر به ماشین یاد بدهیم که کثیفی زمین را تشخیص داده و بر اساس میزان کثیفی و شرایط زمین شروع به تمیز کردن سطح آن بکند. اگر برای ماشین این کار را تعریف کنیم، بسیار بهتر از انسان میتواند آن را انجام دهد. بدون اینکه خسته شود یا احتمال مریض شدن داشته باشد. ماشین مدنظر باید بتواند به سوالات زیر جواب بدهد:
- چه زمانی زمین نیاز به تمیز کردن دارد؟
- تا چه زمانی باید تمیز کردن زمین ادامه داشته باشد؟
- و غیره
این کاری است که یادگیری ماشین یا Machine Learning انجام میدهد. یعنی به ماشین اجازه میدهد از خودش یاد گرفته و رفتارش را مرتب بهبود ببخشد.
ماشینها مثل ما انسانها مغز و قدرت تفکر ندارند، پس باید یک راهی وجود داشته باشد که به آنها فکر کردن را یاد بدهیم و اینجا است که مدلهای یادگیری ماشین میتوانند به کمک ما بیایند. به این شکل که ماشین، داده را از محیط بیرونی تحویل گرفته و آن را به مدل مربوطه تحویل میدهد. سپس این مدل با توجه به شرایط موجود تصمیمگیری میکند. در مثال تمیز کردن زمین، ماشین میتواند با دادههایی که میگیرد و تحویل مدل میدهد به اطلاعات مختلفی دست پیدا کند:
- چه زمانی زمین نیاز به تمیز کردن دارد یا چه زمانی تمیز است
- این تمیز کردن تا چه زمانی باید ادامه داشته باشد
- و غیره
یادگیری ماشین یک زیرشاخه معروف در هوش مصنوعی است که کمک میکند ماشینها یا کامپیوترها بتوانند چیزهای جدید یاد بگیرند
تفاوت میان داده کاوی و یادگیری ماشین
داده کاوی در سال 1930 معرفی شد و هدف از آن یافتن اطلاعات مفید، پنهان شده و معتبر از میان حجم عظیمی از دادههاست. یادگیری ماشین اما در سال 1950 معرفی شد شامل بهکارگیری مدل استخراجی از دادههای آموزشی بر روی دادههای جدید است. هر دوی این تکنیکها از نظر اینکه سعی در یافتن دادههای مفید دارند با هم نقطهی اشتراک دارند ولی از نظر مسئولیت، مبدأ، پیادهسازی، ماهیت، موارد کاربرد و تکنینکهای به کار رفته متفاوت هستند.
دادهکاوی سعی در استخراج قوانین و روابط معنادار از روی دادهها دارد، اما ماشین لرنینگ سعی میکند تا به کامپیوتر قوانین استخراج شده را آموزش دهد. در حین بهکارگیری تکنیکهای دادهکاوی میتوانیم مدل خود را توسعه دهیم. اصلیترین تفاوت دادهکاوی و یادگیری ماشین در این است که در دادهکاوی استخراج اطلاعات بدون دخالت انسانی امکانپذیر نیست ولی در یادگیری ماشین، حضور انسان تا مرحلهی انتخاب و بهکارگیری الگوریتم یادگیری ماشین است و پس از آن یک بار برای همیشه نتایج آن مورد استفاده قرار میگیرد. نتایج حاصل از ماشین لرنینگ دقت بالاتری نسبت به دادهکاوی دارد.
[rlink pid=70787]یادگیری ماشین در کدام بخشهای زندگی ما دیده میشود؟
احتمالا به این فکر میکنید که یادگیری ماشین کجای زندگی ما حضور دارد و اصلا به چه دردی میخورد. آیا واقعا این علم توانسته راهش را به زندگی روزمره ما باز کند؟ جواب مثبت است و میتوانیم بگوییم تقریبا غیرممکن است زندگی عادی شما تحت تاثیر این شاخه شگفتانگیز قرار نگرفته باشد. نگاهی به سرویسهای زیر بیندازید تا تاثیر ماشین لرنینگ در زندگی روزمره را حس کنید:
- گوشی هوشمند شما به طور خودکار چهره شما را تشخیص میدهد یا زمان عکس گرفتن چهره افراد را میتواند بشناسد.
- اینستاگرام، فیس بوک و سایر شبکههای اجتماعی با توجه به علایق و سلیقه شما تبلیغات و افراد مختلف را به شما نشان میدهند.
- آمازون، دیجی کالا و سایر فروشگاههای آنلاین با توجه تاریخچه جستجو شما محصولات جالبی را پیشنهاد میدهند.
- بانکها برای تشخیص تقلبی بودن بعضی از معاملات به صورت بلادرنگ از یادگیری ماشین استفاده میکنند.
مثالهای بالا تنها اشاره کوتاهی به کاربردهای یادگیری ماشین داشتند و این حوزه بسیار گستردهتر است.

یادگیری ماشین به چند دسته تقسیم میشود؟
به طور کلی یادگیری ماشین را به 3 دسته تقسیم میکنند:
- یادگیری با نظارت (Supervised Learning)
- یادگیری بدون نظارت (Unsupervised Learning)
- یادگیری تقویتی (Reinforcement Learning)
یادگیری با نظارت چیست؟
همانطور که از نام آن میتوانید حدس بزنید در این حالت ماشین نیاز به یک ناظر یا راهنما دارد. دقیقا مثل یک کسی که پشت فرمان نشسته و در حال یاد گرفتن رانندگی است. کنار این شخص کسی به عنوان راهنما نشسته و توصیههای لازم را به او میدهد. در یادگیری با نظارت یک سری دادههای از قبل آماده شده به عنوان راهنما تحویل ماشین داده شده و ماشین با توجه به مدل مربوطه تصمیمات لازم را اتخاذ میکند.
یادگیری بدون نظارت چیست؟
در این حالت ماشین نیازی به راهنما نداشته و به کمک مشاهدات میتواند روابط بین دادهها را کشف کند. در این حالت بعد از اینکه کامپیوتر دادههای مختلف را دریافت کرد میتواند روابط بین آنها را کشف کند. یک مثال در یادگیری بدون نظارت ماشینی است که میتواند به کمک خوشه بندی و بر اساس الگوهایی که درک کرده است، تفاوت بین دو خودرو سمند و دنا را تشخیص دهد. یعنی اگر 100 خودرو به ماشین معرفی شود، در یکی از این 2 دسته قرار خواهد گرفت.
یادگیری تقویتی چیست؟
باز هم با دقت در اسم این مدل میتوانید کارکرد آن را متوجه شوید. در این حالت ماشین مرتب خود را تقویت کرده و سعی میکند در ارتباط با یک عامل (Agent) یا محیط (Environment) چیزهای جدید یاد بگیرد. این متد به کمک آزمون و خطا سعی در حل مساله داشته و در صورت گرفتن نتیجه مثبت پاداش و در صورت گرفتن نتیجه منفی جریمه میشود. در این حالت ماشین سعی میکند در تصمیمهای آتی خود موفقتر باشد.
تفاوت خودکارسازی یا اتوماسیون (Automation) با ماشین لرنینگ چیست
اگر فکر میکنید یادگیری ماشین اسم جدید و جذابی برای خودکارسازی یا اتوماسیون است سخت در اشتباهید. این دو شاخه با هم تفاوت دارند.
بیشتر اتوماسیونهایی که اتفاق میافتند مبتنی بر قانون هستند. یعنی یک سری کارها با الگو از قبل تعریف شده انجام شوند. اما در ماشین لرنینگ ماشینها از کارهای قبلی خود چیزهای جدید یاد میگیرند. یعنی ماشینها میتوانند تصمیمات جدید بگیرند یا عملکرد خود را تغییر دهند.
یک مثال عالی برای درک تفاوت اتوماسیون و یادگیری ماشین سرویس ایمیل است. زمانی که ایمیلها به طور خودکار ارسال میشوند ما از اتوماسیون استفاده کردهایم و زمانی که یک فیلتر تشخیص اسپم روی آن قرار میدهیم، یعنی یادگیری ماشین را درگیر کردهایم.
[note]یادگیری ماشین تلاش میکند مراحل اتوماسیون و خودکارسازی را به طرز قابل توجهی بهبود ببخشد.[/note]
تفاوت یادگیری عمیق (Deep Learning) با ماشین لرنینگ چیست
3 مفهوم هوش مصنوعی (AI)، یادگیری ماشین (ML) و یادگیری عمیق (DL) معمولا در کنار هم قرار میگیرند و گاهی با هم اشتباه گرفته میشوند. Deep Learning شامل مفاهیم و الگوریتمهایی است که از شبکههای عصبی مصنوعی که ساختار مغز انسان را تشکیل میدهند الهام گرفته شده است.
به عبارتی دیپ لرنینگ زیرمجموعه یادگیری ماشین است و خودِ یادگیری ماشین هم به عنوان زیرمجموعه هوش مصنوعی در نظر گرفته میشود. تصویر زیر به خوبی رابطه این 3 مفهوم را نمایش میدهد.
ماشین لرنینگ یا یادگیری ماشین دانشی است که کمک میکند رایانهها بدون برنامهریزی مشخص و با الگو گرفتن از رفتار خودشان کارهای جدید انجام دهند. گفتیم که یادگیری ماشین به عنوان زیرمجموعهای از هوش مصنوعی به 3 دستهی کلی با نظارت، بدون نظارت و تقویتی تقسیم میشود. ماشین لرنینگ در بخشهای مختلف زندگی مردم حضور دارد و سرویسهای مختلفی به کمک این دانش ساخته میشوند.
مهارتهای لازم برای تبدیل شدن به یک متخصص ماشین لرنینگ چیست
برای تبدیل شدن به یک متخصص ماشین لرنینگ باید مهارتهای زیادی را بلد باشید. از علوم رایانه بگیرید تا ریاضیات و آمار و احتمال. این رشته چالشهای خاص خودش را دارد و اگر بدون علاقه وارد آن شوید احتمالا وسط راه خسته میشوید. هرچند نمیشود به طور کامل تمام چیزهایی که برای تبدیل شدن به یک متخصص ماشین لرنینگ نیاز دارید را در یک مطلب جا دهیم اما نشان دادن مسیر به علاقهمندان واقعی کمک میکند خودشان سراغ چیزهای جدید و مرتبط بروند. مطمئنا هنگامی که شروع به مطالعه و تمرین در حوزه ماشین لرنینگ میکنید، متوجه میشوید که چیزهای زیادی را باید یاد بگیرید.1 - تئوری یادگیری ماشین و الگوریتمهای آن را خوب یاد بگیرید
برای یک متخصص ماشین لرنینگ بسیار مهم است که اصول اولیه و مفاهیم پایه یادگیری ماشین را بلد باشد. شما به عنوان یک متخصص ماشین لرنینگ باید الگوریتمهای معروف این حوزه و اهدافی که دنبال میکنند را بلد باشید. در قدم بعدی باید درک کنید که این الگوریتمها چطور با دادهها کار میکنند. همانطور که در بخش قبل گفتیم الگوریتمهای یادگیری ماشین در سه حوزهی کلی نظارتی، بدون نظارت و تقویتیاند. در ادامه تعدادی از معروفترین این الگوریتمها را برای شما لیست میکنیم تا دربارهی آنها مطالعه کنید:- رگرسیون خطی
- رگرسیون لجستیک
- خوشه بندی
- درخت تصمیم
- جنگل تصادفی
- CART
- Apriori
- PCA
- K-means
- KNN
- و غیره
- علوم داده چیست؟
- Big Data به چه معناست؟
- هوش مصنوعی چیست؟
- ماشین لرنینگ چیست ؟
- دیپ لرنینگ چیست؟
- 3 مفهوم بالا چه نقاط مشترکی دارند یا با هم چه فرقی میکنند؟
- تمام این اصطلاحات سنگین و پیچیده خارج از دنیای دانشمندان و در دنیای واقعی چه کاربردهایی دارند؟
2 - درک مناسبی روی علوم کامپیوتر داشته باشید
یک متخصص یادگیری ماشین باید دانش زیادی در علوم رایانه داشته باشد. اگر در دانشگاه رشته مهندسی کامپیوتر یا رشتههای مشابه را خوانده باشید، چند قدم نسبت به سایر افرادی که میخواهند ماشین لرنینگ را یاد بگیرند جلوتر هستید. البته هر کسی به این حوزه علاقهمند باشد به سرعت میتواند با این مفاهیم آشنا شود. به طور کلی منظورم از مفاهیم علوم کامپیوتر در یادگیری ماشین موارد زیر هستند:- باید درک مناسبی از ساختمان داده داشته باشید: برای مثال پشته، صف، آرایهها، درخت، جنگل و غیره
- باید درک مناسبی از طراحی الگوریتم داشته باشید: برای مثال جستجو، مرتبسازی، بهینهسازی، محاسبه و پیچیدگی و غیره
- باید درک مناسبی از معماری کامپیوتر داشته باشید: برای مثال حافظه، مفهوم بن بست، پردازش نامتقارن و غیره
3 - درک کافی روی مباحث آمار و احتمال داشته باشید
برای متخصص شدن در ماشین لرنینگ لازم نیست نابغه آمار و احتمال باشید. همین که مفاهیم اصلی و موردنیاز را یاد بگیرید کفایت میکند. این خبر خوبی برای کسانی است که دلِ خوشی از ریاضیات و آمار ندارند، اما دوست دارند متخصص ماشین لرنینگ شوند. در ادامه بعضی از مفاهیم مهم و اساسی آمار را معرفی میکنم:- نمونه گیری
- احتمال و توزیعهای احتمال
- توزیع متغیرهای تصادفی
- رگرسیون خطی، چندگانه و لجستیک
- و غیره

4 - زبان برنامه نویسی پایتون یا R (یا هر دو) را برای تحلیل داده یاد بگیرید
زبان برنامه نویسی مناسب ماشین لرنینگ چیست ؟ زبان برنامه نویسی Python در حین سادگی، بسیار قدرتمند و انعطافپذیر است. پایتون در حوزههای مختلف مثل طراحی وب، ساخت اپلیکیشن، ساخت بازی و غیره مورد استفاده قرار میگیرد. زمانی که صحبت از هوش مصنوعی و یادگیری ماشین میشود، پایتون بیشتر از هر زبان دیگری جلب توجه میکند. به عنوان یک متخصص ماشین لرنینگ باید یک زبان برنامه نویسی را یاد بگیرید که با توجه به سادگی و کتابخانههای قدرتمندی که پایتون دارد گزینهی مناسبی برای افراد فعال در حوزه یادگیری ماشین است. هر چند زبان R هم قابلیتهای زیادی دارد و میتواند در حل مسائل ماشین لرنینگ به کمک شما بیاید. [note]با توجه به رشد بسیار بالای پایتون و محبوبیت آن در کشور ما توصیه ما پایتون است.[/note] [rlink pid=70772]5 - با Big Data یا کلان داده آشنا شوید
هر چند کار با دادههای کلان یا Big Data یک تخصص جداگانه به حساب میآید و نیاز به نیروی متخصص دارد. اما شما به عنوان یک مهندس ماشین لرنینگ باید با اصول Big Data آشنا باشید چون ممکن است در طول کارتان با حجم زیادی از دادهها سروکار داشته باشید. اگر به این درک برسید که دادههای بزرگ چطور ذخیره میشوند، چطور فراخوانی شده یا چطور پردازش میشوند میتوانید راهحلهای بسیار مناسبی برای مسائل متنوع ماشین لرنینگ ارائه کنید. توصیه میکنم برای تمرین و یادگیری Big Data حتما از یک توزیع لینوکس استفاده کنید چون لینوکس میانهی خوبی با Apache Hadoop دارد. Hadoop مجموعه ابزارهای متن بازی است که با استفاده از چند کامپیوتر بزرگ به حل مسائل مربوط به کلان داده میپردازد. در ادامه برخی از مفاهیمی که در یادگیری ماشین لرنینگ به شما کمک میکند را معرفی میکنم:- HDFS
- Mapreduce
- Hive
- Pig
- Spark
- Scala
- و غیره
6 - شروع به مطالعه درباره مدلهای یادگیری عمیق بکنید
مدلهای یادگیری ماشین جزو مباحث پیشرفتهی این حوزه به حساب میآیند. این مدلها به اپل و مایکروسافت کمک کردند دستیارهای صوتی Siri و Cortana را بسازند یا کمک میکنند شرکتهای خودروسازی، روی خودروهای بدون راننده کار کنند. بعد از یادگیری مباحث قبلی باید وارد یک فاز جدی یعنی کار با مدلهای یادگیری ماشین شوید. برای شروع میتوانید مدلی طراحی کنید که تصویر یک گل از تصویر یک میوه را تشخیص دهد. هر چند این مدل نمیتواند بلافاصله شما را به ساخت خودرو بدون راننده نزدیک کند، اما برای شروع خوب بوده و دید مناسبی از مسیری که باید طی کنید در اختیارتان قرار میدهد. بعضی از مباحثی که باید در این دوره یاد بگیرید عبارتند از:- شبکه عصبی مصنوعی یا Artificial Neural Networks
- پردازش زبانهای طبیعی یا Natural language processing
- شبکههای عصبی پیچشی یا convolutional neural network
- تنسورفلو یا TensorFlow
- اوپنسیوی یا Open Computer Vision Library
آشنایی با شغلهای هوش مصنوعی و ماشین لرنینگ
1 - مهندس یادگیری ماشین
مهندسی یادگیری ماشین مهمترین و پرتقاضاترین شغل فعلی هوش مصنوعی در جهان است. این شغل شامل متخصصانی میشود که تسلط بالایی در ساخت سیستمهای مبتنی بر هوش مصنوعی دارند، سیستمهایی که بتوانند از خودشان چیزهای جدید یاد بگیرند. رسیدن به مهارت بالا در این عنوان شغلی کمی سخت است. مهندسان واقعی و خبره یادگیری ماشین باید بتوانند با طیف گستردهای از دادهها کار کرده و برنامه نویسی را در سطح قابل قبولی بلد باشند. تخمین زده میشود به طور میانگین ( در زمان نگارش این مقاله) هر مهندس یادگیری ماشین در ایالات متحده سالانه بین 120.000 تا 140.000 دلار درآمد دارد. البته افراد ماهر میتوانند درآمد بیشتری هم داشته باشند.2 - دانشمند رباتیک
رباتها جدا از جذابیتی که برای مردم دارند و فیلمهای سینمایی پر تب و تاب هالیوودی که ساخته میشود، کاربردهای بسیار گستردهتری میتوانند داشته باشند. در تولید رباتها نقش بسیار گستردهای دارند و میتوانند بسیاری از کارهای دشوار را با سرعت بالا انجام دهند. رباتهای جراح میتوانند حتی با دقتی بیشتر از دستهای یک جراح، یک عمل پزشکی را انجام دهند. حتی امروزه رباتهای خانگی هم در حال تجاری سازی هستند. تنوع مشاغل رباتیک بسیار زیاد است و فرصتی نیست که دربارهی همه آنها صحبت کنیم. کسانی که در هوش مصنوعی فعال هستند، میتوانند بعدا به عنوان یک کارشناس و متخصص رباتیک شروع به کار کنند. البته این افراد بعد از ورود به این حوزه باید مهارتهای جدیدی را هم یاد بگیرند. از آنجایی که رباتیک ترکیبی از کامپیوتر، مکانیک و برق است داوطلبان این موقعیت شغلی باید به جز هوش مصنوعی و ماشین لرنینگ به این مباحث هم علاقهمند باشند. متوسط درآمد مهندسان رباتیک در زمان نگارش این مقاله در آمریکا به طور میانگین 75.000 دلار در سال است.3 - مهندس یادگیری عمیق
یادگیری عمیق با اینکه زیرمجموعهای از ماشین لرنینگ به حساب میآید اما پیچیدگیهای خاصی نسبت به یادگیری ماشین دارد. به همین دلیل نیاز به کسانی دارد که به طور تخصصی در این حوزه فعالیت کنند. یک متخصص یادگیری عمیق تلاش میکند رفتار مغز انسان را بشناسد و سیستمهایی بسازد که از عملکرد مغز انسان تقلید کند. برای این کار این افراد از شبکههای عصبی استفاده میکنند. به عبارت سادهتر یک مهندس یادگیری عمیق میتواند ماشینهایی بسازد که بدون دخالت انسان توانایی یادگیری داشته باشد.4 - دانشمند داده
همانطور که از اسم این شغل میتوانید حدس بزنید متخصص داده باید دادههای مختلف را جمع آوری کرده و به کمک یادگیری ماشین آنها را تحلیل کند. این شغل با اینکه از مباحث آماری استفاده میکند اما وظیفهی آن فقط جمع کردن گزارش و آمار نیست. کسانی که در این حوزه وارد میشوند باید در استفاده از پلتفرمهای Big Data و ابزارهای مختلف مثل Hadoop، Pig، Hive، Spark، MapReduce و غیره، متخصص باشد. همچنین یادگیری زبانهای برنامه نویسی و کار با پایگاه داده مثل پایتون، SQL، پرل، اسکالا یا غیره، ضروری به نظر میرسد. متوسط درآمد دانشمندان داده در آمریکا در زمان نگارش این مقاله سالانه در حدود 115.000 دلار در سال است.4 - متخصص بینایی ماشین
وظیفه این متخصص است که به ماشینها بینایی ببخشد. درست مثل ما انسانها که با چشمان خودمان میتوانیم دنیای بیرون را دیده و بسیاری از مسائل را تشخیص دهیم. البته ماشین به کمک دوربینهای خاص و نرم افزارهای پردازش تصویر دنیای بیرون را میبیند و با ساختار بینایی انسان تفاوتهای اساسی دارد. بینایی ماشین در بخشهای مختلفی مثل جریمه رانندگان متخلف، افزایش ایمنی خودروها، کنترل ترافیک، بخشهای مختلف صنعت و تولید و غیره کاربرد دارد. یک متخصص بینایی ماشین باید در علوم رایانه، شناخت نور، مهندسی مکانیک و غیره تخصص داشته باشد.