سلام !
یادآوری :
اگر سری آموزش قبلی تحت عنوان " شروع یک مسئله ماشین لرنینگ با داده های کم " رو دنبال کرده باشید به یاد دارید که این متد را به عنوان یک روش برای حل مسئله ی few shot learning یا همان fsl معرفی کردیم.
در سری آموزش ذکر شده یک طبقه بندی اصلی برای این موضوع مطرح کردیم : دیتا ، مدل و الگوریتم.
متد Relation Net در طبقه بندی Model و در دسته ی Embedding models و هم چنین از نوعTask-invariant Embedding Model بود که در این دسته بندی ، Matching Net ,Proto Net و ... هم قرار دارند که در آموزش های بعدی در مورد آنها هم بحث خواهد شد.
خب بریم سراغ اصل مطلب !
مقاله ی اصلی اطلاعات کاملی در مورد این متد به ما داده است .
این متد یک متد مفهومی ، ساده و انعطاف پذیر برای fsl است.
ابتدا داده های خود را به دو دسته تقسیم میکنیم :
۱- داده train که خود به دو دسته ی support set و query set تقسیم میشود
۲- داده ی test
پنج تصویر اولی که سمت چپ میبینیم ، داده های support set هستند ، این تصاویر به یک ماژول embedding داده میشود که آنها را به یک سری feature map تبدیل میکند. این feature map ها در حقیقت یک سری ماتریس های stack هستند که برخی از ویژگی های تصویر ورودی را استخراج میکنند.
کار بعدی ای که ما باید انجام دهیم، Concatenate ( چسباندن ) کردن feature map تصویر کوئری ست (اون تک تصویر گرگ پایین ) با این feature map های support set است . همانطور که در تصویر میبینیم بلوک های زرد future map های تصویر query بوده و مابقی برای تصاویر support set هستند. این عمل کانکت به صورت عمقی میتواند انجام شود ( یا هر طریق دیگری )
حالا ما یک سری feature map های به هم کانکت شده داریم که به تابع g داده میشود . کار این تابع optimize کردن است. یا یک سری weight ها از قبل دارد یا بر اساس میزان similarity ما بین feature map های support set و query set ما میتوانیم یک وکتور Relation Score به دست بیاوریم که میزان مشابهت هر یک از این تصاویر با تصویر کوئری ست را بدست آورده است . ( عددی بین ۰ تا ۱ که میزان مشابهت را نشان میدهد ) نهایتا ما نیاز داریم یک threshold در نظر بگیریم که مثلا اگر میزان مشابهت بیشتر از ۸۰ درصد بود ، ۱ برگرداند و در غیر این صورت صفر برای همین One-hot vector نهایی را به دست می آوریم.
بررسی عمیق تر
کار های مشابه را میتوان به دسته های زیر تقسیم کرد :
مدل های Fine-tuning : این دسته از مدل ها روی تنظیم کردن پارامتر های تتای مسئله با استفاده از مسائل مشابه دیگر و آپدیت کردن دائمی آنها تمرکز دارند . مدل MAML جزو این دسته بندی است. اما مدل Relation Network ما نیاز به fine tune کردن روی target اصلی نداشته و به طور feed-forward بدون نیاز به آپدیت مداوم target را حل میکند . این کار برای مسائلی که تاخیر و power در آنها اهمیت دارد ، گزینه ی مناسبی است.
مدل های RNN Memory based : ایده اصلی در این دسته از مسايل این است که RNN روی نمونه هایی از مسئله ی داده شده iterative هایی را انجام داده و دانش مورد نیاز برای حل مسئله ی اصلی را در hidden activation های خود یا memory ذخیره میکند.بنابراین سمپل های جدید با این اطلاعات قبلی مقایسه شده و لرنینگ صورت میگیرد. این مسئله ی Relation Net ما بر خلاف این مسائل، از پیچیدگی در شبکه ی عصبی بازگشتی و تضمین وجود حافظه ی کافی جلوگیری میکند.رویکرد ما CNN های ساده وسریع است.
مدل های Embedding و Metric Network : مشابه ترین متد ها به Relation Netهمین متد های مربوط به این دسته مثل siamese net ها ، proto net و ... هستند. این دسته از مدل ها بر اساس میزان مشابهت بین تصمیم گیری انجام میدهند و Relation Net هم در حقیقت متعلق به همین دسته است .
۱- تصویری که در بالا آورده شد برای حالت one shot است . یعنی حالتی که ما C تا کلاس داریم و هر کلاس ۱ شات دارد. چنانچه بیشتر از ۱ شات داشته باشیم، روی خروجی embedding module عمل جمع به صورت element-wise انجام میدهیم تا feature map هر کلاس را تشکیل دهیم . سپس ادامه کار انجام میشود ، پس در حالت K شات ما در آخر هم فقط C تا relation score داریم .
۲- برای train کردن مدل از MSE استفاده میشود .
از مدل MSE با فانکشن بالا استفاده میکنیم تا مدل خود را آموزش دهیم. یعنی شبکه عصبی ما که پارامتر های φ و ϕ را دارد، این پارامتر ها آپدیت میشوند.
۳- شبکه ی embedding همان شبکه ای است که از ۴ تا convolutional block تشکیل شده و در متد Matching Net و Proto Net هم استفاده شده که در مقالات دیگری به آنها خواهم پرداخت. م اما شبکه ای که برای Relation به کار گرفته میشود به صورت زیر است :
۴- نتایج تست این متد روی دو دیتا ست Mini image net و omniglot را مشاهده میکنیم :
نکته نهایی و خلاصه :
ابتدا یک تعریف کلی از نحوه کارکرد این مدل ارائه دادیم ، سپس شکل مربوط به عملکردآن را آورده ، در بخش بررسی عمیق تر به مقایسه آن با دیگر مدل ها و طبقه بندی ها پرداختیم. نهایتا نیز توضیحی دقیق تر در مورد اجزای شبکه و نتایج تست آن ارائه کردیم.
برای نوشتن این مقاله از ، از مقاله ی اصلی این مدل به اسم Learning to Compare: Relation Network for Few-Shot Learning استفاده کرده ام.
منتظر نظرات ، پیشنهادات و انتقادات شما هستم .
امید عرب خرزوقی