یادگیری انتقالی

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

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

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

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

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

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

مثالِ مدل تشخیص کوله‌پشتی که برای تشخیص عینک در تصاویر مورد استفاده قرار گرفت را در نظر بگیرید. در لایه‌های اولیه، مدل یاد گرفته است که کمپنا اشیا را در تصویر پیدا کند. بنابراین تنها نیاز است تا لایه‌های آخر مدل دوباره آموزش ببینند، به گونه‌ای که یاد بگیرد کمپنا عینک را از سایر اشیا تشخیص دهد.

یادگیری انتقالی

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

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

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

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

به طور معمول، زمانی از یادگیری انتقالی استفاده می‌شود که ۱) داده‌های آموزشیِ برچسب‌دارِ کافی برای آموزش شبکه از صفر وجود ندارد. ۲) شبکه‌ای از پیش آموزش دیده برای یک task مشابه وجود دارد که روی پایگاه داده‌ای وسیع آموزش دیده است. موقعیت دیگری که استفاده از یادگیری انتقالی مطلوب است این است که task1 و task2، ورودی‌های مشابهی دارند.

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

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

۱٫   آموزش مجدد یک مدل

 فرض کنید بخواهیم مسئله A را حل کنیم اما داده کافی برای آموزش یک شبکه عصبی عمیق را نداشته باشیم. یک راه حل این است که به دنبال مسئله  B بگردیم که مشابه با مسئله A است و داده‌های کافی برای آن وجود دارد. به این ترتیب شما قادر خواهید بود که با استفاده از مدل مسئله A، یک شبکه عصبی عمیق برای حل مسئله B آموزش دهید. این‌که از مدل A به صورت کامل استفاده شود یا تنها تعدادی از لایه‌ها مورد استفاده قرار بگیرد، شدیدا به مسئله B وابسته است.

اگر ورودی‌های مدل A و مدل B یکسان باشند، آنگاه می‌توان از مدل A استفاده کرده و خروجی را برای ورودی‌های جدید بدست آورد. همچنین می‌توان تنها لایه‌های وابسته به task و لایه خروجی مدل را دوباره آموزش داده و مدل را مجددا استفاده نمود.

۲٫   استفاده از یک مدل از پیش آموزش دیده

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

به‌عنوان مثال، کتابخانه Keras، تعداد ۹ مدل دارد که می‌توان از آن‌ها در یادگیری انتقالی، prediction، استخراج ویژگی و fine-tuning استفاده کرد. در اینجا می‌توانید به مدل‌ها و آموزش مختصری برای استفاده از هرکدام دسترسی داشته باشید.

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

۳٫   استخراج ویژگی

رویکرد دیگر یادگیری عمیق، یافتن بهترین نوع نمایش برای یک مسئله است و این به معنی یافتن مهم‌ترین ویژگی‌ها است. این رویکرد به عنوان Representation Learning نیز شناخته می‌شود و اغلب منجر به نتایج بهتری نسبت به نمایشی است که به صورت دستی طراحی شده است، می‌شود (استخراج ویژگی به صورت غیراتوماتیک انجام شده است).

یادگیری انتقالی

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

نمایش به‌دست آمده می‌تواند برای سایر مسئله‌ها نیز مورد استفاده قرار گیرد. به سادگی می‌توان از لایه اول برای حصول بهترین نمایش استفاده کرد اما از لایه آخر که بسیار وابسته به task است استفاده نمی‌شود.

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

چندین مدل‌ یادگیری ماشین وجود دارند که شناخته شده‌اند. یکی از این مدل‌ها Inception-v3 است که برای مسابقه ImageNet Large Visual Recognition Challenge آموزش دیده است. در این مسابقه، شرکت کنندگان باید تصاویر را به ۱۰۰۰ کلاس مثل گوره‌خر، سگ یا ماشین ظرفشویی دسته‌بندی می‌کردند.

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

مایکروسافت هم همچنین تعدادی مدل از پیش آموزش دیده ارائه کرده است که برای توسعه R و Python می‌توانند مورد استفاده قرار گیرند. این مدل‌ها از طریق MicrosoftML R package و Microsoftml Python package قابل دسترسی هستند.

دیگر مدل‌های شناخته شده عبارتند از ResNet و AlexNet. همچنین پیشنهاد می‌شود که سری به سایت pretrained.ml نیز بزنید. در این سایت می‌توانید به مدل‌های از پیش آموزش دیده یادگیری عمیق، همراه با کدها و دمو دسترسی داشته باشید.

تمامی حقوق مطالب برای کمپنا محفوظ است و هرگونه کپی برداری بدون ذکر منبع ممنوع می باشد.