انواع سیستم‌های یادگیری ماشین - بخش دوم

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

همانطور که در مقاله پیشین هم به آن اشاره شد، در حال حاضر انواع مختلفی از سیستم‌های یادگیری ماشین وجود دارد که آنها را می‌توان در سه گروه کلی بصورت زیر دسته بندی کرد:

  • بسته به اینکه این روش‌ها تحت نظارت انسان هستند یا نه؛ شامل:
    • یادگیری نظارت شده (Supervised)
    • یادگیری بدون نظارت (Unsupervised)
    • یادگیری نیمه نظارتی (Semi Supervised)
    • یادگیری تقویتی (Reinforcement)
  • بسته به اینکه می‌توانند بصورت برخط یادبگیرند؛ شامل:
    • یادگیری آنلاین یا برخط
    • یادگیری گروهی (Batch)
  • آیا آنها به سادگی نقاط جدید داده را با نقاط داده شناخته شده قبلی مقایسه می‌کنند یا در عوض الگوهای موجود در داده‎‌های آموزشی را تشخیص داده و یک مدل پیش بینی ارائه می‌دهند:
    • یادگیری مبتنی بر نمونه (Instance-based)
    • یادگیری مبتنی بر مدل (Model-based)

در ادامه قصد دارم انواع سیستم‌های یادگیری بسته به اینکه بصورت آنلاین یادگیری را انجام می‌دهند یا خیر و یا نوع تعمیم دادن آنها چگونه است را تشریح کنم. با من همراه باشید!


یادگیری آنلاین یا دسته‌ای

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

یادگیری دسته‌ای (Batch learning)

در یادگیری دسته‌ای، سیستم قادر به یادگیری تدریجی نیست و باید با استفاده از تمام داده‌های موجود یادگیری انجام شود. این روش معمولا زمان و منابع محاسباتی زیادی را استفاده می‌کند. ابتدا سیستم با کمک داده‌های موجود آموزش داده می‌شود و سپس برای اجرا بدون یادگیری بیشتر وارد محصول نهایی می‌شود. این یادگیری اصطلاحا آفلاین (offline learning) نامیده می‌شود.

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

 اگر سیستم شما باید به سرعت با داده‌های در حال تغییر سازگار شود (به عنوان مثال برای پیش‌بینی قیمت‌های سهام)، پس شما به یک روش یادگیری که واکنش سریع‌تری دارد نیاز خواهید داشت.

یادگیری آنلاین (Online learning)

در یادگیری آنلاین، سیستم به صورت تدریجی با دریافت متوالی داده، به صورت جداگانه یا توسط گروه‌های کوچکی که اصطلاحا mini-batch نامیده می‌شوند، آموزش داده می‌شود. هر مرحله یادگیری سریع و هزینه اجرای کمتری دارد، بنابراین سیستم می‌تواند در مورد داده‌های جدید به سرعت بیاموزد، و در کاربردهایی (به عنوان مثال، قیمت سهام) که نیاز به تطبیق سریع وجود دارد، بسیار عالی است. همچنین اگر منابع محاسباتی محدودی دارید، گزینه خوبی است. هنگامی که یک سیستم یادگیری آنلاین با موارد جدید داده آشنا شد، دیگر به آنها نیازی ندارد، بنابراین می‌تواند آنها را کنار بگذارید (مگر اینکه بخواهید بتوانید به حالت قبلی بازگردید)، و اینکار مقدار زیادی از فضا را ذخیره کند.
همچنین می‌توان از الگوریتم‌های یادگیری آنلاین برای آموزش سیستم‌هایی با مجموعه داده‌های عظیمی که نمی تواند در حافظه اصلی یک دستگاه قرار گیرند، استفاده کرد (به این کار یادگیری خارج از هسته out-of-core learning می‌گویند). این الگوریتم بخشی از داده را بارگذاری می‌کند، یک مرحله آموزشی روی آن داده اجرا می‌کند و تا زمانی که روی همه داده‌ها اجرا نشود، این روند را تکرار می کند.

استفاده از یادگیری آنلاین برای مدیریت داده‌های بسیار حجیم - لازم به ذکر است این نوع یادگیری مغمو
استفاده از یادگیری آنلاین برای مدیریت داده‌های بسیار حجیم - لازم به ذکر است این نوع یادگیری مغمو
استفاده از یادگیری آنلاین برای مدیریت داده‌های بسیار حجیم - لازم به ذکر است این نوع یادگیری مغمو

یکی از مهمترین پارامترها در یادگیری آنلاین نرخ یادگیری (learning rate) هست که تعیین می‌کند چه میزان یادگیری نسبت به داده‌های جدید سازگاری نشان می‌دهد. اگر نرخ یادگیری بالا تعریف شود به این معنی هست که سیستم شما به سرعت با دیتا جدید تغییر می‌کند و این به معنی این هست که دانشی که در گذشته بدست آمده است سریع‌تر فراموش خواهد شد. در عوض اگر نرخ یادگیری پایین تعریف شود باعث می‌شود روند یادگیری کند گردد و همچنین یادگیری نسبت به داده‌های نویزی جدید (outliers) حساسیت کمتری خواهد داشت.
چالش بزرگ یادگیری آنلاین این است که اگر داده‌ بد به سیستم داده شد، عملکرد سیستم به تدریج کاهش می‌یابد. به عنوان مثال، داده‌های بد می‌تواند ناشی از خرابی سنسور روی یک ربات باشد. برای کاهش این خطر، باید سیستم خود را از نزدیک زیر نظر داشته باشید و در صورت تشخیص افت عملکرد، سریعاً فرایند یادگیری را متوقف کنید (و احتمالاً به حالت قبلی بازگردید).

یادگیری مبتنی بر نمونه در مقابل یادگیری مبتنی بر مدل

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

دو رویکرد اصلی برای تعمیم وجود دارد: یادگیری مبتنی بر نمونه و یادگیری مبتنی بر مدل.

 

یادگیری مبتنی بر نمونه (Instance-based)

در این نوع یادگیری، سیستم نمونه‌ها را با خودشان یاد میگیرد، سپس نمونه‌های جدید را بر اساس یک مقیاس شباهت (measure of similarity) تعمیم می‌دهد. برای نمونه فرض کنید در سیستم اسپم شما ایمیل‌ها را باخودشان یاد بگیرید یعنی یک ایمیل را اسپم بر چسب می‌زنید اگر این ایمیل با ایمیل‌هایی که در حال حاضر بعنوان ایمیل اسپم شناخته می‌شوند یکسان باشد. این نوع یادگیری بدترین نوع یادگیری نیست اما قطعا بهترین هم نیست. در نهایت برای تعمیم ایمیل جدید را اسپم در نظر میگیرید اگر با یک مقیاس از پیش تعیین شده به ایمیل‌های اسپم شباهت بیشتری داشته باشد.

یادگیری مبتنی بر نمونه - همانطور که مشاهده می‌کنید از آنجایی که نمونه جدید شباهت بیشتری به گروه مثلث‌ها دارد در این گروه قرار می‌گیرد
یادگیری مبتنی بر نمونه - همانطور که مشاهده می‌کنید از آنجایی که نمونه جدید شباهت بیشتری به گروه مثلث‌ها دارد در این گروه قرار می‌گیرد
یادگیری مبتنی بر نمونه -  همانطور که مشاهده می‌کنید از آنجایی که نمونه جدید شباهت بیشتری به گروه مثلث‌ها دارد در این گروه قرار می‌گیرد

یادگیری مبتنی بر مدل (Model-based)

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

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

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


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