یادگیری فعال (Active Learning) در یادگیری ماشین

مدرس: مسعود کاویانی

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

با یک مثال ادامه دهیم. فرض کنید یک منشی قرار است نامه‌های رسیده به یک سازمان را به دو دسته‌ی نامه‌های بخش کارشناسی و نامه‌های بخش مدیریتی تقسیم‌بندی کند. در اولین روزهای استخدام چندین نمونه نامه‌ی کارشناسی و چندین نمونه نامه‌ی مدیریتی توسط سرپرست به این شخص آموزش داده‌ شده است (فرآیند learning) و منشی این تفکیک کردنِ نامه‌ها را یادگرفته است. حالا این منشی می‌تواند نامه‌های جدید را طبقه‌بندی کند (مانند الگوریتم‌های طبقه‌بندی). حال فرض کنید بعد از مدتی یک نامه‌ی جدید به منشی می‌رسد که منشی احتمال می‌دهد این نامه به بخش کارشناسی تعلق دارد ولی مطمئن نیست. برای همین این نامه را نزدِ سرپرست می‌برد و از او سوال می‌پرسد که این نامه برای کدام بخش است؟ سرپرست مثلاً می‌گوید این نامه مربوط به بخش کارشناسی است. حالا منشی این نامه را به بخش کارشناسی طبقه‌بندی می‌کند و علاوه بر آن یاد می‌گیرد که این دست از نامه‌ها به بخش کارشناسی مربوط هستند. یعنی از این به بعد یادگیریِ او بهبود می‌یابد و نامه‌های جدید را دقیق‌تر طبقه‌بندی می‌کند. این نوعی یادگیریِ فعال یا همان active learning است که در حین کار برای این منشی صورت گرفته است.

روش‌های یادگیریِ فعال در داده‌کاوی هم به همین صورت هستند. احتمالا درس طبقه‌بندی را خوانده‌اید. در واقع الگوریتم‌هایی مانند طبقه‌بندها، بعد از اینکه یادگیری را انجام دادند بایستی عملیاتِ پیش‌بینی و طبقه‌بندی را بر روی داده‌های جدید انجام دهند. حال اگر یک الگوریتم نتواند بگوید داده‌ی جدیدی که از راه رسیده به طور قطع متعلق به کدام طبقه است، می‌تواند این داده‌ی جدید را به یک ناظر (supervisor) یا همان کسی که بتواند برچسب دقیق بر روی داده بزند، بفرستد و از او برچسب واقعی داده‌ها را دریافت کرده و مانند یک الگوریتم برخط (online) این نمونه را که در طبقه‌بندیِ آن شک داشت، حالا با دانستنِ کلاسِ واقعیِ آن (که توسط ناظر برچسب خورده است) به مدلِ آموزشی خود اضافه کند و یادگیری را به صورت بر خط انجام دهد. در واقع این‌جا نوعی یادگیری فعال (active learning) برای الگوریتم اتفاق افتاده است.

برای نمونه می‌توان همان مثالِ شرکتِ گوگل در درس قبل را دید. گوگل برای اینکه بتواند بفهمد یک ایمیل ارسالی، هرزنامه (spam) هست یا خیر، یک الگوریتم توسعه‌داده است که بر اساس یک سری داده‌های آموزشی، یادگیری را انجام می‌دهد و حالا می‌تواند ایمیل‌های جدیدی که از راه می‌رسند را به طبقه‌های هرزنامه یا غیرهرزنامه طبقه‌بندی کند. یک ایمیل جدید می‌رسد که الگوریتم فکر می‌کند این ایمیل هرزنامه است ولی مطمئن نیست. پس این ایمیل را به یک فرد مختصص می‌فرستد تا این فرد پس از بررسی، مشخص کند این ایمیل جزو ایمیل‌های هرزنامه هست یا خیر؟ سپس طبقه‌ی اصلی این ایمیل توسط آن فرد خبره مشخص شده و حالا الگوریتم این نمونه را به صورت بر خط (online) به مدلِ یادگرفته‌شده‌ی خود اضافه می‌کند و در واقع مدلِ یادگرفته شده‌ی خود را به صورت فعال تکمیل می‌کند. (البته شرکتی مانند گوگل راه‌های بهتر و پیچیده‌تری برای این کار دارد – مثلا اگر شما یک ایمیل را از هزرنامه خود خارج کردید احتمالا الگوریتم یاد می‌گیرد که این ایمیل از این به بعد هرزنامه نیست)

ترتیب پیشنهادی خواندن درس‌های این مجموعه به صورت زیر است:
منابع این بحث و اطلاعات بیشتر

» فصل ۱۲کتاب Mining Of Massive Datasets

در صورت تمایل به یادگیری بیشتر، منابع بالا در نظر گرفته شده است. می توانید با خواندن این منابع، به یادگیری خود در این زمینه عمق ببخشید

4 دیدگاه دربارهٔ «یادگیری فعال (Active Learning) در یادگیری ماشین»

  1. سلام، از اینکه با این تفکر که برخی از باستنی های دانستنی را به علاقه مندان این حوزه ارائه می دهید به سهم بسیار کوچک و ناچیز خودم بی نهایت سپاسگزارم. امیدوارم که همه اهل دانش در این سرزمین به ارزش وجودی و سرمایه ای داده ها پی ببرند.

  2. سلام و وقت بخیر
    مقالات معتبری که در زمینه ی یادگیری افزایشی مطرح است را امکانش هست معرفی بفرمایید؟
    و منابع صحبت هایی که در این مطلب عنوان کردید هم عنوان بفرمایید.
    با تشکر

  3. سلام وقت بخیر میشه لطف کنید یک سورس کدی از یادگیری فعال متلب ارائه بدین یا لینکی چیزی بهم بدین

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *