Transfer Learning، استفاده مجدد از یک مدل از پیش آموزش دیده بر روی یک مشکل جدید است. این رویکرد در deep learning بسیار محبوب است زیرا میتواند شبکه های deep neural را با دادههای نسبتاً کمی آموزش دهد. این در زمینه data science بسیار مفید است زیرا اغلب مشکلات دنیای واقعی، معمولاً میلیونها نقطه داده برچسبگذاری شده برای آموزش چنین مدلهای پیچیدهای ندارند.
ما نگاهی خواهیم داشت به اینکه Transfer Learning چیست، چگونه کار میکند وچرا و چه زمانی باید از آن استفاده شود. علاوه بر این، ما رویکردهای مختلف Transfer Learning را پوشش خواهیم داد و منابعی را در مورد مدلهای از پیش آموزش دیده در اختیار شما قرار خواهیم داد.
Transfer Learning چیست؟
Transfer Learning، که در یادگیری ماشین استفاده میشود، استفاده مجدد از یک مدل از پیش آموزش دیده برای یک مشکل جدید است. در Transfer Learning، یک ماشین از دانش به دست آمده از یک کار قبلی برای بهبود generalization در مورد دیگری استفاده میکند. به عنوان مثال، در آموزش یک classifier برای پیشبینی اینکه آیا یک تصویر حاوی غذا است یا خیر، میتوانید از دانشی که در طول آموزش به دست آوردهاید برای تشخیص نوشیدنیها استفاده کنید.
در Transfer Learning، دانش یک مدل یادگیری ماشین که از قبل آموزش دیده است، برای یک مشکل متفاوت اما مرتبط اعمال میشود. به عنوان مثال، اگر یک classifier ساده برای پیشبینی اینکه «آیا یک تصویر حاوی کولهپشتی است یا نه» را آموزش دادهاید، میتوانید از دانشی که مدل در طول آموزش به دست آورده است، برای تشخیص اشیاء دیگر مانند عینک آفتابی استفاده کنید.
با Transfer Learning، اساساً سعی می کنیم از آموختههای یک task برای بهبود generalization در کار دیگر استفاده کنیم. وزنهایی را که یک شبکه در task A آموخته است به یک task B جدید منتقل میکنیم.
ایده کلی این است که از دانشی که یک مدل از یک task آموخته است با تعداد زیادی دادههای آموزشی برچسب گذاری شده در یک task جدید که دادههای زیادی ندارد، استفاده شود. به جای اینکه فرآیند یادگیری را از ابتدا شروع کنیم، با الگوهایی شروع میکنیم که از حل یک task مرتبط به دست میآیند.
موارد استفاده از Transfer Learning
Transfer Learning به دلیل قدرت محاسباتی زیاد بیشتر در کارهای computer vision و پردازش زبان طبیعی (NLP) ، مانند تجزیه و تحلیل احساسات مورد استفاده قرار میگیرد.
Transfer Learning در واقع یک تکنیک یادگیری ماشینی نیست، اما میتواند به عنوان یک “روش طراحی” در این زمینه، به عنوان مثال، یادگیری فعال، دیده شود. همچنین بخش یا حوزه مطالعه انحصاری یادگیری ماشین نیست. با این وجود، در زمینه کارهای ترکیبی با neural network که به مقادیر زیادی داده و توان محاسباتی نیاز دارند، بسیار محبوب شده است.
Transfer Learning چگونه کار میکند؟
به عنوان مثال، در computer vision ، neural network ها معمولاً سعی میکنند لبههای لایههای قبلی، شکلها در لایه میانی و برخی ویژگیهای task-specific را در لایههای بعدی تشخیص دهند. در Transfer Learning از لایههای اولیه و میانی استفاده میشود و فقط لایههای آخر را بازآموزی میکنیم. این کمک میکند تا دادههای برچسبگذاریشده مربوط به آن task که در ابتدا روی آن آموزش داده شده بود، افزایش یابند.
بیایید به مثالی برگردیم که برای تشخیص کولهپشتی روی تصویر آموزش دیده است، ولی برای شناسایی عینک آفتابی هم استفاده میشود. در لایههای قبلی، مدل یاد گرفته است که اشیا را تشخیص دهد، به همین دلیل ما فقط لایههای آخر را دوباره آموزش میدهیم تا یاد بگیرد که چه چیزی عینک آفتابی را از اشیاء دیگر جدا میکند.

