سفارشی کردن مدل های یادگیری ماشین: راه آسان

1. معرفی

2a934d0e86f14118.png

آخرین به روز رسانی: 2022-03-28

فراگیری ماشین

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

این نسخه ها معمولاً در نتیجه یک مدل دارند. مدل ها را می توان به عنوان معادلات ریاضی بسیار طولانی درک کرد که با دادن یک ورودی (مثلاً: تصویر) یک نتیجه (مثلاً: طبقه بندی) به دست می آید.

  • اگر بخواهید از یکی از این مدل های جدید با داده های خود استفاده کنید چه؟
  • چگونه می توانید از این مدل های پیشرفته برای موارد استفاده یا برنامه خود بهره مند شوید؟

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

ساخت و آموزش مدل های یادگیری ماشینی چالش های زیادی دارد:

  • زمان زیادی می برد.
  • از حجم زیادی از داده ها استفاده می کند.
  • نیاز به تخصص در زمینه هایی مانند ریاضیات و آمار.
  • منابع فشرده: آموزش برخی مدل ها ممکن است روزها طول بکشد.

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

در این کد لبه شما یاد خواهید گرفت که چگونه Transfer Learning را انجام دهید، چرا کار می کند و چه زمانی از آن استفاده کنید.

چیزی که یاد خواهید گرفت

  • Transfer Learning چیست و چه زمانی باید از آن استفاده کرد.
  • نحوه استفاده از Transfer Learning
  • نحوه تنظیم دقیق مدل ها
  • نحوه استفاده از TensorFlow Lite Model Maker.
  • نحوه استفاده از TensorFlow Hub.

آنچه شما نیاز دارید

  • همه کدها با استفاده از Google Colaboratory اجرا می شوند، بنابراین نیازی به نصب چیزی روی دستگاه خود نخواهید داشت. برای ورود به Colab فقط نیاز به دسترسی به اینترنت و یک حساب Google دارید.
  • دانش اولیه TensorFlow و Keras API.
  • آشنایی با پایتون

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

2. آموزش انتقالی چیست؟

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

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

دو راه برای سفارشی کردن مدل یادگیری ماشین وجود دارد

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

آموزش استخراج ویژگی سریعتر است، اما با تنظیم دقیق می توانید به نتایج بهتری برسید.

شما هر دو (استخراج ویژگی و تنظیم دقیق) را با استفاده از دو روش مختلف آموزش انتقالی امتحان خواهید کرد:

  • کتابخانه TensorFlow Lite Model Maker به طور خودکار بیشتر خط لوله داده ها و ایجاد مدل را انجام می دهد و فرآیند را بسیار آسان تر می کند. مدل به دست آمده همچنین به راحتی قابل صادرات برای استفاده در موبایل و مرورگر است.
  • مدل‌های TensorFlow Hub از مخزن وسیع مدل‌های یادگیری ماشین موجود در TensorFlow Hub استفاده می‌کنند. محققان و جامعه با کمک این مدل‌ها، مدل‌های مدرن را بسیار سریع‌تر و با تنوع بیشتری در دسترس قرار می‌دهند.

3. انتقال آموزش با Model Maker

اکنون که ایده پشت یادگیری انتقال را می‌دانید، بیایید از کتابخانه TensorFlow Lite Model Maker استفاده کنیم، ابزاری برای کمک به انجام آن به روش آسان.

کتابخانه TensorFlow Lite Model Maker یک کتاب منبع باز است که فرآیند Transfer Learning را ساده می کند و این فرآیند را برای توسعه دهندگان غیرML مانند توسعه دهندگان موبایل و وب بسیار قابل دسترس تر می کند.

نوت بوک Colab شما را از طریق مراحل زیر راهنمایی می کند:

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

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

مشارکتی

در مرحله بعد، برای آموزش مدل سفارشی به Google Colab برویم.

حدود 15 دقیقه طول می کشد تا توضیحات را مرور کنید و اصول نوت بوک را درک کنید.

طرفداران :

  • راه آسان برای سفارشی سازی مدل ها
  • نیازی به درک TensorFlow یا Keras API نیست.
  • ابزار منبع باز که در صورت نیاز کاربر به چیزی خاص که هنوز اجرا نشده است، قابل تغییر است.
  • مدل را مستقیماً برای اجرای موبایل یا مرورگر صادر می کند.

منفی

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

4. یک مدل در TensorFlow Hub پیدا کنید

در پایان این بخش، شما قادر خواهید بود:

  • مدل های یادگیری ماشین را در TensorFlow Hub پیدا کنید.
  • در مورد مجموعه ها درک کنید.
  • انواع مدل ها را بشناسید.

برای انجام آموزش انتقالی، باید با دو چیز شروع کنید:

  • داده ها، به عنوان مثال تصاویری از موضوعاتی که می خواهید تشخیص دهید.
  • یک مدل پایه که می توانید آن را بر اساس داده های خود سفارشی کنید.

