۱. مقدمه

آخرین بهروزرسانی: 2022-03-28
یادگیری ماشین
یادگیری ماشینی حوزهای است که با سرعت سرسامآوری در حال تکامل است. هر روز تحقیقات و امکانات جدیدی منتشر میشود که موارد استفادهای را امکانپذیر میسازد که قبلاً امکانپذیر نبودند.
این نسخهها معمولاً در نتیجه یک مدل دارند. مدلها را میتوان به عنوان معادلات ریاضی بسیار طولانی درک کرد که با دریافت یک ورودی (مثلاً تصویر) یک نتیجه (مثلاً طبقهبندی) را خروجی میدهند.
- اگر بخواهید یکی از این مدلهای جدید را با دادههای خودتان استفاده کنید، چه؟
- چگونه میتوانید از این مدلهای پیشرفته برای مورد استفاده یا برنامه خود بهرهمند شوید؟
این آزمایشگاه کد، شما را در فرآیند سفارشیسازی مدلهای یادگیری ماشین با دادههای خودتان به روشی آسان راهنمایی میکند.
ساخت و آموزش مدلهای یادگیری ماشین چالشهای زیادی دارد:
- زمان زیادی میبرد.
- از حجم زیادی از دادهها استفاده میکند.
- نیاز به تخصص در زمینههایی مانند ریاضی و آمار.
- منابع فشرده: آموزش برخی از مدلها ممکن است چند روز طول بکشد.
ساخت معماریهای مدل جدید زمان زیادی میبرد و ممکن است به آزمایشهای فراوان و سالها تجربه نیاز داشته باشد. اما چه میشد اگر میتوانستید از تمام این دانش بهره ببرید و آن را روی دادههای خودتان با سفارشیسازی تحقیقات پیشرفته برای مسئله خودتان استفاده کنید؟ این کار با استفاده از تکنیکی به نام یادگیری انتقالی امکانپذیر است!
در این آزمایشگاه کد، یاد خواهید گرفت که چگونه یادگیری انتقالی را انجام دهید، چرا کار میکند و چه زمانی از آن استفاده کنید.
آنچه یاد خواهید گرفت
- یادگیری انتقالی چیست و چه زمانی باید از آن استفاده کرد؟
- نحوه استفاده از یادگیری انتقالی
- نحوه تنظیم دقیق مدلها.
- نحوه استفاده از مدلساز TensorFlow Lite.
- نحوه استفاده از هاب تنسورفلو
آنچه نیاز دارید
- تمام کد با استفاده از Google Colaboratory اجرا میشود، بنابراین نیازی به نصب چیزی روی دستگاه خود ندارید. فقط برای ورود به Colab به اینترنت و یک حساب Google نیاز دارید.
- آشنایی اولیه با TensorFlow و رابط برنامهنویسی کاربردی Keras.
- دانش پایتون.
اگر دانش اولیهای در مورد TensorFlow یا یادگیری ماشین ندارید، همچنان میتوانید در مورد یادگیری انتقالی اطلاعات کسب کنید. برای آشنایی با تئوری پشت این تکنیک، مرحله بعدی «یادگیری انتقالی چیست» را بخوانید و سپس به «یادگیری انتقالی با Model Maker» بروید. اگر میخواهید عمیقتر شوید و فرآیند را با جزئیات بیشتری ببینید، میتوانید به بخشهای مربوط به یادگیری انتقالی با TensorFlow Hub مراجعه کنید.
۲. یادگیری انتقالی چیست؟
یک مدل از پیش آموزشدیده، شبکهای ذخیرهشده است که قبلاً روی یک مجموعه داده بزرگ، معمولاً روی یک کار طبقهبندی تصویر در مقیاس بزرگ، آموزش داده شده است. شما یا از مدل از پیش آموزشدیده به همین شکل استفاده میکنید، یا از یادگیری انتقالی برای سفارشیسازی این مدل برای یک کار مشخص استفاده میکنید.
شهود پشت یادگیری انتقالی برای طبقهبندی تصویر این است که اگر یک مدل روی یک مجموعه داده بزرگ و به اندازه کافی عمومی آموزش داده شود، این مدل به طور مؤثر به عنوان یک مدل عمومی از دنیای بصری عمل خواهد کرد. سپس میتوانید با آموزش یک مدل بزرگ روی یک مجموعه داده بزرگ، بدون نیاز به شروع از ابتدا، از این نقشههای ویژگی آموخته شده بهره ببرید.
دو روش برای سفارشیسازی یک مدل یادگیری ماشین وجود دارد
- استخراج ویژگی : از نمایشهای آموختهشده توسط یک شبکه قبلی برای استخراج ویژگیهای مهم از نمونههای جدید استفاده کنید. شما به سادگی یک طبقهبندیکننده جدید، که از ابتدا آموزش داده شده است، را به بالای مدل از پیش آموزشدیده اضافه میکنید تا بتوانید نقشههای ویژگی آموختهشده قبلی را برای مجموعه دادهها مجدداً مورد استفاده قرار دهید. نیازی به آموزش (دوباره) کل مدل نیست. شبکه کانولوشن پایه از قبل شامل ویژگیهایی است که بهطورکلی برای طبقهبندی تصاویر مفید هستند. با این حال، بخش طبقهبندی نهایی مدل از پیش آموزشدیده مختص وظیفه طبقهبندی اصلی و متعاقباً مختص مجموعه کلاسهایی است که مدل بر اساس آنها آموزش دیده است.
- تنظیم دقیق : چند لایه بالایی یک مدل پایه ثابت را از حالت ثابت خارج کنید و به طور مشترک هم لایههای طبقهبندیکننده تازه اضافه شده و هم آخرین لایههای مدل پایه را آموزش دهید. این به ما امکان میدهد نمایش ویژگیهای مرتبه بالاتر را در مدل پایه "تنظیم دقیق" کنیم تا آنها را برای کار خاص مرتبطتر کنیم.
استخراج ویژگی برای آموزش سریعتر است، اما با تنظیم دقیق میتوانید به نتایج بهتری دست یابید.
شما هر دو (استخراج ویژگی و تنظیم دقیق) را با استفاده از دو روش مختلف انجام یادگیری انتقالی امتحان خواهید کرد:
- کتابخانه TensorFlow Lite Model Maker به طور خودکار بیشتر مراحل ایجاد خط لوله داده و مدل را انجام میدهد و این فرآیند را بسیار آسانتر میکند. مدل حاصل نیز به راحتی قابل خروجی گرفتن است تا در موبایل و مرورگر استفاده شود.
- مدلهای TensorFlow Hub از مخزن عظیم مدلهای یادگیری ماشین موجود در TensorFlow Hub بهره میبرند. محققان و جامعه با ارائه این مدلها، مدلهای پیشرفته را بسیار سریعتر و با تنوع بیشتر در دسترس قرار میدهند.
۳. انتقال یادگیری با Model Maker
حالا که ایده پشت یادگیری انتقالی را میدانید، بیایید استفاده از کتابخانه TensorFlow Lite Model Maker را شروع کنیم، ابزاری که به انجام آسان این کار کمک میکند.
کتابخانه TensorFlow Lite Model Maker یک کتابخانه متنباز است که فرآیند یادگیری انتقالی را ساده میکند و این فرآیند را برای توسعهدهندگان غیر ML مانند توسعهدهندگان موبایل و وب بسیار قابل دسترستر میکند.
دفترچه یادداشت Colab شما را در مراحل زیر راهنمایی میکند:
- دادهها را بارگذاری کنید.
- تقسیم دادهها.
- ایجاد و آموزش مدل
- مدل را ارزیابی کنید.
- مدل را صادر کنید.
پس از این مرحله، میتوانید با دنبال کردن همان فرآیند، شروع به انجام یادگیری انتقالی با دادههای خودتان کنید.
همکاری
در مرحله بعد، برای آموزش مدل سفارشی به Google Colab میرویم.
حدود ۱۵ دقیقه طول میکشد تا توضیحات را مرور کنید و اصول اولیه دفترچه یادداشت را بفهمید.
مزایا :
- روشی آسان برای سفارشیسازی مدلها.
- نیازی به درک TensorFlow یا API Keras نیست.
- ابزار متنباز که در صورت نیاز کاربر به مورد خاصی که هنوز پیادهسازی نشده است، قابل تغییر است.
- مدل را مستقیماً برای اجرا در موبایل یا مرورگر صادر میکند.
معایب
- امکانات پیکربندی کمتری نسبت به ساخت خط لوله کامل و مدلسازی خودتان، مانند دو روش قبلی، دارد.
- حتی هنگام انتخاب مدل پایه، همه مدلها را نمیتوان به عنوان پایه استفاده کرد.
- برای حجم زیادی از دادهها که در آنها خط لوله داده پیچیدهتر است، مناسب نیست.
۴. یک مدل در TensorFlow Hub پیدا کنید
در پایان این بخش، شما قادر خواهید بود:
- مدلهای یادگیری ماشین را در TensorFlow Hub پیدا کنید.
- در مورد مجموعهها اطلاعات کسب کنید.
- انواع مدلها را درک کنید.
برای انجام یادگیری انتقالی، باید با دو چیز شروع کنید:
- دادهها، برای مثال تصاویری از سوژههایی که میخواهید تشخیص دهید.
- یک مدل پایه که میتوانید آن را با دادههای خود سفارشیسازی کنید.
بخش دادهها معمولاً وابسته به کسبوکار است، اما سادهترین راه این است که از چیزی که میخواهید تشخیص دهید، عکسهای زیادی بگیرید. اما در مورد مدل پایه چطور؟ از کجا میتوانید یکی از آنها را پیدا کنید؟ جایی است که TensorFlow Hub میتواند به شما کمک کند.
TensorFlow Hub مخزن مدل برای نیازهای مدلهای TensorFlow شماست.
شما میتوانید مستندات هزاران مدل را که به راحتی برای استفاده شما در دسترس هستند، جستجو و مطالعه کنید و بسیاری از آنها برای یادگیری انتقالی و تنظیم دقیق آماده هستند.
جستجوی یک مدل
بیایید ابتدا یک جستجوی ساده برای مدلهایی که میتوانیم در TensorFlow Hub استفاده کنیم و بعداً در کد خود از آنها استفاده کنیم، انجام دهیم.
مرحله ۱: در مرورگر خود، سایت tfhub.dev را باز کنید.

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

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

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

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

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

