Machine Learning Introduction

معرفی

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

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

همچنین فیلتر اسپم که شما را از دست تعداد زیادی ایمیل‌های هرز (هرزنامه یا اسپم) نجات می‌دهد هم بر اساس الگوریتم یادگیری است.

یکی از رویاهایی که می‌توان از طریق الگوریتم یادگیری به حقیقت تبدیل شود، ساختن ماشینی به هوشمندی انسان‌هاست.

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

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

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

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

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

  • آرتور ساموئل Arthur Samuel (1959):
  • زمینه‌ای از مطالعه که به کامپیوتر توانایی یادگیری را می‌دهد بدون آنکه به صورت صریح برنامه‌نویسی شده باشد.
  • این تعریف قدیمی و غیر رسمی است. تعریف رسمی‌تر و جدیدتر متعلق به تام میشل است Tom Mitchell (1998):
  • می‌گوئیم یک برنامه کامپیوتری از تجربه E بر اساس وظیفه T و معیاری برای عملکرد آن P یادگرفته است، اگر عملکرد آن روی T چنانکه با P سنجش می‌شود با تجربه E بهبود پیدا کند.

در توضیح تعرف دوم می‌توان بازی چکرز (Checkers) را مثال زد. به این صورت که تعداد بازی‌ها (هزران یا میلیون‌ها بازی) تجربه E، خود بازی کردن چکرز وظیفه T و معیار سنجش آن P احتمال برد در بازی بعدی برابر یک حریف جدید است.

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

  • یادگیری با نظارت (supervised)
  • یادگیری بدون نظارت (unsupervised)

تقسیم بندی می‌شود. از دیگر انواع یادگیری ماشین می‌توان به یادگیری تقویتی (reinforcement) و سیستم‌های پیشنهاد دهنده اشاره کرد.

در این آموزش علاوه بر بحث در مورد انواع یادگیری ماشین در مورد توصیه‌های عملی در به کار بردن یادگیری ماشین هم بحث خواهیم کرد.

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

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

فرض کنید می‌خواهید قیمت خانه را پیش‌بینی کنید. ممکن است یک سری داده به شکل زیر جمع‌اوری کنید (اندازه خانه در مقابل قیمت آن).

و بر اساس این داده‌ها بخواهید قیمت خانه دوستتان را که در حدود 750 فوت مربع است پیش‌بینی کنید. برای پیش‌بینی قیمت خانه دوستتان (خانه جدید) ممکن است خط راستی به مانند شکل زیر به داده‌ها برازش دهید و پیش بینی کنید که قیمت خانه او در حدود 150 هزار دلار است.

یا ممکن است یک منحنی به مانند خط آبی رنگ به داده‌ها برازش دهید و پیش‌بینی کنید که قیمت خانه جدید در حدو ۲۰۰ هزار دلار است.

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

بنابراین در تعریف یادگیری با نظارت می‌توانیم بگوئیم که در این نوع یادگیری یک سری داده برچسب دار (یک مجموعه داده که در آن جواب‌های درست و واقعی داریم) را به الگوریتم می‌دهیم و وظیفه الگوریتم پیش‌بینی نتایج درست بیشتری است.

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

در مسائل طبقه‌بندی ممکن است نحوه نمایش دیگری داشته باشیم و به جای شکل بالا شکل زیر را رسم کنیم که در آن دایره‌ها نشانه غیرسرطانی بودن تومور و ضربدرها نشانه سرطانی بودن تومور هستند.

حال ممکن است بیش از یک متغیر داشته باشیم، مثلا علاوه بر اندازه تومور سن افراد را هم به عنوان یک فاکتور مهم دیگر وارد مسئله کنیم. آنگاه با به کار بردن نمادهای معرفی شده در شکل قبل ممکن است یک مجموعه داده به شکل زیر داشته باشیم:

برای داده‌هایی به شکل بالا ممکن است الگوریتم یادگیری با خطی مانند خط مشکی رنگ در شکل زیر موارد مثبت و منفی را از هم جدا کند و بر اساس آن برای نمونه جدید داده شده پیش‌بینی کند که آیا تومور سرطانی است یا خیر.

به یاد داشته باشید که در واقعیت مسائل یادگیری ماشین بسیار پیچیده‌تر از این نمونه‌های ساده شده هستند و غالبا دارای تعداد بسیار زیادی خصوصیت (feature) می‌باشند. برای نمونه در همین مسئله تشخیص سرطانی بودن تومور می‌توان خصوصیاتی دیگری نظیر یکنواختی اندازه سلول‌ها، یکنواختی شکل سلول‌ها و ... را وارد مسئله کرد.

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

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

اگر چنین داده‌ای را به الگوریت یادگیری بدهیم، ممکن است که آن را به دو خوشه به مانند شکل زیر تقسیم کند. چنین الگوریتمی را الگوریتم خوشه‌بندی یا Clustering Algorithm می‌گویند.

این نوع الگوریتم در مسائل زیادی کاربرد دارد. به عنوان نمونه بخش اخبار گوگل به هزاران یا شاید صدها هزار اخبار در روز نگاه و آن‌ها را دسته‌بندی می‌کند. مثلاْ برای یک خبر با تیتر مشخص چندین منبع متفاوت را معرفی می‌کند.

کاربرد دیگری از این نوع الگوریتم در مطالعه ژن‌ها است.