• Info@SaminRay.Com
  • 88866172 021
1076

روش آموزش Few-Shot چیست؟

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

از زمانی که اولین الگوریتم‌های شبکه عصبی CNN ایجاد شدند، توانستند عملکرد مدل‌های یادگیری عمیق را در مسائل بینایی ماشین به شدت بهبود ببخشند. به طوری که در سال 2015، مایکروسافت گزارش داد که عملکرد مدل آنها در امر طبقه‌بندی تصاویر بهتر از انسان است. امروزه، کامپیوترها در حل مسائلی که داده به‌وفور وجود داشته باشد بی‌رقیب هستند. اما واقعیت این است که در بسیاری از مسائل ممکن است در اختیار داشتن داده فراوان امری دست‌نیافتنی باشد. در برخی موارد تحت شرایط خاص ممکن است بتوان با استفاده از data augmentation و یا جمع‌آوری و لیبل زنی داده این مسئله را مرتفع کرد؛ اما این روش‌ها معمولاً با زحمت و هزینه زیادی همراه هستند. در مورد مسائلی که تعداد نمونه‌های هر کلاس بسیار کم باشد (حد یکی دو نمونه به‌ازای هر کلاس) آنگاه روش‌های data augmentation و یا لیبل زنی کمکی به رفع مشکل نخواهند کرد. از این رو برای حل مسائلی که با محدودیت شدید از نظر تعداد نمونه مواجه هستند رویکردهای نوآورانه‌ای با عنوان Few-Shot Learning یا به‌اختصار FSL مطرح شدند.

در روش ZSL داده مورد پردازش در شبکه عبارت است از:

۱- کلاس‌های دیده شده: شامل نمونه‌های متعلق به کلاس‌هایی است که در فرایند آموزش مورداستفاده قرار گرفتند.

۲-کلاس دیده نشده: شامل نمونه‌های متعلق به کلاس‌هایی است که در فاز آموزش توسط مدل دیده نشده‌اند و مدل آموزش‌دیده می‌بایست آنها را نیز دسته‌بندی کند.

۳-اطلاعات کمکی (Auxiliary): از آنجایی که هیچ نمونه برچسب‌گذاری شده‌ای از کلاس‌های دیده نشده در دسترس نیست؛ بنابراین به برخی اطلاعات کمی برای حل مسئله ZSL نیاز است. اطلاعات کمکی می‌بایست شامل اطلاعاتی در خصوص تمام کلاس‌های دیده نشده باشند. این اطلاعات می‌توانند توصیفی، اطلاعات معنایی و یا کلمه نگاشت شده (Word embeding) باشد. بعنوان مثال در شکل زیر نمونه‌ای از نگاشت معنایی (semantic embedding) در این روش نشان داده شده است.

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

۱- آموزش Zero-Shot

هدف روش Zero-Shot Learning و یا ZSL دسته‌بندی کردن کلاس‌های جدید بدون در اختیار داشتن داده آموزش آن کلاس است. در نگاه اول این روش ممکن است کمی عجیب به نظر بیاید. اما اگر به‌عنوان یک انسان به این سؤال توجه کنید شاید درک نحوه عملکرد چنین دسته‌بندی ساده شود "آیا می‌توانید یک شی را بدون دیدن آن و تنها از طریق توصیفی که از آن برای شما شده است شناسایی کنید؟" بله بعنوان یک انسان این یک امر ساده تلقی می‌شود.

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

۲- آموزش One-Shot و  Few-Shot

مشابه با آنچه در روش ZSL بیان شد در روش OSL تنها یک نمونه آموزش و در روش FSL معمولاً بین دو تا پنج نمونه برای هر کلاس در فاز آموزش در نظر گرفته می‌شود. سؤالی که اینجا مطرح می‌شود این است که چگونه ممکن است مدل یادگیری عمیقی که با چند نمونه آموزش داده شده است تعمیم‌پذیری بالایی در عملکرد خود نشان دهد؟ پاسخ به این سؤال در این نکته نهفته است که این مدل‌ها با مجموعه داده بسیار متنوع که تنها شامل چند نمونه به‌ازای هر کلاس است آموزش داده می‌شوند به گونه‌ای که در فاز آموزش تمرکز بر شناسایی نمونه‌های همسان و غیر همسان است. در فاز آزمون از طریق پیش‌بینی زوج‌های همسان و ناهمسان نمونه جدید تلاش می‌شود تا با یافتن شبیه‌ترین نمونه‌ها نمونه جدید دسته‌بندی شود.

 

روش آموزش One-Shot در مسئله بینایی ماشین مبتنی بر یک نوع خاص از شبکه‌های CNN با عنوان شبکه عصبی Siamese یا SNN است. شبکه CNN با استفاده از داده‌های زیاد پارامترهای خود را به‌گونه‌ای به‌روزرسانی می‌کند تا بتواند هر تصویر را به‌درستی دسته‌بندی کند در حالی که شبکه عصبی SNN به‌گونه‌ای آموزش می‌بینند تا بتوانند فاصله بین بردار ویژگی‌های دو تصویر را بررسی کنند.

شبکه‌های عصبی Siamese ابتدا ورودی‌ها را به دو نمونه مشابه از یک شبکه که بر روی یک مجموعه داده آموزش دیده‌اند وارد می‌کنند و در گام بعد بردار ویژگی به‌دست‌آمده از مرحله قبلی برای تولید خروجی با یکدیگر ترکیب می‌شوند. هر یک از دوشاخه این شبکه کانولوشن مسئول یادگیری ویژگی‌های تصویر ورودی به خود هستند، در حالی که بخشی با لایه متمایزکننده نحوه ارتباط آن ویژگی‌ها با یکدیگر را در تمام تصاویر ارزیابی می‌کند. لایه متمایزکننده بررسی می‌کند که آیا ویژگی‌های مشابه از هر دو تصویر آموخته شده است یا خیر. آموزش یک شبکه SNN به روش OSL شامل دو بخش ارزیابی و تعمیم‌پذیری است. برای آموزش شبکه در فاز ارزیابی از تابع triplet loss استفاده می‌شود و در فاز تعمیم نیز شبکه به‌گونه‌ای آموزش داده می‌شود تا احتمال تعلق جفت‌های ورودی به یک کلاس را بتواند ارزیابی کند در این مرحله، ارائه تصاویری که در آن تشخیص تفاوت بسیار دشوار است، ضروری است.

مراجع:

https://neptune.ai/blog/understanding-few-shot-learning-in-computer-vision

https://pub.towardsai.net/zero-shot-one-shot-few-shot-learning-c3a0df9d4b27

https://www.v7labs.com/blog/zero-shot-learning-guide#zero-shot-learning-key-takeaways

https://serokell.io/blog/nn-and-one-shot-learning

 

 

وبلاگ

برچسب های مطالب