رفتن به نوشته‌ها

انتقال یادگیری (Transfer learning)

شاید بهترین تعریف راجع به انتقال یادگیری یا همان Transfer learning یا Transfer of learning رو ویکی‌پدیا داده باشه که میگه:

Transfer learning is a research problem in machine learning that focuses on storing knowledge gained while solving one problem and applying it to a different but related problem

به زبان ساده‌تر انتقال یادگیری یعنی از دانشی که در یک زمینه کسب کردیم بیاییم در زمینه‌های نسبتا مشابه استفاده کنیم. مثلا در بحث بینایی کامپیوتر (computer vision) مدل‌هایی برای تشخیص دسته‌بندی عکس‌ها در یکی دو سال اخیر ارائه میشن مثل AlexNet، Inception یا Inception V2 اغلب میلیون‌ها پارامتر دارند. مثلا مدل Inception V3 رو در شکل زیر مشاهده کنید:

این مدل یک شبکه عصبی عمیق با تعداد بسیار زیادی لایه‌های کانولوشن، پولینگ است که برای تشخیص دسته‌بندی اشیا روی دادگان ILSRVC 2012 آموزش داده شده است. این شبکه برای تشخیص دسته‌بندی عکس‌ها (جمعا ۱۰۰۰ دسته مختلف) به بهترین دقت در زمان خودش دست پیدا کرده است (این دسته‌ها تقریبا همه چیزی رو شامل میشن: کامپیوتر، ماشین، کیف و …).

این شبکه از دو قسمت اصلی تشکیل شده است:

  1. استخراج ویژگی (feature extraction)، که به کمک لایه‌های کانولوشن انجام میشود.
  2. دسته‌بندی‌کننده (classification)،  که به کمک یک دسته‌بندی کننده MLP عکسها را گروه‌بندی میکند.

قسمت اول یا بخش استخراج ویژگی (feature extraction) وظیفه دارد تا یک بازنمایی مناسب از عکس استخراج کند تا دسته‌بندی کنند بتواند به درستی تصمیم‌گیری کند. این شبکه متاسفانه در تشخیص گل‌ها به خوبی عمل نمیکند و دچار مشکل میشود (یعنی صرف گل رو میفهمه ولی نوع گل رو نمیفهمه!)

برای اینکه از اون شبکه‌ بزرگ (Inception V3) که زمان آموزشش خیلی طول میکشه و کلی زمان میبرد استفاده کنند میان میگن که قسمت feature extraction رو دست نزنیم و فقط اون قسمت آخر یعنی classifier اشو بجاش یه classifier دیگه آموزش بدیم که بتونه در تشخیص گل‌ها خوب عمل کنه. ایده پشتش هم اینجوری بوده که میگن شبکه‌های کانولوشنی معمولا در هر مرحله یک سری فیچر استخراج میکنن (مثلا در مرحله اول لبه‌ها، در مراحل بعدی بخشی از یک شکل و در نهایت کل شی) که احتمالا اون فیچرها برای تشخیص گل‌ها هم می‌تواند مناسب باشند.

 

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

 

این تکنیک در پردازش زبان طبیعی هم خیلی کاربرد دارد. مثلا ورد۲وک رو در نظر بگیرید. شما ورد۲وک را روی مدل زبانی آموزش میدهید ولی روی تقریبا تمام تسک‌های پردازش زبان طبیعی ازش استفاده میکنید. با این فرض که میگید کلماتی که در مدل‌ زبانی آموزش دیده‌اند و کنار هم قرار گرفته‌اند احتمالا در جاهای دیگر هم همین خاصیت را دارند. یا مثلا در کار تشخیص جملات مشابه (text similarity)، ابتدا شبکه‌تون رو روی دادگان Textual Entailment آموزش میدید (‌اصطلاحا پیش آموزش – pretrain می‌کنید) و بعد روی دادگان اصلی‌تون شبکه را آموزش میدید.

یکی دیگه از کارهایی که در این زمینه انجام شده است مقاله ulmfit هست. ایده مقاله این است که روی یک حجم بسیار زیادی از متن یک مدل زبانی آموزش میدن و سپس از این مدل زبان برای دسته‌بندی (classification) متن استفاده می‌کنند.

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

منتشر شده در آموزشیادگیری عمیقیادگیری ماشین

اولین باشید که نظر می دهید

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

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