در Transfer Learning، ما سعی میکنیم تا حد امکان دانش را از task قبلی که مدل آموزش داده شده بود، به task جدید که در دست انجام شدن است، انتقال دهیم. این دانش بسته به مشکل و دادهها میتواند به اشکال مختلفی باشد. برای مثال، میتواند نحوه ترکیب مدلها باشد که به ما امکان میدهد اشیاء جدید را راحتتر شناسایی کنیم.
چرا باید از Transfer Learning استفاده کنیم؟
Transfer Learning چندین مزیت دارد، اما مزایای اصلی آن صرفه جویی در زمان آموزش، عملکرد بهتر neural network ها (در بیشتر موارد) و عدم نیاز به دادههای زیاد است.
معمولاً برای آموزش neural network از ابتدا، به دادههای زیادی نیاز است. اما دسترسی به آن دادهها همیشه آسان نیست. اینجاست که Transfer Learning مفید است. با Transfer Learning، میتوان یک مدل یادگیری ماشین خوب، با دادههای آموزشی نسبتاً کمی ساخت، زیرا این مدل از قبل آموزشدیده شده است. این امر به ویژه در پردازش زبان طبیعی بسیار ارزشمند است، زیرا برای ایجاد مجموعه دادههای بزرگ برچسبگذاریشده، به دانش تخصصی نیاز است. علاوه بر این، زمان آموزش کاهش مییابد. زیرا گاهی اوقات ممکن است چند روز یا حتی چند هفته طول بکشد تا یک deep neural network از ابتدا روی یک کار پیچیده آموزش داده شود. به گفته دمیس حسابیس، مدیرعامل DeepMind، Transfer Learning یکی از امیدوارکنندهترین تکنیکهایی است که میتواند روزی به رسیدن به هوش عمومی مصنوعی (AGI) منجر شود:

چه زمانی باید از Transfer Learning استفاده کنیم؟
همانطور که در یادگیری ماشین این مسئله همیشه وجود دارد، ایجاد قوانینی که به طور کلی قابل اجرا هستند دشوار است. اما در اینجا چند دستورالعمل در مورد استفاده از Transfer Learning وجود دارد:
- دادههای آموزشی برچسبگذاری شده کافی برای آموزش شبکه شما، از ابتدا وجود ندارند.
- در حال حاضر شبکهای وجود دارد که برای یک کار مشابه از قبل آموزش دیده است، که معمولاً بر روی مقادیر انبوه داده آموزش داده شده است.
وقتی task 1 و task 2 ورودی یکسانی دارند، استفاده از Transfer Learning بسیار عالی است.
اگر مدل اصلی با استفاده از یک کتابخانه منبع باز مانند TensorFlow آموزش داده شده است، می توانید به سادگی آن را بازیابی کنید و برخی از لایهها را برای کار خود دوباره آموزش دهید. با این حال، به خاطر داشته باشید که Transfer Learning تنها در صورتی کار میکند که ویژگیهای آموخته شده از اولین کار عمومی باشد. به این معنی که میتوانند برای کار مرتبط دیگری نیز مفید باشند. همچنین، ورودی مدل باید همان اندازهای باشد که در ابتدا با آن آموزش داده شده است. اگر آن را ندارید، یک مرحله pre-processing اضافه کنید تا اندازه ورودی خود را به اندازه مورد نیاز تغییر دهید.
رویکردهای Transfer Learning
1- آموزش یک مدل برای استفاده مجدد از آن
تصور کنید می خواهید task A را حل کنید اما داده کافی برای آموزش یک شبکهdeep neural ندارید. یکی از راه حلهای این مشکل، یافتن یک task B مرتبط با دادههای فراوان است. deep neural network را در task B آموزش دهید و از مدل به عنوان نقطه شروع برای حل task A استفاده کنید. اینکه آیا شما نیاز به استفاده از کل مدل دارید یا فقط چند لایه، بستگی زیادی به مشکلی دارد که در تلاش برای حل آن هستید.
اگر ورودی یکسانی در هر دو کار دارید، احتمالاً استفاده مجدد از مدل و پیشبینی برای ورودی جدیدتان یک گزینه است. از طرف دیگر، تغییر و بازآموزی لایههای مختلف کار خاص و لایه خروجی، روشی برای کاوش است.
2- استفاده از یک مدل از قبل آموزشدیده
روش دوم استفاده از یک مدل از قبل آموزش دیده است. تعداد زیادی از این مدلها وجود دارند، پس حتما کمی تحقیق کنید. تعداد لایههای استفاده مجدد و تعداد لایههای بازآموزی، به مشکل بستگی دارد.
به عنوان مثال، Keras، مدلهای از پیش آموزش دیده متعددی را ارائه میدهد که میتوانند برای Transfer Learning، پیش بینی، استخراج ویژگی و تنظیم دقیق استفاده شوند. میتوانید این مدلها و همچنین چند آموزش مختصر در مورد نحوه استفاده از آنها را در اینجا بیابید. همچنین مؤسسات تحقیقاتی بسیاری وجود دارند که مدلهای آموزشدیده را منتشر میکنند.
این نوع از Transfer Learning بیشتر در حین deep learning استفاده میشود.
3- استخراج ویژگی
روش دیگر این است که از deep learning برای کشف بهترین نمایش (representation) مشکل خود استفاده کنید، که به معنای یافتن مهمترین ویژگیها است. این رویکرد به عنوان representation learning نیز شناخته میشود و اغلب میتواند عملکرد بسیار بهتری نسبت به نمایش دستی به ارمغان آورد.