بخش داده معمولاً وابسته به تجارت است، اما ساده‌ترین راه این است که عکس‌های زیادی از آنچه می‌خواهید تشخیص دهید، بگیرید. اما در مورد مدل پایه چطور؟ از کجا می توانید پیدا کنید؟ جایی است که TensorFlow Hub می تواند کمک کند.

TensorFlow Hub مخزن مدل برای نیازهای مدل های TensorFlow شما است.

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

جستجوی مدل

بیایید ابتدا یک جستجوی ساده برای مدل هایی برای استفاده در TensorFlow Hub انجام دهیم که بعداً می توانید در کد خود از آنها استفاده کنید.

مرحله 1: در مرورگر خود، سایت tfhub.dev را باز کنید.

تصویر صفحه اصلی tfhub.dev

برای آموزش انتقال در دامنه تصویر، به بردارهای ویژگی نیاز داریم. بردارهای ویژگی مانند مدل های طبقه بندی هستند، اما بدون سر طبقه بندی هستند.

بردارهای ویژگی می توانند تصاویر را به یک نمایش عددی در فضای Nام تبدیل کنند (که در آن N تعداد ابعاد لایه خروجی مدل است).

در TFHub می‌توانید با کلیک کردن روی یک کارت خاص، بردارهای ویژگی را جستجو کنید.

تصویر صفحه tfhub.dev با مربعی که وظیفه بردار ویژگی را برجسته می کند

همچنین می‌توانید نام مدل را با فیلتر سمت چپ جستجو کنید تا فقط Image feature vectors نشان دهید.

این تصویری از صفحه جستجو از tfhub.dev پس از انتخاب یک وظیفه برداری ویژگی در صفحه اصلی است

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

این صفحه مجموعه تصاویر از tfhub.dev است

به پایین بروید و MobileNet V3 را انتخاب کنید. هر یک از بردارهای ویژگی انجام خواهد داد.

این صفحه مجموعه تصاویر از tfhub.dev است که کمی از صفحه قبل پیمایش شده است

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

صفحه جزئیات یک مدل وکتور ویژگی mobilenetV3

در حال حاضر، تنها چیزی که نیاز دارید URL در بالا است. این دسته مدل و راهی است که می توانید به راحتی به یک مدل از کتابخانه TensorFlow Hub دسترسی پیدا کنید.

5. انتقال یادگیری با TensorFlow Hub

اکنون که مدلی را برای استفاده انتخاب کرده اید، بیایید با بارگیری آن با متد KerasLayer از کتابخانه TensorFlow Hub، آن را سفارشی کنیم.

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

پیش از این، هنگامی که نحوه استفاده از Model Maker را یاد گرفتید، تمام موارد داخلی از شما پنهان می شد تا درک آن آسان تر شود. نه، خواهید دید که مدل ساز در پشت صحنه چه می کند.

مشارکتی

در مرحله بعد، برای آموزش مدل سفارشی به Google Colab برویم.

حدود 20 دقیقه طول می کشد تا توضیحات را مرور کنید و اصول نوت بوک را درک کنید.

طرفداران :

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

منفی

  • هنوز برای استفاده از مدل‌ها به تخصص TensorFlow/Kera نیاز دارد.

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

6. تبریک می گویم

تبریک می گویم، شما یاد گرفته اید که Transfer Learning چیست و چگونه آن را در داده های خود اعمال کنید!

در این Codelab شما یاد گرفتید که چگونه با استفاده از تکنیکی به نام Transfer Learning، مدل های یادگیری ماشین را بر اساس داده های خود سفارشی کنید

شما 2 شکل آموزش انتقالی را امتحان کردید:

  • با استفاده از ابزاری مانند TensorFlow Lite Model Maker.
  • استفاده از بردار ویژگی از TensorFlow Hub.

هر دو گزینه مزایا و معایب خود را دارند و تنظیمات ممکن زیادی برای نیازهای خاص شما دارند

همچنین یاد گرفتید که می‌توانید کمی جلوتر بروید و مدل‌ها را با تغییر وزن‌های آن‌ها کمی بیشتر تنظیم کنید تا بهتر با داده‌هایتان مطابقت داشته باشند.

هر دو گزینه می توانند روی مدل ها تنظیم دقیق انجام دهند.

Transfer Learning و تنظیم دقیق فقط برای مدل های مرتبط با تصویر نیست. از آنجایی که ایده این است که از یک نمایش آموخته شده از یک دامنه برای تنظیم مجموعه داده خود استفاده کنید، می توان از آن برای دامنه های متنی و صوتی نیز استفاده کرد.

مراحل بعدی

  • آن را با داده های خود امتحان کنید.
  • آنچه را که می سازید با ما به اشتراک بگذارید و TensorFlow را در شبکه های اجتماعی با پروژه های خود تگ کنید.

بیشتر بدانید

سوالی دارید؟