یادگیری ماشین یا ماشین لرنینگ به طور عمده به سه دسته شناختهشده تقسیم میشود: یادگیری نظارت شده ، یادگیری بدون نظارت و یادگیری تقویتی. در دنیای اشباعشده از هوش مصنوعی، یادگیری ماشین و تحقیقات بسیار گسترده دربارهی این موضوعات، بد نیست انواع یادگیری ماشین را که ممکن است با آن روبرو شویم بهطور کامل بشناسیم و درک کنیم.
اما قبل از ورود به دنیای جذاب ماشین لرنینگ باید آموزش پایتون را بسیار جدی بگیریم و برای آن برنامهریزی خوبی داشته باشیم. چون پایتون و ماشین لرنینگ بهیکدیگر گره خوردند. از مهمترین کاربردهای زبان پایتون برای یادگیری ماشین و یادگیری عمیق است.
برای اکثر کاربران رایانه، آشنایی با انواع ماشین لرنینگ میتواند به درک و نحوهی استفاده از آنها در برنامههایی که استفاده میکنند کمک کند. برای متخصصانی که این برنامهها را ایجاد میکنند ضروری است که انواع یادگیری ماشین را بدانند تا برای هر پروژه خاصی که ممکن است با آن روبرو شوند، بتوانند از روش یادگیری ماشینی مناسب استفاده کنند و نحوهی کار آن را بهتر درک کنند. پس با ما همراه باشید تا نگاه دقیقتری به این موضوع داشته باشیم.
آنچه در این نوشته خواهیم داشت
یادگیری تحت نظارت (نظارت شده)
یادگیری نظارت شده محبوبترین روش برای یادگیری ماشین است. چون از میان سایر روشها به سادهترین شکل درک میشود و همچنین خیلی ساده اجرا میشود. این نوع یادگیری بسیار شبیه به آموزش کودک با استفاده از فلش کارت است.
با استفاده از دادههای وارد شده و در قالب مثالهایی با برچسب (عنوان)، میتوانیم یک الگوریتم یادگیری را ایجاد کنیم. به الگوریتم اجازه میدهیم که برای هر مثال برچسب را پیشبینی کند و به آن بازخورد بدهد که آیا پاسخ درست را پیش بینی کرده است یا نه.
با گذشت زمان، الگوریتم یاد میگیرد که ماهیت دقیق رابطه بین نمونهها و برچسبهای آنها را بهصورت تقریبی حدس بزند. هنگامیکه ماشین بهطورکامل آموزش داده شود، الگوریتم یادگیری نظارت شده قادر است برای یک نمونه جدید که قبلا هرگز با آن مواجه نشده، برچسب خوبی پیشبینی کند.
یادگیری نظارت شده اغلب باعنوان یادگیری وظیفهمحور توصیف میشود. و بسیار متمرکز بر یک کار منفرد است. در طی روند یادگیری تحت نظارت نمونههای بیشتر و بیشتری را به الگوریتم میدهیم تا زمانیکه بتواند بهطور دقیق کار مد نظر ما را انجام دهد.
موارد استفاده از یادگیری تحت نظارت
پیداکردن تبلیغات پرطرفدار و محبوب
انتخاب آگهیهایی که عملکرد خوبی داشته باشند، اغلب کار یادگیری تحت نظارت است. بسیاری از تبلیغاتی را که هنگام مرور اینترنت مشاهده میکنید، ماشین لرنینگ برای نمایش به شما انتخاب کرده است. یک الگوریتم یادگیری گفته است که کدامیک از آگهیها محبوبیت معقول و منطقی دارند و بهاحتمال زیاد روی آنها کلیک میشود.
طبقه بندی هرزنامهها
اگر از ایمیل استفاده میکنید، حتما با فیلتر اسپم آشنا هستید. این فیلتر اسپم یک سیستم یادگیری نظارت شده است. این سیستمها یاد میگیرند که چگونه ایمیلهای مخرب را بهصورت پیشگیرانه فیلتر کنند تا آنها کاربر را آزار و اذیت ندهند. بسیاری از این موارد نیز بهگونهای رفتار میکنند که کاربر میتواند برچسبهای جدیدی را به سیستم ارائه دهد تا این سیستمها بتوانند ترجیح کاربر را تشخیص دهند و بیاموزند.
تشخیص چهره
آیا از Facebook استفاده می کنید؟ به احتمال زیاد چهره شما به عنوان داده در یک الگوریتم یادگیری نظارت شده استفاده شده است. و سیستم استفادهشده در فیسبوک برای تشخیص چهره شما آموزش دیده است. این سیستم چهرهها را پیدا میکند و حدس میزند چه کسی در عکس است و کاربران را شناسایی میکند. این عمل یک فرآیند تحت نظارت است.
یادگیری بدون نظارت
یادگیری بدون نظارت کاملاً برعکس یادگیری نظارت شده است. این نوع یادگیری فاقد برچسب است. در عوض، به الگوریتم دادههای زیادی داده میشود و همینطور به آن ابزاری برای درک ویژگیهای دادهها ارائه میشود.
در این حالت، مدل از طریق مشاهدات یاد میگیرد و دستورالعملها و ساختارهای موجود در مجموعهی دادهها را کشف میکند. زمانیکه مجموعه دادهای به مدل معرفی میشود، مدل با استفاده از گروهبندی، خوشهبندی و یا سازماندهی دادهها ارتباطات و الگوهای موجود در آنها را بهصورت اتوماتیک کشف میکند.
از آنجاکه یادگیری بدون نظارت مبتنی بر دادهها و خصوصیات آنهاست، می توان گفت که یادگیری بدون نظارت یادگیری دادهمحور است. نتایج حاصل از کار یادگیری بدون نظارت را دادهها و نحوهی شکلگیری آنها کنترل میکند.
چیزی که باعث میشود یادگیری بدون نظارت جالب توجه شود این است که اکثریت قریب به اتفاق دادهها در این جهان فاقد مارک و برچسب هستند. داشتن الگوریتمهای هوشمندی که میتواند ترابایتها دادهی بدون برچسب ما را بگیرد و درمیان آنها معنا و ارتباط پیدا کند، منبع بزرگی از سود بالقوه برای بسیاری از صنایع است و بهتنهایی میتواند به افزایش بهرهوری در چندین زمینه کمک کند.
بگذارید مثالی بزنم. تصور کنید که یک بانک اطلاعاتی بزرگ از هر مقاله تحقیقاتی که تاکنون منتشر شده است، داشته باشیم. و الگوریتمهای یادگیری بدون نظارتی داشته باشیم که میدانستند چگونه اینها را بهگونهای دستهبندی کنند که شما همیشه از آخرین پیشرفتها در تحقیقات دربارهی یک موضوع خاص مطلع باشید.
اکنون، شما خودتان شروع به ایجاد یک پروژه تحقیقاتی میکنید و کار خود را به این شبکه وصل میکنید تا الگوریتم بتواند آن را ببیند. وقتی کار خود را مینویسید و تایپ میکنید، الگوریتم درمورد کارهای مرتبط که ممکن است به شما کمک کند به شما پیشنهاداتی می دهد. پیشنهاد دربارهی کارهایی که ممکن است بخواهید به آنها استناد کنید و آثاری که حتی ممکن است در پیشبرد دامنه تحقیقتان به شما کمک کند. بدون شک با چنین ابزاری میتوان بهرهوری شما را بسیار بالا برد.
نمونه هایی از کارایی یادگیری بدون نظارت
سیستم های پیشنهادی
اگر تاکنون از YouTube یا Netflix استفاده کردید، به احتمال زیاد با یک سیستم توصیه ویدیویی روبرو شدید. این سیستمها غالباً در دامنه یادگیری بدون نظارت قرار میگیرند. سیستم باتوجهبه فیلمها، طول آنها، ژانر آنها، تاریخچه تماشای بسیاری از کاربران، کاربرانی که فیلمهای مشابه با شما را تماشا کردهاند یا فیلمهای دیگری که هنوز مشاهده نکردهاید و به کمک تحلیل این دادهها، به شما پیشنهادات جدیدی میدهد.
عادات خرید مشتریان
این احتمال وجود دارد که عادات خرید شما در جایی از پایگاهداده موجود باشد. این عادات خرید را میتوان در الگوریتمهای یادگیری بدون نظارت برای گروهبندی مشتریان در بخشهای خرید مشابه استفاده کرد. این روش به شرکتها کمک میکند تا در این بخشهای گروهبندیشده بازاریابی کنند و حتی میتوانند شبیه سیستمهای پیشنهادی عمل کنند.
گروه بندی سوابق کاربران
میتوانیم از یادگیری بدون نظارت برای گروهبندی سوابق و مشکلات کاربران استفاده کنیم. این امر میتواند به شرکتها کمک کند تا موضوعات اصلی را برای حل مشکلات مشتریان خود تشخیص دهند و این مشکلات را از طریق بهبود یک محصول یا طراحی سؤالات متداول برای رسیدگی به مسائل مشترک، اصلاح کنند.
درهرصورت، این کاری است که بهصورت اتوماتیک انجام میشود. اگر تاکنون مشکلی با یک محصول داشتهاید و گزارش اشکال را به شرکتی ارسال کردهاید، احتمالاً آن را به یک الگوریتم یادگیری بدون نظارت دادهاید تا آن را با سایر موضوعات مشابه دستهبندی کند!
یادگیری تقویتی
یادگیری تقویتی در مقایسه با یادگیری نظارت شده و تحت نظارت نسبتاً متفاوت است. درواقع با یادگیری تقویتی بهراحتی میتوانیم رابطه بین یادگیری نظارت شده و نظارت نشده (وجود یا عدم وجود برچسبها) را ببینیم .درک یادگیری تقویتکننده کمی مشکل است. بعضی از افراد سعی میکنند با توصیف آن بهعنوان نوعی یادگیری که به دنبالههای وابسته به زمان مرتبط است، یادگیری تقویتی را آسانتر کنند، با این حال، نظر من این است که این نوع یادگیری به سادگی باعث سردرگمی میشود.
من ترجیح میدهم یادگیری تقویتی را با عنوان یادگیری از اشتباهات توضیح دهم. یک الگوریتم یادگیری تقویتی در ابتدا اشتباهات زیادی خواهد داشت؛ تازمانیکه ما نوعی سیگنال را به الگوریتم ارائه دهیم که رفتارهای خوب را با سیگنال مثبت و رفتارهای بد را با یک سیگنال منفی همراه کند. به این ترتیب میتوانیم الگوریتم خود را تقویت کنیم تا رفتارهای خوب را نسبت به رفتارهای بد ترجیح دهد. با گذشت زمان، الگوریتم یادگیری ما میآموزد و کمتر از قبل اشتباه میکند. یادگیری تقویتی بسیار رفتارمحور است.
با این حال، برای درک واقعی یادگیری تقویتی یک مثال مشخص را بیان میکنیم. بیایید به آموزش یک عامل برای بازی Mario بپردازیم:
برای هرگونه یادگیری تقویتی، به یک عامل و یک محیط و همچنین راهی برای اتصال این دو از طریق یک حلقه بازخورد نیاز داریم. برای اتصال عامل به محیط، ما به آن مجموعه کارهایی میدهیم که میتواند انجام دهد و این امر بر محیط تأثیر میگذارد. برای اتصال محیط به عامل، ما به طور مداوم دو سیگنال را بهطرف عامل صادر میکنیم: یک وضعیت بهروزشونده و یک پاداش (سیگنال تقویتکنندهی ما برای رفتار).
در بازی ماریو، عامل ما الگوریتم یادگیری ما است و محیط ما بازی (به احتمال زیاد یک سطح خاص) است. الگوریتم ما مجموعهای از اقدامات را پیش رو دارد. با گذشت زمان، وضعیت بهروزشوندهی ما درواقع هر فریم بازی خواهد بود و سیگنال پاداش ما تغییر در امتیاز خواهد بود. اگر همهی این مؤلفهها را به هم متصل کنیم، یک سناریوی یادگیری تقویتی برای بازی Mario تنظیم خواهیم کرد.
کاربرد یادگیری تقویتی در دنیای واقعی
بازی های ویدئویی
یکی از رایجترین محیطها برای یادگیری تقویتی، یادگیری ازطریق بازیکردن است. همانند برنامه یادگیری تقویتی Google ، AlphaZero و AlphaGo. در حال حاضر، هیچ نوع بازی که یک عامل یادگیری تقویت کننده دارد و بر هوش مصنوعی متکی باشد را نمیشناسم، اما میتوانم تصور کنم که این ایدهی جالب بهزودی محقق خواهد شد.
شبیه سازی صنعتی
بسیاری از برنامههای کاربردی روباتیک در خطوط مونتاژ استفاده میشود . بهتر است که ماشینهای ما یاد بگیرند کارهای خود را بدون نیاز به رمزگشایی در روند کار خود انجام دهند. این میتواند یک گزینه ارزانتر و مطمئنتر باشد. حتی ممکن است کمتر مستعد شکست باشد. ما همچنین میتوانیم دستگاههای خود را برای استفاده از برق کمتر تنظیم کنیم تا در هزینهها صرفهجویی کنیم. همچنین، به کمک این شبیه سازی مانع خرابشدن دستگاه نیز میشویم.
مدیریت منابع
یادگیری تقویتی برای پیمایش در محیطهای پیچیده مناسب است. این نوع یادگیری میتواند نیاز به تعادل در برخی از شرایط را برطرف کند. به عنوان مثال، مراکز داده Google. آنها از یادگیری تقویتی برای برآورده کردن نیازهای انرژی و حفظ تعادل استفاده میکنند و هزینههای اصلی را کاهش میدهند. این مسئله چه تاثیری در کار ما و افراد معمولی دارد؟ ارزانتر کردن ذخیره سازی دادهها برای ما و همچنین تأثیر کمتر بر محیطی که همه ما در آن قرار گرفتهایم.
ادغام انواع یادگیری ماشین
اکنون که ما در مورد سه دسته مختلف یادگیری ماشین صحبت کردهایم، لازم به ذکر است که مرز بین این سه نوع یادگیری مبهم است. کارهای زیادی وجود دارد که بهراحتی میتوان آنها را بهعنوان یک نوع یادگیری بیان کرد و حتی به یک الگوی دیگر تبدیل کرد.
به عنوان مثال، یک سیستم پیشنهادی را انتخاب کنید. ما آن را بهعنوان نمونهای از یادگیری بدون نظارت مورد بحث قرار دادیم. این سیستم همچنین به راحتی ممکن است به یک نوع یادگیری تحت نظارت تغییر داده شود. مثلا با توجه به سابقه تماشای کاربران، پیشبینی کند که فیلم خاصی باید توصیه شود یا نه.
همچنین ایدهی جالبتر این است که ما میتوانیم این نوع یادگیریها را بسازیم و مؤلفههایی از سیستمها را طراحی کنیم که به یک روش یادگیری یاد میگیرند ، اما در یک الگوریتم بزرگتر با هم ادغام میشوند. برای مثال الگوریتمی که ماریو را بازی میکند، چرا توانایی یادگیری نظارت شده را در شناخت و برچسبزدن دشمنان به آن ندهیم؟ و یا سیستمی که جملات را طبقهبندی میکند، چرا این توانایی را به وجود نیاوریم که سیستم بتواند از طریق یک فرآیند که بدون نظارت آموخته میشود؛ معنای جملهها را بازنمایی کند؟
جمعبندی و نتیجهگیری
دنیای آینده دنیایی است که با ماشین لرنینگ ساخته میشود. نمونههایی که گفته شد و آنچه ما تا به امروز شاهدش بودیم، نمونههایی ساده در ابتدای رشد این رشته است. هرروز که میگذرد راهها و شیوههای جدیدتری برای بهترکردن و سریعترکردن یادگیری ماشین یافته میشود. شرکتهای مختلف در حوزههای مختلف نیز از این یافتهها برای ارتقای خدمات خود استفاده میکنند.
نمونهی بسیار جالب آن الگوریتمی است که فیسبوک ساخته است. فیسبوک سیستمی برای سه بعدیکردن عکسها طراحی کرده که مبتنی بر ماشین لرنینگ است. فیسبوک در تلاش است تا با ارتقادادن همین سیستم، درآیندهای نهچندان دور این امکان را به کاربرانش بدهد که علاوهبر عکسهای سه بعدی ویدئوهای سه بعدی نیز بهاشتراک بگذارند.
بنابراین، بسیار مهم است که همهی ما تا حدودی اصول یادگیری ماشین را درک کنیم. حتی اگر هرگز خودمان یک سیستم یادگیری ماشین ایجاد نکنیم. زیرا در دنیایی که امروز در آن زندگی میکنیم، ماشین لرنینگ بهطور فزایندهای استفاده میشود و رواج دارد. همینطور درک اصول یادگیری ماشینی به ما کمک میکند تا بتوانیم در مورد فنآوریهایی که از آنها استفاده میکنیم، بهتر استدلال کنیم.