فعلاً، تنها چیزی که نیاز دارید URL بالای صفحه است. این همان شناسه مدل و روشی است که میتوانید به راحتی به یک مدل از کتابخانه TensorFlow Hub دسترسی پیدا کنید.
۵. انتقال یادگیری با TensorFlow Hub
اکنون که مدلی را برای استفاده انتخاب کردهاید، بیایید آن را با بارگذاری آن با متد KerasLayer از کتابخانه TensorFlow Hub سفارشی کنیم.
این روش مدل را به گونهای بارگذاری میکند که بتوان از آن به عنوان یک لایه روی مدل شما استفاده کرد و به شما این امکان را میدهد که مدل خود را حول این لایه بسازید.
قبلاً، وقتی یاد میگرفتید که چگونه از Model Maker استفاده کنید، تمام بخشهای داخلی از شما پنهان بودند تا درک آن آسانتر باشد. خیر، شما خواهید دید که Model Maker در پشت صحنه چه کاری انجام میدهد.
همکاری
در مرحله بعد، برای آموزش مدل سفارشی به Google Colab میرویم.
حدود ۲۰ دقیقه طول میکشد تا توضیحات را مرور کنید و اصول اولیه دفترچه یادداشت را بفهمید.
مزایا :
- هزاران مدل موجود که توسط محققان و جامعه ارائه شده و بر روی مجموعه دادههای متنوعی آموزش دیدهاند.
- مدلهایی برای همه وظایف، مانند بینایی، متن و صدا.
- آزمایش با مدلهای مشابه مختلف آسان است. تغییر مدل پایه ممکن است فقط نیاز به تغییر یک رشته داشته باشد.
معایب
- هنوز برای استفاده از مدلها به تخصص TensorFlow/Keras نیاز است.
اگر میخواهید عمیقتر شوید، میتوانید یادگیری انتقالی را با استفاده از Keras Application نیز انجام دهید. این فرآیند بسیار شبیه به استفاده از TensorFlow Hub است، اما فقط با APIهای اصلی TensorFlow.
۶. تبریک
تبریک میگویم، شما یاد گرفتید که یادگیری انتقالی چیست و چگونه آن را روی دادههای خود اعمال کنید!
در این Codelab یاد گرفتید که چگونه با استفاده از تکنیکی به نام Transfer Learning، مدلهای یادگیری ماشین را با دادههای خود شخصیسازی کنید.
شما دو نوع یادگیری انتقالی را امتحان کردید:
- با استفاده از ابزاری مانند TensorFlow Lite Model Maker.
- استفاده از بردار ویژگی از TensorFlow Hub.
هر دو گزینه مزایا و معایب خود را دارند و پیکربندیهای ممکن زیادی برای نیازهای خاص شما وجود دارد.
همچنین یاد گرفتید که میتوانید کمی فراتر بروید و با کمی تغییر بیشتر وزنهای مدلها، آنها را دقیقتر تنظیم کنید تا بهتر با دادههای شما مطابقت داشته باشند.
هر دو گزینه میتوانند تنظیم دقیقی روی مدلها انجام دهند.
یادگیری انتقالی و تنظیم دقیق فقط برای مدلهای مرتبط با تصویر نیستند. از آنجایی که ایده، استفاده از یک نمایش آموختهشده از یک دامنه برای تنظیم آن با مجموعه داده شماست، میتوان از آن برای دامنههای متن و صدا نیز استفاده کرد.
مراحل بعدی
- با دادههای خودتان امتحان کنید.
- آنچه میسازید را با ما به اشتراک بگذارید و TensorFlow را در شبکههای اجتماعی با پروژههایتان تگ کنید.
اطلاعات بیشتر
- برای اطلاعات بیشتر در مورد تنظیم دقیق مدلهای پیشرفته مانند BERT، به تنظیم دقیق یک مدل BERT مراجعه کنید.
- برای اطلاعات بیشتر در مورد یادگیری انتقالی برای مدلهای صوتی، به یادگیری انتقالی با YAMNet برای طبقهبندی صدای محیطی مراجعه کنید.