در یادگیری ماشین، ویژگیها معمولاً به صورت دستی توسط محققان و کارشناسان domain ساخته میشوند. خوشبختانه، deep learning میتواند ویژگیها را به طور خودکار استخراج کند. البته، این بدان معنا نیست که مهندسی ویژگی و دانش domain دیگر مهم نیست . شما هنوز باید تصمیم بگیرید که کدام ویژگیها را در شبکه خود قرار دهید. گفته میشود، neural network ها این توانایی را دارند که بیاموزند کدام ویژگیها واقعا مهم هستند و کدامها نیستند. یک الگوریتم representation learning میتواند ترکیب خوبی از ویژگیها را در یک بازه زمانی بسیار کوتاه کشف کند، حتی برای کارهای پیچیده. که در غیر این صورت به تلاش انسانی زیادی نیاز دارند.
سپس نمایش (representation) آموختهشده را میتوان برای مشکلات دیگر نیز استفاده کرد. شما میتوانید به سادگی از اولین لایهها برای مشاهده نمایش درست ویژگیها استفاده کنید، اما از خروجی شبکه استفاده نکنید زیرا بسیار task-specific است. در عوض، دادهها را به شبکه خود وارد کنید و از یکی از لایههای میانی، به عنوان لایه خروجی استفاده کنید. سپس این لایه میتواند به عنوان نمایشی از داده های خام تفسیر شود.
این رویکرد بیشتر در computer vision استفاده میشود. زیرا میتواند اندازه مجموعه داده شما را کاهش دهد .این موضوع زمان محاسبه را کاهش می دهد و آن را برای الگوریتم های سنتی نیز مناسب تر میکند.
مدل های یادگیری از پیش آموزشدیده
برخی از مدلهای یادگیری ماشین از پیش آموزش دیده وجود دارند که بسیار محبوب هستند. یکی از آنها مدل Inception-v3 است که برای ImageNet “چالش بزرگ تشخیص بصری” آموزش داده شده است. در این چالش، شرکتکنندگان مجبور بودند تصاویر را در 1000 کلاس مانند «گورخر»، «سگ دالمیشن» و «ماشین ظرفشویی» طبقهبندی کنند.
مایکروسافت همچنین برخی از مدلهای از پیش آموزش دیده را ارائه میدهد که از طریق بسته MicrosoftML R و پکیج Microsoftml Python ، برای توسعه R و Python در دسترس هستند.
دیگر مدلهای بسیار محبوب ResNet و AlexNet هستند. همچنین توصیه میکنم از pretrained.ml دیدن کنید. مجموعهای قابل مرتبسازی و قابل جستجو از مدلهای deep learning از پیش آموزشدیده کامل با نسخههای نمایشی و کد.
Leave feedback about this